Changeset 211


Ignore:
Timestamp:
Nov 28, 2007 1:36:27 PM (15 years ago)
Author:
srkline
Message:

Several disjoint changes:

1) Threaded the 1D Cylinder_PolyRadius function
2) in Wrapper, popping the data set list now will auto-pop the function, then the coef to properly update the table of coefficients.
3) tick units in the plots are suppressed (y-axis)
4) Killing data (PlotManager?) now kills the dependent variable so that the rest can be killed
5) Ellipsoid_2D function now has the correct notation of the rotation axis in the parameter names.

Location:
sans/Analysis/branches/ajj_23APR07/IGOR_Package_Files/Put in User Procedures/SANS_Models_v3.00
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • sans/Analysis/branches/ajj_23APR07/IGOR_Package_Files/Put in User Procedures/SANS_Models_v3.00/Models_2D/Ellipsoid2D.ipf

    r202 r211  
    4747         
    4848        parameters_Ellip2D[0] = "Scale" 
    49         parameters_Ellip2D[1] = "Radius_a" 
    50         parameters_Ellip2D[2] = "Radius_b (rotation axis)" 
     49        parameters_Ellip2D[1] = "Radius_a (rotation axis)" 
     50        parameters_Ellip2D[2] = "Radius_b" 
    5151        parameters_Ellip2D[3] = "Contrast" 
    5252        parameters_Ellip2D[4] = "Background" 
  • sans/Analysis/branches/ajj_23APR07/IGOR_Package_Files/Put in User Procedures/SANS_Models_v3.00/NewModels_2006/Cylinder_PolyRadius.ipf

    r166 r211  
    7777         
    7878 
    79  
     79// non-threaded version, use the threaded version instead... 
     80// 
    8081//AAO version, uses XOP if available 
    8182// simply calls the original single point calculation with 
    8283// a wave assignment (this will behave nicely if given point ranges) 
    83 Function Cyl_PolyRadius(cw,yw,xw) : FitFunc 
     84Function xCyl_PolyRadius(cw,yw,xw) : FitFunc 
    8485        Wave cw,yw,xw 
    8586         
     
    274275        return(0) 
    275276End 
     277 
     278 
     279 
     280//// experimental threaded version... 
     281// don't try to thread the smeared calculation, it's good enough 
     282// to thread the unsmeared version 
     283 
     284//threaded version of the function 
     285ThreadSafe Function Cyl_PolyRadius_T(cw,yw,xw,p1,p2) 
     286        WAVE cw,yw,xw 
     287        Variable p1,p2 
     288         
     289#if exists("Cyl_PolyRadiusX") 
     290        yw[p1,p2] = Cyl_PolyRadiusX(cw,xw) 
     291#else 
     292        yw[p1,p2] = fCyl_PolyRadius(cw,xw) 
     293#endif 
     294 
     295        return 0 
     296End 
     297 
     298// 
     299//  Fit function that is actually a wrapper to dispatch the calculation to N threads 
     300// 
     301// nthreads is 1 or an even number, typically 2 
     302// it doesn't matter if npt is odd. In this case, fractional point numbers are passed 
     303// and the wave indexing works just fine - I tested this with test waves of 7 and 8 points 
     304// and the points "2.5" and "3.5" evaluate correctly as 2 and 3 
     305// 
     306Function Cyl_PolyRadius(cw,yw,xw) : FitFunc 
     307        Wave cw,yw,xw 
     308         
     309        Variable npt=numpnts(yw) 
     310        Variable i,nthreads= ThreadProcessorCount 
     311        variable mt= ThreadGroupCreate(nthreads) 
     312 
     313//      Variable t1=StopMSTimer(-2) 
     314         
     315        for(i=0;i<nthreads;i+=1) 
     316        //      Print (i*npt/nthreads),((i+1)*npt/nthreads-1) 
     317                ThreadStart mt,i,Cyl_PolyRadius_T(cw,yw,xw,(i*npt/nthreads),((i+1)*npt/nthreads-1)) 
     318        endfor 
     319 
     320        do 
     321                variable tgs= ThreadGroupWait(mt,100) 
     322        while( tgs != 0 ) 
     323 
     324        variable dummy= ThreadGroupRelease(mt) 
     325         
     326//      Print "elapsed time = ",(StopMSTimer(-2) - t1)/1e6 
     327         
     328        return(0) 
     329End 
  • sans/Analysis/branches/ajj_23APR07/IGOR_Package_Files/Put in User Procedures/SANS_Models_v3.00/Packages/Wrapper.ipf

    r200 r211  
    4848        Button button_2,pos={300,93},size={100,20},proc=AppendModelToTarget,title="Append 1D" 
    4949        Button button_3,pos={300,20},size={100,20},proc=W_LoadDataButtonProc,title="Load 1D Data" 
    50         PopupMenu popup_0,pos={30,21},size={218,20},title="Data Set" 
     50        PopupMenu popup_0,pos={30,21},size={218,20},title="Data Set",proc=DataSet_PopMenuProc 
    5151        PopupMenu popup_0,mode=1,value= #"W_DataSetPopupList()" 
    5252        PopupMenu popup_1,pos={30,57},size={136,20},title="Function" 
     
    357357        return 0 
    358358End 
     359 
     360// if the Data Set is changed, then update the function (if possible) 
     361// and the coef popup (if possible) and then the table (if possible) 
     362// 
     363// !! only respond to mouse up here, and simply send a fake mouse up 
     364// to the function pop, which will do what it can do 
     365// 
     366Function DataSet_PopMenuProc(pa) : PopupMenuControl 
     367        STRUCT WMPopupAction &pa 
     368 
     369        switch( pa.eventCode ) 
     370                case 2: // mouse up 
     371//                      Variable popNum = pa.popNum 
     372//                      String funcStr = pa.popStr 
     373//                      String coefStr = W_CoefPopupList() 
     374//                       
     375////                    Print "coefStr = ",coefStr 
     376//                       
     377//                      ControlInfo/W=WrapperPanel popup_0 
     378//                      String folderStr=S_Value 
     379//                       
     380//                      String listStr = W_CoefPopupList() 
     381//                      Variable num=WhichListItem(coefStr, listStr, ";") 
     382//                      String str=StringFromList(num, listStr  ,";") 
     383////                    print "str = ",str 
     384//                      //set the item in the coef popup, and pop it 
     385//                      PopupMenu popup_2 mode=(num+1) 
     386                         
     387                        Struct WMPopupAction ps 
     388                        ps.eventCode = 2                //fake mouse up 
     389                        Function_PopMenuProc(ps) 
     390                         
     391                        SetDataFolder root: 
     392                        break 
     393        endswitch 
     394 
     395        return 0 
     396End 
     397 
    359398 
    360399 
  • sans/Analysis/branches/ajj_23APR07/IGOR_Package_Files/Put in User Procedures/SANS_Models_v3.00/PlotManager.ipf

    r179 r211  
    142142        ModifyGraph grid=1,mirror=2,standoff=0 
    143143        ErrorBars $iStr Y,wave=($eStr,$eStr) 
    144          
     144        ModifyGraph tickUnit(left)=1 
     145                                 
    145146        Label left "I(q)" 
    146147        Label bottom "q (A\\S-1\\M)" 
     
    155156        String ctrlName 
    156157         
     158        String savDF=GetDataFolder(1) 
    157159        String DF 
    158160 
     
    160162        DF=S_Value              //this will end in "i" 
    161163 
    162         KillDataFolder/Z $DF 
     164        SetDataFolder DF 
     165        KillVariables/A                 //removes the dependent variables 
     166        SetDataFolder savDF 
     167         
     168        //now kill the data folder 
     169        KillDataFolder $DF 
    163170        ControlUpdate popup0            //refresh the popup, very important if last item removed 
    164171End 
     
    168175        String ctrlName 
    169176         
     177        String savDF=GetDataFolder(1) 
    170178        String DF 
    171179 
     
    176184        do       
    177185                DF=StringFromList(ii, list  ,";") 
     186                 
     187                SetDataFolder DF 
     188                KillVariables/A                 //removes the dependent variables first 
     189                SetDataFolder savDF 
     190         
     191                //now kill the data folder 
    178192                KillDataFolder/Z $DF 
    179193                ii+=1 
  • sans/Analysis/branches/ajj_23APR07/IGOR_Package_Files/Put in User Procedures/SANS_Models_v3.00/PlotUtilsMacro.ipf

    r166 r211  
    251251                                ModifyGraph mode($w1)=3,marker($w1)=19,msize($w1)=2,rgb($w1) =(rr,gg,bb) 
    252252                                ErrorBars $w1 Y,wave=($w2,$w2) 
     253                                ModifyGraph tickUnit(left)=1 
    253254                        else 
    254255                        //new graph 
     
    257258                                ModifyGraph grid=1,mirror=2,standoff=0 
    258259                                ErrorBars $w1 Y,wave=($w2,$w2) 
     260                                ModifyGraph tickUnit(left)=1 
    259261                                Legend 
    260262                        endif 
     
    265267                        ModifyGraph grid=1,mirror=2,standoff=0 
    266268                        ErrorBars $w1 Y,wave=($w2,$w2) 
     269                        ModifyGraph tickUnit(left)=1 
    267270                        Legend 
    268271                endif 
Note: See TracChangeset for help on using the changeset viewer.