Changeset 7


Ignore:
Timestamp:
Mar 12, 2013 8:42:42 AM (10 years ago)
Author:
ilavsky
Message:

Data manipulation II - added options for error generation and reduction of number of points

Location:
User Procedures/Irena
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • User Procedures/Irena/IR1_DataManipulation.ipf

    r6 r7  
    11#pragma rtGlobals=3             // Use modern global access method.
    2 #pragma version=2.37
    3 constant IR3MversionNumber = 2.37
    4 constant IR1DversionNumber = 2.37
     2#pragma version=2.38
     3constant IR3MversionNumber = 2.38
     4constant IR1DversionNumber = 2.38
    55
    66//*************************************************************************\
     
    1010//*************************************************************************/
    1111
     12//2.38 added vertical scrolling to Data manipulation II and I.
    1213//2.37 converted to rtGlobals=3
    1314//2.36 fixed saving data bug which failed on liberal names (again).
     
    2930//version 2.1 modified to use new control procedures using subpanels... Hope this will work as advertised.
    3031//2.11 added log-x rebinning as option.
    31 //2.20 add Data Manipualtion II - manipualting multiple data sets. For now only avergaging multiple data sets but can be made more extensive
     32//2.20 add Data Manipualtion II - manipulating multiple data sets. For now only avergaging multiple data sets but can be made more extensive
    3233//2.21  modified Data manipulation II to be able to subtract one wave from many data sets.
    3334
     
    27642765
    27652766      TabControl ProcessingTabs  pos={0,300},size={400,147},tabLabel(0)="Processing", value= 0, proc=IR3M_DataManIITabProc
     2767         TabControl ProcessingTabs  tabLabel(1)="Data selection", tabLabel(2)="Errors", tabLabel(3)="Post Processing"
    27662768
    27672769//Subtract one data set from all       
    27682770
    27692771
    2770         CheckBox ScaleData,pos={200,325},size={80,14},title="Scale Data (last step)?",proc= IR3M_CheckProc
    2771         CheckBox ScaleData,variable= root:Packages:DataManipulationII:ScaleData, help={"Scale Data - done last"}
    2772         SetVariable ScaleDataByValue,variable= root:Packages:DataManipulationII:ScaleDataByValue,noProc, frame=1, disable=!(ScaleData)
    2773         SetVariable ScaleDataByValue,pos={200,345},size={160,25},title="Scale by =", help={"How much to scale data by?"}//, fSize=10,fstyle=1,labelBack=(65280,21760,0)
     2772
    27742773        CheckBox SubtractDataFromAll,pos={15,325},size={80,14},title="Subtract Data?",proc= IR3M_CheckProc
    27752774        CheckBox SubtractDataFromAll,variable= root:Packages:DataManipulationII:SubtractDataFromAll, help={"Subtract one set of data from all"}
    2776 
    2777         CheckBox NormalizeData,pos={15,345},size={80,14},title="Normalize Data?",proc= IR3M_CheckProc
     2775        CheckBox NormalizeData,pos={15,340},size={80,14},title="Normalize Data?",proc= IR3M_CheckProc
    27782776        CheckBox NormalizeData,variable= root:Packages:DataManipulationII:NormalizeData, help={"Normalize data to another data set or value"}
    2779         CheckBox AverageWaves,pos={15,365},size={80,14},title="Average Waves?",proc= IR3M_CheckProc
     2777        CheckBox AverageWaves,pos={15,355},size={80,14},title="Average Waves?",proc= IR3M_CheckProc
    27802778        CheckBox AverageWaves,variable= root:Packages:DataManipulationII:AverageWaves, help={"Average waves using Q values of the first selected wave"}
    2781         CheckBox AverageNWaves,pos={15,385},size={80,14},title="Average every N Waves?",proc= IR3M_CheckProc
     2779        CheckBox AverageNWaves,pos={15,370},size={80,14},title="Average every N Waves?",proc= IR3M_CheckProc
    27822780        CheckBox AverageNWaves,variable= root:Packages:DataManipulationII:AverageNWaves, help={"Average every N selected waves using Q values of the first selected wave"}
    27832781        SetVariable NforAveraging,variable= root:Packages:DataManipulationII:NforAveraging,noProc, frame=1, disable=!(AverageNWaves)
    2784         SetVariable NforAveraging,pos={150,385},size={120,25},title="N =", help={"N for averaging N waves"}//, fSize=10,fstyle=1,labelBack=(65280,21760,0)
    2785         CheckBox GenerateStatisticsForAveWvs,pos={150,365},size={80,14},title="Generate Statistics For AveWvs?", proc= IR3M_CheckProc, disable=!(AverageWaves||AverageNWaves)
     2782        SetVariable NforAveraging,pos={150,370},size={120,25},title="N =", help={"N for averaging N waves"}//, fSize=10,fstyle=1,labelBack=(65280,21760,0)
     2783        CheckBox GenerateStatisticsForAveWvs,pos={150,355},size={80,14},title="Generate Statistics For AveWvs?", proc= IR3M_CheckProc, disable=!(AverageWaves||AverageNWaves)
    27862784        CheckBox GenerateStatisticsForAveWvs,variable= root:Packages:DataManipulationII:GenerateStatisticsForAveWvs, help={"Generate Sdev of each point"}
     2785
     2786        CheckBox PassTroughProcessing,pos={15,385},size={80,14},title="Pass through",proc= IR3M_CheckProc
     2787        CheckBox PassTroughProcessing,variable= root:Packages:DataManipulationII:PassTroughProcessing, help={"Normalize data to another data set or value"}
     2788
    27872789//error decisions, ErrorUseStdDev;ErrorUseStdErOfMean
    2788        
    2789         CheckBox GenerateMinMax,pos={10,405},size={80,14},title="Min/Max?", noproc, disable=!(GenerateStatisticsForAveWvs&&AverageWaves)
     2790
     2791       
     2792        CheckBox GenerateMinMax,pos={10,390},size={80,14},title="Min/Max?", noproc, disable=!(GenerateStatisticsForAveWvs&&AverageWaves)
    27902793        CheckBox GenerateMinMax,variable= root:Packages:DataManipulationII:GenerateMinMax, help={"Generate Sdev of each point?"}, mode=0
    2791         CheckBox ErrorUseStdDev,pos={120,405},size={80,14},title="Std Deviation?", proc= IR3M_CheckProc, disable=!(GenerateStatisticsForAveWvs&&AverageWaves)
     2794        CheckBox ErrorUseStdDev,pos={120,390},size={80,14},title="Std Deviation?", proc= IR3M_CheckProc, disable=!(GenerateStatisticsForAveWvs&&AverageWaves)
    27922795        CheckBox ErrorUseStdDev,variable= root:Packages:DataManipulationII:ErrorUseStdDev, help={"Generate Sdev of each point?"}, mode=1
    2793         CheckBox ErrorUseStdErOfMean,pos={250,405},size={80,14},title="Std Dev of Mean?", proc= IR3M_CheckProc, disable=!(GenerateStatisticsForAveWvs&&AverageWaves)
     2796        CheckBox ErrorUseStdErOfMean,pos={250,390},size={80,14},title="Std Dev of Mean?", proc= IR3M_CheckProc, disable=!(GenerateStatisticsForAveWvs&&AverageWaves)
    27942797        CheckBox ErrorUseStdErOfMean,variable= root:Packages:DataManipulationII:ErrorUseStdErOfMean, help={"Generate Standard error of mean of each point?"}, mode=1
    2795 
    2796         CheckBox NormalizeDataToData,pos={10,405},size={80,14},title="Normalize to Data?",proc= IR3M_CheckProc, disable=!(NormalizeData)
     2798       
     2799        CheckBox NormalizeDataToData,pos={15,405},size={80,14},title="Normalize to Data?",proc= IR3M_CheckProc, disable=!(NormalizeData)
    27972800        CheckBox NormalizeDataToData,variable= root:Packages:DataManipulationII:NormalizeDataToData, help={"Normalize to value obtained fro another data set"}
    27982801        SetVariable NormalizeDataToValue,variable= root:Packages:DataManipulationII:NormalizeDataToValue,noproc, frame=1, disable=!(NormalizeData)
     
    28022805        SetVariable NormalizeDataQmax,variable= root:Packages:DataManipulationII:NormalizeDataQmax,proc=IR3M_DataManIISetVarProc, frame=1, disable=!(NormalizeData)
    28032806        SetVariable NormalizeDataQmax,pos={250,425},size={120,25},title="Q max =", help={"Q max to start normalization area"}//, fSize=10,fstyle=1,labelBack=(65280,21760,0)
     2807       
     2808        //Tab 3 controls...
     2809
     2810        NVAR CreatePctErrors = root:Packages:DataManipulationII:CreatePctErrors
     2811        CheckBox CreateErrors,pos={15,325},size={16,14},proc=IR3M_CheckProc,title="Create new Errors?",variable= root:Packages:DataManipulationII:CreateErrors, help={"If input data do not contain errors, create errors as sqrt of intensity?"}
     2812        CheckBox CreateSQRTErrors,pos={15,340},size={16,14},proc=IR3M_CheckProc,title="Create SQRT Errors?",variable= root:Packages:DataManipulationII:CreateSQRTErrors, help={"If input data do not contain errors, create errors as sqrt of intensity?"}
     2813        CheckBox CreatePercentErrors,pos={170,340},size={16,14},proc=IR3M_CheckProc,title="Create n% Errors?",variable= root:Packages:DataManipulationII:CreatePctErrors, help={"If input data do not contain errors, create errors as n% of intensity?, select how many %"}
     2814        SetVariable PercentErrorsToUse, pos={170,360}, size={100,20},title="Error %?:", noproc, disable=!(CreatePctErrors)
     2815        SetVariable PercentErrorsToUse variable= root:packages:DataManipulationII:PercentErrorsToUse,help={"Input how many percent error you want to create."}
     2816
     2817        //Tab 4 controls
     2818        CheckBox ScaleData,pos={15,325},size={80,14},title="Scale Data?",proc= IR3M_CheckProc
     2819        CheckBox ScaleData,variable= root:Packages:DataManipulationII:ScaleData, help={"Scale Data - done last"}
     2820        SetVariable ScaleDataByValue,variable= root:Packages:DataManipulationII:ScaleDataByValue,noProc, frame=1, disable=!(ScaleData)
     2821        SetVariable ScaleDataByValue,pos={200,325},size={160,25},title="Scale by =", help={"How much to scale data by?"}//, fSize=10,fstyle=1,labelBack=(65280,21760,0)
     2822        NVAR ReduceNumPnts = root:Packages:DataManipulationII:ReduceNumPnts
     2823        CheckBox ReduceNumPnts,pos={15,345},size={16,14},proc=IR3M_CheckProc,title="Reduce points?",variable= root:Packages:DataManipulationII:ReduceNumPnts, help={"Check to log-reduce number of points"}
     2824        SetVariable TargetNumberOfPoints, pos={110,345}, size={110,20},title="Num points=", noproc, disable=!(ReduceNumPnts)
     2825        SetVariable TargetNumberOfPoints limits={10,1000,0},value= root:packages:DataManipulationII:TargetNumberOfPoints,help={"Target number of points after reduction. Uses same method as Data manipualtion I"}
     2826        SetVariable ReducePntsParam, pos={240,345}, size={130,20},title="Red. pnts. Param=", noproc, disable=!(ReduceNumPnts)
     2827        SetVariable ReducePntsParam limits={0.5,10,0},value= root:packages:DataManipulationII:ReducePntsParam,help={"Log reduce points parameter, typically 3-5"}
     2828
    28042829       
    28052830        //Experimental data input
     
    29442969        STRUCT WMTabControlAction &tca
    29452970
    2946                                 NVAR ScaleData = root:Packages:DataManipulationII:ScaleData
    2947                                 NVAR SubtractDataFromAll = root:Packages:DataManipulationII:SubtractDataFromAll
    2948                                 NVAR AverageWaves = root:Packages:DataManipulationII:AverageWaves
    2949                                 NVAR NormalizeData = root:Packages:DataManipulationII:NormalizeData
    2950                                 NVAR AverageNWaves = root:Packages:DataManipulationII:AverageNWaves
    2951                                 NVAR GenerateStatisticsForAveWvs=root:Packages:DataManipulationII:GenerateStatisticsForAveWvs
    2952                                 NVAR NormalizeDataToData= root:Packages:DataManipulationII:NormalizeDataToData
    2953 
    2954         CheckBox ScaleData,pos={200,325},size={80,14},title="Scale Data?",proc= IR3M_CheckProc
    2955         CheckBox ScaleData,variable= root:Packages:DataManipulationII:ScaleData, help={"Scale Data - done last"}
    2956         SetVariable ScaleDataByValue,variable= root:Packages:DataManipulationII:ScaleDataByValue,noProc, frame=1, disable=!(ScaleData)
    2957         SetVariable ScaleDataByValue,pos={150,385},size={120,25},title="Scale by =", help={"How much to scale data by?"}//, fSize=10,fstyle=1,labelBack=(65280,21760,0)
    2958 
     2971        NVAR ScaleData = root:Packages:DataManipulationII:ScaleData
     2972        NVAR SubtractDataFromAll = root:Packages:DataManipulationII:SubtractDataFromAll
     2973        NVAR AverageWaves = root:Packages:DataManipulationII:AverageWaves
     2974        NVAR NormalizeData = root:Packages:DataManipulationII:NormalizeData
     2975        NVAR AverageNWaves = root:Packages:DataManipulationII:AverageNWaves
     2976        NVAR GenerateStatisticsForAveWvs=root:Packages:DataManipulationII:GenerateStatisticsForAveWvs
     2977        NVAR NormalizeDataToData= root:Packages:DataManipulationII:NormalizeDataToData
     2978        NVAR CreateErrors= root:Packages:DataManipulationII:CreateErrors
     2979        NVAR CreateSQRTErrors= root:Packages:DataManipulationII:CreateSQRTErrors
     2980        NVAR CreatePctErrors= root:Packages:DataManipulationII:CreatePctErrors
     2981        NVAR ReduceNumPnts= root:Packages:DataManipulationII:ReduceNumPnts
     2982        NVAR PassTroughProcessing=root:Packages:DataManipulationII:PassTroughProcessing
     2983
     2984//      CheckBox ScaleData,pos={200,325},size={80,14},title="Scale Data?",proc= IR3M_CheckProc
     2985//      CheckBox ScaleData,variable= root:Packages:DataManipulationII:ScaleData, help={"Scale Data - done last"}
     2986//      SetVariable ScaleDataByValue,variable= root:Packages:DataManipulationII:ScaleDataByValue,noProc, frame=1, disable=!(ScaleData)
     2987//      SetVariable ScaleDataByValue,pos={150,385},size={120,25},title="Scale by =", help={"How much to scale data by?"}//, fSize=10,fstyle=1,labelBack=(65280,21760,0)
     2988
     2989        if(PassTroughProcessing+AverageNWaves+AverageWaves+NormalizeData+SubtractDataFromAll!=1)
     2990                PassTroughProcessing=1
     2991                AverageNWaves=0
     2992                AverageWaves=0
     2993                NormalizeData=0
     2994                SubtractDataFromAll=0
     2995        endif
    29592996
    29602997        switch( tca.eventCode )
     
    29622999                        Variable tab = tca.tab
    29633000                       
     3001                        CheckBox GenerateStatisticsForAveWvs , win=DataManipulationII,disable=(!(AverageWaves)||(tab!=0))
     3002                        CheckBox ScaleData,win=DataManipulationII,disable=(tab!=3)
     3003                        Checkbox PassTroughProcessing,win=DataManipulationII,disable=(tab!=0)
     3004                        SetVariable ScaleDataByValue, win=DataManipulationII, disable=(!(ScaleData)||(tab!=3))
     3005                        CheckBox ErrorUseStdDev, win=DataManipulationII, disable=(!(GenerateStatisticsForAveWvs&&AverageWaves)||(tab!=0))
     3006                        CheckBox ErrorUseStdErOfMean win=DataManipulationII,disable=(!(GenerateStatisticsForAveWvs&&AverageWaves)||(tab!=0))
     3007                        CheckBox GenerateMinMax win=DataManipulationII,disable=(!(GenerateStatisticsForAveWvs&&AverageWaves)||(tab!=0))
     3008                        CheckBox NormalizeDataToData , win=DataManipulationII,disable=(!(NormalizeData)||(tab!=0))
     3009                        if(tab==0 && NormalizeData)
     3010                                SetVariable NormalizeDataToValue , win=DataManipulationII,disable=((2*NormalizeDataToData))
     3011                        else
     3012                                SetVariable NormalizeDataToValue , win=DataManipulationII,disable=(1)
     3013                        endif
     3014                        SetVariable NormalizeDataQmin , win=DataManipulationII,disable=(!(NormalizeData)||(tab!=0))
     3015                        SetVariable NormalizeDataQmax , win=DataManipulationII,disable=(!(NormalizeData)        ||(tab!=0))             
     3016                        SetVariable NforAveraging , win=DataManipulationII,disable=(!(AverageNWaves)||(tab!=0))         
     3017                               
     3018                        CheckBox NormalizeData , win=DataManipulationII,disable=(tab!=0)                               
     3019                        CheckBox SubtractDataFromAll, win=DataManipulationII,disable=(tab!=0)
     3020                        CheckBox AverageWaves,win=DataManipulationII,disable=(tab!=0)   
     3021                        CheckBox AverageNWaves,win=DataManipulationII,disable=(tab!=0)         
     3022                       
     3023                        CheckBox ReduceNumPnts,win=DataManipulationII,disable=(tab!=3)         
     3024                        SetVariable TargetNumberOfPoints,win=DataManipulationII,disable=(tab!=3||!ReduceNumPnts)               
     3025                        SetVariable ReducePntsParam,win=DataManipulationII,disable=(tab!=3 || !ReduceNumPnts)           
     3026                               
     3027                        CheckBox CreateErrors,win=DataManipulationII,disable=(tab!=2)           
     3028                        CheckBox CreateSQRTErrors,win=DataManipulationII,disable=(tab!=2||!CreateErrors)               
     3029                        CheckBox CreatePercentErrors,win=DataManipulationII,disable=(tab!=2||!CreateErrors)             
     3030                        SetVariable PercentErrorsToUse,win=DataManipulationII,disable=(tab!=2||!CreateErrors||!CreatePctErrors)         
    29643031                        if(tab==0)
    29653032                                SetWindow DataManipulationII#SubDta , hide =1
    2966                                 CheckBox GenerateStatisticsForAveWvs , win=DataManipulationII,disable=!(AverageWaves)
    2967                                 CheckBox ScaleData,win=DataManipulationII,disable=0     
    2968                                 SetVariable ScaleDataByValue, win=DataManipulationII, disable=!(ScaleData)
    2969                                 CheckBox ErrorUseStdDev, win=DataManipulationII, disable=!(GenerateStatisticsForAveWvs&&AverageWaves)
    2970                                 CheckBox ErrorUseStdErOfMean win=DataManipulationII,disable=!(GenerateStatisticsForAveWvs&&AverageWaves)
    2971                                 CheckBox GenerateMinMax win=DataManipulationII,disable=!(GenerateStatisticsForAveWvs&&AverageWaves)
    2972                                 CheckBox NormalizeDataToData , win=DataManipulationII,disable=!(NormalizeData)
    2973                                 SetVariable NormalizeDataToValue , win=DataManipulationII,disable=(2*NormalizeDataToData)
    2974                                 SetVariable NormalizeDataQmin , win=DataManipulationII,disable=!(NormalizeData)
    2975                                 SetVariable NormalizeDataQmax , win=DataManipulationII,disable=!(NormalizeData)                         
    2976                                 CheckBox NormalizeData , win=DataManipulationII,disable=0                               
    2977                                 CheckBox SubtractDataFromAll, win=DataManipulationII,disable=0 
    2978                                 CheckBox AverageWaves,win=DataManipulationII,disable=0 
    2979                                 CheckBox AverageNWaves,win=DataManipulationII,disable=0         
    29803033                                IR3M_DataManIINormUpdateVal()
    29813034                        elseif(tab==1)
    29823035                                SetWindow DataManipulationII#SubDta , hide =0
    2983                                 CheckBox ScaleData,win=DataManipulationII,disable=1     
    2984                                 SetVariable ScaleDataByValue, win=DataManipulationII, disable=1
    2985                                 CheckBox GenerateStatisticsForAveWvs , win=DataManipulationII,disable=1
    2986                                 CheckBox ErrorUseStdDev, win=DataManipulationII, disable=1
    2987                                 CheckBox ErrorUseStdErOfMean win=DataManipulationII,disable=1
    2988                                 CheckBox GenerateMinMax win=DataManipulationII,disable=1
    2989                                 CheckBox NormalizeDataToData , win=DataManipulationII,disable=1
    2990                                 SetVariable NormalizeDataToValue , win=DataManipulationII,disable=1
    2991                                 SetVariable NormalizeDataQmin , win=DataManipulationII,disable=1
    2992                                 SetVariable NormalizeDataQmax , win=DataManipulationII,disable=1                               
    2993                                 CheckBox NormalizeData , win=DataManipulationII,disable=1                               
    2994                                 CheckBox SubtractDataFromAll, win=DataManipulationII,disable=1         
    2995                                 CheckBox AverageNWaves,win=DataManipulationII,disable=1         
    2996                                 CheckBox AverageWaves,win=DataManipulationII,disable=1 
     3036                        elseif(tab==2)
     3037                                SetWindow DataManipulationII#SubDta , hide =1
     3038//                              CheckBox ScaleData,win=DataManipulationII,disable=1     
     3039//                              SetVariable ScaleDataByValue, win=DataManipulationII, disable=1
     3040//                              CheckBox GenerateStatisticsForAveWvs , win=DataManipulationII,disable=1
     3041//                              CheckBox ErrorUseStdDev, win=DataManipulationII, disable=1
     3042//                              CheckBox ErrorUseStdErOfMean win=DataManipulationII,disable=1
     3043//                              CheckBox GenerateMinMax win=DataManipulationII,disable=1
     3044//                              CheckBox NormalizeDataToData , win=DataManipulationII,disable=1
     3045//                              SetVariable NormalizeDataToValue , win=DataManipulationII,disable=1
     3046//                              SetVariable NormalizeDataQmin , win=DataManipulationII,disable=1
     3047//                              SetVariable NormalizeDataQmax , win=DataManipulationII,disable=1                               
     3048//                              CheckBox NormalizeData , win=DataManipulationII,disable=1                               
     3049//                              CheckBox SubtractDataFromAll, win=DataManipulationII,disable=1         
     3050//                              CheckBox AverageNWaves,win=DataManipulationII,disable=1         
     3051//                              CheckBox AverageWaves,win=DataManipulationII,disable=1 
    29973052                        endif
    29983053                       
     
    31143169                                NVAR GenerateStatisticsForAveWvs=root:Packages:DataManipulationII:GenerateStatisticsForAveWvs
    31153170                                SVAR NameModifier=root:Packages:DataManipulationII:NameModifier
     3171                                NVAR PassTroughProcessing=root:Packages:DataManipulationII:PassTroughProcessing
    31163172
    31173173                        if(stringmatch(cba.CtrlName, "GenerateStatisticsForAveWvs"))
     
    31303186                                SetVariable ScaleDataByValue, win=DataManipulationII,disable=!(ScaleData)
    31313187                        endif                   
     3188                        if(stringmatch(cba.CtrlName, "CreateErrors"))
     3189                                NVAR CreateErrors= root:Packages:DataManipulationII:CreateErrors
     3190                                NVAR CreateSQRTErrors= root:Packages:DataManipulationII:CreateSQRTErrors
     3191                                NVAR CreatePctErrors= root:Packages:DataManipulationII:CreatePctErrors
     3192                                if(CreatePctErrors+CreateSQRTErrors!=1)
     3193                                        CreateSQRTErrors=0
     3194                                        CreatePctErrors=1
     3195                                endif
     3196                        endif                   
     3197                        if(stringmatch(cba.CtrlName, "CreateSQRTErrors"))
     3198                                NVAR CreateSQRTErrors= root:Packages:DataManipulationII:CreateSQRTErrors
     3199                                NVAR CreatePctErrors= root:Packages:DataManipulationII:CreatePctErrors
     3200                                CreatePctErrors=!CreateSQRTErrors
     3201                        endif                   
     3202                        if(stringmatch(cba.CtrlName, "CreatePercentErrors"))
     3203                                NVAR CreateSQRTErrors= root:Packages:DataManipulationII:CreateSQRTErrors
     3204                                NVAR CreatePctErrors= root:Packages:DataManipulationII:CreatePctErrors
     3205                                CreateSQRTErrors=!CreatePctErrors
     3206                        endif                   
    31323207
    31333208                        if(stringmatch(cba.CtrlName,"ErrorUseStdErOfMean"))
     
    31363211                                ErrorUseStdDev=!ErrorUseStdErOfMean
    31373212                        endif                   
     3213                        if(stringmatch(cba.CtrlName,"PassTroughProcessing"))
     3214                                if(checked)
     3215                                        SubtractDataFromAll=0
     3216                                        AverageNWaves=0
     3217                                        NormalizeData = 0
     3218                                        //PassTroughProcessing=0
     3219                                        NormalizeDataToValue=0
     3220                                        NormalizeDataToData=0
     3221                                endif
     3222                        endif                   
     3223
     3224
    31383225                        if(stringmatch(cba.CtrlName,"NormalizeData")||stringmatch(cba.CtrlName,"NormalizeDataToData"))
    31393226                                CheckBox GenerateStatisticsForAveWvs , win=DataManipulationII,disable=!(AverageWaves)
     
    31603247                                        AverageNWaves=0
    31613248                                        AverageWaves = 0
     3249                                        PassTroughProcessing=0
    31623250                                        SetVariable NforAveraging win=DataManipulationII,disable=!(AverageWaves)
    31633251                                        NameModifier="_norm"
     
    31793267                                        AverageNWaves=0
    31803268                                        NormalizeData = 0
     3269                                        PassTroughProcessing=0
    31813270                                        //NormalizeDataToValue=0
    31823271                                        NormalizeDataToData=0
     
    32023291                                        AverageWaves=0
    32033292                                        NormalizeData = 0
     3293                                        PassTroughProcessing=0
    32043294                                        NormalizeDataToData=0
    32053295                                        NameModifier="_ave"
     
    32243314                                AverageNWaves=0
    32253315                                NormalizeData = 0
     3316                                PassTroughProcessing=0
    32263317                                CheckBox GenerateStatisticsForAveWvs , win=DataManipulationII,disable=1
    32273318                                CheckBox ErrorUseStdDev, win=DataManipulationII, disable=1
     
    32683359///******************************************************************************************
    32693360Function IR3M_DataManIIFixTabControl()
    3270 
     3361       
     3362        variable CurTab
     3363        ControlInfo /W=DataManipulationII ProcessingTabs
     3364        CurTab=V_Value
    32713365        NVAR NormalizeData = root:Packages:DataManipulationII:NormalizeData
    32723366        NVAR NormalizeDataToData=root:Packages:DataManipulationII:NormalizeDataToData
     
    32773371       
    32783372        if(!(NormalizeData * NormalizeDataToData) && !SubtractDataFromAll)
    3279                 TabControl ProcessingTabs win=DataManipulationII, tabLabel(0)="Processing",tabLabel(1)="", value= 0
     3373                TabControl ProcessingTabs win=DataManipulationII, tabLabel(0)="Processing",tabLabel(1)="", value= CurTab
    32803374        elseif(NormalizeDataToData || SubtractDataFromAll)
    3281                 TabControl ProcessingTabs win=DataManipulationII, tabLabel(0)="Processing", tabLabel(1)="Data selection", value= 0
    3282         endif
    3283 
     3375                TabControl ProcessingTabs win=DataManipulationII, tabLabel(0)="Processing", tabLabel(1)="Data selection", value= CurTab
     3376        endif
     3377        STRUCT WMTabControlAction tca
     3378        tca.eventCode =2
     3379        tca.tab = CurTab
     3380      IR3M_DataManIITabProc(tca)
    32843381
    32853382
     
    36873784        NVAR ScaleDataByValue = root:Packages:DataManipulationII:ScaleDataByValue
    36883785
     3786        NVAR CreateErrors=root:Packages:DataManipulationII:CreateErrors
     3787        NVAR CreateSQRTErrors = root:Packages:DataManipulationII:CreateSQRTErrors
     3788        NVAR CreatePercentErrors = root:Packages:DataManipulationII:CreatePctErrors
     3789        NVAR PercentErrorsToUse= root:Packages:DataManipulationII:PercentErrorsToUse
     3790        NVAR TargetNumberOfPoints=root:Packages:DataManipulationII:TargetNumberOfPoints
     3791        NVAR ReducePntsParam = root:Packages:DataManipulationII:ReducePntsParam
     3792        NVAR ReduceNumPnts= root:Packages:DataManipulationII:ReduceNumPnts
     3793        NVAR PassTroughProcessing= root:Packages:DataManipulationII:PassTroughProcessing
    36893794
    36903795        variable NumberOfProcessedDataSets=0   
     
    37123817                endif
    37133818                print "Averaged "+num2str(NumberOfProcessedDataSets)+" data sets together"
     3819                if(CreateErrors)
     3820                        if(CreateSQRTErrors)                   
     3821                                IN2G_GenerateSASErrors(ManipIIProcessedDataY,ManipIIProcessedDataE,3,0, 0,1,3)
     3822                                print "Created new errors using Square root method"
     3823                        else
     3824                                IN2G_GenerateSASErrors(ManipIIProcessedDataY,ManipIIProcessedDataE,3,0,PercentErrorsToUse/100 ,0,3)
     3825                                print "Created new errors using Percent method using "+num2str(PercentErrorsToUse)+" percent"
     3826                        endif
     3827                        //Function IN2G_GenerateSASErrors(IntWave,ErrWave,Pts_avg,Pts_avg_multiplier, IntMultiplier,MultiplySqrt,Smooth_Points)
     3828                                //      wave IntWave,ErrWave
     3829                                //      variable Pts_avg,Pts_avg_multiplier, IntMultiplier,MultiplySqrt,Smooth_Points
     3830                                //this function will generate some kind of SAXS errors using many different methods...
     3831                                // formula E = IntMultiplier * R + MultiplySqrt * sqrt(R)
     3832                                // E += Pts_avg_multiplier * abs(smooth(R over Pts_avg) - R)
     3833                                // min number of points is 3
     3834                                //smooth final error wave, note minimum number of points to use is 2
     3835                endif
     3836                if(ReduceNumPnts)
     3837                        Duplicate/free ManipIIProcessedDataY, TempQError
     3838                        IR1I_ImportRebinData(ManipIIProcessedDataY,ManipIIProcessedDataX,ManipIIProcessedDataE,TempQError,TargetNumberOfPoints, ReducePntsParam)
     3839                        print "Reduced number of points to "+Num2str(TargetNumberOfPoints)
     3840                endif           
    37143841                if(ScaleData)
    37153842                                //NVAR ScaleDataByValue = root:Packages:DataManipulationII:ScaleDataByValue
     
    37723899                        endif
    37733900                        //here we need to force saving of the data...
     3901                        print "Averaged "+num2str(NumNewWaves)+" combinations of "+num2str(NforAveraging)+"data sets"
     3902                        if(CreateErrors)
     3903                                if(CreateSQRTErrors)                   
     3904                                        IN2G_GenerateSASErrors(ManipIIProcessedDataY,ManipIIProcessedDataE,3,0, 0,1,3)
     3905                                        print "Created new errors using Square root method"
     3906                                else
     3907                                        IN2G_GenerateSASErrors(ManipIIProcessedDataY,ManipIIProcessedDataE,3,0,PercentErrorsToUse/100 ,0,3)
     3908                                        print "Created new errors using Percent method using "+num2str(PercentErrorsToUse)+" percent"
     3909                                endif
     3910                                //Function IN2G_GenerateSASErrors(IntWave,ErrWave,Pts_avg,Pts_avg_multiplier, IntMultiplier,MultiplySqrt,Smooth_Points)
     3911                                        //      wave IntWave,ErrWave
     3912                                        //      variable Pts_avg,Pts_avg_multiplier, IntMultiplier,MultiplySqrt,Smooth_Points
     3913                                        //this function will generate some kind of SAXS errors using many different methods...
     3914                                        // formula E = IntMultiplier * R + MultiplySqrt * sqrt(R)
     3915                                        // E += Pts_avg_multiplier * abs(smooth(R over Pts_avg) - R)
     3916                                        // min number of points is 3
     3917                                        //smooth final error wave, note minimum number of points to use is 2
     3918                        endif
     3919                        if(ReduceNumPnts)
     3920                                Duplicate/free ManipIIProcessedDataY, TempQError
     3921                                IR1I_ImportRebinData(ManipIIProcessedDataY,ManipIIProcessedDataX,ManipIIProcessedDataE,TempQError,TargetNumberOfPoints, ReducePntsParam)
     3922                                print "Reduced number of points to "+Num2str(TargetNumberOfPoints)
     3923                        endif           
    37743924                        if(ScaleData)
    37753925                                        //NVAR ScaleDataByValue = root:Packages:DataManipulationII:ScaleDataByValue
     
    37823932                                                ManipIIProcessedDataYMax*=ScaleDataByValue
    37833933                                        endif
     3934                                print "Scaled averaged data by "+num2str(ScaleDataByValue)
    37843935                        endif
    37853936                       
    37863937                        IR3M_SaveProcessedData()
    3787 
    37883938                        IR3M_DisplayDataManipII(0, OutFldrNm=OutFldrNm,OutXWvNm=OutXWvNm,OutYWvNm=OutYWvNm,OutEWvNm=OutEWvNm)   
    37893939
    37903940                endfor
    3791                 print "Averaged "+num2str(NumNewWaves)+" combinations of "+num2str(NforAveraging)+"data sets"
    3792                 if(ScaleData)
    3793                         print "Scaled averaged data by "+num2str(ScaleDataByValue)
    3794                 endif
    37953941        elseif(SubtractDataFromAll)
    37963942                SVAR SubFldrNm = root:Packages:SASDataModIISubDta:DataFolderName
     
    38093955                        SubtrWvE=0
    38103956                endif
    3811 
    38123957                print "Subtracting data from  :   "+SubFldrNm+"      from waves in following folders : "
    3813 
    3814                 NumberOfProcessedDataSets = IR3M_SubtractWave(FldrNamesTWv,SelFldrs,SubtrWvX,SubtrWvY,SubtrWvE,Xtmplt,Ytmplt,Etmplt)
    3815        
     3958                NumberOfProcessedDataSets = IR3M_SubtractWave(FldrNamesTWv,SelFldrs,SubtrWvX,SubtrWvY,SubtrWvE,Xtmplt,Ytmplt,Etmplt)   
    38163959                IR3M_DisplayDataManipII(1)     
    38173960                print "Processed data from "+num2str(NumberOfProcessedDataSets)+" folders"
     
    38193962                IR3M_DataManIINormUpdateVal()
    38203963                print "Normalizing data in following folders : "
    3821 
    38223964                NumberOfProcessedDataSets = IR3M_NormalizeData(FldrNamesTWv,SelFldrs,Xtmplt,Ytmplt,Etmplt)
    3823        
    38243965                IR3M_DisplayDataManipII(1)     
    3825                 print "Normalzied data from "+num2str(NumberOfProcessedDataSets)+" folders"
    3826         else            //want to ONLY scale???
    3827                 DoALert 0, "This feature needs to be finished"
    3828                 return 0
     3966                print "Normalized data from "+num2str(NumberOfProcessedDataSets)+" folders"
     3967        elseif(PassTroughProcessing)    //want to ONLY scale/reduce number of points etc... ???
     3968                print "Processing data from following folders : "
     3969                NumberOfProcessedDataSets = IR3M_ProcessListOfFoldersONLY(FldrNamesTWv,SelFldrs,Xtmplt,Ytmplt,Etmplt)
     3970                IR3M_DisplayDataManipII(1)     
     3971                print "Processed data from "+num2str(NumberOfProcessedDataSets)+" folders"
     3972        else
     3973                Abort "Unknown processing requested in Data Manipulation II. This is bug, report it"
    38293974        endif
    38303975
     
    38333978       
    38343979        setDataFolder oldDF
     3980        return 0
    38353981
    38363982end
     
    39104056                                NVAR ScaleData = root:Packages:DataManipulationII:ScaleData
    39114057                                NVAR ScaleDataByValue = root:Packages:DataManipulationII:ScaleDataByValue
     4058                                NVAR CreateErrors=root:Packages:DataManipulationII:CreateErrors
     4059                                NVAR CreateSQRTErrors = root:Packages:DataManipulationII:CreateSQRTErrors
     4060                                NVAR CreatePercentErrors = root:Packages:DataManipulationII:CreatePctErrors
     4061                                NVAR PercentErrorsToUse= root:Packages:DataManipulationII:PercentErrorsToUse
     4062                                NVAR TargetNumberOfPoints=root:Packages:DataManipulationII:TargetNumberOfPoints
     4063                                NVAR ReducePntsParam = root:Packages:DataManipulationII:ReducePntsParam
     4064                                NVAR ReduceNumPnts= root:Packages:DataManipulationII:ReduceNumPnts
     4065
     4066                                if(CreateErrors)
     4067                                        if(!WaveExists(TempSubtractedEWv0123))
     4068                                                Duplicate TempSubtractedEWv0123, TempSubtractedEWv0123
     4069                                        endif
     4070                                        if(CreateSQRTErrors)                   
     4071                                                IN2G_GenerateSASErrors(TempSubtractedYWv0123,TempSubtractedEWv0123,3,0, 0,1,3)
     4072                                                Note/NOCR TempSubtractedYWv0123, "Created new errors sqrt;"     
     4073                                        else
     4074                                                IN2G_GenerateSASErrors(TempSubtractedYWv0123,TempSubtractedEWv0123,3,0,PercentErrorsToUse/100 ,0,3)
     4075                                                Note/NOCR TempSubtractedYWv0123, "Created new errors using percent ="+num2str(PercentErrorsToUse)+";"   
     4076                                        endif
     4077                                        //Function IN2G_GenerateSASErrors(IntWave,ErrWave,Pts_avg,Pts_avg_multiplier, IntMultiplier,MultiplySqrt,Smooth_Points)
     4078                                                //      wave IntWave,ErrWave
     4079                                                //      variable Pts_avg,Pts_avg_multiplier, IntMultiplier,MultiplySqrt,Smooth_Points
     4080                                                //this function will generate some kind of SAXS errors using many different methods...
     4081                                                // formula E = IntMultiplier * R + MultiplySqrt * sqrt(R)
     4082                                                // E += Pts_avg_multiplier * abs(smooth(R over Pts_avg) - R)
     4083                                                // min number of points is 3
     4084                                                //smooth final error wave, note minimum number of points to use is 2
     4085                                endif
     4086                                if(ReduceNumPnts)
     4087                                        Duplicate/free TempSubtractedYWv0123, TempQError
     4088                                        IR1I_ImportRebinData(TempSubtractedYWv0123,TempSubtractedXWv0123,TempSubtractedEWv0123,TempQError,TargetNumberOfPoints, ReducePntsParam)
     4089                                        Note/NOCR TempSubtractedYWv0123, "Reduced number of points to ="+num2str(TargetNumberOfPoints)+";"     
     4090                                endif           
    39124091                                if(ScaleData)
    39134092                                        TempSubtractedYWv0123*=ScaleDataByValue
     
    39174096                                                Note/NOCR TempSubtractedEWv0123, "Scaled by="+num2str(ScaleDataByValue)+";"     
    39184097                                        endif
     4098                                        //print "Scaled data by "+num2str(ScaleDataByValue)
    39194099                                endif
    39204100                                IR3M_PresetOutputWvsNms()
     
    39434123                                        setDataFolder tempFldrNm
    39444124                                        print "Created new data in "+OutFldrNm+" by normalzing data from data in "+FldrNamesTWv[i]
     4125                                        if(CreateErrors)
     4126                                                if(CreateSQRTErrors)
     4127                                                        print "Created new errors using Square root method for "+OutFldrNm
     4128                                                else
     4129                                                        print "Created new errors using Percent method using "+num2str(PercentErrorsToUse)+" percent for "+OutFldrNm
     4130                                                endif
     4131                                        endif                                   
     4132                                        if(ReduceNumPnts)
     4133                                                print "Reduced number of points to "+Num2str(TargetNumberOfPoints)+" for "+OutFldrNm
     4134                                        endif
    39454135                                        if(ScaleData)
    3946                                                 print "Data in "+OutFldrNm+" were then also scaled by "+num2str(ScaleDataByValue)
     4136                                                print "Data in "+OutFldrNm+" were then also scaled by "+num2str(ScaleDataByValue)+" for "+OutFldrNm
    39474137                                        endif
    39484138                                endif
     
    39654155///******************************************************************************************
    39664156///******************************************************************************************
    3967 
     4157Function IR3M_ProcessListOfFoldersONLY(FldrNamesTWv, SelFldrs, Xtmplt,Ytmplt,Etmplt)
     4158        Wave/T FldrNamesTWv
     4159        WAve SelFldrs
     4160        String Xtmplt,Ytmplt,Etmplt
     4161
     4162        variable NumberOfProcessedDataSets=0
     4163        string oldDf=GetDataFolder(1)
     4164        setDataFolder root:
     4165        NewDataFolder /O/S root:Packages
     4166        NewDataFolder /O/S root:Packages:DataManipulationII
     4167        //OK before we even do anything, let's do some checking on the parameters called...
     4168        if(numpnts(FldrNamesTWv)!=numpnts(SelFldrs))
     4169                abort "Bad call to IR3M_AverageMultipleWaves"
     4170        endif
     4171        //Ok, now let's create the data to do statistics on
     4172        variable NumOfFoldersToTest=numpnts(SelFldrs)
     4173        variable i, j
     4174        //and now we need to save them...
     4175        NVAR ScaleData = root:Packages:DataManipulationII:ScaleData
     4176        NVAR ScaleDataByValue = root:Packages:DataManipulationII:ScaleDataByValue
     4177        NVAR ScaleData = root:Packages:DataManipulationII:ScaleData
     4178        NVAR ScaleDataByValue = root:Packages:DataManipulationII:ScaleDataByValue
     4179        NVAR CreateErrors=root:Packages:DataManipulationII:CreateErrors
     4180        NVAR CreateSQRTErrors = root:Packages:DataManipulationII:CreateSQRTErrors
     4181        NVAR CreatePercentErrors = root:Packages:DataManipulationII:CreatePctErrors
     4182        NVAR PercentErrorsToUse= root:Packages:DataManipulationII:PercentErrorsToUse
     4183        NVAR TargetNumberOfPoints=root:Packages:DataManipulationII:TargetNumberOfPoints
     4184        NVAR ReducePntsParam = root:Packages:DataManipulationII:ReducePntsParam
     4185        NVAR ReduceNumPnts= root:Packages:DataManipulationII:ReduceNumPnts
     4186        String NewWaveNote="Data processed by : "
     4187        if(CreateErrors)
     4188                NewWaveNote+="Creating errors "
     4189                if(CreateSQRTErrors)
     4190                        NewWaveNote+="using square root method "
     4191                else
     4192                        NewWaveNote+="using fractional method with error being "+num2str(PercentErrorsToUse)+" percent "
     4193                endif
     4194        endif
     4195        if(ReduceNumPnts)
     4196                NewWaveNote+=" reducing number of points to "+num2str(TargetNumberOfPoints)
     4197        endif
     4198        if(ScaleData)
     4199                NewWaveNote+=" scaling by "+num2str(ScaleDataByValue)
     4200        endif
     4201
     4202        j=0
     4203        variable HadError=0
     4204        For(i=0;i<NumOfFoldersToTest;i+=1)
     4205                if(SelFldrs[i]>0)               //set to 1, selected
     4206                        wave/Z tmpWvX=$(FldrNamesTWv[i]+PossiblyQuoteName(IN2G_ReturnExistingWaveNameGrep(FldrNamesTWv[i],Xtmplt)))
     4207                        wave/Z tmpWvY=$(FldrNamesTWv[i]+PossiblyQuoteName(IN2G_ReturnExistingWaveNameGrep(FldrNamesTWv[i],Ytmplt)))
     4208                        wave/Z tmpWvE=$(FldrNamesTWv[i]+PossiblyQuoteName(IN2G_ReturnExistingWaveNameGrep(FldrNamesTWv[i],Etmplt)))
     4209                        SVAR DataFolderName = root:Packages:DataManipulationII:DataFolderName
     4210                                SVAR IntensityWaveName = root:Packages:DataManipulationII:IntensityWaveName
     4211                                SVAR QWavename = root:Packages:DataManipulationII:QWavename
     4212                                SVAR ErrorWaveName = root:Packages:DataManipulationII:ErrorWaveName
     4213                                DataFolderName=FldrNamesTWv[i]
     4214                                IntensityWaveName=IN2G_ReturnExistingWaveNameGrep(FldrNamesTWv[i],Ytmplt)
     4215                                QWavename=IN2G_ReturnExistingWaveNameGrep(FldrNamesTWv[i],Xtmplt)
     4216                                ErrorWaveName=IN2G_ReturnExistingWaveNameGrep(FldrNamesTWv[i],Etmplt)
     4217                       
     4218                        if(WaveExists(tmpWvX) && WaveExists(tmpWvY))
     4219                                Duplicate/O tmpWvX, TempSubtractedXWv0123
     4220                                Duplicate/O tmpWvY, TempSubtractedYWv0123
     4221                                Note/NOCR TempSubtractedYWv0123, NewWaveNote//+" from wave: "+GetWavesDataFolder(tmpWvY,2)+";" 
     4222                                Note/NOCR TempSubtractedXWv0123, NewWaveNote//+" from wave: "+GetWavesDataFolder(tmpWvY,2)+";"
     4223                                if(WaveExists(tmpWvE))
     4224                                        Duplicate/O tmpWvE, TempSubtractedEWv0123
     4225                                endif
     4226
     4227                                if(CreateErrors)
     4228                                        if(!WaveExists(TempSubtractedEWv0123))
     4229                                                Duplicate TempSubtractedEWv0123, TempSubtractedEWv0123
     4230                                        endif
     4231                                        if(CreateSQRTErrors)                   
     4232                                                IN2G_GenerateSASErrors(TempSubtractedYWv0123,TempSubtractedEWv0123,3,0, 0,1,3)
     4233                                        else
     4234                                                IN2G_GenerateSASErrors(TempSubtractedYWv0123,TempSubtractedEWv0123,3,0,PercentErrorsToUse/100 ,0,3)
     4235                                        endif
     4236                                        //Function IN2G_GenerateSASErrors(IntWave,ErrWave,Pts_avg,Pts_avg_multiplier, IntMultiplier,MultiplySqrt,Smooth_Points)
     4237                                                //      wave IntWave,ErrWave
     4238                                                //      variable Pts_avg,Pts_avg_multiplier, IntMultiplier,MultiplySqrt,Smooth_Points
     4239                                                //this function will generate some kind of SAXS errors using many different methods...
     4240                                                // formula E = IntMultiplier * R + MultiplySqrt * sqrt(R)
     4241                                                // E += Pts_avg_multiplier * abs(smooth(R over Pts_avg) - R)
     4242                                                // min number of points is 3
     4243                                                //smooth final error wave, note minimum number of points to use is 2
     4244                                endif
     4245                                if(ReduceNumPnts)
     4246                                        Duplicate/free TempSubtractedYWv0123, TempQError
     4247                                        IR1I_ImportRebinData(TempSubtractedYWv0123,TempSubtractedXWv0123,TempSubtractedEWv0123,TempQError,TargetNumberOfPoints, ReducePntsParam)
     4248                                endif           
     4249                                if(ScaleData)
     4250                                        TempSubtractedYWv0123*=ScaleDataByValue
     4251                                        Note/NOCR TempSubtractedYWv0123, "Scaled by="+num2str(ScaleDataByValue)+";"     
     4252                                        if(WaveExists(TempSubtractedEWv0123))
     4253                                                TempSubtractedEWv0123*=ScaleDataByValue
     4254                                                Note/NOCR TempSubtractedEWv0123, "Scaled by="+num2str(ScaleDataByValue)+";"     
     4255                                        endif
     4256                                endif
     4257                                IR3M_PresetOutputWvsNms()
     4258       
     4259                                SVAR OutFldrNm = root:Packages:DataManipulationII:ResultsDataFolderName
     4260                                SVAR OutYWvNm = root:Packages:DataManipulationII:ResultsIntWaveName
     4261                                SVAR OutXWvNm = root:Packages:DataManipulationII:ResultsQvecWaveName
     4262                                SVAR OutEWvNm = root:Packages:DataManipulationII:ResultsErrWaveName
     4263
     4264                                Wave/Z testWvX=$(IN2G_CheckFldrNmSemicolon(OutFldrNm,1)+PossiblyQuoteName(OutXWvNm))
     4265                                Wave/Z testWvY=$(IN2G_CheckFldrNmSemicolon(OutFldrNm,1)+PossiblyQuoteName(OutYWvNm))
     4266                                Wave/Z testWvE=$(IN2G_CheckFldrNmSemicolon(OutFldrNm,1)+PossiblyQuoteName(OutEWvNm))
     4267                               
     4268                                if(WaveExists(testWvX)||WaveExists(testWvY)||WaveExists(testWvE))
     4269                                        HadError=1
     4270                                        Print "Could not save data in the folder : "+OutFldrNm
     4271                                        Print "The data in this folder already exist and this tool cannot overwrite the data"
     4272                                else
     4273                                        string tempFldrNm=GetDataFolder(1)
     4274                                        IN2G_CreateAndSetArbFolder(OutFldrNm)
     4275                                        Duplicate TempSubtractedXWv0123, $((OutXWvNm))
     4276                                        Duplicate TempSubtractedYWv0123, $((OutYWvNm))
     4277                                        Wave/Z TempSubtractedEWv0123= $(tempFldrNm+"TempSubtractedEWv0123")
     4278                                        if(WaveExists(TempSubtractedEWv0123))
     4279                                                Duplicate TempSubtractedEWv0123, $((OutEWvNm))
     4280                                        endif
     4281                                        setDataFolder tempFldrNm
     4282                                        print "Created new data in "+OutFldrNm+" by processing data in "+FldrNamesTWv[i]
     4283                                        if(CreateErrors)
     4284                                                if(CreateSQRTErrors)
     4285                                                        print "Created new errors using Square root method for "+OutFldrNm
     4286                                                else
     4287                                                        print "Created new errors using Percent method using "+num2str(PercentErrorsToUse)+" percent for "+OutFldrNm
     4288                                                endif
     4289                                        endif                                   
     4290                                        if(ReduceNumPnts)
     4291                                                print "Reduced number of points to "+Num2str(TargetNumberOfPoints)+" for "+OutFldrNm
     4292                                        endif
     4293                                        if(ScaleData)
     4294                                                print "Data in "+OutFldrNm+" were then also scaled by "+num2str(ScaleDataByValue)+" for "+OutFldrNm
     4295                                        endif
     4296                                endif
     4297                                NumberOfProcessedDataSets+=1
     4298                        else
     4299                                Print "Error found... " + FldrNamesTWv[i] + " selected data were not found. Please, check data selection and if persistent, report this as error."
     4300                                KillWaves/Z TempSubtractedXWv0123, TempSubtractedYWv0123, TempSubtractedEWv0123
     4301                               
     4302                        endif
     4303                endif
     4304        endfor
     4305       
     4306        if(HadError)
     4307                DoAlert  0, "Note there were errors while processing the data, see details in history area"
     4308        endif
     4309        KillWaves/Z AverageWvsTempMatrix, tempWvForStatistics, TempSubtractedXWv0123, TempSubtractedYWv0123, TempSubtractedEWv0123, tempLogDataToSubtractAtrighQ, WaveToSubtractLog
     4310        setDataFolder oldDf
     4311        return NumberOfProcessedDataSets
     4312end
    39684313///******************************************************************************************
    39694314///******************************************************************************************
     
    40424387                                NVAR ScaleData = root:Packages:DataManipulationII:ScaleData
    40434388                                NVAR ScaleDataByValue = root:Packages:DataManipulationII:ScaleDataByValue
     4389                                NVAR ScaleData = root:Packages:DataManipulationII:ScaleData
     4390                                NVAR ScaleDataByValue = root:Packages:DataManipulationII:ScaleDataByValue
     4391                                NVAR CreateErrors=root:Packages:DataManipulationII:CreateErrors
     4392                                NVAR CreateSQRTErrors = root:Packages:DataManipulationII:CreateSQRTErrors
     4393                                NVAR CreatePercentErrors = root:Packages:DataManipulationII:CreatePctErrors
     4394                                NVAR PercentErrorsToUse= root:Packages:DataManipulationII:PercentErrorsToUse
     4395                                NVAR TargetNumberOfPoints=root:Packages:DataManipulationII:TargetNumberOfPoints
     4396                                NVAR ReducePntsParam = root:Packages:DataManipulationII:ReducePntsParam
     4397                                NVAR ReduceNumPnts= root:Packages:DataManipulationII:ReduceNumPnts
     4398
     4399                                if(CreateErrors)
     4400                                        if(!WaveExists(TempSubtractedEWv0123))
     4401                                                Duplicate TempSubtractedEWv0123, TempSubtractedEWv0123
     4402                                        endif
     4403                                        if(CreateSQRTErrors)                   
     4404                                                IN2G_GenerateSASErrors(TempSubtractedYWv0123,TempSubtractedEWv0123,3,0, 0,1,3)
     4405                                        else
     4406                                                IN2G_GenerateSASErrors(TempSubtractedYWv0123,TempSubtractedEWv0123,3,0,PercentErrorsToUse/100 ,0,3)
     4407                                        endif
     4408                                        //Function IN2G_GenerateSASErrors(IntWave,ErrWave,Pts_avg,Pts_avg_multiplier, IntMultiplier,MultiplySqrt,Smooth_Points)
     4409                                                //      wave IntWave,ErrWave
     4410                                                //      variable Pts_avg,Pts_avg_multiplier, IntMultiplier,MultiplySqrt,Smooth_Points
     4411                                                //this function will generate some kind of SAXS errors using many different methods...
     4412                                                // formula E = IntMultiplier * R + MultiplySqrt * sqrt(R)
     4413                                                // E += Pts_avg_multiplier * abs(smooth(R over Pts_avg) - R)
     4414                                                // min number of points is 3
     4415                                                //smooth final error wave, note minimum number of points to use is 2
     4416                                endif
     4417                                if(ReduceNumPnts)
     4418                                        Duplicate/free TempSubtractedYWv0123, TempQError
     4419                                        IR1I_ImportRebinData(TempSubtractedYWv0123,TempSubtractedXWv0123,TempSubtractedEWv0123,TempQError,TargetNumberOfPoints, ReducePntsParam)
     4420                                endif           
    40444421                                if(ScaleData)
    40454422                                        TempSubtractedYWv0123*=ScaleDataByValue
     
    40764453                                        setDataFolder tempFldrNm
    40774454                                        print "Created new data in "+OutFldrNm+" by subtracting requested data from data in "+FldrNamesTWv[i]
     4455                                        if(CreateErrors)
     4456                                                if(CreateSQRTErrors)
     4457                                                        print "Created new errors using Square root method for "+OutFldrNm
     4458                                                else
     4459                                                        print "Created new errors using Percent method using "+num2str(PercentErrorsToUse)+" percent for "+OutFldrNm
     4460                                                endif
     4461                                        endif                                   
     4462                                        if(ReduceNumPnts)
     4463                                                print "Reduced number of points to "+Num2str(TargetNumberOfPoints)+" for "+OutFldrNm
     4464                                        endif
    40784465                                        if(ScaleData)
    4079                                                 print "Data in "+OutFldrNm+" were also scaled after subtraction by "+num2str(ScaleDataByValue)
     4466                                                print "Data in "+OutFldrNm+" were then also scaled by "+num2str(ScaleDataByValue)+" for "+OutFldrNm
    40804467                                        endif
    40814468                                endif
     
    44294816        ListOfVariables+="AverageWaves;AverageNWaves;NforAveraging;GenerateStatisticsForAveWvs;SubtractDataFromAll;"
    44304817        ListOfVariables+="NormalizeData;NormalizeDataToData;NormalizeDataToValue;NormalizeDataQmin;NormalizeDataQmax;"
    4431         ListOfVariables+="ScaleData;ScaleDataByValue;"
     4818        ListOfVariables+="ScaleData;ScaleDataByValue;CreateErrors;CreateSQRTErrors;CreatePctErrors;PercentErrorsToUse;"
     4819        ListOfVariables+="ReduceNumPnts;TargetNumberOfPoints;ReducePntsParam;PassTroughProcessing;"
    44324820//
    44334821        ListOfStrings="DataFolderName;IntensityWaveName;QWavename;ErrorWaveName;"
     
    44514839                SelectedItems[0]="DataFolderName;"
    44524840        endif
    4453        
     4841        NVAR ReducePntsParam
     4842        if(ReducePntsParam<=1)
     4843                ReducePntsParam=5
     4844        endif
     4845        NVAR TargetNumberOfPoints
     4846        if(TargetNumberOfPoints<=0)
     4847                TargetNumberOfPoints=200
     4848        endif
     4849        NVAR PercentErrorsToUse
     4850        if(PercentErrorsToUse<=0)
     4851                PercentErrorsToUse=1
     4852        endif
    44544853        NVAR ErrorUseStdDev
    44554854        NVAR ErrorUseStdErOfMean
     
    46285027        NVAR SubtractDataFromAll = root:Packages:DataManipulationII:SubtractDataFromAll
    46295028        NVAR NormalizeData = root:Packages:DataManipulationII:NormalizeData
     5029        NVAR PassTroughProcessing = root:Packages:DataManipulationII:PassTroughProcessing
    46305030
    46315031        NVAR GenerateMinMax=root:Packages:DataManipulationII:GenerateMinMax
     
    46735073                endif
    46745074        endif
    4675         if(DisplayResults && (SubtractDataFromAll || NormalizeData))
     5075        if(DisplayResults && (SubtractDataFromAll || NormalizeData || PassTroughProcessing))
    46765076                Wave/T FldrNamesTWv = root:Packages:DataManipulationII:PreviewSelectedFolder
    46775077                Wave SelFldrs = root:Packages:DataManipulationII:SelectedFoldersWv
  • User Procedures/Irena/Modification history.txt

    r6 r7  
    1414Added "User" defined structure factor (implemented in Modeling II)
    1515Added panel version control for: Fractals tool, Small-angle diffraction, ASCII export, ASCII Import
     16Data Manipulation II - modified to add ability to create errors (=uncertainties), scale and rebin to number of points. Modified GUI to separate processing, errors generation and post processing (scaling/rebinning).
     17
    1618
    17192.50 1/4/2013
Note: See TracChangeset for help on using the changeset viewer.