Changeset 932


Ignore:
Timestamp:
Apr 21, 2020 4:26:06 PM (2 years ago)
Author:
ilavsky
Message:

Add Size distribution analysis to SImple fits

Location:
trunk/User Procedures/Irena
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/User Procedures/Irena/IR1_Main.ipf

    r930 r932  
    179179                End
    180180        "---"
    181         "Basic Fits", IR3J_SimpleFits()
    182         help={"Quick and simple fitting of multiple SAS data. Guinier, Porod, Sphere and Spheroid. "}
     181        "Basic+Simple Analysis", IR3J_SimpleFits()
     182        help={"Quick and simple fitting of multiple SAS or results data. Guinier, Porod, Sphere and Spheroid. "}
    183183        "Unified Fit", IR1A_UnifiedModel()
    184184        help = {"Modeling of SAS by modeling Guinier and Power law dependecies, based on Unified model by Gregg Beaucage"}
     
    273273        "Plot data", IR3L_MultiSamplePlot()
    274274        help={"Multi sample ploting tool, same as in SAS menu."}
    275         "Basic fits", IR3J_SimpleFits()
     275        "Simple fits", IR3J_SimpleFits()
    276276        help={"Tool to fit data with Guinier, Porod, SphereFF, SpheroidFF etc."}
    277277        "Merge SAXS-WAXS data", IRB1_MergeMultipleData()
  • trunk/User Procedures/Irena/IR2_DataMiner.ipf

    r930 r932  
    191191        TitleBox Instructions5 title="\Zr100Regex for contain:  string, two: str2.*str1",size={330,15},pos={4,740},frame=0,fColor=(0,0,65535),labelBack=0
    192192        TitleBox Instructions6 title="\Zr100Regex for case independent:  (?i)string",size={330,15},pos={4,755},frame=0,fColor=(0,0,65535),labelBack=0
     193
     194        Button SelectAll,pos={205,695},size={70,15}, proc=IR3B_ButtonProc,title="SelectAll", help={"Select All data in Listbox"}
    193195 
    194196        //Note listing and selection options
     
    279281                                IR3B_DisplayMetadataResults()
    280282                        endif
     283                        if(stringmatch(ba.ctrlName,"SelectAll"))
     284                                Wave/Z SelectionOfAvailableData = root:Packages:Irena:MetadataBrowser:SelectionOfAvailableData
     285                                if(WaveExists(SelectionOfAvailableData))
     286                                        SelectionOfAvailableData=1
     287                                endif
     288                        endif
    281289                        if(cmpstr(ba.ctrlname,"DisplayDataInBrowser")==0)
    282290                                SVAR FldrWithData=root:Packages:Irena:MetadataBrowser:SaveToFoldername
    283                                 CreateBrowser
    284                                 ModifyBrowser  setDataFolder=FldrWithData, showWaves=1                                                 
     291                                if(DataFolderExists(FldrWithData ))
     292                                        CreateBrowser
     293                                        ModifyBrowser  setDataFolder=FldrWithData, showWaves=1         
     294                                else
     295                                        abort "Data Folder "+FldrWithData+" does not exist"
     296                                endif                                   
    285297                        endif
    286298                        if(cmpstr(ba.ctrlname,"GetHelp")==0)
     
    402414        DfRef OldDf=GetDataFolderDFR()
    403415        SVAR FldrWithData=root:Packages:Irena:MetadataBrowser:SaveToFoldername
     416        if(!DataFolderExists(FldrWithData))
     417                setDataFolder OldDF
     418                Abort "Data Folder : "+ FldrWithData+" does not exist."
     419        endif
    404420        SetDataFolder $(FldrWithData)                                   //go into the folder
    405421        string ListOfWaves=IN2G_ConvertDataDirToList(DataFolderDir(2))
     
    438454        if(V_Flag)
    439455                SVAR FldrWithData=root:Packages:Irena:MetadataBrowser:SaveToFoldername
     456                if(!DataFolderExists(FldrWithData))
     457                        setDataFolder OldDF
     458                        return 0       
     459                endif
    440460                SetDataFolder $(FldrWithData)                                   //go into the folder
    441461                KillWIndow/Z MetadataBrowserResTable
  • trunk/User Procedures/Irena/IR3_SimpleFits.ipf

    r930 r932  
    9393        NewPanel /K=1 /W=(2.25,43.25,530,800) as "Multi Sample Fits"
    9494        DoWIndow/C IR3J_SimpleFitsPanel
    95         TitleBox MainTitle title="Multi-Sample Basic Fits",pos={200,2},frame=0,fstyle=3, fixedSize=1,font= "Times New Roman", size={360,30},fSize=22,fColor=(0,0,52224)
     95        TitleBox MainTitle title="Simple & Basic Analysis tool",pos={140,2},frame=0,fstyle=3, fixedSize=1,font= "Times New Roman", size={360,30},fSize=22,fColor=(0,0,52224)
    9696        string UserDataTypes=""
    9797        string UserNameString=""
     
    101101        IR3C_MultiAppendControls("Irena:SimpleFits","IR3J_SimpleFitsPanel", "IR3J_CopyAndAppendData","",1,0)
    102102        //hide what is not needed
    103         checkbox UseResults, disable=1
     103        checkbox UseResults, disable=0
    104104        SetVariable DataQEnd,pos={290,90},size={170,15}, proc=IR3J_SetVarProc,title="Q max for fitting    "
    105105        Setvariable DataQEnd, variable=root:Packages:Irena:SimpleFits:DataQEnd, limits={-inf,inf,0}
     
    108108        SetVariable DataBackground,pos={280,130},size={170,15}, proc=IR3J_SetVarProc,title="Background    "
    109109        Setvariable DataBackground, variable=root:Packages:Irena:SimpleFits:DataBackground, limits={-inf,inf,0}
     110
     111        Button SelectAll,pos={200,680},size={80,15}, proc=IR3J_ButtonProc,title="SelectAll", help={"Select All data in Listbox"}
    110112
    111113        Button GetHelp,pos={430,50},size={80,15},fColor=(65535,32768,32768), proc=IR3J_ButtonProc,title="Get Help", help={"Open www manual page for this tool"}
     
    155157        Button GetNotebookWithResults,pos={280,650},size={180,20}, proc=IR3J_ButtonProc,title="Get Notebook With Results", help={"Open Notebook with results for current Model"}
    156158
    157         Button DeleteOldResults,pos={280,710},size={180,20}, proc=IR3J_ButtonProc,title="Delete Existing Results", help={"Delete results for the current model"}, fColor=(34952,34952,34952)
     159        Button DeleteOldResults,pos={280,705},size={180,20}, proc=IR3J_ButtonProc,title="Delete Existing Results", help={"Delete results for the current model"}, fColor=(34952,34952,34952)
     160
     161        SetVariable DelayBetweenProcessing,pos={260,735},size={220,15}, noproc,title="Delay between Processing ", bodywidth=80
     162        Setvariable DelayBetweenProcessing, variable=root:Packages:Irena:SimpleFits:DelayBetweenProcessing, limits={0,20,0.2}, help={"Delay between two processing steps, set o 0 for none. "}
     163
    158164
    159165        TitleBox Instructions1 title="\Zr100Double click to add data to graph",size={330,15},pos={4,680},frame=0,fColor=(0,0,65535),labelBack=0
     
    243249        ListOfVariables+="Porod_Constant;Sphere_Radius;Sphere_ScalingConstant;"
    244250        ListOfVariables+="Spheroid_Radius;Spheroid_ScalingConstant;Spheroid_Beta;"
    245         ListOfVariables+="ProcessManually;ProcessSequentially;OverwriteExistingData;AutosaveAfterProcessing;"
     251        ListOfVariables+="ProcessManually;ProcessSequentially;OverwriteExistingData;AutosaveAfterProcessing;DelayBetweenProcessing;"
    246252        ListOfVariables+="DataQEnd;DataQstart;DataQEndPoint;DataQstartPoint;"
    247253        ListOfVariables+="SaveToNotebook;SaveToWaves;SaveToFolder;"
     254        ListOfVariables+="VOlSD_Rg;VolSD_Volume;VolSD_MeanDiameter;VolSD_MedianDiameter;VOlSD_ModeDiamater;"
     255        ListOfVariables+="NumSD_NumPartPerCm3;NumSD_MeanDiameter;NumSD_MedianDiameter;NumSD_ModeDiamater;"
    248256
    249257        //and here we create them
     
    277285        endfor         
    278286        SVAR ListOfSimpleModels
    279         ListOfSimpleModels="Guinier;Porod;Sphere;Spheroid;Guinier Rod;Guinier Sheet;"
     287        ListOfSimpleModels="Guinier;Porod;Sphere;Spheroid;Guinier Rod;Guinier Sheet;Volume Size Distribution;Number Size Distribution;"
    280288        SVAR SimpleModel
    281289        if(strlen(SimpleModel)<1)
     
    313321        if(Spheroid_Beta<0.001)
    314322                Spheroid_Beta = 1
     323        endif
     324        NVAR DelayBetweenProcessing
     325        if(DelayBetweenProcessing<=0)
     326                DelayBetweenProcessing = 2
    315327        endif
    316328
     
    431443                SVAR QWavename = root:Packages:Irena:SimpleFits:QWavename
    432444                SVAR ErrorWaveName = root:Packages:Irena:SimpleFits:ErrorWaveName
    433                 UseResults = 0
    434445                UseUserDefinedData = 0
    435446                UseModelData = 0
     
    440451                Wave/Z SourceErrorWv=$(DataFolderName+ErrorWaveName)
    441452                Wave/Z SourcedQWv=$(DataFolderName+dQWavename)
    442                 if(!WaveExists(SourceIntWv)||   !WaveExists(SourceQWv)||!WaveExists(SourceErrorWv))
    443                         Abort "Data selection failed for Data 1"
     453                if(!WaveExists(SourceIntWv)||   !WaveExists(SourceQWv))//||!WaveExists(SourceErrorWv))
     454                        Abort "Data selection failed for Data in Simple/basic fits routine IR3J_CopyAndAppendData"
    444455                endif
    445456                Duplicate/O SourceIntWv, OriginalDataIntWave
    446457                Duplicate/O SourceQWv, OriginalDataQWave
    447                 Duplicate/O SourceErrorWv, OriginalDataErrorWave
     458                if(WaveExists(SourceErrorWv))
     459                        Duplicate/O SourceErrorWv, OriginalDataErrorWave
     460                else
     461                        Duplicate/O SourceIntWv, OriginalDataErrorWave
     462                        OriginalDataErrorWave = 0
     463                endif
    448464                if(WaveExists(SourcedQWv))
    449465                        Duplicate/O SourcedQWv, OriginalDatadQWave
     
    648664                ErrorBars /W=IR3J_LogLogDataDisplay OriginalDataIntWave Y,wave=(OriginalDataErrorWave,OriginalDataErrorWave)           
    649665        endif
     666        // for "Size Distribution" use linear left axis. 
     667        SVAR SimpleModel = root:Packages:Irena:SimpleFits:SimpleModel
     668        if(StringMatch(SimpleModel, "*size distribution"))
     669                                ModifyGraph /W=IR3J_LogLogDataDisplay log(left)=0, mirror=1
     670        endif
     671       
    650672        NVAR DataQEnd = root:Packages:Irena:SimpleFits:DataQEnd
    651673        NVAR DataQstart = root:Packages:Irena:SimpleFits:DataQstart
     
    739761                                IR1_CreateResultsNbk()
    740762                        endif
     763                        if(stringmatch(ba.ctrlName,"SelectAll"))
     764                                Wave/Z SelectionOfAvailableData = root:Packages:Irena:SimpleFits:SelectionOfAvailableData
     765                                if(WaveExists(SelectionOfAvailableData))
     766                                        SelectionOfAvailableData=1
     767                                endif
     768                        endif
    741769
    742770                        if(stringmatch(ba.ctrlName,"GetHelp"))
     
    791819                        IR3J_CalculateModel()           
    792820                        break
     821                case "Volume Size Distribution":                        // Spheroid
     822                        IR3J_FitSizeDistribution("Volume")
     823                        //IR3J_CalculateModel()         
     824                        break
     825                case "Number Size Distribution":                        // Spheroid
     826                        IR3J_FitSizeDistribution("Number")
     827                        //IR3J_CalculateModel()         
     828                        break
    793829                default:                       
    794830                //nothing here.
     
    809845                NVAR SaveToWaves=root:Packages:Irena:SimpleFits:SaveToWaves
    810846                NVAR SaveToFolder=root:Packages:Irena:SimpleFits:SaveToFolder
     847                NVAR DelayBetweenProcessing=root:Packages:Irena:SimpleFits:DelayBetweenProcessing
    811848                if(SaveToNotebook+SaveToWaves+SaveToFolder<1)
    812849                        DoAlert /T="Results not being saved anywhere" 1, "Results of the fits are not being saved anywhere. Do you want to continue (Yes) or abort (No)?"
     
    836873                                IR3J_SaveResultsToFolder()
    837874                                DoUpdate
    838                                 sleep/S/C=6/M="Fitted data for "+ListOfAvailableData[i] 2
     875                                sleep/S/C=6/M="Fitted data for "+ListOfAvailableData[i] DelayBetweenProcessing
    839876                        endif
    840877                endfor
     
    960997                                                SetAxis/W=IR3J_LinDataDisplay left minY, maxY
    961998                                                GetAxis/W=IR3J_LinDataDisplay/Q bottom
    962                                                 SetAxis/W=IR3J_LinDataDisplay bottom V_min, LinModelDataQWave[DataQEndPoint*SimpleFitsLinPlotMaxScale]
     999                                                SetAxis/W=IR3J_LinDataDisplay bottom V_min, SimpleFitsLinPlotMaxScale*LinModelDataQWave[DataQEndPoint]
    9631000                                        endif
    9641001                                endif
     
    10041041        Guinier_I0 = CursorAXWave[DataQstartPoint]
    10051042        Guinier_Rg = pi/(DataQEnd/2)
    1006        
    10071043        W_coef[0]=Guinier_I0    //G
    10081044        W_coef[1]=Guinier_Rg            //Rg
    1009 
    10101045        T_Constraints[0] = {"K1 > "+num2str(Guinier_Rg/10)}
    10111046        T_Constraints[1] = {"K0 > 0"}
    1012 
    10131047        LocalEwave[0]=(Guinier_I0/20)
    10141048        LocalEwave[1]=(Guinier_Rg/20)
     
    11581192        NVAR DataBackground=root:Packages:Irena:SimpleFits:DataBackground
    11591193        NVAR AchievedChiSquare=root:Packages:Irena:SimpleFits:AchievedChiSquare
     1194        Wave/Z CursorAWave = CsrWaveRef(A, "IR3J_LogLogDataDisplay")
     1195        Wave/Z CursorBWave = CsrWaveRef(B, "IR3J_LogLogDataDisplay")
     1196        Wave CursorAXWave= CsrXWaveRef(A, "IR3J_LogLogDataDisplay")
     1197        Wave OriginalDataErrorWave=root:Packages:Irena:SimpleFits:OriginalDataErrorWave
    11601198        Make/D/N=0/O W_coef, LocalEwave
    11611199        Make/D/T/N=0/O T_Constraints
     
    11641202        Redimension/N=1 T_Constraints
    11651203        T_Constraints[0] = {"K1 > 0"}
     1204        if(!WaveExists(CursorAWave)||!WaveExists(CursorBWave))
     1205                Abort "Cursors are not properly set on same wave"
     1206        endif
     1207        //make a good starting guesses:
     1208        Porod_Constant=CursorAWave[DataQstartPoint]/(CursorAXWave[DataQstartPoint]^(-4))
     1209        DataBackground=CursorAwave[DataQEndPoint]
    11661210        W_coef = {Porod_Constant,DataBackground}
     1211        LocalEwave[0]=(Porod_Constant/20)
     1212        LocalEwave[1]=(DataBackground/20)
     1213
     1214        variable/g V_FitError=0                 //This should prevent errors from being generated
     1215        FuncFit PorodInLogLog W_coef CursorAWave[DataQstartPoint,DataQEndPoint] /X=CursorAXWave /C=T_Constraints /W=OriginalDataErrorWave /I=1
     1216        if (V_FitError==0)      // fitting was fine...
     1217                Wave W_sigma
     1218                AchievedChiSquare = V_chisq/(DataQEndPoint-DataQstartPoint)
     1219                string QminRg, QmaxRg, AchiCHiStr
     1220                sprintf AchiCHiStr, "%2.2f",(AchievedChiSquare)
     1221                string TagText
     1222                TagText = "Fitted Porod  "+"I(Q) = P\BC\M * Q\S-4\M + background"+" \r P\BC\M = "+num2str(W_coef[0])+"\r Background = "+num2str(W_coef[1])
     1223                TagText +="\rχ\\S2\\M  = "+AchiCHiStr
     1224                string TagName= "PorodFit"
     1225                Tag/C/W=IR3J_LogLogDataDisplay/N=$(TagName)/L=2/X=-15.00/Y=-15.00  $NameOfWave(CursorAWave), ((DataQstartPoint + DataQEndPoint)/2),TagText     
     1226                Porod_Constant=W_coef[0]        //PC
     1227                DataBackground=W_coef[1]        //Background
     1228        else
     1229                RemoveFromGraph/Z $("fit_"+NameOfWave(CursorAWave))
     1230                beep
     1231                Print "Fitting error, check starting parameters and fitting limits"
     1232                Porod_Constant=0        //PC
     1233                DataBackground=0        //Background
     1234                AchievedChiSquare = 0
     1235        endif
     1236        SetDataFolder oldDf
     1237end
     1238
     1239
     1240
     1241//**********************************************************************************************************
     1242//**********************************************************************************************************
     1243
     1244Function IR3J_FitSizeDistribution(Which)
     1245        string Which                    //"Volume" or "Number"
     1246        IN2G_PrintDebugStatement(IrenaDebugLevel, 5,"")
     1247        IR3J_CreateCheckGraphs()
     1248        DFref oldDf= GetDataFolderDFR()
     1249        SetDataFolder root:Packages:Irena:SimpleFits                                    //go into the folder
     1250        NVAR DataQEnd = root:Packages:Irena:SimpleFits:DataQEnd
     1251        NVAR DataQstart = root:Packages:Irena:SimpleFits:DataQstart
     1252        NVAR DataQEndPoint = root:Packages:Irena:SimpleFits:DataQEndPoint
     1253        NVAR DataQstartPoint = root:Packages:Irena:SimpleFits:DataQstartPoint
     1254        NVAR Spheroid_Beta = root:Packages:Irena:SimpleFits:Spheroid_Beta
     1255        NVAR Spheroid_Radius = root:Packages:Irena:SimpleFits:Spheroid_Radius
     1256        NVAR Spheroid_ScalingConstant = root:Packages:Irena:SimpleFits:Spheroid_ScalingConstant
     1257        NVAR DataBackground=root:Packages:Irena:SimpleFits:DataBackground
     1258        NVAR AchievedChiSquare=root:Packages:Irena:SimpleFits:AchievedChiSquare
    11671259        Wave/Z CursorAWave = CsrWaveRef(A, "IR3J_LogLogDataDisplay")
    11681260        Wave/Z CursorBWave = CsrWaveRef(B, "IR3J_LogLogDataDisplay")
    11691261        Wave CursorAXWave= CsrXWaveRef(A, "IR3J_LogLogDataDisplay")
    11701262        Wave OriginalDataErrorWave=root:Packages:Irena:SimpleFits:OriginalDataErrorWave
     1263        NVAR VOlSD_Rg                                   =root:Packages:Irena:SimpleFits:VOlSD_Rg
     1264        NVAR VolSD_Volume                               =root:Packages:Irena:SimpleFits:VolSD_Volume
     1265        NVAR VolSD_MeanDiameter         =root:Packages:Irena:SimpleFits:VolSD_MeanDiameter
     1266        NVAR VolSD_MedianDiameter       =root:Packages:Irena:SimpleFits:VolSD_MedianDiameter
     1267        NVAR VOlSD_ModeDiamater         =root:Packages:Irena:SimpleFits:VOlSD_ModeDiamater
     1268        NVAR NumSD_NumPartPerCm3                =root:Packages:Irena:SimpleFits:NumSD_NumPartPerCm3
     1269        NVAR NumSD_MeanDiameter         =root:Packages:Irena:SimpleFits:NumSD_MeanDiameter
     1270        NVAR NumSD_MedianDiameter       =root:Packages:Irena:SimpleFits:NumSD_MedianDiameter
     1271        NVAR NumSD_ModeDiamater         =root:Packages:Irena:SimpleFits:NumSD_ModeDiamater
     1272        SVAR QWavename                                  =root:Packages:Irena:SimpleFits:QWavename
     1273
    11711274        if(!WaveExists(CursorAWave)||!WaveExists(CursorBWave))
    11721275                Abort "Cursors are not properly set on same wave"
    11731276        endif
     1277        Duplicate/Free/R=[DataQstartPoint, DataQEndPoint] CursorAXWave, TempXWave
     1278        Duplicate/Free/R=[DataQstartPoint, DataQEndPoint] CursorAWave, TempYWave, temp_cumulative, temp_probability, Another_temp
     1279        Another_temp=temp_probability*tempXwave
     1280        variable Rg, MeanDia, MedianDia, modeDia
     1281        string TagText
     1282        variable AreaUnderTheCurve = areaXY(CursorAXWave, CursorAWave, DataQstart, DataQEnd)
     1283        if(StringMatch(QWavename, "*Diame*" ))
     1284                Rg=IR2L_CalculateRg(TempXWave,TempYWave,1)              //Dimension is diameter, 3rd parameter is 1 if DimensionIsDiameter
     1285                MeanDia=areaXY(tempXwave, Another_temp,0,inf)   / areaXY(tempXwave, temp_probability,0,inf)                             //Sum P(D)*D*deltaD/P(D)*deltaD
     1286                //median
     1287                Temp_Cumulative=areaXY(tempXwave, Temp_Probability, tempXwave[0], tempXwave[p] )
     1288                MedianDia = tempXwave[BinarySearchInterp(Temp_Cumulative, 0.5*Temp_Cumulative[numpnts(Temp_Cumulative)-1] )]            //R for which cumulative probability=0.5
     1289                //mode
     1290                FindPeak/P/Q Temp_Probability
     1291                modeDia=tempXwave[V_PeakLoc]                                                            //location of maximum on the P(R)
     1292        else
     1293                Rg=IR2L_CalculateRg(TempXWave,TempYWave,0)              //Dimension is radius, 3rd parameter is 0
     1294                MeanDia=2*areaXY(tempXwave, Another_temp,0,inf) / areaXY(tempXwave, temp_probability,0,inf)                             //Sum P(D)*D*deltaD/P(D)*deltaD, corrected to diameter
     1295                //median
     1296                Temp_Cumulative=areaXY(tempXwave, Temp_Probability, tempXwave[0], tempXwave[p] )
     1297                MedianDia = 2* tempXwave[BinarySearchInterp(Temp_Cumulative, 0.5*Temp_Cumulative[numpnts(Temp_Cumulative)-1] )]         //Diameter for which cumulative probability=0.5
     1298                //mode
     1299                FindPeak/P/Q Temp_Probability
     1300                modeDia=2* tempXwave[V_PeakLoc]                                                         //location of maximum on the P(D)
     1301        endif
     1302        if(StringMatch(Which, "Number" ))
     1303                NumSD_NumPartPerCm3     = AreaUnderTheCurve
     1304                NumSD_MeanDiameter      = MeanDia
     1305                NumSD_MedianDiameter    = MedianDia
     1306                NumSD_ModeDiamater              = modeDia
     1307                TagText = "Number Size Distribution analysis \r"+"Number of particles/cm3 = "+num2str(AreaUnderTheCurve)
     1308                TagText+="\r Mean Diameter [A] = "+num2str(MeanDia)
     1309                TagText+="\r Mode Dia [A] = "+num2str(modeDia)+"\tMedian Diameter [A] = "+num2str(MedianDia)
     1310        else            //default is volume
     1311                VOlSD_Rg                                        = Rg
     1312                VolSD_Volume                            = AreaUnderTheCurve
     1313                VolSD_MeanDiameter              = MeanDia
     1314                VolSD_MedianDiameter    = MedianDia
     1315                VOlSD_ModeDiamater              = modeDia
     1316                TagText = "Volume Size Distribution analysis \r"+"Volume fraction = "+num2str(AreaUnderTheCurve)
     1317                TagText+="\r Rg = "+num2str(Rg)+"\tMean Diameter [A] = "+num2str(MeanDia)
     1318                TagText+="\r Mode Dia [A] = "+num2str(modeDia)+"\tMedian Diameter [A] = "+num2str(MedianDia)
     1319        endif
    11741320        //make a good starting guesses:
    1175         Porod_Constant=CursorAWave[DataQstartPoint]/(CursorAXWave[DataQstartPoint]^(-4))
    1176         DataBackground=CursorAwave[DataQEndPoint]
    1177        
    1178         LocalEwave[0]=(Porod_Constant/20)
    1179         LocalEwave[1]=(DataBackground/20)
    1180 
    1181         variable/g V_FitError=0                 //This should prevent errors from being generated
    1182         FuncFit PorodInLogLog W_coef CursorAWave[DataQstartPoint,DataQEndPoint] /X=CursorAXWave /D /C=T_Constraints /W=OriginalDataErrorWave /I=1
    1183         if (V_FitError!=0)      //there was error in fitting
    1184                 RemoveFromGraph $("fit_"+NameOfWave(CursorAWave))
    1185                 beep
    1186                 Abort "Fitting error, check starting parameters and fitting limits"
    1187         endif
    1188         Wave W_sigma
    1189         AchievedChiSquare = V_chisq/(DataQEndPoint-DataQstartPoint)
    1190         string QminRg, QmaxRg, AchiCHiStr
    1191         sprintf AchiCHiStr, "%2.2f",(AchievedChiSquare)
    1192         string TagText
    1193         TagText = "Fitted Porod  "+"I(Q) = P\BC\M * Q\S-4\M + background"+" \r P\BC\M = "+num2str(W_coef[0])+"\r Background = "+num2str(W_coef[1])
    1194         TagText +="\rχ\\S2\\M  = "+AchiCHiStr
    1195         string TagName= "PorodFit"
     1321        AchievedChiSquare = 0
     1322        string TagName= "SizeDistribution"
    11961323        Tag/C/W=IR3J_LogLogDataDisplay/N=$(TagName)/L=2/X=-15.00/Y=-15.00  $NameOfWave(CursorAWave), ((DataQstartPoint + DataQEndPoint)/2),TagText     
    1197         Porod_Constant=W_coef[0]        //PC
    1198         DataBackground=W_coef[1]        //Background
    11991324        SetDataFolder oldDf
     1325
    12001326end
    12011327
     
    12241350        T_Constraints[0] = {"K0 > 0"}
    12251351        T_Constraints[1] = {"K1 > 3"}
    1226         W_coef = {SphereScalingConst, SphereRadius,DataBackground}
    12271352        Wave/Z CursorAWave = CsrWaveRef(A, "IR3J_LogLogDataDisplay")
    12281353        Wave/Z CursorBWave = CsrWaveRef(B, "IR3J_LogLogDataDisplay")
     
    12361361        SphereRadius=2*pi/CursorAWave[DataQstartPoint]
    12371362        DataBackground=0.05*CursorAwave[DataQEndPoint]
    1238        
     1363        W_coef = {SphereScalingConst, SphereRadius,DataBackground}     
    12391364        LocalEwave[0]=(SphereScalingConst/20)
    12401365        LocalEwave[1]=(SphereRadius/20)
     
    12431368        variable/g V_FitError=0                 //This should prevent errors from being generated
    12441369//              if (FitUseErrors && WaveExists(ErrorWave))
    1245         FuncFit IR3J_SphereFormfactor W_coef CursorAWave[DataQstartPoint,DataQEndPoint] /X=CursorAXWave /D /C=T_Constraints /W=OriginalDataErrorWave /I=1
     1370        FuncFit IR3J_SphereFormfactor W_coef CursorAWave[DataQstartPoint,DataQEndPoint] /X=CursorAXWave /C=T_Constraints /W=OriginalDataErrorWave /I=1
    12461371//              else
    12471372//                      FuncFit PorodInLogLog W_coef CursorAWave[pcsr(A),pcsr(B)] /X=CursorAXWave /D /C=T_Constraints                   
     
    13371462        variable/g V_FitError=0                 //This should prevent errors from being generated
    13381463//              if (FitUseErrors && WaveExists(ErrorWave))
    1339         FuncFit IR3J_SpheroidFormfactor W_coef CursorAWave[DataQstartPoint,DataQEndPoint] /X=CursorAXWave /D /C=T_Constraints /W=OriginalDataErrorWave /I=1
     1464        FuncFit IR3J_SpheroidFormfactor W_coef CursorAWave[DataQstartPoint,DataQEndPoint] /X=CursorAXWave /C=T_Constraints /W=OriginalDataErrorWave /I=1
    13401465//              else
    13411466//                      FuncFit PorodInLogLog W_coef CursorAWave[pcsr(A),pcsr(B)] /X=CursorAXWave /D /C=T_Constraints                   
     
    15571682        NVAR SaveToWaves=root:Packages:Irena:SimpleFits:SaveToWaves
    15581683        NVAR SaveToFolder=root:Packages:Irena:SimpleFits:SaveToFolder
     1684        NVAR VOlSD_Rg                                   =root:Packages:Irena:SimpleFits:VOlSD_Rg
     1685        NVAR VolSD_Volume                               =root:Packages:Irena:SimpleFits:VolSD_Volume
     1686        NVAR VolSD_MeanDiameter         =root:Packages:Irena:SimpleFits:VolSD_MeanDiameter
     1687        NVAR VolSD_MedianDiameter       =root:Packages:Irena:SimpleFits:VolSD_MedianDiameter
     1688        NVAR VOlSD_ModeDiamater         =root:Packages:Irena:SimpleFits:VOlSD_ModeDiamater
     1689        NVAR NumSD_NumPartPerCm3                =root:Packages:Irena:SimpleFits:NumSD_NumPartPerCm3
     1690        NVAR NumSD_MeanDiameter         =root:Packages:Irena:SimpleFits:NumSD_MeanDiameter
     1691        NVAR NumSD_MedianDiameter       =root:Packages:Irena:SimpleFits:NumSD_MedianDiameter
     1692        NVAR NumSD_ModeDiamater         =root:Packages:Irena:SimpleFits:NumSD_ModeDiamater
     1693
    15591694        if(!SaveToNotebook)
    15601695                return 0
     
    15631698        Wave/Z ModelQ = root:Packages:Irena:SimpleFits:ModelLogLogQ
    15641699        //others can be created via Simple polots as needed...
    1565         if(!WaveExists(modelInt)||!WaveExists(ModelQ))
    1566                 return 0                        //cannot do anything, bail out.
    1567         endif
     1700        //if(!WaveExists(modelInt)||!WaveExists(ModelQ))
     1701        //      return 0                        //cannot do anything, bail out.
     1702        //endif
    15681703
    15691704        IR1_AppendAnyText("\r Results of "+SimpleModel+" fitting\r",1) 
     
    15751710        IR1_AppendAnyText(" ",0)       
    15761711        if(stringmatch(SimpleModel,"Guinier"))
    1577                 IR1_AppendAnyText("\tRg = "+num2str(Guinier_Rg),0)
    1578                 IR1_AppendAnyText("\tI0 = "+num2str(Guinier_I0),0)
     1712                IR1_AppendAnyText("\tRg                  = "+num2str(Guinier_Rg),0)
     1713                IR1_AppendAnyText("\tI0                  = "+num2str(Guinier_I0),0)
    15791714        elseif(stringmatch(SimpleModel,"Guinier Rod"))
    1580                 IR1_AppendAnyText("\tRc = "+num2str(Guinier_Rg),0)
    1581                 IR1_AppendAnyText("\tI0 = "+num2str(Guinier_I0),0)
     1715                IR1_AppendAnyText("\tRc                  = "+num2str(Guinier_Rg),0)
     1716                IR1_AppendAnyText("\tI0                  = "+num2str(Guinier_I0),0)
    15821717        elseif(stringmatch(SimpleModel,"Guinier Sheet"))
    1583                 IR1_AppendAnyText("\tThickness = "+num2str(sqrt(12)*Guinier_Rg),0)
    1584                 IR1_AppendAnyText("\tI0 = "+num2str(Guinier_I0),0)
     1718                IR1_AppendAnyText("\tThickness           = "+num2str(sqrt(12)*Guinier_Rg),0)
     1719                IR1_AppendAnyText("\tI0                  = "+num2str(Guinier_I0),0)
    15851720        elseif(stringmatch(SimpleModel,"Porod"))
    1586                 IR1_AppendAnyText("\tPorod Constant = "+num2str(Porod_Constant),0)
    1587                 IR1_AppendAnyText("\tBackground = "+num2str(DataBackground),0)
     1721                IR1_AppendAnyText("\tPorod Constant      = "+num2str(Porod_Constant),0)
     1722                IR1_AppendAnyText("\tBackground          = "+num2str(DataBackground),0)
    15881723        elseif(stringmatch(SimpleModel,"Sphere"))
    1589                 IR1_AppendAnyText("\tSphere Radius [A] = "+num2str(Sphere_Radius),0)
    1590                 IR1_AppendAnyText("\tScaling constant = "+num2str(Sphere_ScalingConstant),0)
     1724                IR1_AppendAnyText("\tSphere Radius [A]   = "+num2str(Sphere_Radius),0)
     1725                IR1_AppendAnyText("\tScaling constant    = "+num2str(Sphere_ScalingConstant),0)
    15911726                IR1_AppendAnyText("\tBackground = "+num2str(DataBackground),0)
    15921727        elseif(stringmatch(SimpleModel,"Spheroid"))
    15931728                IR1_AppendAnyText("\tSpheroid Radius [A] = "+num2str(Spheroid_Radius),0)
    1594                 IR1_AppendAnyText("\tScaling constant = "+num2str(Spheroid_ScalingConstant),0)
    1595                 IR1_AppendAnyText("\Spheroid Beta = "+num2str(Spheroid_Beta),0)
    1596                 IR1_AppendAnyText("\tBackground = "+num2str(DataBackground),0)
     1729                IR1_AppendAnyText("\tScaling constant    = "+num2str(Spheroid_ScalingConstant),0)
     1730                IR1_AppendAnyText("\tSpheroid Beta       = "+num2str(Spheroid_Beta),0)
     1731                IR1_AppendAnyText("\tBackground          = "+num2str(DataBackground),0)
     1732        elseif(stringmatch(SimpleModel,"Volume Size Distribution"))
     1733                IR1_AppendAnyText("\tRg [A]              =  "+num2str(VOlSD_Rg),0)
     1734                IR1_AppendAnyText("\tVolume fraction     =  "+num2str(VolSD_Volume),0)
     1735                IR1_AppendAnyText("\tMean Diameter [A]   =  "+num2str(VolSD_MeanDiameter),0)
     1736                IR1_AppendAnyText("\tMedian Diameter [A] =  "+num2str(VolSD_MedianDiameter),0)
     1737                IR1_AppendAnyText("\tMode Diameter [A]   =  "+num2str(VOlSD_ModeDiamater),0)
     1738        elseif(stringmatch(SimpleModel,"Number Size Distribution"))
     1739                IR1_AppendAnyText("\tNum Particles/cm3   =  "+num2str(NumSD_NumPartPerCm3),0)
     1740                IR1_AppendAnyText("\tMean Diameter [A]   =  "+num2str(NumSD_MeanDiameter),0)
     1741                IR1_AppendAnyText("\tMedian Diameter [A] =  "+num2str(NumSD_MedianDiameter),0)
     1742                IR1_AppendAnyText("\tMode Diameter [A]   =  "+num2str(NumSD_ModeDiamater),0)
    15971743        endif
    15981744
     
    16531799                return 0                        //cannot do anything, bail out.
    16541800        endif
     1801        //note, there is nothng to do here for :
     1802        // Volume Size Distribution and Number Size Distribution
    16551803        //get old note here...
    16561804        Wave/Z SourceIntWv=$(DataFolderName+IntensityWaveName)
     
    16831831                        Note /K/NOCR ResuldQ, NoteWithResults
    16841832                        break   
    1685         case "Guinier Sheet":   // execute if case matches expression
     1833                case "Guinier Sheet":   // execute if case matches expression
    16861834                        NoteWithResults+="Thickness="+num2str(sqrt(12)*Guinier_Rg)+";"+"I0="+num2str(Guinier_I0)+";"
    16871835                        NoteWithResults+=OldNote
     
    17281876                        Note /K/NOCR ResuldQ, NoteWithResults
    17291877                        break
     1878                case "Volume Size Distribution":        // nothng to do here...
     1879                        break
     1880                case "Number Size Distribution":        // nothng to do here...
     1881                        break
    17301882                default:                        // optional default expression executed
    17311883                        Abort "Unknown data type, cannot save the data"
     
    17601912        NVAR DataBackground                     =root:Packages:Irena:SimpleFits:DataBackground
    17611913        SVAR SimpleModel                                = root:Packages:Irena:SimpleFits:SimpleModel
     1914        NVAR VOlSD_Rg                                   =root:Packages:Irena:SimpleFits:VOlSD_Rg
     1915        NVAR VolSD_Volume                               =root:Packages:Irena:SimpleFits:VolSD_Volume
     1916        NVAR VolSD_MeanDiameter         =root:Packages:Irena:SimpleFits:VolSD_MeanDiameter
     1917        NVAR VolSD_MedianDiameter       =root:Packages:Irena:SimpleFits:VolSD_MedianDiameter
     1918        NVAR VOlSD_ModeDiamater         =root:Packages:Irena:SimpleFits:VOlSD_ModeDiamater
     1919        NVAR NumSD_NumPartPerCm3                =root:Packages:Irena:SimpleFits:NumSD_NumPartPerCm3
     1920        NVAR NumSD_MeanDiameter         =root:Packages:Irena:SimpleFits:NumSD_MeanDiameter
     1921        NVAR NumSD_MedianDiameter       =root:Packages:Irena:SimpleFits:NumSD_MedianDiameter
     1922        NVAR NumSD_ModeDiamater         =root:Packages:Irena:SimpleFits:NumSD_ModeDiamater
    17621923        NVAR SaveToNotebook=root:Packages:Irena:SimpleFits:SaveToNotebook
    17631924        NVAR SaveToWaves=root:Packages:Irena:SimpleFits:SaveToWaves
     
    17691930        Wave/Z ModelQ = root:Packages:Irena:SimpleFits:ModelLogLogQ
    17701931        //others can be created via Simple polots as needed...
    1771         if(!WaveExists(modelInt)||!WaveExists(ModelQ))
    1772                 return 0                        //cannot do anything, bail out.
    1773         endif
     1932        //if(!WaveExists(modelInt)||!WaveExists(ModelQ))                //Volume Size Distribution;Number Size Distribution do not have output waqves...
     1933        //      return 0                        //cannot do anything, bail out.
     1934        //endif
    17741935
    17751936        variable curlength
     
    17811942                        make/O/N=0 GuinierRg, GuinierI0, GuinierQmin, GuinierQmax, GuinierChiSquare
    17821943                        make/O/N=0/T SampleName
     1944                        SetScale/P x 0,1,"A", GuinierRg
     1945                        SetScale/P x 0,1,"1/A", GuinierQmin, GuinierQmax
    17831946                endif
    17841947                curlength = numpnts(GuinierRg)
     
    17981961                        make/O/N=0 GuinierRc, GuinierI0, GuinierQmin, GuinierQmax, GuinierChiSquare
    17991962                        make/O/N=0/T SampleName
     1963                        SetScale/P x 0,1,"A", GuinierRc
     1964                        SetScale/P x 0,1,"1/A", GuinierQmin, GuinierQmax
    18001965                endif
    18011966                curlength = numpnts(GuinierRc)
     
    18151980                        make/O/N=0 GuinierTh, GuinierI0, GuinierQmin, GuinierQmax, GuinierChiSquare
    18161981                        make/O/N=0/T SampleName
     1982                        SetScale/P x 0,1,"A", GuinierTh
     1983                        SetScale/P x 0,1,"1/A", GuinierQmin, GuinierQmax
    18171984                endif
    18181985                curlength = numpnts(GuinierTh)
     
    18321999                        make/O/N=0 PorodConstant, PorodBackground, PorodQmin, PorodQmax, PorodChiSquare
    18332000                        make/O/N=0/T SampleName
     2001                        SetScale/P x 0,1,"cm3/A", PorodConstant                 //this may be worng, I suspect
     2002                        SetScale/P x 0,1,"1/A", PorodQmin, PorodQmax
    18342003                endif
    18352004                curlength = numpnts(PorodConstant)
     
    18492018                        make/O/N=0 SphereRadius, SphereScalingFactor, SphereBackground, SphereQmin, SphereQmax, SphereChiSquare
    18502019                        make/O/N=0/T SampleName
     2020                        SetScale/P x 0,1,"A", SphereRadius
     2021                        SetScale/P x 0,1,"1/A", SphereQmin, SphereQmax
    18512022                endif
    18522023                curlength = numpnts(SphereRadius)
     
    18672038                        make/O/N=0 SpheroidRadius, SpheroidScalingFactor, SpheroidAspectRatio, SpheroidBackground, SpheroidQmin, SpheroidQmax, SpheroidChiSquare
    18682039                        make/O/N=0/T SampleName
     2040                        SetScale/P x 0,1,"A", SpheroidRadius
     2041                        SetScale/P x 0,1,"1/A", SpheroidQmin, SpheroidQmax
    18692042                endif
    18702043                curlength = numpnts(SpheroidRadius)
     
    18792052                SpheroidChiSquare[curlength]    = AchievedChiSquare
    18802053                IR3J_GetTableWithresults()
     2054        elseif(stringmatch(SimpleModel,"Volume Size Distribution"))
     2055                //tabulate data for Porod
     2056                NewDATAFolder/O/S root:VolSizeDistResults
     2057                Wave/Z Rg
     2058                if(!WaveExists(Rg))
     2059                        make/O/N=0 Rg, VolumeFraction, MeanDiaVolDist, ModeDiaVolDist, MeadianDiaVolDist
     2060                        make/O/N=0/T SampleName
     2061                        SetScale/P x 0,1,"A", Rg, MeanDiaVolDist, ModeDiaVolDist, MeadianDiaVolDist
     2062                        SetScale/P x 0,1,"Fraction", VolumeFraction             
     2063                endif
     2064                curlength = numpnts(Rg)
     2065                redimension/N=(curlength+1) SampleName,Rg, VolumeFraction, MeanDiaVolDist, ModeDiaVolDist, MeadianDiaVolDist
     2066                SampleName[curlength]                   = DataFolderName
     2067                Rg[curlength]                                           = VOlSD_Rg
     2068                VolumeFraction[curlength]               = VolSD_Volume
     2069                MeanDiaVolDist[curlength]               = VolSD_MeanDiameter
     2070                ModeDiaVolDist[curlength]               = VOlSD_ModeDiamater
     2071                MeadianDiaVolDist[curlength]    = VolSD_MedianDiameter
     2072
     2073                //IR3J_GetTableWithresults()
     2074        elseif(stringmatch(SimpleModel,"Number Size Distribution"))
     2075                //tabulate data for Porod
     2076                NewDATAFolder/O/S root:NumbSizeDistResults
     2077                Wave/Z NumPartsPercm3
     2078                if(!WaveExists(NumPartsPercm3))
     2079                        make/O/N=0 NumPartsPercm3, MeanDiaNumDist, ModeDiaNumDist, MeadianDiaNumDist
     2080                        make/O/N=0/T SampleName
     2081                        SetScale/P x 0,1,"A", MeanDiaNumDist, ModeDiaNumDist, MeadianDiaNumDist
     2082                        SetScale/P x 0,1,"1/cm3", NumPartsPercm3               
     2083                endif
     2084                curlength = numpnts(NumPartsPercm3)
     2085                redimension/N=(curlength+1) SampleName, NumPartsPercm3, MeanDiaNumDist, ModeDiaNumDist, MeadianDiaNumDist
     2086                SampleName[curlength]                   = DataFolderName
     2087                NumPartsPercm3[curlength]               = NumSD_NumPartPerCm3
     2088                MeanDiaNumDist[curlength]               = NumSD_MeanDiameter
     2089                ModeDiaNumDist[curlength]               = NumSD_ModeDiamater
     2090                MeadianDiaNumDist[curlength]    = NumSD_MedianDiameter
     2091
     2092                //IR3J_GetTableWithresults()
    18812093        endif
    18822094       
     
    19382150                        endif
    19392151                        break
     2152                case "Volume Size Distribution":        // execute if case matches expression
     2153                        DoWindow IR3J_VolSDResultsTable
     2154                        if(V_Flag)
     2155                                DoWindow/F IR3J_VolSDResultsTable
     2156                        else
     2157                                IR3J_VolumeSDResTblFnct()
     2158                        endif
     2159                        break
     2160                case "Number Size Distribution":        // execute if case matches expression
     2161                        DoWindow IR3J_NumberSDResultsTable
     2162                        if(V_Flag)
     2163                                DoWindow/F IR3J_NumberSDResultsTable
     2164                        else
     2165                                IR3J_NumberSDResTblFnct()
     2166                        endif
     2167                        break
     2168
    19402169                default:                        // optional default expression executed
    19412170
     
    19502179        IN2G_PrintDebugStatement(IrenaDebugLevel, 5,"")
    19512180        SVAR SimpleModel        = root:Packages:Irena:SimpleFits:SimpleModel
    1952         DoAlert /T="This is delete resutls warning" 1, "This will delete all existing results for model : "+SimpleModel+"  . Do you WANT to continue?"
     2181        DoAlert /T="This is delete resutls warning" 1, "This will delete all existing results for model : "+SimpleModel+". Do you WANT to continue?"
    19532182        if(V_Flag==1)
    19542183                strswitch(SimpleModel)  // string switch
    19552184                        case "Guinier": // execute if case matches expression
    19562185                                DoWindow/K/Z IR3J_GuinierFitResultsTable
    1957                                 KillDataFolder/Z root:GuinierFitResults:
    1958                                 if(V_Flag!=0)
    1959                                         DoAlert/T="Could not delete data folder" 0, "Guinier results folder root:GuinierFitResults could not be deleted. It is likely used in some graph or table. Close graphs/tables and try again."
     2186                                if(DataFolderExists("root:GuinierFitResults"))
     2187                                        KillDataFolder/Z root:GuinierFitResults:
     2188                                        if(V_Flag!=0)
     2189                                                DoAlert/T="Could not delete data folder" 0, "Guinier results folder root:GuinierFitResults could not be deleted. It is likely used in some graph or table. Close graphs/tables and try again."
     2190                                        endif
    19602191                                endif
    19612192                                break           // exit from switch
    19622193                        case "Guinier Rod":     // execute if case matches expression
    19632194                                DoWindow/K/Z IR3J_GuinierRodFitResultsTable
    1964                                 KillDataFolder/Z root:GuinierRodFitResults:
    1965                                 if(V_Flag!=0)
    1966                                         DoAlert/T="Could not delete data folder" 0, "Guinier results folder root:GuinierRodFitResults could not be deleted. It is likely used in some graph or table. Close graphs/tables and try again."
     2195                                if(DataFolderExists("root:GuinierRodFitResults"))
     2196                                        KillDataFolder/Z root:GuinierRodFitResults:
     2197                                        if(V_Flag!=0)
     2198                                                DoAlert/T="Could not delete data folder" 0, "Guinier results folder root:GuinierRodFitResults could not be deleted. It is likely used in some graph or table. Close graphs/tables and try again."
     2199                                        endif
    19672200                                endif
    19682201                                break           // exit from switch
    19692202                        case "Guinier Sheet":   // execute if case matches expression
    19702203                                DoWindow/K/Z IR3J_GuinierSheetFitResTable
    1971                                 KillDataFolder/Z root:GuinierSheetFitResults:
    1972                                 if(V_Flag!=0)
    1973                                         DoAlert/T="Could not delete data folder" 0, "Guinier results folder root:GuinierSheetFitResults could not be deleted. It is likely used in some graph or table. Close graphs/tables and try again."
     2204                                if(DataFolderExists("root:GuinierSheetFitResults"))
     2205                                        KillDataFolder/Z root:GuinierSheetFitResults:
     2206                                        if(V_Flag!=0)
     2207                                                DoAlert/T="Could not delete data folder" 0, "Guinier results folder root:GuinierSheetFitResults could not be deleted. It is likely used in some graph or table. Close graphs/tables and try again."
     2208                                        endif
    19742209                                endif
    19752210                                break           // exit from switch
    19762211                        case "Porod":   // execute if case matches expression
    19772212                                DoWindow/K/Z  IR3J_PorodFitResultsTable
    1978                                 KillDataFolder/Z root:PorodFitResults:
    1979                                 if(V_Flag!=0)
    1980                                         DoAlert/T="Could not delete data folder" 0, "Porod results folder root:PorodFitResults could not be deleted. It is likely used in some graph or table. Close graphs/tables and try again."
     2213                                if(DataFolderExists("root:PorodFitResults"))
     2214                                        KillDataFolder/Z root:PorodFitResults:
     2215                                        if(V_Flag!=0)
     2216                                                DoAlert/T="Could not delete data folder" 0, "Porod results folder root:PorodFitResults could not be deleted. It is likely used in some graph or table. Close graphs/tables and try again."
     2217                                        endif
    19812218                                endif
    19822219                                break
    19832220                        case "Sphere":  // execute if case matches expression
    19842221                                DoWindow/K/Z  IR3J_SphereFFFitResultsTable
    1985                                 KillDataFolder/Z root:SphereFitResults:
    1986                                 if(V_Flag!=0)
    1987                                         DoAlert/T="Could not delete data folder" 0, "Sphere FF results folder root:SphereFitResults could not be deleted. It is likely used in some graph or table. Close graphs/tables and try again."
     2222                                if(DataFolderExists("root:SphereFitResults"))
     2223                                        KillDataFolder/Z root:SphereFitResults:
     2224                                        if(V_Flag!=0)
     2225                                                DoAlert/T="Could not delete data folder" 0, "Sphere FF results folder root:SphereFitResults could not be deleted. It is likely used in some graph or table. Close graphs/tables and try again."
     2226                                        endif
    19882227                                endif
    19892228                                break
    19902229                        case "Spheroid":        // execute if case matches expression
    19912230                                DoWindow/K/Z IR3J_SpheroidFFFitResultsTable
    1992                                 KillDataFolder/Z root:SpheroidFitResults:
    1993                                 if(V_Flag!=0)
    1994                                         DoAlert/T="Could not delete data folder" 0, "Spheroid FF results folder root:SpheroidFitResults could not be deleted. It is likely used in some graph or table. Close graphs/tables and try again."
     2231                                if(DataFolderExists("root:SpheroidFitResults"))
     2232                                        KillDataFolder/Z root:SpheroidFitResults:
     2233                                        if(V_Flag!=0)
     2234                                                DoAlert/T="Could not delete data folder" 0, "Spheroid FF results folder root:SpheroidFitResults could not be deleted. It is likely used in some graph or table. Close graphs/tables and try again."
     2235                                        endif
     2236                                endif
     2237                                break
     2238                        case "Volume Size Distribution":        // execute if case matches expression
     2239                                DoWindow/K/Z IR3J_VolSDResultsTable
     2240                                if(DataFolderExists("root:VolSizeDistResults"))
     2241                                        KillDataFolder/Z root:VolSizeDistResults:
     2242                                        if(V_Flag!=0)
     2243                                                DoAlert/T="Could not delete data folder" 0, "Volume Size distribution analysis results folder root:VolSizeDistResults could not be deleted. It is likely used in some graph or table. Close graphs/tables and try again."
     2244                                        endif
     2245                                endif
     2246                                break
     2247                        case "Number Size Distribution":        // execute if case matches expression
     2248                                DoWindow/K/Z IR3J_NumberSDResultsTable
     2249                                if(DataFolderExists("root:NumbSizeDistResults"))
     2250                                        KillDataFolder/Z root:NumbSizeDistResults:
     2251                                        if(V_Flag!=0)
     2252                                                DoAlert/T="Could not delete data folder" 0, "Number Size distribution analysis results folder root:NumbSizeDistResults could not be deleted. It is likely used in some graph or table. Close graphs/tables and try again."
     2253                                        endif
    19952254                                endif
    19962255                                break
     
    21392398        SetDataFolder fldrSav0
    21402399EndMacro
     2400//*****************************************************************************************************************
     2401
     2402Function IR3J_VolumeSDResTblFnct() : Table
     2403        PauseUpdate; Silent 1           // building window...
     2404        IN2G_PrintDebugStatement(IrenaDebugLevel, 5,"")
     2405        String fldrSav0= GetDataFolder(1)
     2406        if(!DataFolderExists("root:VolSizeDistResults:"))
     2407                Abort "No Volume Size Distribution analysis data exist."
     2408        endif
     2409        SetDataFolder root:VolSizeDistResults:
     2410        Wave/T SampleName
     2411        Wave Rg,VolumeFraction,MeanDiaVolDist,ModeDiaVolDist,MeadianDiaVolDist 
     2412        Edit/K=1/W=(238,397,1078,679)/N=IR3J_VolSDResultsTable SampleName,Rg,VolumeFraction,MeanDiaVolDist,ModeDiaVolDist as "Volume Size Distribution Analysis"
     2413        AppendToTable MeadianDiaVolDist
     2414        ModifyTable format(Point)=1,width(SampleName)=264,title(SampleName)="Sample name"
     2415        ModifyTable alignment(Rg)=1,sigDigits(Rg)=4,title(Rg)="Rg [A]",alignment(VolumeFraction)=1
     2416        ModifyTable sigDigits(VolumeFraction)=3,title(VolumeFraction)="Vol. Fraction",alignment(MeanDiaVolDist)=1
     2417        ModifyTable sigDigits(MeanDiaVolDist)=4,title(MeanDiaVolDist)="Mean Dia [A]",alignment(ModeDiaVolDist)=1
     2418        ModifyTable sigDigits(ModeDiaVolDist)=4,title(ModeDiaVolDist)="Mode dia [A]",alignment(MeadianDiaVolDist)=1
     2419        ModifyTable sigDigits(MeadianDiaVolDist)=4,width(MeadianDiaVolDist)=100,title(MeadianDiaVolDist)="Meadian Dia [A]"
     2420        SetDataFolder fldrSav0
     2421EndMacro
     2422
     2423//*****************************************************************************************************************
     2424
     2425Function IR3J_NumberSDResTblFnct() : Table
     2426        PauseUpdate; Silent 1           // building window...
     2427        IN2G_PrintDebugStatement(IrenaDebugLevel, 5,"")
     2428        String fldrSav0= GetDataFolder(1)
     2429        if(!DataFolderExists("root:NumbSizeDistResults:"))
     2430                Abort "No Number Size Distribution analysis data exist."
     2431        endif
     2432        SetDataFolder root:NumbSizeDistResults:
     2433        Wave/T SampleName
     2434        Wave NumPartsPercm3,MeanDiaNumDist,ModeDiaNumDist,MeadianDiaNumDist
     2435        Edit/K=1/W=(238,397,1078,679)/N=IR3J_NumberSDResultsTable SampleName,NumPartsPercm3,MeanDiaNumDist,ModeDiaNumDist,MeadianDiaNumDist as "Volume Size Distribution Analysis"
     2436        ModifyTable format(Point)=1,width(SampleName)=264,title(SampleName)="Sample name"
     2437        ModifyTable alignment(NumPartsPercm3)=1,sigDigits(NumPartsPercm3)=4,title(NumPartsPercm3)="Num Particles [1/cm3]"
     2438        ModifyTable alignment(MeanDiaNumDist)=1, width(NumPartsPercm3)=120
     2439        ModifyTable sigDigits(MeanDiaNumDist)=4,title(MeanDiaNumDist)="Mean Dia [A]",alignment(ModeDiaNumDist)=1
     2440        ModifyTable sigDigits(ModeDiaNumDist)=4,title(ModeDiaNumDist)="Mode dia [A]",alignment(MeadianDiaNumDist)=1
     2441        ModifyTable sigDigits(MeadianDiaNumDist)=4,width(MeadianDiaNumDist)=100,title(MeadianDiaNumDist)="Meadian Dia [A]"
     2442        SetDataFolder fldrSav0
     2443EndMacro
     2444
     2445
     2446
    21412447//*****************************************************************************************************************
    21422448//*****************************************************************************************************************
Note: See TracChangeset for help on using the changeset viewer.