diff --git a/DefaultUserInput.py b/DefaultUserInput.py index eb502945..517fecf5 100644 --- a/DefaultUserInput.py +++ b/DefaultUserInput.py @@ -13,10 +13,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['AcetaldehydeNISTRefMixed2.tsv'] #enter the file name of the file containing reference information. tsv is tab-separated, csv is comma separated. tsv supports commas in molecule names. -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['AcetaldehydeNISTRefMixed2.tsv'] #enter the file name of the file containing reference information. tsv is tab-separated, csv is comma separated. tsv supports commas in molecule names. +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -31,7 +31,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -150,24 +150,24 @@ #Note that 1 is the default and will make no alteration to the data #//Tuning Corrector - Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['tuningCorrectPatternInternalVsExternal'] = 'External' #the options are 'External' or 'Internal'. Typically, External with createMixedTuningPattern is used. With "External", the existing pattern is assumed to be an External pattern and is tuning corrected. With "Internal" the existing pattern is assumed to be an Internal pattern, and the analysis pattern is changed to match the tuning of the desired pattern. Another use of 'Internal' when applying reference Coefficients manually to the Reference Analysis pattern. As of Nov 2021, if "External" is used, then at least one of referenceFileStandardTuningAndForm and referenceFileExistingTuningAndForm must be filled. -UserChoices['measuredReferenceYorN']['referenceFileStandardTuningAndForm'] = [] #optional: Provides tuningCorrectionIntensity feature. Must include csv file and form. Example: ['NISTRef.csv', 'xyyy'] . Will automatically be used for ReferenceFileExistingTuning if that variable is blank and if createMixedTuningPattern=True. -UserChoices['measuredReferenceYorN']['createMixedTuningPattern'] = True #Users should normally never change this. If True, the external pattern gets changed, and a mixed reference pattern gets changded. If False, the *internal* pattern gets changed. -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] =[] #This is the pattern that will be pattern tuning corrected. Normally should be empty list, []. Otherwise, must include csv file and form. Example: ['NISTRef.csv', 'xyyy'] . -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] =[] #This is what the pattern will look more like after everything is done. Normally should be empty, list, []. Otherwise, must include csv file and form. Example: ['OriginalRef.csv', 'xyyy'] . -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames'] =[] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided (along with filling the next two variables). -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureConcentrations'] =[] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureSignals'] = [] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum, tuningCorrectorGasMixtureSignals must be provided or will be used to extract from the data. Leaving this unchanged will take the average of all of the data. If a pair of times is provided, that will be used to extract from the measured data. Alternatively, a single filename with an MSRESOLVE reference file and molecule name "GaxMixture". - -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['tuningCorrectPatternInternalVsExternal'] = 'External' #the options are 'External' or 'Internal'. Typically, External with createMixedTuningPattern is used. With "External", the existing pattern is assumed to be an External pattern and is tuning corrected. With "Internal" the existing pattern is assumed to be an Internal pattern, and the analysis pattern is changed to match the tuning of the desired pattern. Another use of 'Internal' when applying reference Coefficients manually to the Reference Analysis pattern. As of Nov 2021, if "External" is used, then at least one of referenceFileStandardTuningAndForm and referenceFileExistingTuningAndForm must be filled. +UserChoices['tuningCorrection']['referenceFileStandardTuningAndForm'] = [] #optional: Provides tuningCorrectionIntensity feature. Must include csv file and form. Example: ['NISTRef.csv', 'xyyy'] . Will automatically be used for ReferenceFileExistingTuning if that variable is blank and if createMixedTuningPattern=True. +UserChoices['tuningCorrection']['createMixedTuningPattern'] = True #Users should normally never change this. If True, the external pattern gets changed, and a mixed reference pattern gets changded. If False, the *internal* pattern gets changed. +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] =[] #This is the pattern that will be pattern tuning corrected. Normally should be empty list, []. Otherwise, must include csv file and form. Example: ['NISTRef.csv', 'xyyy'] . +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] =[] #This is what the pattern will look more like after everything is done. Normally should be empty, list, []. Otherwise, must include csv file and form. Example: ['OriginalRef.csv', 'xyyy'] . +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames'] =[] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided (along with filling the next two variables). +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureConcentrations'] =[] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureSignals'] = [] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum, tuningCorrectorGasMixtureSignals must be provided or will be used to extract from the data. Leaving this unchanged will take the average of all of the data. If a pair of times is provided, that will be used to extract from the measured data. Alternatively, a single filename with an MSRESOLVE reference file and molecule name "GaxMixture". + +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0. Used as.... Factor = A*X^2 + B*X + C, so A=0,B=0,C=1.0 means the final factor is 1.0 and independent of molecular weight. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. #//Reference Pattern Changer // (rpc) @@ -186,11 +186,11 @@ ] #Make sure every mass you listed was collected otherwise there will be an error. #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'no' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [5.0] #typical values are between 1 and 5. Can be a list (one value for each molecule) or a single value across all molecules. The list case has not been tested with all features. This approximates smaller fragmentation peaks as '0', though implicitSLS will correct for the approximation. -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [6.0] #typical values are between 5 and 50. Can be a list (one value for each molecule) or a single value across all molecules. The list case has not been tested with all features. This setting causes MSRESOLVE to favor larger intensity reference peaks (above the number provided) during solving. +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'no' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [5.0] #typical values are between 1 and 5. Can be a list (one value for each molecule) or a single value across all molecules. The list case has not been tested with all features. This approximates smaller fragmentation peaks as '0', though implicitSLS will correct for the approximation. +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [6.0] #typical values are between 5 and 50. Can be a list (one value for each molecule) or a single value across all molecules. The list case has not been tested with all features. This setting causes MSRESOLVE to favor larger intensity reference peaks (above the number provided) during solving. #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -218,18 +218,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -303,4 +303,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName', 'referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN', 'tuningCorrectPatternInternalVsExternal', 'referenceFileStandardTuningAndForm', 'createMixedTuningPattern', 'referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'implicitSLSRecursion', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName', 'referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection', 'tuningCorrectPatternInternalVsExternal', 'referenceFileStandardTuningAndForm', 'createMixedTuningPattern', 'referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'implicitSLSRecursion', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] diff --git a/Documentation/190930TuningCorrectorInstructions.docx b/Documentation/190930TuningCorrectorInstructions.docx index d01a7ca2..e01cd771 100644 Binary files a/Documentation/190930TuningCorrectorInstructions.docx and b/Documentation/190930TuningCorrectorInstructions.docx differ diff --git a/ExampleAnalysis/DefaultUserInput.py b/ExampleAnalysis/DefaultUserInput.py index eba6ce6c..677273ca 100644 --- a/ExampleAnalysis/DefaultUserInput.py +++ b/ExampleAnalysis/DefaultUserInput.py @@ -13,10 +13,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -31,7 +31,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -150,17 +150,17 @@ #Note that 1 is the default and will make no alteration to the data #//Tuning Corrector - Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] =['ReferenceCollected.csv','xyyy'] -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] =['ReferenceLiterature.csv','xyyy'] -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] =['ReferenceCollected.csv','xyyy'] +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] =['ReferenceLiterature.csv','xyyy'] +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0. Used as.... Factor = A*X^2 + B*X + C, so A=0,B=0,C=1.0 means the final factor is 1.0 and independent of molecular weight. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. #//Reference Pattern Changer // (rpc) @@ -179,11 +179,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'no' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [6.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'no' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [6.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -211,18 +211,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -294,4 +294,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/ExampleAnalysis/LogFile.txt b/ExampleAnalysis/LogFile.txt index 3bd7ef16..7f7fb602 100644 --- a/ExampleAnalysis/LogFile.txt +++ b/ExampleAnalysis/LogFile.txt @@ -2,15 +2,15 @@ Thu May 21 16:26:45 2020 referenceFileName = ['ExtractedReferencePattern.csv'] form = ['xyyy'] -collectedFileName = Collected_Reference.csv +dataToAnalyzeFileName = Collected_Reference.csv linearBaselineCorrectionSemiAutomatic = yes selection = ['linear'] massesToBackgroundCorrect = [12.0 13.0 14.0 15.0 16.0 17.0 21.0 22.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0] earlyBaselineTimes = [[850, 870], [850, 870], [850, 870], [850, 870], [850, 870], [850, 870], [850, 870], [850, 870], [850, 870], [850, 870], [850, 870], [850, 870], [850, 870], [850, 870], [850, 870]] lateBaselineTimes = [[1050, 1070], [1050, 1070], [1050, 1070], [1050, 1070], [1050, 1070], [1050, 1070], [1050, 1070], [1050, 1070], [1050, 1070], [1050, 1070], [1050, 1070], [1050, 1070], [1050, 1070], [1050, 1070], [1050, 1070]] -minimalReferenceValue = yes -referenceValueThreshold = [1.01, 1.01, 1.01] +applyReferenceMassFragmentsThresholds = yes +referenceMassFragmentFilterThreshold = [1.01, 1.01, 1.01] referenceSignificantFragmentThresholds = [20.0, 20.0, 20.0] answer = sls uniqueOrCommon = unique diff --git a/ExampleAnalysis/MSRESOLVE.py b/ExampleAnalysis/MSRESOLVE.py index 278ea901..d719b4d5 100644 --- a/ExampleAnalysis/MSRESOLVE.py +++ b/ExampleAnalysis/MSRESOLVE.py @@ -381,7 +381,7 @@ def ABCDetermination(ReferencePatternMeasuredFileNameAndForm, ReferencePatternLi ''' - if G.minimalReferenceValue !='yes': + if G.applyReferenceMassFragmentsThresholds !='yes': print("Warning: The ABCDetermination will occur without threshold filtering, since that setting is off.") #For simplicity, we will put the items into temporary items, then into dictionaries that we can then access. @@ -390,16 +390,16 @@ def ABCDetermination(ReferencePatternMeasuredFileNameAndForm, ReferencePatternLi ReferencePatternMeasuredDict['molecules']=molecules ReferencePatternMeasuredDict['provided_reference_patterns'] = provided_reference_patterns ReferencePatternMeasuredDict['provided_reference_patterns'] = StandardizeReferencePattern(ReferencePatternMeasuredDict['provided_reference_patterns'],len(molecules)) #this does have the molecular weight as the first column. - if G.minimalReferenceValue =='yes': - ReferencePatternMeasuredDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternMeasuredDict['provided_reference_patterns'],G.referenceValueThreshold) + if G.applyReferenceMassFragmentsThresholds =='yes': + ReferencePatternMeasuredDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternMeasuredDict['provided_reference_patterns'],G.referenceMassFragmentFilterThreshold) ReferencePatternLiteratureDict = {} [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form] = readReferenceFile(*ReferencePatternLiteratureFileNameAndForm) ReferencePatternLiteratureDict['molecules']=molecules ReferencePatternLiteratureDict['provided_reference_patterns'] = provided_reference_patterns ReferencePatternLiteratureDict['provided_reference_patterns'] = StandardizeReferencePattern(ReferencePatternLiteratureDict['provided_reference_patterns'],len(molecules)) #this does have the molecular weight as the first column. - if G.minimalReferenceValue =='yes': - ReferencePatternLiteratureDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternLiteratureDict['provided_reference_patterns'],G.referenceValueThreshold) + if G.applyReferenceMassFragmentsThresholds =='yes': + ReferencePatternLiteratureDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternLiteratureDict['provided_reference_patterns'],G.referenceMassFragmentFilterThreshold) ''' Step 3a: Truncate to the molecules which match. @@ -482,8 +482,8 @@ def ABCDetermination(ReferencePatternMeasuredFileNameAndForm, ReferencePatternLi #this function either creates or gets the three coefficients for the polynomial correction (Tuning Correction) and calculates #the correction factor for the relative intensities of each mass fragment, outputting a corrected set #of relative intensities -def TuningCorrector(referenceDataArrayWithAbscissa,referenceCorrectionCoefficients, referenceCorrectionCoefficients_cov, referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm,measuredReferenceYorN): - if measuredReferenceYorN =='yes': +def TuningCorrector(referenceDataArrayWithAbscissa,referenceCorrectionCoefficients, referenceCorrectionCoefficients_cov, referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm,tuningCorrection): + if tuningCorrection =='yes': abcCoefficients, abcCoefficients_cov = ABCDetermination(referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm) referenceCorrectionCoefficients[0],referenceCorrectionCoefficients[1],referenceCorrectionCoefficients[2]= abcCoefficients referenceCorrectionCoefficients_cov = abcCoefficients_cov @@ -512,17 +512,17 @@ def TuningCorrector(referenceDataArrayWithAbscissa,referenceCorrectionCoefficien #this function eliminates (neglects) reference intensities that are below a certain threshold. Useful for solving #data that is giving negatives or over emphasizing small mass fragments,by assuming no contribution from the molecule at that mass fragment. -def ReferenceThresholdFilter(referenceDataArrayWithAbscissa,referenceValueThreshold): +def ReferenceThresholdFilter(referenceDataArrayWithAbscissa,referenceMassFragmentFilterThreshold): referenceDataArray = referenceDataArrayWithAbscissa[:,1:] #all the data except the line of abscissa- mass fragment numbers for columncounter in range(len(referenceDataArray[0,:])):#goes through all columns in all rows in reference (this loop is one molecule at a time) for rowcounter in range(len(referenceDataArray[:,0])):#goes through all rows in references (one mass fragment at a time) - if len(referenceValueThreshold) == 1: #this is for if a single value was provided for referenceValueThreshold - if referenceDataArray[rowcounter,columncounter] < referenceValueThreshold[0]: + if len(referenceMassFragmentFilterThreshold) == 1: #this is for if a single value was provided for referenceMassFragmentFilterThreshold + if referenceDataArray[rowcounter,columncounter] < referenceMassFragmentFilterThreshold[0]: referenceDataArray[rowcounter,columncounter] = 0 #made to be equal to zero # (len(referenceDataArray[:,0])) #this is masses. # (len(referenceDataArray[0,:])) #this is molecules - else: #this is for if values of referenceValueThreshold were provided for each molecule. - if referenceDataArray[rowcounter,columncounter] < referenceValueThreshold[columncounter]: + else: #this is for if values of referenceMassFragmentFilterThreshold were provided for each molecule. + if referenceDataArray[rowcounter,columncounter] < referenceMassFragmentFilterThreshold[columncounter]: referenceDataArray[rowcounter,columncounter] = 0 #made to be equal to zero referenceDataArrayWithAbscissa[:,1:] = referenceDataArray #this puts changed referenceData back with mass fragment numbers return referenceDataArrayWithAbscissa @@ -1196,7 +1196,7 @@ def ReferenceInputPreProcessing(ReferenceData, verbose=True): ReferenceData.standardized_reference_patterns, ReferenceData.standardized_reference_patterns_tuning_uncertainties = TuningCorrector(ReferenceData.standardized_reference_patterns, G.referenceCorrectionCoefficients,G.referenceCorrectionCoefficients_cov, G.referenceFileDesiredTuningAndForm, G.referenceFileExistingTuningAndForm, - G.measuredReferenceYorN) + G.tuningCorrection) #Now check if uncertainties already exist, and if they do then the two uncertainties need to be combined. Else, made equal. try: ReferenceData.absolute_standard_uncertainties = (ReferenceData.absolute_standard_uncertainties**2 + ReferenceData.standardized_reference_patterns_tuning_uncertainties**2)**0.5 @@ -1228,10 +1228,10 @@ def ReferenceInputPreProcessing(ReferenceData, verbose=True): #TODO: the minimal reference value can cause inaccuracies if interpolating between multiple reference patterns if one pattern has a value rounded to 0 and the other does not #TODO: option 1: this issue can be fixed by moving this to after interpolation #TODO: option 2: Or we can below assign to preprocessed_reference_pattern rather than standardized_reference_patterns and then use that in data analysis (Note that interpolate would continue to use standardized_reference_patterns as well as preprocess the output) - if G.minimalReferenceValue == 'yes': + if G.applyReferenceMassFragmentsThresholds == 'yes': if G.implicitSLScorrection == True: #This feature requires us to have unfiltered reference patterns to do an implicit/recursive correction at the end. G.currentReferenceDataUnfiltered = copy.deepcopy(ReferenceData) #Make a copy before any filtering occurs. There is an implied return in global variable. - ReferenceData.standardized_reference_patterns = ReferenceThresholdFilter(ReferenceData.standardized_reference_patterns,G.referenceValueThreshold) + ReferenceData.standardized_reference_patterns = ReferenceThresholdFilter(ReferenceData.standardized_reference_patterns,G.referenceMassFragmentFilterThreshold) ReferenceData.ExportCollector('ReferenceThresholdFilter') #As the program is currently written, this function is called to act upon already threshold filtered standardized reference patterns which could cause innaccuracy. @@ -1248,22 +1248,22 @@ def ReferenceInputPreProcessing(ReferenceData, verbose=True): return ReferenceData ''' -GenerateReferenceDataAndFormsList takes in the list of referenceFileNamesList and the +GenerateReferenceDataAndFormsList takes in the list of referencePatternsFileNamesList and the list of forms. A list is generated containing MSReference objects created based on the referenceFileName and the corresponding form It allows MSRESOLVE to be backwards compatible with previous user input files ''' -def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_ObjectsDict={}): - #referenceFormsList can take values of 'xyyy' or 'xyxy' and must be a string - ##If referenceFileNamesList is a string or if form is a string then make them lists - if isinstance(referenceFileNamesList,str): - referenceFileNamesList = [referenceFileNamesList] - if isinstance(referenceFormsList,str): - referenceFormsList = [referenceFormsList] - #If referenceFileNamesList and forms are lists of 1 then create a list of the single MSReference object +def GenerateReferenceDataList(referencePatternsFileNamesList,referencePatternsFormsList,AllMID_ObjectsDict={}): + #referencePatternsFormsList can take values of 'xyyy' or 'xyxy' and must be a string + ##If referencePatternsFileNamesList is a string or if form is a string then make them lists + if isinstance(referencePatternsFileNamesList,str): + referencePatternsFileNamesList = [referencePatternsFileNamesList] + if isinstance(referencePatternsFormsList,str): + referencePatternsFormsList = [referencePatternsFormsList] + #If referencePatternsFileNamesList and forms are lists of 1 then create a list of the single MSReference object #This allows MSRESOLVE to be backwards compatible with previous user input files while still incorporating the reference pattern time chooser feature - if len(referenceFormsList) == 1 and len(referenceFileNamesList) == 1: - [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referenceFileNamesList[0],referenceFormsList[0]) + if len(referencePatternsFormsList) == 1 and len(referencePatternsFileNamesList) == 1: + [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referencePatternsFileNamesList[0],referencePatternsFormsList[0]) ReferenceDataList = [MSReference(provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName=referenceFileName, form=form, AllMID_ObjectsDict=AllMID_ObjectsDict)] #save each global variable into the class objects ReferenceDataList[0].ExportAtEachStep = G.ExportAtEachStep @@ -1284,29 +1284,29 @@ def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_O ReferenceDataList[0].absolute_standard_uncertainties = absolute_standard_uncertainties #We can't convert to relative uncertainties yet because the file may not be standardized yet. if type(G.referenceFileUncertainties) == type('string'): - provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referenceFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referenceFormsList[0]) + provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referencePatternsFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referencePatternsFormsList[0]) ReferenceDataList[0].absolute_standard_uncertainties = provided_reference_patterns_absolute_uncertainties #Just initializing the variable before filling it properly. maximum_absolute_intensities = numpy.amax(ReferenceDataList[0].provided_reference_patterns[:,1:], axis = 0) #Find the maximum intensity for each molecule. ReferenceDataList[0].absolute_standard_uncertainties[:,1:] = 100*ReferenceDataList[0].absolute_standard_uncertainties[:,1:]/maximum_absolute_intensities #TODO: low priority, remove nan values and/or populate them with zero using numpy divide. return ReferenceDataList #Otherwise we have multiple reference files and forms - #If just one form is used, make a list of forms that is the same length as referenceFileNamesList - if len(referenceFormsList) == 1: - #Generate a copy of referenceFileNamesList to be overwritten with forms - listOfForms = copy.copy(referenceFileNamesList) + #If just one form is used, make a list of forms that is the same length as referencePatternsFileNamesList + if len(referencePatternsFormsList) == 1: + #Generate a copy of referencePatternsFileNamesList to be overwritten with forms + listOfForms = copy.copy(referencePatternsFileNamesList) #replace each value with the given form - for i in range(len(referenceFileNamesList)): - listOfForms[i] = referenceFormsList[0] - #If list of forms is the same length of referenceFileNamesList then each form should correspond to the referenceFile of the same index - elif len(referenceFormsList) == len(referenceFileNamesList): + for i in range(len(referencePatternsFileNamesList)): + listOfForms[i] = referencePatternsFormsList[0] + #If list of forms is the same length of referencePatternsFileNamesList then each form should correspond to the referenceFile of the same index + elif len(referencePatternsFormsList) == len(referencePatternsFileNamesList): #So just set listOfForms equal to forms - listOfForms = referenceFormsList + listOfForms = referencePatternsFormsList #Initialize ReferenceDataList so it can be appended to ReferenceDataList = [] #For loop to generate each MSReferenceObject and append it to a list - for i in range(len(referenceFileNamesList)): - [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referenceFileNamesList[i],listOfForms[i]) + for i in range(len(referencePatternsFileNamesList)): + [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referencePatternsFileNamesList[i],listOfForms[i]) ReferenceDataList.append(MSReference(provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName=referenceFileName, form=form, AllMID_ObjectsDict=AllMID_ObjectsDict)) #save each global variable into the class objects ReferenceDataList[i].ExportAtEachStep = G.ExportAtEachStep @@ -1327,7 +1327,7 @@ def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_O ReferenceDataList[i].absolute_standard_uncertainties = absolute_standard_uncertainties #We can't convert to relative uncertainties yet because the file may not be standardized yet. if type(G.referenceFileUncertainties) == type('string'): - provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referenceFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referenceFormsList[i]) + provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referencePatternsFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referencePatternsFormsList[i]) ReferenceDataList[i].absolute_standard_uncertainties = provided_reference_patterns_absolute_uncertainties #Just initializing the variable before filling it properly. maximum_absolute_intensities = numpy.amax(ReferenceDataList[i].provided_reference_patterns[:,1:], axis = 0) #Find the maximum intensity for each molecule. ReferenceDataList[i].absolute_standard_uncertainties[:,1:] = ReferenceDataList[i].absolute_standard_uncertainties[:,1:]/maximum_absolute_intensities @@ -1658,50 +1658,50 @@ def IterativeDirectoryChange(iterativeAnalysis, iterationNumber): os.chdir(iterationDirectoryName) #this will be changed back at the end of the program def IterationDirectoryPreparation(iterativeAnalysis, iterationNumber): - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterativeDirectoryChange(iterativeAnalysis, iterationNumber) #naming for collected file #record the old file names - G.oldcollectedFileName = G.collectedFileName + G.oldDataToAnalyzeFileName = G.dataToAnalyzeFileName #construct the file names for the current run of the program #TODO FIXME, This syntax with -21 will not allow iterative to be compatible with more than 9 iterations - collectedFileNameTemp = str(G.collectedFileName)[:-21] + str(G.iterationSuffix) + str(G.collectedFileName)[-4:] + dataToAnalyzeFileNameTemp = str(G.dataToAnalyzeFileName)[:-21] + str(G.iterationSuffix) + str(G.dataToAnalyzeFileName)[-4:] #copy the experimental and reference files into new names for this iterative run - shutil.copy(G.collectedFileName, collectedFileNameTemp) + shutil.copy(G.dataToAnalyzeFileName, dataToAnalyzeFileNameTemp) #change the globals to reflect the renaming of the ref and exp files - G.collectedFileName = collectedFileNameTemp + G.dataToAnalyzeFileName = dataToAnalyzeFileNameTemp #construct file names for the next run of the program #TODO FIXME, This syntax with -11 will not allow iterative to be compatible with more than 9 iterations - G.nextExpFileName = G.collectedFileName[:-11] + str('_remaining') + G.collectedFileName[-11:] + G.nextExpFileName = G.dataToAnalyzeFileName[:-11] + str('_remaining') + G.dataToAnalyzeFileName[-11:] #naming for reference files G.oldReferenceFileName = [] G.nextRefFileName = [] - for RefIndex, RefName in enumerate(G.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.referencePatternsFileNamesList): #a list #record the old file names G.oldReferenceFileName.append(RefName) #construct the file names for the current run of the program #TODO FIXME, This syntax with -18 will not allow iterative to be compatible with more than 9 iterations - referenceFileNameTemp = G.referenceFileNamesList[RefIndex][:-18] + str(G.iterationSuffix) + G.referenceFileNamesList[RefIndex][-4:] + referenceFileNameTemp = G.referencePatternsFileNamesList[RefIndex][:-18] + str(G.iterationSuffix) + G.referencePatternsFileNamesList[RefIndex][-4:] #copy the experimental and reference files into new names for this iterative run shutil.copy(RefName, referenceFileNameTemp) #change the globals to reflect the renaming of the ref and exp files - G.referenceFileNamesList[RefIndex] = referenceFileNameTemp + G.referencePatternsFileNamesList[RefIndex] = referenceFileNameTemp #construct file names for the next run of the program #TODO FIXME, This syntax with -18 will not allow iterative to be compatible with more than 9 iterations G.nextRefFileName.append(RefName[:-18] + '_unused_iter_%s' %G.iterationNumber + RefName[-4:]) return None - #implied returns: G.oldReferenceFileName, G.oldcollectedFileName, G.referenceFileNamesList,G.collectedFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber + #implied returns: G.oldReferenceFileName, G.oldDataToAnalyzeFileName, G.referencePatternsFileNamesList,G.dataToAnalyzeFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber def IterationFirstDirectoryPreparation(iterativeAnalysis,iterationNumber): - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName #this global value is set so that each export statement can label the output files correctly G.iterationNumber = iterationNumber @@ -1720,27 +1720,27 @@ def IterationFirstDirectoryPreparation(iterativeAnalysis,iterationNumber): AppendListToFile("__var_list__", G.__var_list__, "UserInput_iter_1.py", float('Inf')) #record the old file names - G.oldcollectedFileName = G.collectedFileName + G.oldDataToAnalyzeFileName = G.dataToAnalyzeFileName #construct the file names for the first run of the program - G.collectedFileName = G.collectedFileName[:-4] + str(G.iterationSuffix) + G.collectedFileName[-4:] + G.dataToAnalyzeFileName = G.dataToAnalyzeFileName[:-4] + str(G.iterationSuffix) + G.dataToAnalyzeFileName[-4:] #construct file names for the second run of the program #TODO FIXME, This syntax with -11 will not allow iterative to be compatible with more than 9 iterations - G.nextExpFileName = G.collectedFileName[:-11] + '_remaining_iter_1' + G.collectedFileName[-4:] + G.nextExpFileName = G.dataToAnalyzeFileName[:-11] + '_remaining_iter_1' + G.dataToAnalyzeFileName[-4:] G.oldReferenceFileName = [] - for RefIndex, RefName in enumerate(G.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.referencePatternsFileNamesList): #a list G.oldReferenceFileName.append(RefName) #construct the file names for the first run of the program - G.referenceFileNamesList[RefIndex] = G.referenceFileNamesList[RefIndex][:-4] + str(G.iterationSuffix) + G.referenceFileNamesList[RefIndex][-4:] + G.referencePatternsFileNamesList[RefIndex] = G.referencePatternsFileNamesList[RefIndex][:-4] + str(G.iterationSuffix) + G.referencePatternsFileNamesList[RefIndex][-4:] #construct file names for the second run of the program G.nextRefFileName.append(RefName[:-4] + '_unused_iter_1' + RefName[-4:]) return None - #implied returns: G.oldReferenceFileName, G.oldcollectedFileName, G.referenceFileNamesList,G.collectedFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber + #implied returns: G.oldReferenceFileName, G.oldDataToAnalyzeFileName, G.referencePatternsFileNamesList,G.dataToAnalyzeFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber #The IterativeAnalysisDirectory and Variable Population function is used to shrink the size of the program analysis and redirect the output. def IADirandVarPopulation(iterativeAnalysis, chosenMassFragments, chosenMolecules, ExperimentData, ExperimentDataFullCopy, ReferenceDataList, ReferenceDataListFullCopy): - #implied arguments: G.dataSimulation, G.referenceFileNamesList, G.collectedFileName, G.nextRefFileName, G.oldReferenceFileName, G.chosenMoleculesNames, G.iterationNumber + #implied arguments: G.dataSimulation, G.referencePatternsFileNamesList, G.dataToAnalyzeFileName, G.nextRefFileName, G.oldReferenceFileName, G.chosenMoleculesNames, G.iterationNumber #override data simulation to yes if it was not selected if G.dataSimulation != 'yes': print("Iterative analysis cannot find the remaining signals in the experiment without signal simulation being run.") @@ -1770,11 +1770,11 @@ def IADirandVarPopulation(iterativeAnalysis, chosenMassFragments, chosenMolecule for RefObjectIndex, RefObject in enumerate(ReferenceDataList): #a list #Export current Reference Data #Reference data is trimmed prior to this function - ExportXYYYData(G.referenceFileNamesList[RefObjectIndex], RefObject.provided_reference_patterns, RefObject.molecules, abscissaHeader = 'M/Z') + ExportXYYYData(G.referencePatternsFileNamesList[RefObjectIndex], RefObject.provided_reference_patterns, RefObject.molecules, abscissaHeader = 'M/Z') #Export current Experimental Data #Experimental data is trimmed prior to this function, but it still needs to be exported - ExportXYYYData(G.collectedFileName, ExperimentData.workingData, ExperimentData.mass_fragment_numbers, + ExportXYYYData(G.dataToAnalyzeFileName, ExperimentData.workingData, ExperimentData.mass_fragment_numbers, abscissaHeader = ExperimentData.abscissaHeader, dataType = 'preProcessed', rowIndex = ExperimentData.times) for RefObjectIndex, RefObject in enumerate(ReferenceDataList): #a list @@ -1875,8 +1875,8 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): G.nextUserInputModule.__var_list__ = G.__var_list__ #save the new file name for the next user input file - G.nextUserInputModule.collectedFileName = G.nextExpFileName - G.nextUserInputModule.referenceFileNamesList = G.nextRefFileName + G.nextUserInputModule.dataToAnalyzeFileName = G.nextExpFileName + G.nextUserInputModule.referencePatternsFileNamesList = G.nextRefFileName #updating the selected molecules for the next user input file G.nextUserInputModule.chosenMoleculesNames = G.unusedMolecules #Updating the selected masses for the next user input file @@ -1897,7 +1897,7 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): G.nextUserInputModule.scaleRawDataFactor = G.scaleRawDataFactor #Now going to overwrite parallelized variables with their original versions if they were set to length of chosen molecules. - delimitedStringOfVariablesToUnparallelize = 'moleculeLikelihoods, sensitivityValues, referenceValueThreshold, referenceSignificantFragmentThresholds' + delimitedStringOfVariablesToUnparallelize = 'moleculeLikelihoods, sensitivityValues, referenceMassFragmentFilterThreshold, referenceSignificantFragmentThresholds' listOfVariablesToUnparallelize = delimitedStringOfVariablesToUnparallelize.split(", ") #Note that we are using ", " as the delimeter, not just "," for variable in listOfVariablesToUnparallelize: G.nextUserInputModule.__dict__[variable]=G.beforeParsedGDict[variable] @@ -1914,14 +1914,14 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): #copy the experimental signals to the next iteration copyFromPath = os.path.join(os.curdir, os.pardir, str(iterationDirectoryName), - str(G.nextUserInputModule.collectedFileName)) + str(G.nextUserInputModule.dataToAnalyzeFileName)) shutil.copy(copyFromPath, os.getcwd()) - for RefIndex, RefName in enumerate(G.nextUserInputModule.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.nextUserInputModule.referencePatternsFileNamesList): #a list #copy the next reference file from the previous iteration folder to the next iteration folder copyFromPath = os.path.join(os.curdir, os.pardir, str(iterationDirectoryName), - str(G.nextUserInputModule.referenceFileNamesList[RefIndex])) + str(G.nextUserInputModule.referencePatternsFileNamesList[RefIndex])) shutil.copy(copyFromPath, os.getcwd()) #returning to the parent directory os.chdir('..') @@ -1949,17 +1949,17 @@ def IterativeAnalysisPostProcessing(ExperimentData, simulateddata, mass_fragment exportSimulatedSignalsSoFar(G.simulatedSignalsOutputName,iterationDirectoryName,G.iterationNumber) #subtract 1 from the iteration number since the iteration number has already been changed IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy) return None - #implied returns: G.referenceFileNamesList, G.collectedFileName, G.nextRefFileName, G.chosenMoleculesNames, G.iterationSuffix + #implied returns: G.referencePatternsFileNamesList, G.dataToAnalyzeFileName, G.nextRefFileName, G.chosenMoleculesNames, G.iterationSuffix ############################################################################### ######################### Functions to read data files ####################### ############################################################################### #These functions read in the experimental data file and the reference file. The #returned variables can then be used to initialize the respective classes. -def readDataFile(collectedFileName): +def readDataFile(dataToAnalyzeFileName): #read the csv file into a dataframe. dataFrame means "dataframe" and is a pandas object. - dataFrame = pandas.read_csv('%s' %collectedFileName, header=None) + dataFrame = pandas.read_csv('%s' %dataToAnalyzeFileName, header=None) ''' generate mass fragment list''' #select only the 2nd row down, all columns except for the first. #"iloc" is a pandas dataframe function. All it does is select a portion of the data. @@ -2003,7 +2003,7 @@ def readDataFile(collectedFileName): rawCollectedData = numpy.vstack((rawCollectedData,rawCollectedData)) - return mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName + return mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName #readReferenceFile is a helper function that reads the reference file in a certain form and returns the #variables and data that are used to initialize the class. It can read files both in XYYY and XYXY form. @@ -2267,10 +2267,10 @@ def getMoleculesFromReferenceData(ReferenceFileName): ''' getMassFragmentsFromCollectedData is a function that takes in the collected filename and returns the mass fragments present in the data ''' -def getMassFragmentsFromCollectedData(CollectedFileName): +def getMassFragmentsFromCollectedData(dataToAnalyzeFileName): #Read the csv file #TODO CHange to use numpy.gen_from_text instead of pandas - DataInfo = pandas.read_csv(CollectedFileName,header=0) + DataInfo = pandas.read_csv(dataToAnalyzeFileName,header=0) #Convert the data into an array DataInfoArray = numpy.array(DataInfo) #Get the names of mass fragments in collected data @@ -2340,9 +2340,9 @@ class MSData (object): #self.mass_fragment_numbers , 1D and must be integers #self.rawCollectedData, a 2D array of the signals. - def __init__(self, mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName=None): + def __init__(self, mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName=None): - self.mass_fragment_numbers, self.abscissaHeader, self.times, self.rawCollectedData, self.collectedFileName=mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName + self.mass_fragment_numbers, self.abscissaHeader, self.times, self.rawCollectedData, self.dataToAnalyzeFileName=mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName #class object variable created to allow class to be used separately from the program. self.ExportAtEachStep = '' @@ -2654,7 +2654,7 @@ def CombinationMaker(reciprocal_matching_correction_values,rawsignalsarrayline,m if combinations == []:#This function will not work without enough mass fragments, so the user must know the problem print('****************************************') print('Not enough matching mass fragments input') - print("This means that at some point in the analysis, there were not enough masses in the reference file to apply the inverse method. It could mean you have too many overlapping masses for the molecules you are trying to resolve. You can get around this by using the '#//Reference Mass Fragmentation Threshold//' feature to exclude tiny fragementation peaks. This would be done by setting the value to 'yes' for minimalReferenceValue feature with referenceValueThreshold, such as referenceValueThreshold = 5.0 . Alternatively, to be more targeted, if you know *which* fragmentation patterns could be overlapping, you could set those minor fragments to 0 in your reference pattern csv file. TODO: Print out the relevant masses here. This requires keeping track of when they are selected prior to combination maker, and possibly passing them as an additional argument.") + print("This means that at some point in the analysis, there were not enough masses in the reference file to apply the inverse method. It could mean you have too many overlapping masses for the molecules you are trying to resolve. You can get around this by using the '#//Reference Mass Fragmentation Threshold//' feature to exclude tiny fragementation peaks. This would be done by setting the value to 'yes' for applyReferenceMassFragmentsThresholds feature with referenceMassFragmentFilterThreshold, such as referenceMassFragmentFilterThreshold = 5.0 . Alternatively, to be more targeted, if you know *which* fragmentation patterns could be overlapping, you could set those minor fragments to 0 in your reference pattern csv file. TODO: Print out the relevant masses here. This requires keeping track of when they are selected prior to combination maker, and possibly passing them as an additional argument.") print('****************************************') combinations_len = len(combinations) correctionarray = numpy.zeros([1,num_molecules]) @@ -2917,7 +2917,7 @@ def InverseMethodDistinguished(monitored_reference_intensities,reciprocal_matchi try: numpy.linalg.det(reciprocal_matching_correction_values) except: - print("There is an error in a matrix operation evaluation: The number of feasible mass fragments to check is probably less than the number of molecules. This can happen if referenceValueThreshold is too strict, leaving not enough feasible fargments to consider. The program is probably about to crash.") + print("There is an error in a matrix operation evaluation: The number of feasible mass fragments to check is probably less than the number of molecules. This can happen if referenceMassFragmentFilterThreshold is too strict, leaving not enough feasible fargments to consider. The program is probably about to crash.") if numpy.linalg.det(reciprocal_matching_correction_values) != 0:#only solves if determinant is not equal to zero #Now we will solve with the inverse way, and also for uncertainties if that module is present. #The uncertainties module works well for matrix inverse, but not for dot product. So we make a custom function. @@ -3449,7 +3449,7 @@ def SLSUniqueFragments(molecules,monitored_reference_intensities,reciprocal_matc chosenMolecule = None tuplesOfUniqueFragmentsList = [] - if G.minimalReferenceValue == "yes": #We only will do some filtering things if it's requested. + if G.applyReferenceMassFragmentsThresholds == "yes": #We only will do some filtering things if it's requested. #Before going forward, we're going to make a variable called remaining_referenceSignificantFragmentThresholds, using a function. def get_remaining_referenceSignificantFragmentThresholds(referenceSignificantFragmentThresholds, molecules_unedited, remaining_molecules_SLS): remaining_referenceSignificantFragmentThresholds = list(copy.deepcopy(referenceSignificantFragmentThresholds)) @@ -3489,12 +3489,12 @@ def get_remaining_referenceSignificantFragmentThresholds(referenceSignificantFra #consideredMolecule = remaining_molecules_SLS[moleculeIndexOfUniqueIntensity] #This is for debugging purposes, this can be printed. #For debugging, also print remaining_reference_intensities_SLS and massFragmentIndex_i. #However, now we have a few lines of code to check if we are above the referenceSignificantFragmentThresholds. - if G.minimalReferenceValue == "yes": #We only check for the remaining_referenceSignificantFragmentThresholds if this option has been chosen. + if G.applyReferenceMassFragmentsThresholds == "yes": #We only check for the remaining_referenceSignificantFragmentThresholds if this option has been chosen. if (max(remaining_reference_intensities_SLS[massFragmentIndex_i]) < remaining_referenceSignificantFragmentThresholds[moleculeIndexOfUniqueIntensity]): #This allows separate referenceSignificantFragmentThresholds for each molecule. significantFragment = False #Set to false if the fragment is too small. else: significantFragment = True #This means the fragment is greater than or equal to the threshold for significance. - if G.minimalReferenceValue != "yes": #if the option is not selected, then all fragments are considered significant. + if G.applyReferenceMassFragmentsThresholds != "yes": #if the option is not selected, then all fragments are considered significant. significantFragment = True if significantFragment == True: #now make a tuple with the unique standardized intensity in the front so we can sort by that @@ -4125,7 +4125,7 @@ def SLSMethod(molecules,monitored_reference_intensities,reciprocal_matching_corr except: pass except IndexError: - print("Warning: SLS could not solve this problem. If you are already using SLS Common, you can try raising the referenceValueThreshold within the feature Reference Mass Fragmentation Threshold. Alternatively, you can try using inverse.") + print("Warning: SLS could not solve this problem. If you are already using SLS Common, you can try raising the referenceMassFragmentFilterThreshold within the feature Reference Mass Fragmentation Threshold. Alternatively, you can try using inverse.") solutions = numpy.array([None]) #This is just creating a numpy array with an element that has a None object, so that the main function can know that SLSMethod failed. if len(uncertainties_dict) > 0: #Note: the indexing in the solutions must match the original indexing, or errors will occur. Now we take the "filled up" solutions and put everything together. uncertainties_dict['concentrations_relative_uncertainties_one_time'] = uncertainties_dict['concentrations_relative_uncertainties_one_time_after_finisher'].transpose()*1.0 @@ -4169,7 +4169,7 @@ def RawSignalThresholdFilter (distinguished,reciprocal_matching_correction_value monitored_reference_intensities_copy = monitored_reference_intensities rawsignalsarray_copy = remaining_rawsignals_SLS summation = sum(rawsignalsarray_copy) - [rawSignalThresholdMethod,rawSignalThresholdValue,sensitivityThresholdValue,rawSignalThresholdDivider,rawSignalThresholdLimit,rawSignalThresholdLimitPercent] = ThresholdList + [applyRawSignalThresholds,rawSignalThresholdValue,sensitivityThresholdValue,rawSignalThresholdDivider,rawSignalThresholdLimit,rawSignalThresholdLimitPercent] = ThresholdList #this section of the code enables the function to eliminate from the raw signal array (for the purpose of this function only) #the highest value in the array, if it makes up over 90 percent of the raw signals present. This is useful because if one of #the signals does become this great then it will eliminate all the other signals present when it becomes very high @@ -4375,7 +4375,7 @@ def subtract_simulated_signals_of_specific_molecules(moleculeIndicesToSubtract, -#This function is intended to add back any concentration / intensity that was removed or distorted by reference fragmentation pattern high pass filtering (which is UserChoices['minimalReferenceValue']['referenceValueThreshold']). It also adds half of the difference to the uncertainties. As of 5/17/20, only a single recursion iteration is performed. +#This function is intended to add back any concentration / intensity that was removed or distorted by reference fragmentation pattern high pass filtering (which is UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold']). It also adds half of the difference to the uncertainties. As of 5/17/20, only a single recursion iteration is performed. #The corrections are performed from largest to smallest (in percentage), with only one molecule's correction per sls mass. That is, the effect of molecule A's filtering on molecule B's concentration, for example. A molecule can be its largest self correction (A to A). Each molecule is corrected in kind, so serial (stacked) correction is among the possibilities that can occur. #TODO: May 17 2020. Right now, we only take the LARGEST correction for each sls when deciding which sls mass to correct, then we apply that correction. But maybe we should take a single recursion of all molecules affecting? Then apply all molecules to that sls mass before moving to the next one? This would still be a single recursion, but would matter if (for example) a single molecule's sls was able to occur due to filtering out 20 other molecule's contributions at that mass. class referenceThresholdFilterCorrectingSandbox(): @@ -4937,9 +4937,9 @@ def PopulateLogFile(): filename6 = 'LogFile.txt' #the log file is printed here f6 = open(filename6,'a') f6.write('\n') - f6.write('referenceFileName = %s \n'%(G.referenceFileNamesList)) - f6.write('form = %s \n'%(G.referenceFormsList)) - f6.write('collectedFileName = %s \n'%(G.collectedFileName )) + f6.write('referenceFileName = %s \n'%(G.referencePatternsFileNamesList)) + f6.write('form = %s \n'%(G.referencePatternsFormsList)) + f6.write('dataToAnalyzeFileName = %s \n'%(G.dataToAnalyzeFileName )) if G.timeRangeLimit == 'yes':#some of the lines in the backgroundinput file don't need to be printed unless a selection is made, so the if statements here make that happen f6.write('timeRangeLimit = %s \n'%(G.timeRangeLimit)) f6.write('timeRangeStart = %s \n'%(G.timeRangeStart)) @@ -4948,8 +4948,8 @@ def PopulateLogFile(): f6.write('backgroundMassFragment = %s \n'%(G.backgroundMassFragment)) f6.write('backgroundSlopes = %s \n'%(G.backgroundSlopes)) f6.write('backgroundIntercepts = %s \n'%(G.backgroundIntercepts)) - if G.measuredReferenceYorN == 'yes': - f6.write('measuredReferenceYorN = %s \n'%G.measuredReferenceYorN) + if G.tuningCorrection == 'yes': + f6.write('tuningCorrection = %s \n'%G.tuningCorrection) f6.write('referenceCorrectionCoefficientA = %s \n'%(G.referenceCorrectionCoefficients[0])) f6.write('referenceCorrectionCoefficientB = %s \n'%(G.referenceCorrectionCoefficients[1])) f6.write('referenceCorrectionCoefficientC = %s \n'%(G.referenceCorrectionCoefficients[2])) @@ -4992,9 +4992,9 @@ def PopulateLogFile(): f6.write('rpcMoleculesToChange = %s \n'%(G.rpcMoleculesToChange)) f6.write('rpcMoleculesToChangeMF = %s \n'%(G.rpcMoleculesToChangeMF)) f6.write('rpcTimeRanges = %s \n'%(G.rpcTimeRanges)) - if G.minimalReferenceValue == 'yes': - f6.write('minimalReferenceValue = %s \n'%(G.minimalReferenceValue)) - f6.write('referenceValueThreshold = %s \n'%(G.referenceValueThreshold)) + if G.applyReferenceMassFragmentsThresholds == 'yes': + f6.write('applyReferenceMassFragmentsThresholds = %s \n'%(G.applyReferenceMassFragmentsThresholds)) + f6.write('referenceMassFragmentFilterThreshold = %s \n'%(G.referenceMassFragmentFilterThreshold)) f6.write('referenceSignificantFragmentThresholds = %s \n'%(G.referenceSignificantFragmentThresholds)) if G.lowerBoundThresholdChooser == 'yes': f6.write('lowerBoundThresholdChooser = %s \n'%(G.lowerBoundThresholdChooser)) @@ -5007,8 +5007,8 @@ def PopulateLogFile(): f6.write('dataSmootherTimeRadius = %s \n'%(G.dataSmootherTimeRadius)) f6.write('dataSmootherPointRadius = %s \n'%(G.dataSmootherPointRadius)) f6.write('dataSmootherHeadersToConfineTo = %s \n'%(G.dataSmootherHeadersToConfineTo)) - if G.rawSignalThresholdMethod == 'yes': - f6.write('rawSignalThresholdMethod = %s \n'%(G.rawSignalThresholdMethod)) + if G.applyRawSignalThresholds == 'yes': + f6.write('applyRawSignalThresholds = %s \n'%(G.applyRawSignalThresholds)) f6.write('rawSignalThresholdValue = %s \n'%(G.rawSignalThresholdValue)) f6.write('sensitivityThresholdValue = %s \n'%(G.sensitivityThresholdValue)) f6.write('rawSignalThresholdDivider = %s \n'%(G.rawSignalThresholdDivider)) @@ -5104,35 +5104,35 @@ def main(): #if this is not the first iterative run, then the required files are all stored in the highest iteration directory if G.iterativeAnalysis and G.iterationNumber != 1: - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterationDirectoryPreparation(G.iterativeAnalysis, G.iterationNumber) #This function also changes the working directory #Save an MSReference object containing all molecules and an MSData object containing all mass fragments if G.iterativeAnalysis and G.iterationNumber != 1: #If using iterative and not on the first iteration we will need to remove _iter_x from the file names - AllMoleculesReferenceFileNamesList = [] #Initialize AllMoleculesReferenceDataList as an empty list - for referenceFileNameIndex in range(len(G.referenceFileNamesList)): #Loop through the reference file names list - AllMoleculesReferenceFileName = remove_iter_fromFileName(G.referenceFileNamesList[referenceFileNameIndex]) #Remove the _iter_ from the name so the program has the original filename to access from the parent directory + AllMoleculesreferencePatternsFileNamesList = [] #Initialize AllMoleculesReferenceDataList as an empty list + for referenceFileNameIndex in range(len(G.referencePatternsFileNamesList)): #Loop through the reference file names list + AllMoleculesReferenceFileName = remove_iter_fromFileName(G.referencePatternsFileNamesList[referenceFileNameIndex]) #Remove the _iter_ from the name so the program has the original filename to access from the parent directory AllMoleculesReferenceDataFilePath = os.path.normpath(os.path.join(os.curdir, os.pardir,AllMoleculesReferenceFileName)) #This function will get the path of the reference file from the parent directory - AllMoleculesReferenceFileNamesList.append(AllMoleculesReferenceDataFilePath) #Append the path to the list and the program will read the reference file from the path name - AllMassFragmentsExperimentDataFileName = remove_iter_fromFileName(G.collectedFileName) #Remove _iter_ from the data filename so the program has the original filename to access from the parent directory + AllMoleculesreferencePatternsFileNamesList.append(AllMoleculesReferenceDataFilePath) #Append the path to the list and the program will read the reference file from the path name + AllMassFragmentsExperimentDataFileName = remove_iter_fromFileName(G.dataToAnalyzeFileName) #Remove _iter_ from the data filename so the program has the original filename to access from the parent directory AllMassFragmentsExperimentDataFileNamePath = os.path.normpath(os.path.join(os.curdir, os.pardir, AllMassFragmentsExperimentDataFileName)) #This function will get the path of the data file from the parent directory else: #Otherwise not running iterative or in the first iteration, just copy the filename - AllMoleculesReferenceFileNamesList = copy.copy(G.referenceFileNamesList) - AllMassFragmentsExperimentDataFileNamePath = copy.copy(G.collectedFileName) + AllMoleculesreferencePatternsFileNamesList = copy.copy(G.referencePatternsFileNamesList) + AllMassFragmentsExperimentDataFileNamePath = copy.copy(G.dataToAnalyzeFileName) #Create the MSReference and MSData objects containing all molecules and all mass fragments, respectively - [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_collectedFileName]=readDataFile(AllMassFragmentsExperimentDataFileNamePath) - AllMassFragmentsExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, collectedFileName=exp_collectedFileName) - AllMoleculesReferenceDataList = GenerateReferenceDataList(AllMoleculesReferenceFileNamesList,G.referenceFormsList,G.AllMID_ObjectsDict) + [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_dataToAnalyzeFileName]=readDataFile(AllMassFragmentsExperimentDataFileNamePath) + AllMassFragmentsExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, dataToAnalyzeFileName=exp_dataToAnalyzeFileName) + AllMoleculesReferenceDataList = GenerateReferenceDataList(AllMoleculesreferencePatternsFileNamesList,G.referencePatternsFormsList,G.AllMID_ObjectsDict) #Then prepare AllMoleculesReferenceDataList to get reciprocal_matching_correction_values, this value is fed into RatioFinder for referenceObjectIndex in range(len(AllMoleculesReferenceDataList)): AllMoleculesReferenceDataList[referenceObjectIndex].ExportAtEachStep = 'no' PrepareReferenceObjectsAndCorrectionValues(AllMoleculesReferenceDataList[referenceObjectIndex],AllMassFragmentsExperimentData) #Read in the molecules used before parsing the user input file - G.referenceFileNamesList = parse.listCast(G.referenceFileNamesList) - G.moleculesNames = getMoleculesFromReferenceData(G.referenceFileNamesList[0]) + G.referencePatternsFileNamesList = parse.listCast(G.referencePatternsFileNamesList) + G.moleculesNames = getMoleculesFromReferenceData(G.referencePatternsFileNamesList[0]) #We are reading the experimental data in and this must be before user input processing so we have the mass fragments - G.exp_mass_fragment_numbers = getMassFragmentsFromCollectedData(G.collectedFileName) + G.exp_mass_fragment_numbers = getMassFragmentsFromCollectedData(G.dataToAnalyzeFileName) #beforeParsedGDict this will be needed for iterative. This actually contains "UserChoices" when that's available, but we won't use that. beforeParsedGDict = {} @@ -5166,9 +5166,9 @@ def main(): global currentReferenceData global resultsObjects resultsObjects = {} - [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_collectedFileName]=readDataFile(G.collectedFileName) - ExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, collectedFileName=exp_collectedFileName) - ReferenceDataList = GenerateReferenceDataList(G.referenceFileNamesList,G.referenceFormsList,G.AllMID_ObjectsDict) + [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_dataToAnalyzeFileName]=readDataFile(G.dataToAnalyzeFileName) + ExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, dataToAnalyzeFileName=exp_dataToAnalyzeFileName) + ReferenceDataList = GenerateReferenceDataList(G.referencePatternsFileNamesList,G.referencePatternsFormsList,G.AllMID_ObjectsDict) ExperimentData.provided_mass_fragment_numbers = ExperimentData.mass_fragment_numbers #This is where the experimental uncertainties object first gets populated, but it does get modified later as masses are removed and time-points are removed. if type(G.collectedFileUncertainties) != type(None): @@ -5179,14 +5179,14 @@ def main(): prototypicalReferenceData = ReferenceDataList[0] #Prints a warning if the user has more reference files than specified time ranges - if len(G.referencePatternTimeRanges) > 0 and (len(G.referenceFileNamesList) > len(G.referencePatternTimeRanges)): + if len(G.referencePatternTimeRanges) > 0 and (len(G.referencePatternsFileNamesList) > len(G.referencePatternTimeRanges)): print("WARNING: There are more reference files given than time ranges") #save global variable into the class objects ExperimentData.ExportAtEachStep = G.ExportAtEachStep #if this is the first iterative run, then the reference and experimental files need to have been imported before the iteration can begin if G.iterativeAnalysis and G.iterationNumber == 1 : - #implied arguments for the following function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for the following function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterationFirstDirectoryPreparation(G.iterativeAnalysis, G.iterationNumber) # Skip preProcessing all together if we are loading analyzed data @@ -5337,7 +5337,7 @@ def main(): G.csvFile, G.moleculesToRestrict, G.csvFileName,G.dataUpperBound, G.dataLowerBound, G.bruteIncrements, G.permutationNum] SLSChoices = [G.uniqueOrCommon, G.slsFinish, G.distinguished] - ThresholdList = [G.rawSignalThresholdMethod, G.rawSignalThresholdValue, G.sensitivityThresholdValue, + ThresholdList = [G.applyRawSignalThresholds, G.rawSignalThresholdValue, G.sensitivityThresholdValue, G.rawSignalThresholdDivider, G.rawSignalThresholdLimit, G.rawSignalThresholdLimitPercent] currentReferenceData = ReferenceDataList[0] #TODO this line is placeholder by charles to fix currentRefenceData issue until Alex has a better solution @@ -5414,7 +5414,7 @@ def main(): #TODO continued: I am putting some variables here to make that process easier by getting some of it done already, then only the user input file needs to be changed. #This feature is intended to remove molecules that have major fragments not observed. previously, it was done in a more complicated way. # now, to simplify things, is being used as a filter that simply sets standardized intensities in the reference patterns to zero. - G.excludeMoleculesIfSignificantFragmentNotObserved = G.rawSignalThresholdMethod + G.excludeMoleculesIfSignificantFragmentNotObserved = G.applyRawSignalThresholds G.minimumSignalRequired = G.rawSignalThresholdValue G.minimumStandardizedReferenceHeightToBeSignificant = G.sensitivityThresholdValue if G.excludeMoleculesIfSignificantFragmentNotObserved == 'yes': diff --git a/ExampleAnalysis/UserInput.py b/ExampleAnalysis/UserInput.py index 08ce9fab..a92a5dec 100644 --- a/ExampleAnalysis/UserInput.py +++ b/ExampleAnalysis/UserInput.py @@ -13,10 +13,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ExtractedReferencePattern.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ExtractedReferencePattern.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = 'Collected_Reference.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = 'Collected_Reference.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -31,7 +31,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -150,17 +150,17 @@ #Note that 1 is the default and will make no alteration to the data #//Tuning Corrector - Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] =['ReferenceCollected.csv','xyyy'] -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] =['ReferenceLiterature.csv','xyyy'] -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] =['ReferenceCollected.csv','xyyy'] +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] =['ReferenceLiterature.csv','xyyy'] +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0. Used as.... Factor = A*X^2 + B*X + C, so A=0,B=0,C=1.0 means the final factor is 1.0 and independent of molecular weight. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. #//Reference Pattern Changer // (rpc) @@ -179,11 +179,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [1.01] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [20.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [1.01] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [20.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -211,18 +211,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -294,4 +294,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/ExampleAnalysis/userInputValidityFunctions.py b/ExampleAnalysis/userInputValidityFunctions.py index 3e5e11bf..51573dee 100644 --- a/ExampleAnalysis/userInputValidityFunctions.py +++ b/ExampleAnalysis/userInputValidityFunctions.py @@ -8,11 +8,11 @@ ''' def parseUserInput(currentUserInput): #Input Files - currentUserInput.referenceFileNamesList = parse.listCast(currentUserInput.referenceFileNamesList) #referenceFileName needs to be a list - currentUserInput.referenceFormsList = parse.listCast(currentUserInput.referenceFormsList) #form needs to be a list - currentUserInput.referenceFormsList = parse.parallelVectorize(currentUserInput.referenceFormsList,len(currentUserInput.referenceFileNamesList)) #form needs to be a list of the same length as referenceFileName + currentUserInput.referencePatternsFileNamesList = parse.listCast(currentUserInput.referencePatternsFileNamesList) #referenceFileName needs to be a list + currentUserInput.referencePatternsFormsList = parse.listCast(currentUserInput.referencePatternsFormsList) #form needs to be a list + currentUserInput.referencePatternsFormsList = parse.parallelVectorize(currentUserInput.referencePatternsFormsList,len(currentUserInput.referencePatternsFileNamesList)) #form needs to be a list of the same length as referenceFileName currentUserInput.referencePatternTimeRanges = parse.listCast(currentUserInput.referencePatternTimeRanges) #RefPatternTimeRanges needs to be a list - parse.strCheck(currentUserInput.collectedFileName,'collectedFileName') #collectedFileName must be a string + parse.strCheck(currentUserInput.dataToAnalyzeFileName,'dataToAnalyzeFileName') #dataToAnalyzeFileName must be a string #preProcessing, dataAnalysis, dataSimulation, grapher @@ -106,7 +106,7 @@ def parseUserInput(currentUserInput): currentUserInput.scaleRawDataFactor = float(currentUserInput.scaleRawDataFactor) #scaleRawDataFactor is a float #Reference Correction Changer - parse.strCheck(currentUserInput.measuredReferenceYorN,'measuredReferenceYorN') + parse.strCheck(currentUserInput.tuningCorrection,'tuningCorrection') #The below two variables are no longer strings. They are now lists with two elements, each of which are strings. TODO: Change their names to referenceFileExistingTuningAndForm and referenceFileDesiredTuningAndForm #parse.strCheck(currentUserInput.referenceFileExistingTuningAndForm,'referenceFileExistingTuningAndForm') #parse.strCheck(currentUserInput.referenceFileDesiredTuningAndForm,'referenceFileDesiredTuningAndForm') @@ -123,11 +123,11 @@ def parseUserInput(currentUserInput): parse.compareElementsBetweenLists(currentUserInput.rpcMoleculesToChange,chosenMoleculesForParsing,'rpcMoleculesToChange','chosenMolecules') #Reference Mass Fragmentation Threshold - parse.strCheck(currentUserInput.minimalReferenceValue,'minimalReferenceValue') - if currentUserInput.minimalReferenceValue == 'yes': #If using reference mass fragmentation threshold - currentUserInput.referenceValueThreshold = parse.listCast(currentUserInput.referenceValueThreshold) #reference value threshold is a list + parse.strCheck(currentUserInput.applyReferenceMassFragmentsThresholds,'applyReferenceMassFragmentsThresholds') + if currentUserInput.applyReferenceMassFragmentsThresholds == 'yes': #If using reference mass fragmentation threshold + currentUserInput.referenceMassFragmentFilterThreshold = parse.listCast(currentUserInput.referenceMassFragmentFilterThreshold) #reference value threshold is a list #The length of the reference value thresholds needs to be the same length as the number of molecules - currentUserInput.referenceValueThreshold = parse.parallelVectorize(currentUserInput.referenceValueThreshold,len(chosenMoleculesForParsing)) + currentUserInput.referenceMassFragmentFilterThreshold = parse.parallelVectorize(currentUserInput.referenceMassFragmentFilterThreshold,len(chosenMoleculesForParsing)) currentUserInput.referenceSignificantFragmentThresholds = parse.parallelVectorize(currentUserInput.referenceSignificantFragmentThresholds,len(chosenMoleculesForParsing)) #Data Threshold Filter @@ -156,9 +156,9 @@ def parseUserInput(currentUserInput): parse.compareElementsBetweenLists(currentUserInput.dataSmootherHeadersToConfineTo,chosenMassFragmentsForParsing,'dataSmootherHeadersToConfineTo','chosenMolecules') #Raw Signal Threshold - parse.strCheck(currentUserInput.rawSignalThresholdMethod,'rawSignalThresholdMethod') + parse.strCheck(currentUserInput.applyRawSignalThresholds,'applyRawSignalThresholds') parse.strCheck(currentUserInput.rawSignalThresholdLimit,'rawSignalThresholdLimit') - if currentUserInput.rawSignalThresholdMethod == 'yes': #If using rawSignalThresholdMethod + if currentUserInput.applyRawSignalThresholds == 'yes': #If using applyRawSignalThresholds #raw signal threshold value, sensitivity value, raw signal threshold divider, and raw signal threshold limit percent are all lists currentUserInput.rawSignalThresholdValue = parse.listCast(currentUserInput.rawSignalThresholdValue) currentUserInput.sensitivityThresholdValue = parse.listCast(currentUserInput.sensitivityThresholdValue) @@ -204,10 +204,10 @@ def parseUserInput(currentUserInput): if currentUserInput.TSC_List_Type == 'MultipleReferencePatterns': #If using multiple reference patterns then the user must input 1 value to use for each reference file or a value for each reference file #Then parallelize these variables to have the same length as number of reference patterns - currentUserInput.moleculesTSC_List = parse.parallelVectorize(currentUserInput.moleculesTSC_List,len(currentUserInput.referenceFileNamesList)) - currentUserInput.moleculeSignalTSC_List = parse.parallelVectorize(currentUserInput.moleculeSignalTSC_List,len(currentUserInput.referenceFileNamesList)) - currentUserInput.massNumberTSC_List = parse.parallelVectorize(currentUserInput.massNumberTSC_List,len(currentUserInput.referenceFileNamesList)) - currentUserInput.moleculeConcentrationTSC_List = parse.parallelVectorize(currentUserInput.moleculeConcentrationTSC_List,len(currentUserInput.referenceFileNamesList)) + currentUserInput.moleculesTSC_List = parse.parallelVectorize(currentUserInput.moleculesTSC_List,len(currentUserInput.referencePatternsFileNamesList)) + currentUserInput.moleculeSignalTSC_List = parse.parallelVectorize(currentUserInput.moleculeSignalTSC_List,len(currentUserInput.referencePatternsFileNamesList)) + currentUserInput.massNumberTSC_List = parse.parallelVectorize(currentUserInput.massNumberTSC_List,len(currentUserInput.referencePatternsFileNamesList)) + currentUserInput.moleculeConcentrationTSC_List = parse.parallelVectorize(currentUserInput.moleculeConcentrationTSC_List,len(currentUserInput.referencePatternsFileNamesList)) #NOTE: vectorizing these lists for 'SeparateMoleculesFactors' occurs in RatioFinder #Output Files @@ -248,10 +248,10 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t #TODO: Consider if G.iterativeAnalysis = True or False should be changed to G.IterativeAnalysis_On or something like that, but will break backwards compatibility unless special care is taken. #Also to consider if other variables should change to have names like G.specificMolecules_chosenMoleculesNames. Probably not necessary since we have the dictionaries. SettingsVDictionary = {} - SettingsVDictionary['referenceFileNamesList'] = UserChoices['inputFiles']['referenceFileNamesList'] - SettingsVDictionary['referenceFormsList'] = UserChoices['inputFiles']['referenceFormsList'] + SettingsVDictionary['referencePatternsFileNamesList'] = UserChoices['inputFiles']['referencePatternsFileNamesList'] + SettingsVDictionary['referencePatternsFormsList'] = UserChoices['inputFiles']['referencePatternsFormsList'] SettingsVDictionary['referencePatternTimeRanges'] = UserChoices['inputFiles']['referencePatternTimeRanges'] - SettingsVDictionary['collectedFileName'] = UserChoices['inputFiles']['collectedFileName'] + SettingsVDictionary['dataToAnalyzeFileName'] = UserChoices['inputFiles']['dataToAnalyzeFileName'] SettingsVDictionary['ionizationDataFileName'] = UserChoices['inputFiles']['ionizationDataFileName'] SettingsVDictionary['preProcessing'] = UserChoices['preProcessing']['on'] @@ -270,7 +270,7 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t SettingsVDictionary['iterationSuffix'] = UserChoices['iterativeAnalysis']['iterationSuffix'] SettingsVDictionary['unusedMolecules'] = UserChoices['iterativeAnalysis']['unusedMolecules'] SettingsVDictionary['oldReferenceFileName'] = UserChoices['iterativeAnalysis']['oldReferenceFileName'] - SettingsVDictionary['oldCollectedFileName'] = UserChoices['iterativeAnalysis']['oldCollectedFileName'] + SettingsVDictionary['oldDataToAnalyzeFileName'] = UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] SettingsVDictionary['nextRefFileName'] = UserChoices['iterativeAnalysis']['nextRefFileName'] SettingsVDictionary['nextExpFileName'] = UserChoices['iterativeAnalysis']['nextExpFileName'] SettingsVDictionary['iterationNumber'] = UserChoices['iterativeAnalysis']['iterationNumber'] @@ -312,12 +312,12 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t SettingsVDictionary['scaleRawDataOption'] = UserChoices['scaleRawDataYorN']['scaleRawDataOption'] SettingsVDictionary['scaleRawDataFactor'] = UserChoices['scaleRawDataYorN']['scaleRawDataFactor'] - SettingsVDictionary['measuredReferenceYorN'] = UserChoices['measuredReferenceYorN']['on'] - SettingsVDictionary['referenceFileExistingTuningAndForm'] = UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] - SettingsVDictionary['referenceFileDesiredTuningAndForm'] = UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] - SettingsVDictionary['referenceCorrectionCoefficients'] = UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] + SettingsVDictionary['tuningCorrection'] = UserChoices['tuningCorrection']['on'] + SettingsVDictionary['referenceFileExistingTuningAndForm'] = UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] + SettingsVDictionary['referenceFileDesiredTuningAndForm'] = UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] + SettingsVDictionary['referenceCorrectionCoefficients'] = UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] try: - SettingsVDictionary['referenceCorrectionCoefficients_cov'] = UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] + SettingsVDictionary['referenceCorrectionCoefficients_cov'] = UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] except: SettingsVDictionary['referenceCorrectionCoefficients_cov'] = [0,0,0] #TODO: This is to keep some old unit tests running. Ideally they should be fixed. SettingsVDictionary['extractReferencePatternFromDataOption'] = UserChoices['extractReferencePatternFromDataOption']['on'] @@ -325,9 +325,9 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t SettingsVDictionary['rpcTimeRanges'] = UserChoices['extractReferencePatternFromDataOption']['rpcTimeRanges'] SettingsVDictionary['rpcMoleculesToChangeMF'] = UserChoices['extractReferencePatternFromDataOption']['rpcMoleculesToChangeMF'] - SettingsVDictionary['minimalReferenceValue'] = UserChoices['minimalReferenceValue']['on'] - SettingsVDictionary['referenceValueThreshold'] = UserChoices['minimalReferenceValue']['referenceValueThreshold'] - SettingsVDictionary['referenceSignificantFragmentThresholds'] = UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] + SettingsVDictionary['applyReferenceMassFragmentsThresholds'] = UserChoices['applyReferenceMassFragmentsThresholds']['on'] + SettingsVDictionary['referenceMassFragmentFilterThreshold'] = UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] + SettingsVDictionary['referenceSignificantFragmentThresholds'] = UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] SettingsVDictionary['lowerBoundThresholdChooser'] = UserChoices['lowerBoundThresholdChooser']['on'] SettingsVDictionary['massesToLowerBoundThresholdFilter'] = UserChoices['lowerBoundThresholdChooser']['massesToLowerBoundThresholdFilter'] @@ -341,12 +341,12 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t SettingsVDictionary['dataSmootherHeadersToConfineTo'] = UserChoices['dataSmootherYorN']['dataSmootherHeadersToConfineTo'] SettingsVDictionary['polynomialOrder'] = UserChoices['dataSmootherYorN']['polynomialOrder'] - SettingsVDictionary['rawSignalThresholdMethod'] = UserChoices['rawSignalThresholdMethod']['on'] - SettingsVDictionary['rawSignalThresholdValue'] = UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] - SettingsVDictionary['sensitivityThresholdValue'] = UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] - SettingsVDictionary['rawSignalThresholdDivider'] = UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] - SettingsVDictionary['rawSignalThresholdLimit'] = UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] - SettingsVDictionary['rawSignalThresholdLimitPercent'] = UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] + SettingsVDictionary['applyRawSignalThresholds'] = UserChoices['applyRawSignalThresholds']['on'] + SettingsVDictionary['rawSignalThresholdValue'] = UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] + SettingsVDictionary['sensitivityThresholdValue'] = UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] + SettingsVDictionary['rawSignalThresholdDivider'] = UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] + SettingsVDictionary['rawSignalThresholdLimit'] = UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] + SettingsVDictionary['rawSignalThresholdLimitPercent'] = UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] SettingsVDictionary['calculateUncertaintiesInConcentrations'] = UserChoices['uncertainties']['calculateUncertaintiesInConcentrations'] SettingsVDictionary['referenceFileUncertainties'] = UserChoices['uncertainties']['referenceFileUncertainties'] diff --git a/ExampleReferenceExtraction/DefaultUserInput.py b/ExampleReferenceExtraction/DefaultUserInput.py index eba6ce6c..677273ca 100644 --- a/ExampleReferenceExtraction/DefaultUserInput.py +++ b/ExampleReferenceExtraction/DefaultUserInput.py @@ -13,10 +13,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -31,7 +31,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -150,17 +150,17 @@ #Note that 1 is the default and will make no alteration to the data #//Tuning Corrector - Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] =['ReferenceCollected.csv','xyyy'] -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] =['ReferenceLiterature.csv','xyyy'] -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] =['ReferenceCollected.csv','xyyy'] +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] =['ReferenceLiterature.csv','xyyy'] +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0. Used as.... Factor = A*X^2 + B*X + C, so A=0,B=0,C=1.0 means the final factor is 1.0 and independent of molecular weight. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. #//Reference Pattern Changer // (rpc) @@ -179,11 +179,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'no' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [6.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'no' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [6.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -211,18 +211,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -294,4 +294,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/ExampleReferenceExtraction/LogFile.txt b/ExampleReferenceExtraction/LogFile.txt index 56d6904f..45b96f9a 100644 --- a/ExampleReferenceExtraction/LogFile.txt +++ b/ExampleReferenceExtraction/LogFile.txt @@ -2,7 +2,7 @@ Thu May 21 20:37:44 2020 referenceFileName = ['ExistingReferencePatterns.csv'] form = ['xyyy'] -collectedFileName = Collected_Reference.csv +dataToAnalyzeFileName = Collected_Reference.csv linearBaselineCorrectionSemiAutomatic = yes selection = ['linear'] massesToBackgroundCorrect = [12.0 13.0 14.0 15.0 16.0 17.0 21.0 22.0 24.0 25.0 26.0 27.0 28.0 29.0 diff --git a/ExampleReferenceExtraction/MSRESOLVE.py b/ExampleReferenceExtraction/MSRESOLVE.py index 278ea901..d719b4d5 100644 --- a/ExampleReferenceExtraction/MSRESOLVE.py +++ b/ExampleReferenceExtraction/MSRESOLVE.py @@ -381,7 +381,7 @@ def ABCDetermination(ReferencePatternMeasuredFileNameAndForm, ReferencePatternLi ''' - if G.minimalReferenceValue !='yes': + if G.applyReferenceMassFragmentsThresholds !='yes': print("Warning: The ABCDetermination will occur without threshold filtering, since that setting is off.") #For simplicity, we will put the items into temporary items, then into dictionaries that we can then access. @@ -390,16 +390,16 @@ def ABCDetermination(ReferencePatternMeasuredFileNameAndForm, ReferencePatternLi ReferencePatternMeasuredDict['molecules']=molecules ReferencePatternMeasuredDict['provided_reference_patterns'] = provided_reference_patterns ReferencePatternMeasuredDict['provided_reference_patterns'] = StandardizeReferencePattern(ReferencePatternMeasuredDict['provided_reference_patterns'],len(molecules)) #this does have the molecular weight as the first column. - if G.minimalReferenceValue =='yes': - ReferencePatternMeasuredDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternMeasuredDict['provided_reference_patterns'],G.referenceValueThreshold) + if G.applyReferenceMassFragmentsThresholds =='yes': + ReferencePatternMeasuredDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternMeasuredDict['provided_reference_patterns'],G.referenceMassFragmentFilterThreshold) ReferencePatternLiteratureDict = {} [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form] = readReferenceFile(*ReferencePatternLiteratureFileNameAndForm) ReferencePatternLiteratureDict['molecules']=molecules ReferencePatternLiteratureDict['provided_reference_patterns'] = provided_reference_patterns ReferencePatternLiteratureDict['provided_reference_patterns'] = StandardizeReferencePattern(ReferencePatternLiteratureDict['provided_reference_patterns'],len(molecules)) #this does have the molecular weight as the first column. - if G.minimalReferenceValue =='yes': - ReferencePatternLiteratureDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternLiteratureDict['provided_reference_patterns'],G.referenceValueThreshold) + if G.applyReferenceMassFragmentsThresholds =='yes': + ReferencePatternLiteratureDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternLiteratureDict['provided_reference_patterns'],G.referenceMassFragmentFilterThreshold) ''' Step 3a: Truncate to the molecules which match. @@ -482,8 +482,8 @@ def ABCDetermination(ReferencePatternMeasuredFileNameAndForm, ReferencePatternLi #this function either creates or gets the three coefficients for the polynomial correction (Tuning Correction) and calculates #the correction factor for the relative intensities of each mass fragment, outputting a corrected set #of relative intensities -def TuningCorrector(referenceDataArrayWithAbscissa,referenceCorrectionCoefficients, referenceCorrectionCoefficients_cov, referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm,measuredReferenceYorN): - if measuredReferenceYorN =='yes': +def TuningCorrector(referenceDataArrayWithAbscissa,referenceCorrectionCoefficients, referenceCorrectionCoefficients_cov, referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm,tuningCorrection): + if tuningCorrection =='yes': abcCoefficients, abcCoefficients_cov = ABCDetermination(referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm) referenceCorrectionCoefficients[0],referenceCorrectionCoefficients[1],referenceCorrectionCoefficients[2]= abcCoefficients referenceCorrectionCoefficients_cov = abcCoefficients_cov @@ -512,17 +512,17 @@ def TuningCorrector(referenceDataArrayWithAbscissa,referenceCorrectionCoefficien #this function eliminates (neglects) reference intensities that are below a certain threshold. Useful for solving #data that is giving negatives or over emphasizing small mass fragments,by assuming no contribution from the molecule at that mass fragment. -def ReferenceThresholdFilter(referenceDataArrayWithAbscissa,referenceValueThreshold): +def ReferenceThresholdFilter(referenceDataArrayWithAbscissa,referenceMassFragmentFilterThreshold): referenceDataArray = referenceDataArrayWithAbscissa[:,1:] #all the data except the line of abscissa- mass fragment numbers for columncounter in range(len(referenceDataArray[0,:])):#goes through all columns in all rows in reference (this loop is one molecule at a time) for rowcounter in range(len(referenceDataArray[:,0])):#goes through all rows in references (one mass fragment at a time) - if len(referenceValueThreshold) == 1: #this is for if a single value was provided for referenceValueThreshold - if referenceDataArray[rowcounter,columncounter] < referenceValueThreshold[0]: + if len(referenceMassFragmentFilterThreshold) == 1: #this is for if a single value was provided for referenceMassFragmentFilterThreshold + if referenceDataArray[rowcounter,columncounter] < referenceMassFragmentFilterThreshold[0]: referenceDataArray[rowcounter,columncounter] = 0 #made to be equal to zero # (len(referenceDataArray[:,0])) #this is masses. # (len(referenceDataArray[0,:])) #this is molecules - else: #this is for if values of referenceValueThreshold were provided for each molecule. - if referenceDataArray[rowcounter,columncounter] < referenceValueThreshold[columncounter]: + else: #this is for if values of referenceMassFragmentFilterThreshold were provided for each molecule. + if referenceDataArray[rowcounter,columncounter] < referenceMassFragmentFilterThreshold[columncounter]: referenceDataArray[rowcounter,columncounter] = 0 #made to be equal to zero referenceDataArrayWithAbscissa[:,1:] = referenceDataArray #this puts changed referenceData back with mass fragment numbers return referenceDataArrayWithAbscissa @@ -1196,7 +1196,7 @@ def ReferenceInputPreProcessing(ReferenceData, verbose=True): ReferenceData.standardized_reference_patterns, ReferenceData.standardized_reference_patterns_tuning_uncertainties = TuningCorrector(ReferenceData.standardized_reference_patterns, G.referenceCorrectionCoefficients,G.referenceCorrectionCoefficients_cov, G.referenceFileDesiredTuningAndForm, G.referenceFileExistingTuningAndForm, - G.measuredReferenceYorN) + G.tuningCorrection) #Now check if uncertainties already exist, and if they do then the two uncertainties need to be combined. Else, made equal. try: ReferenceData.absolute_standard_uncertainties = (ReferenceData.absolute_standard_uncertainties**2 + ReferenceData.standardized_reference_patterns_tuning_uncertainties**2)**0.5 @@ -1228,10 +1228,10 @@ def ReferenceInputPreProcessing(ReferenceData, verbose=True): #TODO: the minimal reference value can cause inaccuracies if interpolating between multiple reference patterns if one pattern has a value rounded to 0 and the other does not #TODO: option 1: this issue can be fixed by moving this to after interpolation #TODO: option 2: Or we can below assign to preprocessed_reference_pattern rather than standardized_reference_patterns and then use that in data analysis (Note that interpolate would continue to use standardized_reference_patterns as well as preprocess the output) - if G.minimalReferenceValue == 'yes': + if G.applyReferenceMassFragmentsThresholds == 'yes': if G.implicitSLScorrection == True: #This feature requires us to have unfiltered reference patterns to do an implicit/recursive correction at the end. G.currentReferenceDataUnfiltered = copy.deepcopy(ReferenceData) #Make a copy before any filtering occurs. There is an implied return in global variable. - ReferenceData.standardized_reference_patterns = ReferenceThresholdFilter(ReferenceData.standardized_reference_patterns,G.referenceValueThreshold) + ReferenceData.standardized_reference_patterns = ReferenceThresholdFilter(ReferenceData.standardized_reference_patterns,G.referenceMassFragmentFilterThreshold) ReferenceData.ExportCollector('ReferenceThresholdFilter') #As the program is currently written, this function is called to act upon already threshold filtered standardized reference patterns which could cause innaccuracy. @@ -1248,22 +1248,22 @@ def ReferenceInputPreProcessing(ReferenceData, verbose=True): return ReferenceData ''' -GenerateReferenceDataAndFormsList takes in the list of referenceFileNamesList and the +GenerateReferenceDataAndFormsList takes in the list of referencePatternsFileNamesList and the list of forms. A list is generated containing MSReference objects created based on the referenceFileName and the corresponding form It allows MSRESOLVE to be backwards compatible with previous user input files ''' -def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_ObjectsDict={}): - #referenceFormsList can take values of 'xyyy' or 'xyxy' and must be a string - ##If referenceFileNamesList is a string or if form is a string then make them lists - if isinstance(referenceFileNamesList,str): - referenceFileNamesList = [referenceFileNamesList] - if isinstance(referenceFormsList,str): - referenceFormsList = [referenceFormsList] - #If referenceFileNamesList and forms are lists of 1 then create a list of the single MSReference object +def GenerateReferenceDataList(referencePatternsFileNamesList,referencePatternsFormsList,AllMID_ObjectsDict={}): + #referencePatternsFormsList can take values of 'xyyy' or 'xyxy' and must be a string + ##If referencePatternsFileNamesList is a string or if form is a string then make them lists + if isinstance(referencePatternsFileNamesList,str): + referencePatternsFileNamesList = [referencePatternsFileNamesList] + if isinstance(referencePatternsFormsList,str): + referencePatternsFormsList = [referencePatternsFormsList] + #If referencePatternsFileNamesList and forms are lists of 1 then create a list of the single MSReference object #This allows MSRESOLVE to be backwards compatible with previous user input files while still incorporating the reference pattern time chooser feature - if len(referenceFormsList) == 1 and len(referenceFileNamesList) == 1: - [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referenceFileNamesList[0],referenceFormsList[0]) + if len(referencePatternsFormsList) == 1 and len(referencePatternsFileNamesList) == 1: + [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referencePatternsFileNamesList[0],referencePatternsFormsList[0]) ReferenceDataList = [MSReference(provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName=referenceFileName, form=form, AllMID_ObjectsDict=AllMID_ObjectsDict)] #save each global variable into the class objects ReferenceDataList[0].ExportAtEachStep = G.ExportAtEachStep @@ -1284,29 +1284,29 @@ def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_O ReferenceDataList[0].absolute_standard_uncertainties = absolute_standard_uncertainties #We can't convert to relative uncertainties yet because the file may not be standardized yet. if type(G.referenceFileUncertainties) == type('string'): - provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referenceFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referenceFormsList[0]) + provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referencePatternsFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referencePatternsFormsList[0]) ReferenceDataList[0].absolute_standard_uncertainties = provided_reference_patterns_absolute_uncertainties #Just initializing the variable before filling it properly. maximum_absolute_intensities = numpy.amax(ReferenceDataList[0].provided_reference_patterns[:,1:], axis = 0) #Find the maximum intensity for each molecule. ReferenceDataList[0].absolute_standard_uncertainties[:,1:] = 100*ReferenceDataList[0].absolute_standard_uncertainties[:,1:]/maximum_absolute_intensities #TODO: low priority, remove nan values and/or populate them with zero using numpy divide. return ReferenceDataList #Otherwise we have multiple reference files and forms - #If just one form is used, make a list of forms that is the same length as referenceFileNamesList - if len(referenceFormsList) == 1: - #Generate a copy of referenceFileNamesList to be overwritten with forms - listOfForms = copy.copy(referenceFileNamesList) + #If just one form is used, make a list of forms that is the same length as referencePatternsFileNamesList + if len(referencePatternsFormsList) == 1: + #Generate a copy of referencePatternsFileNamesList to be overwritten with forms + listOfForms = copy.copy(referencePatternsFileNamesList) #replace each value with the given form - for i in range(len(referenceFileNamesList)): - listOfForms[i] = referenceFormsList[0] - #If list of forms is the same length of referenceFileNamesList then each form should correspond to the referenceFile of the same index - elif len(referenceFormsList) == len(referenceFileNamesList): + for i in range(len(referencePatternsFileNamesList)): + listOfForms[i] = referencePatternsFormsList[0] + #If list of forms is the same length of referencePatternsFileNamesList then each form should correspond to the referenceFile of the same index + elif len(referencePatternsFormsList) == len(referencePatternsFileNamesList): #So just set listOfForms equal to forms - listOfForms = referenceFormsList + listOfForms = referencePatternsFormsList #Initialize ReferenceDataList so it can be appended to ReferenceDataList = [] #For loop to generate each MSReferenceObject and append it to a list - for i in range(len(referenceFileNamesList)): - [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referenceFileNamesList[i],listOfForms[i]) + for i in range(len(referencePatternsFileNamesList)): + [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referencePatternsFileNamesList[i],listOfForms[i]) ReferenceDataList.append(MSReference(provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName=referenceFileName, form=form, AllMID_ObjectsDict=AllMID_ObjectsDict)) #save each global variable into the class objects ReferenceDataList[i].ExportAtEachStep = G.ExportAtEachStep @@ -1327,7 +1327,7 @@ def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_O ReferenceDataList[i].absolute_standard_uncertainties = absolute_standard_uncertainties #We can't convert to relative uncertainties yet because the file may not be standardized yet. if type(G.referenceFileUncertainties) == type('string'): - provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referenceFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referenceFormsList[i]) + provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referencePatternsFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referencePatternsFormsList[i]) ReferenceDataList[i].absolute_standard_uncertainties = provided_reference_patterns_absolute_uncertainties #Just initializing the variable before filling it properly. maximum_absolute_intensities = numpy.amax(ReferenceDataList[i].provided_reference_patterns[:,1:], axis = 0) #Find the maximum intensity for each molecule. ReferenceDataList[i].absolute_standard_uncertainties[:,1:] = ReferenceDataList[i].absolute_standard_uncertainties[:,1:]/maximum_absolute_intensities @@ -1658,50 +1658,50 @@ def IterativeDirectoryChange(iterativeAnalysis, iterationNumber): os.chdir(iterationDirectoryName) #this will be changed back at the end of the program def IterationDirectoryPreparation(iterativeAnalysis, iterationNumber): - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterativeDirectoryChange(iterativeAnalysis, iterationNumber) #naming for collected file #record the old file names - G.oldcollectedFileName = G.collectedFileName + G.oldDataToAnalyzeFileName = G.dataToAnalyzeFileName #construct the file names for the current run of the program #TODO FIXME, This syntax with -21 will not allow iterative to be compatible with more than 9 iterations - collectedFileNameTemp = str(G.collectedFileName)[:-21] + str(G.iterationSuffix) + str(G.collectedFileName)[-4:] + dataToAnalyzeFileNameTemp = str(G.dataToAnalyzeFileName)[:-21] + str(G.iterationSuffix) + str(G.dataToAnalyzeFileName)[-4:] #copy the experimental and reference files into new names for this iterative run - shutil.copy(G.collectedFileName, collectedFileNameTemp) + shutil.copy(G.dataToAnalyzeFileName, dataToAnalyzeFileNameTemp) #change the globals to reflect the renaming of the ref and exp files - G.collectedFileName = collectedFileNameTemp + G.dataToAnalyzeFileName = dataToAnalyzeFileNameTemp #construct file names for the next run of the program #TODO FIXME, This syntax with -11 will not allow iterative to be compatible with more than 9 iterations - G.nextExpFileName = G.collectedFileName[:-11] + str('_remaining') + G.collectedFileName[-11:] + G.nextExpFileName = G.dataToAnalyzeFileName[:-11] + str('_remaining') + G.dataToAnalyzeFileName[-11:] #naming for reference files G.oldReferenceFileName = [] G.nextRefFileName = [] - for RefIndex, RefName in enumerate(G.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.referencePatternsFileNamesList): #a list #record the old file names G.oldReferenceFileName.append(RefName) #construct the file names for the current run of the program #TODO FIXME, This syntax with -18 will not allow iterative to be compatible with more than 9 iterations - referenceFileNameTemp = G.referenceFileNamesList[RefIndex][:-18] + str(G.iterationSuffix) + G.referenceFileNamesList[RefIndex][-4:] + referenceFileNameTemp = G.referencePatternsFileNamesList[RefIndex][:-18] + str(G.iterationSuffix) + G.referencePatternsFileNamesList[RefIndex][-4:] #copy the experimental and reference files into new names for this iterative run shutil.copy(RefName, referenceFileNameTemp) #change the globals to reflect the renaming of the ref and exp files - G.referenceFileNamesList[RefIndex] = referenceFileNameTemp + G.referencePatternsFileNamesList[RefIndex] = referenceFileNameTemp #construct file names for the next run of the program #TODO FIXME, This syntax with -18 will not allow iterative to be compatible with more than 9 iterations G.nextRefFileName.append(RefName[:-18] + '_unused_iter_%s' %G.iterationNumber + RefName[-4:]) return None - #implied returns: G.oldReferenceFileName, G.oldcollectedFileName, G.referenceFileNamesList,G.collectedFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber + #implied returns: G.oldReferenceFileName, G.oldDataToAnalyzeFileName, G.referencePatternsFileNamesList,G.dataToAnalyzeFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber def IterationFirstDirectoryPreparation(iterativeAnalysis,iterationNumber): - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName #this global value is set so that each export statement can label the output files correctly G.iterationNumber = iterationNumber @@ -1720,27 +1720,27 @@ def IterationFirstDirectoryPreparation(iterativeAnalysis,iterationNumber): AppendListToFile("__var_list__", G.__var_list__, "UserInput_iter_1.py", float('Inf')) #record the old file names - G.oldcollectedFileName = G.collectedFileName + G.oldDataToAnalyzeFileName = G.dataToAnalyzeFileName #construct the file names for the first run of the program - G.collectedFileName = G.collectedFileName[:-4] + str(G.iterationSuffix) + G.collectedFileName[-4:] + G.dataToAnalyzeFileName = G.dataToAnalyzeFileName[:-4] + str(G.iterationSuffix) + G.dataToAnalyzeFileName[-4:] #construct file names for the second run of the program #TODO FIXME, This syntax with -11 will not allow iterative to be compatible with more than 9 iterations - G.nextExpFileName = G.collectedFileName[:-11] + '_remaining_iter_1' + G.collectedFileName[-4:] + G.nextExpFileName = G.dataToAnalyzeFileName[:-11] + '_remaining_iter_1' + G.dataToAnalyzeFileName[-4:] G.oldReferenceFileName = [] - for RefIndex, RefName in enumerate(G.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.referencePatternsFileNamesList): #a list G.oldReferenceFileName.append(RefName) #construct the file names for the first run of the program - G.referenceFileNamesList[RefIndex] = G.referenceFileNamesList[RefIndex][:-4] + str(G.iterationSuffix) + G.referenceFileNamesList[RefIndex][-4:] + G.referencePatternsFileNamesList[RefIndex] = G.referencePatternsFileNamesList[RefIndex][:-4] + str(G.iterationSuffix) + G.referencePatternsFileNamesList[RefIndex][-4:] #construct file names for the second run of the program G.nextRefFileName.append(RefName[:-4] + '_unused_iter_1' + RefName[-4:]) return None - #implied returns: G.oldReferenceFileName, G.oldcollectedFileName, G.referenceFileNamesList,G.collectedFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber + #implied returns: G.oldReferenceFileName, G.oldDataToAnalyzeFileName, G.referencePatternsFileNamesList,G.dataToAnalyzeFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber #The IterativeAnalysisDirectory and Variable Population function is used to shrink the size of the program analysis and redirect the output. def IADirandVarPopulation(iterativeAnalysis, chosenMassFragments, chosenMolecules, ExperimentData, ExperimentDataFullCopy, ReferenceDataList, ReferenceDataListFullCopy): - #implied arguments: G.dataSimulation, G.referenceFileNamesList, G.collectedFileName, G.nextRefFileName, G.oldReferenceFileName, G.chosenMoleculesNames, G.iterationNumber + #implied arguments: G.dataSimulation, G.referencePatternsFileNamesList, G.dataToAnalyzeFileName, G.nextRefFileName, G.oldReferenceFileName, G.chosenMoleculesNames, G.iterationNumber #override data simulation to yes if it was not selected if G.dataSimulation != 'yes': print("Iterative analysis cannot find the remaining signals in the experiment without signal simulation being run.") @@ -1770,11 +1770,11 @@ def IADirandVarPopulation(iterativeAnalysis, chosenMassFragments, chosenMolecule for RefObjectIndex, RefObject in enumerate(ReferenceDataList): #a list #Export current Reference Data #Reference data is trimmed prior to this function - ExportXYYYData(G.referenceFileNamesList[RefObjectIndex], RefObject.provided_reference_patterns, RefObject.molecules, abscissaHeader = 'M/Z') + ExportXYYYData(G.referencePatternsFileNamesList[RefObjectIndex], RefObject.provided_reference_patterns, RefObject.molecules, abscissaHeader = 'M/Z') #Export current Experimental Data #Experimental data is trimmed prior to this function, but it still needs to be exported - ExportXYYYData(G.collectedFileName, ExperimentData.workingData, ExperimentData.mass_fragment_numbers, + ExportXYYYData(G.dataToAnalyzeFileName, ExperimentData.workingData, ExperimentData.mass_fragment_numbers, abscissaHeader = ExperimentData.abscissaHeader, dataType = 'preProcessed', rowIndex = ExperimentData.times) for RefObjectIndex, RefObject in enumerate(ReferenceDataList): #a list @@ -1875,8 +1875,8 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): G.nextUserInputModule.__var_list__ = G.__var_list__ #save the new file name for the next user input file - G.nextUserInputModule.collectedFileName = G.nextExpFileName - G.nextUserInputModule.referenceFileNamesList = G.nextRefFileName + G.nextUserInputModule.dataToAnalyzeFileName = G.nextExpFileName + G.nextUserInputModule.referencePatternsFileNamesList = G.nextRefFileName #updating the selected molecules for the next user input file G.nextUserInputModule.chosenMoleculesNames = G.unusedMolecules #Updating the selected masses for the next user input file @@ -1897,7 +1897,7 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): G.nextUserInputModule.scaleRawDataFactor = G.scaleRawDataFactor #Now going to overwrite parallelized variables with their original versions if they were set to length of chosen molecules. - delimitedStringOfVariablesToUnparallelize = 'moleculeLikelihoods, sensitivityValues, referenceValueThreshold, referenceSignificantFragmentThresholds' + delimitedStringOfVariablesToUnparallelize = 'moleculeLikelihoods, sensitivityValues, referenceMassFragmentFilterThreshold, referenceSignificantFragmentThresholds' listOfVariablesToUnparallelize = delimitedStringOfVariablesToUnparallelize.split(", ") #Note that we are using ", " as the delimeter, not just "," for variable in listOfVariablesToUnparallelize: G.nextUserInputModule.__dict__[variable]=G.beforeParsedGDict[variable] @@ -1914,14 +1914,14 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): #copy the experimental signals to the next iteration copyFromPath = os.path.join(os.curdir, os.pardir, str(iterationDirectoryName), - str(G.nextUserInputModule.collectedFileName)) + str(G.nextUserInputModule.dataToAnalyzeFileName)) shutil.copy(copyFromPath, os.getcwd()) - for RefIndex, RefName in enumerate(G.nextUserInputModule.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.nextUserInputModule.referencePatternsFileNamesList): #a list #copy the next reference file from the previous iteration folder to the next iteration folder copyFromPath = os.path.join(os.curdir, os.pardir, str(iterationDirectoryName), - str(G.nextUserInputModule.referenceFileNamesList[RefIndex])) + str(G.nextUserInputModule.referencePatternsFileNamesList[RefIndex])) shutil.copy(copyFromPath, os.getcwd()) #returning to the parent directory os.chdir('..') @@ -1949,17 +1949,17 @@ def IterativeAnalysisPostProcessing(ExperimentData, simulateddata, mass_fragment exportSimulatedSignalsSoFar(G.simulatedSignalsOutputName,iterationDirectoryName,G.iterationNumber) #subtract 1 from the iteration number since the iteration number has already been changed IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy) return None - #implied returns: G.referenceFileNamesList, G.collectedFileName, G.nextRefFileName, G.chosenMoleculesNames, G.iterationSuffix + #implied returns: G.referencePatternsFileNamesList, G.dataToAnalyzeFileName, G.nextRefFileName, G.chosenMoleculesNames, G.iterationSuffix ############################################################################### ######################### Functions to read data files ####################### ############################################################################### #These functions read in the experimental data file and the reference file. The #returned variables can then be used to initialize the respective classes. -def readDataFile(collectedFileName): +def readDataFile(dataToAnalyzeFileName): #read the csv file into a dataframe. dataFrame means "dataframe" and is a pandas object. - dataFrame = pandas.read_csv('%s' %collectedFileName, header=None) + dataFrame = pandas.read_csv('%s' %dataToAnalyzeFileName, header=None) ''' generate mass fragment list''' #select only the 2nd row down, all columns except for the first. #"iloc" is a pandas dataframe function. All it does is select a portion of the data. @@ -2003,7 +2003,7 @@ def readDataFile(collectedFileName): rawCollectedData = numpy.vstack((rawCollectedData,rawCollectedData)) - return mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName + return mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName #readReferenceFile is a helper function that reads the reference file in a certain form and returns the #variables and data that are used to initialize the class. It can read files both in XYYY and XYXY form. @@ -2267,10 +2267,10 @@ def getMoleculesFromReferenceData(ReferenceFileName): ''' getMassFragmentsFromCollectedData is a function that takes in the collected filename and returns the mass fragments present in the data ''' -def getMassFragmentsFromCollectedData(CollectedFileName): +def getMassFragmentsFromCollectedData(dataToAnalyzeFileName): #Read the csv file #TODO CHange to use numpy.gen_from_text instead of pandas - DataInfo = pandas.read_csv(CollectedFileName,header=0) + DataInfo = pandas.read_csv(dataToAnalyzeFileName,header=0) #Convert the data into an array DataInfoArray = numpy.array(DataInfo) #Get the names of mass fragments in collected data @@ -2340,9 +2340,9 @@ class MSData (object): #self.mass_fragment_numbers , 1D and must be integers #self.rawCollectedData, a 2D array of the signals. - def __init__(self, mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName=None): + def __init__(self, mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName=None): - self.mass_fragment_numbers, self.abscissaHeader, self.times, self.rawCollectedData, self.collectedFileName=mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName + self.mass_fragment_numbers, self.abscissaHeader, self.times, self.rawCollectedData, self.dataToAnalyzeFileName=mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName #class object variable created to allow class to be used separately from the program. self.ExportAtEachStep = '' @@ -2654,7 +2654,7 @@ def CombinationMaker(reciprocal_matching_correction_values,rawsignalsarrayline,m if combinations == []:#This function will not work without enough mass fragments, so the user must know the problem print('****************************************') print('Not enough matching mass fragments input') - print("This means that at some point in the analysis, there were not enough masses in the reference file to apply the inverse method. It could mean you have too many overlapping masses for the molecules you are trying to resolve. You can get around this by using the '#//Reference Mass Fragmentation Threshold//' feature to exclude tiny fragementation peaks. This would be done by setting the value to 'yes' for minimalReferenceValue feature with referenceValueThreshold, such as referenceValueThreshold = 5.0 . Alternatively, to be more targeted, if you know *which* fragmentation patterns could be overlapping, you could set those minor fragments to 0 in your reference pattern csv file. TODO: Print out the relevant masses here. This requires keeping track of when they are selected prior to combination maker, and possibly passing them as an additional argument.") + print("This means that at some point in the analysis, there were not enough masses in the reference file to apply the inverse method. It could mean you have too many overlapping masses for the molecules you are trying to resolve. You can get around this by using the '#//Reference Mass Fragmentation Threshold//' feature to exclude tiny fragementation peaks. This would be done by setting the value to 'yes' for applyReferenceMassFragmentsThresholds feature with referenceMassFragmentFilterThreshold, such as referenceMassFragmentFilterThreshold = 5.0 . Alternatively, to be more targeted, if you know *which* fragmentation patterns could be overlapping, you could set those minor fragments to 0 in your reference pattern csv file. TODO: Print out the relevant masses here. This requires keeping track of when they are selected prior to combination maker, and possibly passing them as an additional argument.") print('****************************************') combinations_len = len(combinations) correctionarray = numpy.zeros([1,num_molecules]) @@ -2917,7 +2917,7 @@ def InverseMethodDistinguished(monitored_reference_intensities,reciprocal_matchi try: numpy.linalg.det(reciprocal_matching_correction_values) except: - print("There is an error in a matrix operation evaluation: The number of feasible mass fragments to check is probably less than the number of molecules. This can happen if referenceValueThreshold is too strict, leaving not enough feasible fargments to consider. The program is probably about to crash.") + print("There is an error in a matrix operation evaluation: The number of feasible mass fragments to check is probably less than the number of molecules. This can happen if referenceMassFragmentFilterThreshold is too strict, leaving not enough feasible fargments to consider. The program is probably about to crash.") if numpy.linalg.det(reciprocal_matching_correction_values) != 0:#only solves if determinant is not equal to zero #Now we will solve with the inverse way, and also for uncertainties if that module is present. #The uncertainties module works well for matrix inverse, but not for dot product. So we make a custom function. @@ -3449,7 +3449,7 @@ def SLSUniqueFragments(molecules,monitored_reference_intensities,reciprocal_matc chosenMolecule = None tuplesOfUniqueFragmentsList = [] - if G.minimalReferenceValue == "yes": #We only will do some filtering things if it's requested. + if G.applyReferenceMassFragmentsThresholds == "yes": #We only will do some filtering things if it's requested. #Before going forward, we're going to make a variable called remaining_referenceSignificantFragmentThresholds, using a function. def get_remaining_referenceSignificantFragmentThresholds(referenceSignificantFragmentThresholds, molecules_unedited, remaining_molecules_SLS): remaining_referenceSignificantFragmentThresholds = list(copy.deepcopy(referenceSignificantFragmentThresholds)) @@ -3489,12 +3489,12 @@ def get_remaining_referenceSignificantFragmentThresholds(referenceSignificantFra #consideredMolecule = remaining_molecules_SLS[moleculeIndexOfUniqueIntensity] #This is for debugging purposes, this can be printed. #For debugging, also print remaining_reference_intensities_SLS and massFragmentIndex_i. #However, now we have a few lines of code to check if we are above the referenceSignificantFragmentThresholds. - if G.minimalReferenceValue == "yes": #We only check for the remaining_referenceSignificantFragmentThresholds if this option has been chosen. + if G.applyReferenceMassFragmentsThresholds == "yes": #We only check for the remaining_referenceSignificantFragmentThresholds if this option has been chosen. if (max(remaining_reference_intensities_SLS[massFragmentIndex_i]) < remaining_referenceSignificantFragmentThresholds[moleculeIndexOfUniqueIntensity]): #This allows separate referenceSignificantFragmentThresholds for each molecule. significantFragment = False #Set to false if the fragment is too small. else: significantFragment = True #This means the fragment is greater than or equal to the threshold for significance. - if G.minimalReferenceValue != "yes": #if the option is not selected, then all fragments are considered significant. + if G.applyReferenceMassFragmentsThresholds != "yes": #if the option is not selected, then all fragments are considered significant. significantFragment = True if significantFragment == True: #now make a tuple with the unique standardized intensity in the front so we can sort by that @@ -4125,7 +4125,7 @@ def SLSMethod(molecules,monitored_reference_intensities,reciprocal_matching_corr except: pass except IndexError: - print("Warning: SLS could not solve this problem. If you are already using SLS Common, you can try raising the referenceValueThreshold within the feature Reference Mass Fragmentation Threshold. Alternatively, you can try using inverse.") + print("Warning: SLS could not solve this problem. If you are already using SLS Common, you can try raising the referenceMassFragmentFilterThreshold within the feature Reference Mass Fragmentation Threshold. Alternatively, you can try using inverse.") solutions = numpy.array([None]) #This is just creating a numpy array with an element that has a None object, so that the main function can know that SLSMethod failed. if len(uncertainties_dict) > 0: #Note: the indexing in the solutions must match the original indexing, or errors will occur. Now we take the "filled up" solutions and put everything together. uncertainties_dict['concentrations_relative_uncertainties_one_time'] = uncertainties_dict['concentrations_relative_uncertainties_one_time_after_finisher'].transpose()*1.0 @@ -4169,7 +4169,7 @@ def RawSignalThresholdFilter (distinguished,reciprocal_matching_correction_value monitored_reference_intensities_copy = monitored_reference_intensities rawsignalsarray_copy = remaining_rawsignals_SLS summation = sum(rawsignalsarray_copy) - [rawSignalThresholdMethod,rawSignalThresholdValue,sensitivityThresholdValue,rawSignalThresholdDivider,rawSignalThresholdLimit,rawSignalThresholdLimitPercent] = ThresholdList + [applyRawSignalThresholds,rawSignalThresholdValue,sensitivityThresholdValue,rawSignalThresholdDivider,rawSignalThresholdLimit,rawSignalThresholdLimitPercent] = ThresholdList #this section of the code enables the function to eliminate from the raw signal array (for the purpose of this function only) #the highest value in the array, if it makes up over 90 percent of the raw signals present. This is useful because if one of #the signals does become this great then it will eliminate all the other signals present when it becomes very high @@ -4375,7 +4375,7 @@ def subtract_simulated_signals_of_specific_molecules(moleculeIndicesToSubtract, -#This function is intended to add back any concentration / intensity that was removed or distorted by reference fragmentation pattern high pass filtering (which is UserChoices['minimalReferenceValue']['referenceValueThreshold']). It also adds half of the difference to the uncertainties. As of 5/17/20, only a single recursion iteration is performed. +#This function is intended to add back any concentration / intensity that was removed or distorted by reference fragmentation pattern high pass filtering (which is UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold']). It also adds half of the difference to the uncertainties. As of 5/17/20, only a single recursion iteration is performed. #The corrections are performed from largest to smallest (in percentage), with only one molecule's correction per sls mass. That is, the effect of molecule A's filtering on molecule B's concentration, for example. A molecule can be its largest self correction (A to A). Each molecule is corrected in kind, so serial (stacked) correction is among the possibilities that can occur. #TODO: May 17 2020. Right now, we only take the LARGEST correction for each sls when deciding which sls mass to correct, then we apply that correction. But maybe we should take a single recursion of all molecules affecting? Then apply all molecules to that sls mass before moving to the next one? This would still be a single recursion, but would matter if (for example) a single molecule's sls was able to occur due to filtering out 20 other molecule's contributions at that mass. class referenceThresholdFilterCorrectingSandbox(): @@ -4937,9 +4937,9 @@ def PopulateLogFile(): filename6 = 'LogFile.txt' #the log file is printed here f6 = open(filename6,'a') f6.write('\n') - f6.write('referenceFileName = %s \n'%(G.referenceFileNamesList)) - f6.write('form = %s \n'%(G.referenceFormsList)) - f6.write('collectedFileName = %s \n'%(G.collectedFileName )) + f6.write('referenceFileName = %s \n'%(G.referencePatternsFileNamesList)) + f6.write('form = %s \n'%(G.referencePatternsFormsList)) + f6.write('dataToAnalyzeFileName = %s \n'%(G.dataToAnalyzeFileName )) if G.timeRangeLimit == 'yes':#some of the lines in the backgroundinput file don't need to be printed unless a selection is made, so the if statements here make that happen f6.write('timeRangeLimit = %s \n'%(G.timeRangeLimit)) f6.write('timeRangeStart = %s \n'%(G.timeRangeStart)) @@ -4948,8 +4948,8 @@ def PopulateLogFile(): f6.write('backgroundMassFragment = %s \n'%(G.backgroundMassFragment)) f6.write('backgroundSlopes = %s \n'%(G.backgroundSlopes)) f6.write('backgroundIntercepts = %s \n'%(G.backgroundIntercepts)) - if G.measuredReferenceYorN == 'yes': - f6.write('measuredReferenceYorN = %s \n'%G.measuredReferenceYorN) + if G.tuningCorrection == 'yes': + f6.write('tuningCorrection = %s \n'%G.tuningCorrection) f6.write('referenceCorrectionCoefficientA = %s \n'%(G.referenceCorrectionCoefficients[0])) f6.write('referenceCorrectionCoefficientB = %s \n'%(G.referenceCorrectionCoefficients[1])) f6.write('referenceCorrectionCoefficientC = %s \n'%(G.referenceCorrectionCoefficients[2])) @@ -4992,9 +4992,9 @@ def PopulateLogFile(): f6.write('rpcMoleculesToChange = %s \n'%(G.rpcMoleculesToChange)) f6.write('rpcMoleculesToChangeMF = %s \n'%(G.rpcMoleculesToChangeMF)) f6.write('rpcTimeRanges = %s \n'%(G.rpcTimeRanges)) - if G.minimalReferenceValue == 'yes': - f6.write('minimalReferenceValue = %s \n'%(G.minimalReferenceValue)) - f6.write('referenceValueThreshold = %s \n'%(G.referenceValueThreshold)) + if G.applyReferenceMassFragmentsThresholds == 'yes': + f6.write('applyReferenceMassFragmentsThresholds = %s \n'%(G.applyReferenceMassFragmentsThresholds)) + f6.write('referenceMassFragmentFilterThreshold = %s \n'%(G.referenceMassFragmentFilterThreshold)) f6.write('referenceSignificantFragmentThresholds = %s \n'%(G.referenceSignificantFragmentThresholds)) if G.lowerBoundThresholdChooser == 'yes': f6.write('lowerBoundThresholdChooser = %s \n'%(G.lowerBoundThresholdChooser)) @@ -5007,8 +5007,8 @@ def PopulateLogFile(): f6.write('dataSmootherTimeRadius = %s \n'%(G.dataSmootherTimeRadius)) f6.write('dataSmootherPointRadius = %s \n'%(G.dataSmootherPointRadius)) f6.write('dataSmootherHeadersToConfineTo = %s \n'%(G.dataSmootherHeadersToConfineTo)) - if G.rawSignalThresholdMethod == 'yes': - f6.write('rawSignalThresholdMethod = %s \n'%(G.rawSignalThresholdMethod)) + if G.applyRawSignalThresholds == 'yes': + f6.write('applyRawSignalThresholds = %s \n'%(G.applyRawSignalThresholds)) f6.write('rawSignalThresholdValue = %s \n'%(G.rawSignalThresholdValue)) f6.write('sensitivityThresholdValue = %s \n'%(G.sensitivityThresholdValue)) f6.write('rawSignalThresholdDivider = %s \n'%(G.rawSignalThresholdDivider)) @@ -5104,35 +5104,35 @@ def main(): #if this is not the first iterative run, then the required files are all stored in the highest iteration directory if G.iterativeAnalysis and G.iterationNumber != 1: - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterationDirectoryPreparation(G.iterativeAnalysis, G.iterationNumber) #This function also changes the working directory #Save an MSReference object containing all molecules and an MSData object containing all mass fragments if G.iterativeAnalysis and G.iterationNumber != 1: #If using iterative and not on the first iteration we will need to remove _iter_x from the file names - AllMoleculesReferenceFileNamesList = [] #Initialize AllMoleculesReferenceDataList as an empty list - for referenceFileNameIndex in range(len(G.referenceFileNamesList)): #Loop through the reference file names list - AllMoleculesReferenceFileName = remove_iter_fromFileName(G.referenceFileNamesList[referenceFileNameIndex]) #Remove the _iter_ from the name so the program has the original filename to access from the parent directory + AllMoleculesreferencePatternsFileNamesList = [] #Initialize AllMoleculesReferenceDataList as an empty list + for referenceFileNameIndex in range(len(G.referencePatternsFileNamesList)): #Loop through the reference file names list + AllMoleculesReferenceFileName = remove_iter_fromFileName(G.referencePatternsFileNamesList[referenceFileNameIndex]) #Remove the _iter_ from the name so the program has the original filename to access from the parent directory AllMoleculesReferenceDataFilePath = os.path.normpath(os.path.join(os.curdir, os.pardir,AllMoleculesReferenceFileName)) #This function will get the path of the reference file from the parent directory - AllMoleculesReferenceFileNamesList.append(AllMoleculesReferenceDataFilePath) #Append the path to the list and the program will read the reference file from the path name - AllMassFragmentsExperimentDataFileName = remove_iter_fromFileName(G.collectedFileName) #Remove _iter_ from the data filename so the program has the original filename to access from the parent directory + AllMoleculesreferencePatternsFileNamesList.append(AllMoleculesReferenceDataFilePath) #Append the path to the list and the program will read the reference file from the path name + AllMassFragmentsExperimentDataFileName = remove_iter_fromFileName(G.dataToAnalyzeFileName) #Remove _iter_ from the data filename so the program has the original filename to access from the parent directory AllMassFragmentsExperimentDataFileNamePath = os.path.normpath(os.path.join(os.curdir, os.pardir, AllMassFragmentsExperimentDataFileName)) #This function will get the path of the data file from the parent directory else: #Otherwise not running iterative or in the first iteration, just copy the filename - AllMoleculesReferenceFileNamesList = copy.copy(G.referenceFileNamesList) - AllMassFragmentsExperimentDataFileNamePath = copy.copy(G.collectedFileName) + AllMoleculesreferencePatternsFileNamesList = copy.copy(G.referencePatternsFileNamesList) + AllMassFragmentsExperimentDataFileNamePath = copy.copy(G.dataToAnalyzeFileName) #Create the MSReference and MSData objects containing all molecules and all mass fragments, respectively - [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_collectedFileName]=readDataFile(AllMassFragmentsExperimentDataFileNamePath) - AllMassFragmentsExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, collectedFileName=exp_collectedFileName) - AllMoleculesReferenceDataList = GenerateReferenceDataList(AllMoleculesReferenceFileNamesList,G.referenceFormsList,G.AllMID_ObjectsDict) + [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_dataToAnalyzeFileName]=readDataFile(AllMassFragmentsExperimentDataFileNamePath) + AllMassFragmentsExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, dataToAnalyzeFileName=exp_dataToAnalyzeFileName) + AllMoleculesReferenceDataList = GenerateReferenceDataList(AllMoleculesreferencePatternsFileNamesList,G.referencePatternsFormsList,G.AllMID_ObjectsDict) #Then prepare AllMoleculesReferenceDataList to get reciprocal_matching_correction_values, this value is fed into RatioFinder for referenceObjectIndex in range(len(AllMoleculesReferenceDataList)): AllMoleculesReferenceDataList[referenceObjectIndex].ExportAtEachStep = 'no' PrepareReferenceObjectsAndCorrectionValues(AllMoleculesReferenceDataList[referenceObjectIndex],AllMassFragmentsExperimentData) #Read in the molecules used before parsing the user input file - G.referenceFileNamesList = parse.listCast(G.referenceFileNamesList) - G.moleculesNames = getMoleculesFromReferenceData(G.referenceFileNamesList[0]) + G.referencePatternsFileNamesList = parse.listCast(G.referencePatternsFileNamesList) + G.moleculesNames = getMoleculesFromReferenceData(G.referencePatternsFileNamesList[0]) #We are reading the experimental data in and this must be before user input processing so we have the mass fragments - G.exp_mass_fragment_numbers = getMassFragmentsFromCollectedData(G.collectedFileName) + G.exp_mass_fragment_numbers = getMassFragmentsFromCollectedData(G.dataToAnalyzeFileName) #beforeParsedGDict this will be needed for iterative. This actually contains "UserChoices" when that's available, but we won't use that. beforeParsedGDict = {} @@ -5166,9 +5166,9 @@ def main(): global currentReferenceData global resultsObjects resultsObjects = {} - [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_collectedFileName]=readDataFile(G.collectedFileName) - ExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, collectedFileName=exp_collectedFileName) - ReferenceDataList = GenerateReferenceDataList(G.referenceFileNamesList,G.referenceFormsList,G.AllMID_ObjectsDict) + [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_dataToAnalyzeFileName]=readDataFile(G.dataToAnalyzeFileName) + ExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, dataToAnalyzeFileName=exp_dataToAnalyzeFileName) + ReferenceDataList = GenerateReferenceDataList(G.referencePatternsFileNamesList,G.referencePatternsFormsList,G.AllMID_ObjectsDict) ExperimentData.provided_mass_fragment_numbers = ExperimentData.mass_fragment_numbers #This is where the experimental uncertainties object first gets populated, but it does get modified later as masses are removed and time-points are removed. if type(G.collectedFileUncertainties) != type(None): @@ -5179,14 +5179,14 @@ def main(): prototypicalReferenceData = ReferenceDataList[0] #Prints a warning if the user has more reference files than specified time ranges - if len(G.referencePatternTimeRanges) > 0 and (len(G.referenceFileNamesList) > len(G.referencePatternTimeRanges)): + if len(G.referencePatternTimeRanges) > 0 and (len(G.referencePatternsFileNamesList) > len(G.referencePatternTimeRanges)): print("WARNING: There are more reference files given than time ranges") #save global variable into the class objects ExperimentData.ExportAtEachStep = G.ExportAtEachStep #if this is the first iterative run, then the reference and experimental files need to have been imported before the iteration can begin if G.iterativeAnalysis and G.iterationNumber == 1 : - #implied arguments for the following function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for the following function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterationFirstDirectoryPreparation(G.iterativeAnalysis, G.iterationNumber) # Skip preProcessing all together if we are loading analyzed data @@ -5337,7 +5337,7 @@ def main(): G.csvFile, G.moleculesToRestrict, G.csvFileName,G.dataUpperBound, G.dataLowerBound, G.bruteIncrements, G.permutationNum] SLSChoices = [G.uniqueOrCommon, G.slsFinish, G.distinguished] - ThresholdList = [G.rawSignalThresholdMethod, G.rawSignalThresholdValue, G.sensitivityThresholdValue, + ThresholdList = [G.applyRawSignalThresholds, G.rawSignalThresholdValue, G.sensitivityThresholdValue, G.rawSignalThresholdDivider, G.rawSignalThresholdLimit, G.rawSignalThresholdLimitPercent] currentReferenceData = ReferenceDataList[0] #TODO this line is placeholder by charles to fix currentRefenceData issue until Alex has a better solution @@ -5414,7 +5414,7 @@ def main(): #TODO continued: I am putting some variables here to make that process easier by getting some of it done already, then only the user input file needs to be changed. #This feature is intended to remove molecules that have major fragments not observed. previously, it was done in a more complicated way. # now, to simplify things, is being used as a filter that simply sets standardized intensities in the reference patterns to zero. - G.excludeMoleculesIfSignificantFragmentNotObserved = G.rawSignalThresholdMethod + G.excludeMoleculesIfSignificantFragmentNotObserved = G.applyRawSignalThresholds G.minimumSignalRequired = G.rawSignalThresholdValue G.minimumStandardizedReferenceHeightToBeSignificant = G.sensitivityThresholdValue if G.excludeMoleculesIfSignificantFragmentNotObserved == 'yes': diff --git a/ExampleReferenceExtraction/UserInput.py b/ExampleReferenceExtraction/UserInput.py index 078a5b99..c3240c76 100644 --- a/ExampleReferenceExtraction/UserInput.py +++ b/ExampleReferenceExtraction/UserInput.py @@ -13,10 +13,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ExistingReferencePatterns.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ExistingReferencePatterns.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = 'Collected_Reference.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = 'Collected_Reference.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -31,7 +31,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -150,17 +150,17 @@ #Note that 1 is the default and will make no alteration to the data #//Tuning Corrector - Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] =['ReferenceCollected.csv','xyyy'] -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] =['ReferenceLiterature.csv','xyyy'] -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] =['ReferenceCollected.csv','xyyy'] +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] =['ReferenceLiterature.csv','xyyy'] +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0. Used as.... Factor = A*X^2 + B*X + C, so A=0,B=0,C=1.0 means the final factor is 1.0 and independent of molecular weight. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. #//Reference Pattern Changer // (rpc) @@ -179,11 +179,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'no' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [6.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'no' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [6.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -211,18 +211,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -294,4 +294,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/ExampleReferenceExtraction/userInputValidityFunctions.py b/ExampleReferenceExtraction/userInputValidityFunctions.py index 3e5e11bf..51573dee 100644 --- a/ExampleReferenceExtraction/userInputValidityFunctions.py +++ b/ExampleReferenceExtraction/userInputValidityFunctions.py @@ -8,11 +8,11 @@ ''' def parseUserInput(currentUserInput): #Input Files - currentUserInput.referenceFileNamesList = parse.listCast(currentUserInput.referenceFileNamesList) #referenceFileName needs to be a list - currentUserInput.referenceFormsList = parse.listCast(currentUserInput.referenceFormsList) #form needs to be a list - currentUserInput.referenceFormsList = parse.parallelVectorize(currentUserInput.referenceFormsList,len(currentUserInput.referenceFileNamesList)) #form needs to be a list of the same length as referenceFileName + currentUserInput.referencePatternsFileNamesList = parse.listCast(currentUserInput.referencePatternsFileNamesList) #referenceFileName needs to be a list + currentUserInput.referencePatternsFormsList = parse.listCast(currentUserInput.referencePatternsFormsList) #form needs to be a list + currentUserInput.referencePatternsFormsList = parse.parallelVectorize(currentUserInput.referencePatternsFormsList,len(currentUserInput.referencePatternsFileNamesList)) #form needs to be a list of the same length as referenceFileName currentUserInput.referencePatternTimeRanges = parse.listCast(currentUserInput.referencePatternTimeRanges) #RefPatternTimeRanges needs to be a list - parse.strCheck(currentUserInput.collectedFileName,'collectedFileName') #collectedFileName must be a string + parse.strCheck(currentUserInput.dataToAnalyzeFileName,'dataToAnalyzeFileName') #dataToAnalyzeFileName must be a string #preProcessing, dataAnalysis, dataSimulation, grapher @@ -106,7 +106,7 @@ def parseUserInput(currentUserInput): currentUserInput.scaleRawDataFactor = float(currentUserInput.scaleRawDataFactor) #scaleRawDataFactor is a float #Reference Correction Changer - parse.strCheck(currentUserInput.measuredReferenceYorN,'measuredReferenceYorN') + parse.strCheck(currentUserInput.tuningCorrection,'tuningCorrection') #The below two variables are no longer strings. They are now lists with two elements, each of which are strings. TODO: Change their names to referenceFileExistingTuningAndForm and referenceFileDesiredTuningAndForm #parse.strCheck(currentUserInput.referenceFileExistingTuningAndForm,'referenceFileExistingTuningAndForm') #parse.strCheck(currentUserInput.referenceFileDesiredTuningAndForm,'referenceFileDesiredTuningAndForm') @@ -123,11 +123,11 @@ def parseUserInput(currentUserInput): parse.compareElementsBetweenLists(currentUserInput.rpcMoleculesToChange,chosenMoleculesForParsing,'rpcMoleculesToChange','chosenMolecules') #Reference Mass Fragmentation Threshold - parse.strCheck(currentUserInput.minimalReferenceValue,'minimalReferenceValue') - if currentUserInput.minimalReferenceValue == 'yes': #If using reference mass fragmentation threshold - currentUserInput.referenceValueThreshold = parse.listCast(currentUserInput.referenceValueThreshold) #reference value threshold is a list + parse.strCheck(currentUserInput.applyReferenceMassFragmentsThresholds,'applyReferenceMassFragmentsThresholds') + if currentUserInput.applyReferenceMassFragmentsThresholds == 'yes': #If using reference mass fragmentation threshold + currentUserInput.referenceMassFragmentFilterThreshold = parse.listCast(currentUserInput.referenceMassFragmentFilterThreshold) #reference value threshold is a list #The length of the reference value thresholds needs to be the same length as the number of molecules - currentUserInput.referenceValueThreshold = parse.parallelVectorize(currentUserInput.referenceValueThreshold,len(chosenMoleculesForParsing)) + currentUserInput.referenceMassFragmentFilterThreshold = parse.parallelVectorize(currentUserInput.referenceMassFragmentFilterThreshold,len(chosenMoleculesForParsing)) currentUserInput.referenceSignificantFragmentThresholds = parse.parallelVectorize(currentUserInput.referenceSignificantFragmentThresholds,len(chosenMoleculesForParsing)) #Data Threshold Filter @@ -156,9 +156,9 @@ def parseUserInput(currentUserInput): parse.compareElementsBetweenLists(currentUserInput.dataSmootherHeadersToConfineTo,chosenMassFragmentsForParsing,'dataSmootherHeadersToConfineTo','chosenMolecules') #Raw Signal Threshold - parse.strCheck(currentUserInput.rawSignalThresholdMethod,'rawSignalThresholdMethod') + parse.strCheck(currentUserInput.applyRawSignalThresholds,'applyRawSignalThresholds') parse.strCheck(currentUserInput.rawSignalThresholdLimit,'rawSignalThresholdLimit') - if currentUserInput.rawSignalThresholdMethod == 'yes': #If using rawSignalThresholdMethod + if currentUserInput.applyRawSignalThresholds == 'yes': #If using applyRawSignalThresholds #raw signal threshold value, sensitivity value, raw signal threshold divider, and raw signal threshold limit percent are all lists currentUserInput.rawSignalThresholdValue = parse.listCast(currentUserInput.rawSignalThresholdValue) currentUserInput.sensitivityThresholdValue = parse.listCast(currentUserInput.sensitivityThresholdValue) @@ -204,10 +204,10 @@ def parseUserInput(currentUserInput): if currentUserInput.TSC_List_Type == 'MultipleReferencePatterns': #If using multiple reference patterns then the user must input 1 value to use for each reference file or a value for each reference file #Then parallelize these variables to have the same length as number of reference patterns - currentUserInput.moleculesTSC_List = parse.parallelVectorize(currentUserInput.moleculesTSC_List,len(currentUserInput.referenceFileNamesList)) - currentUserInput.moleculeSignalTSC_List = parse.parallelVectorize(currentUserInput.moleculeSignalTSC_List,len(currentUserInput.referenceFileNamesList)) - currentUserInput.massNumberTSC_List = parse.parallelVectorize(currentUserInput.massNumberTSC_List,len(currentUserInput.referenceFileNamesList)) - currentUserInput.moleculeConcentrationTSC_List = parse.parallelVectorize(currentUserInput.moleculeConcentrationTSC_List,len(currentUserInput.referenceFileNamesList)) + currentUserInput.moleculesTSC_List = parse.parallelVectorize(currentUserInput.moleculesTSC_List,len(currentUserInput.referencePatternsFileNamesList)) + currentUserInput.moleculeSignalTSC_List = parse.parallelVectorize(currentUserInput.moleculeSignalTSC_List,len(currentUserInput.referencePatternsFileNamesList)) + currentUserInput.massNumberTSC_List = parse.parallelVectorize(currentUserInput.massNumberTSC_List,len(currentUserInput.referencePatternsFileNamesList)) + currentUserInput.moleculeConcentrationTSC_List = parse.parallelVectorize(currentUserInput.moleculeConcentrationTSC_List,len(currentUserInput.referencePatternsFileNamesList)) #NOTE: vectorizing these lists for 'SeparateMoleculesFactors' occurs in RatioFinder #Output Files @@ -248,10 +248,10 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t #TODO: Consider if G.iterativeAnalysis = True or False should be changed to G.IterativeAnalysis_On or something like that, but will break backwards compatibility unless special care is taken. #Also to consider if other variables should change to have names like G.specificMolecules_chosenMoleculesNames. Probably not necessary since we have the dictionaries. SettingsVDictionary = {} - SettingsVDictionary['referenceFileNamesList'] = UserChoices['inputFiles']['referenceFileNamesList'] - SettingsVDictionary['referenceFormsList'] = UserChoices['inputFiles']['referenceFormsList'] + SettingsVDictionary['referencePatternsFileNamesList'] = UserChoices['inputFiles']['referencePatternsFileNamesList'] + SettingsVDictionary['referencePatternsFormsList'] = UserChoices['inputFiles']['referencePatternsFormsList'] SettingsVDictionary['referencePatternTimeRanges'] = UserChoices['inputFiles']['referencePatternTimeRanges'] - SettingsVDictionary['collectedFileName'] = UserChoices['inputFiles']['collectedFileName'] + SettingsVDictionary['dataToAnalyzeFileName'] = UserChoices['inputFiles']['dataToAnalyzeFileName'] SettingsVDictionary['ionizationDataFileName'] = UserChoices['inputFiles']['ionizationDataFileName'] SettingsVDictionary['preProcessing'] = UserChoices['preProcessing']['on'] @@ -270,7 +270,7 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t SettingsVDictionary['iterationSuffix'] = UserChoices['iterativeAnalysis']['iterationSuffix'] SettingsVDictionary['unusedMolecules'] = UserChoices['iterativeAnalysis']['unusedMolecules'] SettingsVDictionary['oldReferenceFileName'] = UserChoices['iterativeAnalysis']['oldReferenceFileName'] - SettingsVDictionary['oldCollectedFileName'] = UserChoices['iterativeAnalysis']['oldCollectedFileName'] + SettingsVDictionary['oldDataToAnalyzeFileName'] = UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] SettingsVDictionary['nextRefFileName'] = UserChoices['iterativeAnalysis']['nextRefFileName'] SettingsVDictionary['nextExpFileName'] = UserChoices['iterativeAnalysis']['nextExpFileName'] SettingsVDictionary['iterationNumber'] = UserChoices['iterativeAnalysis']['iterationNumber'] @@ -312,12 +312,12 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t SettingsVDictionary['scaleRawDataOption'] = UserChoices['scaleRawDataYorN']['scaleRawDataOption'] SettingsVDictionary['scaleRawDataFactor'] = UserChoices['scaleRawDataYorN']['scaleRawDataFactor'] - SettingsVDictionary['measuredReferenceYorN'] = UserChoices['measuredReferenceYorN']['on'] - SettingsVDictionary['referenceFileExistingTuningAndForm'] = UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] - SettingsVDictionary['referenceFileDesiredTuningAndForm'] = UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] - SettingsVDictionary['referenceCorrectionCoefficients'] = UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] + SettingsVDictionary['tuningCorrection'] = UserChoices['tuningCorrection']['on'] + SettingsVDictionary['referenceFileExistingTuningAndForm'] = UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] + SettingsVDictionary['referenceFileDesiredTuningAndForm'] = UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] + SettingsVDictionary['referenceCorrectionCoefficients'] = UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] try: - SettingsVDictionary['referenceCorrectionCoefficients_cov'] = UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] + SettingsVDictionary['referenceCorrectionCoefficients_cov'] = UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] except: SettingsVDictionary['referenceCorrectionCoefficients_cov'] = [0,0,0] #TODO: This is to keep some old unit tests running. Ideally they should be fixed. SettingsVDictionary['extractReferencePatternFromDataOption'] = UserChoices['extractReferencePatternFromDataOption']['on'] @@ -325,9 +325,9 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t SettingsVDictionary['rpcTimeRanges'] = UserChoices['extractReferencePatternFromDataOption']['rpcTimeRanges'] SettingsVDictionary['rpcMoleculesToChangeMF'] = UserChoices['extractReferencePatternFromDataOption']['rpcMoleculesToChangeMF'] - SettingsVDictionary['minimalReferenceValue'] = UserChoices['minimalReferenceValue']['on'] - SettingsVDictionary['referenceValueThreshold'] = UserChoices['minimalReferenceValue']['referenceValueThreshold'] - SettingsVDictionary['referenceSignificantFragmentThresholds'] = UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] + SettingsVDictionary['applyReferenceMassFragmentsThresholds'] = UserChoices['applyReferenceMassFragmentsThresholds']['on'] + SettingsVDictionary['referenceMassFragmentFilterThreshold'] = UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] + SettingsVDictionary['referenceSignificantFragmentThresholds'] = UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] SettingsVDictionary['lowerBoundThresholdChooser'] = UserChoices['lowerBoundThresholdChooser']['on'] SettingsVDictionary['massesToLowerBoundThresholdFilter'] = UserChoices['lowerBoundThresholdChooser']['massesToLowerBoundThresholdFilter'] @@ -341,12 +341,12 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t SettingsVDictionary['dataSmootherHeadersToConfineTo'] = UserChoices['dataSmootherYorN']['dataSmootherHeadersToConfineTo'] SettingsVDictionary['polynomialOrder'] = UserChoices['dataSmootherYorN']['polynomialOrder'] - SettingsVDictionary['rawSignalThresholdMethod'] = UserChoices['rawSignalThresholdMethod']['on'] - SettingsVDictionary['rawSignalThresholdValue'] = UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] - SettingsVDictionary['sensitivityThresholdValue'] = UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] - SettingsVDictionary['rawSignalThresholdDivider'] = UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] - SettingsVDictionary['rawSignalThresholdLimit'] = UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] - SettingsVDictionary['rawSignalThresholdLimitPercent'] = UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] + SettingsVDictionary['applyRawSignalThresholds'] = UserChoices['applyRawSignalThresholds']['on'] + SettingsVDictionary['rawSignalThresholdValue'] = UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] + SettingsVDictionary['sensitivityThresholdValue'] = UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] + SettingsVDictionary['rawSignalThresholdDivider'] = UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] + SettingsVDictionary['rawSignalThresholdLimit'] = UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] + SettingsVDictionary['rawSignalThresholdLimitPercent'] = UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] SettingsVDictionary['calculateUncertaintiesInConcentrations'] = UserChoices['uncertainties']['calculateUncertaintiesInConcentrations'] SettingsVDictionary['referenceFileUncertainties'] = UserChoices['uncertainties']['referenceFileUncertainties'] diff --git a/ExampleTuningCorrectorGasMixture/0-README.txt b/ExampleTuningCorrectorGasMixture/0-README.txt index 96a031d9..f278bd2e 100644 --- a/ExampleTuningCorrectorGasMixture/0-README.txt +++ b/ExampleTuningCorrectorGasMixture/0-README.txt @@ -9,9 +9,9 @@ The reference pattern listed for analysis has internally collected spectra which Proc Doc type things: -- First added at line 5351 - if len(G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames']) > 0: + if len(G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames']) > 0: -- Now make a reference object from LiteratureReference.csv so that simulated signals can be made. - -- GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_ObjectsDict={}): + -- GenerateReferenceDataList(referencePatternsFileNamesList,referencePatternsFormsList,AllMID_ObjectsDict={}): -- Need to be careful because "ReferenceInputPreProcessing" is being used. diff --git a/ExampleTuningCorrectorGasMixture/DefaultUserInput.py b/ExampleTuningCorrectorGasMixture/DefaultUserInput.py index 6777d922..4d6c9291 100644 --- a/ExampleTuningCorrectorGasMixture/DefaultUserInput.py +++ b/ExampleTuningCorrectorGasMixture/DefaultUserInput.py @@ -13,10 +13,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -31,7 +31,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -150,17 +150,17 @@ #Note that 1 is the default and will make no alteration to the data #//Tuning Corrector - Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] =['ReferenceCollected.csv','xyyy'] -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] =['ReferenceLiterature.csv','xyyy'] -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] =['ReferenceCollected.csv','xyyy'] +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] =['ReferenceLiterature.csv','xyyy'] +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0. Used as.... Factor = A*X^2 + B*X + C, so A=0,B=0,C=1.0 means the final factor is 1.0 and independent of molecular weight. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. #//Reference Pattern Changer // (rpc) @@ -179,11 +179,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'no' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [6.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'no' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [6.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -211,18 +211,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -294,4 +294,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/ExampleTuningCorrectorGasMixture/LogFile.txt b/ExampleTuningCorrectorGasMixture/LogFile.txt index e9f57d4f..cb9f7335 100644 --- a/ExampleTuningCorrectorGasMixture/LogFile.txt +++ b/ExampleTuningCorrectorGasMixture/LogFile.txt @@ -2,18 +2,18 @@ Sat Sep 25 20:00:41 2021 referenceFileName = ['ExtractedReferencePattern.csv'] form = ['xyyy'] -collectedFileName = Collected_Data.csv +dataToAnalyzeFileName = Collected_Data.csv timeRangeLimit = yes timeRangeStart = 176.0 timeRangeFinish = 900.0 -measuredReferenceYorN = yes +tuningCorrection = yes referenceCorrectionCoefficientA = -0.006486881698506962 referenceCorrectionCoefficientB = 0.25062935187812 referenceCorrectionCoefficientC = -0.9533139758788823 referenceCorrection_abcCoefficients = [-0.006486881698506962, 0.25062935187812, -0.9533139758788823] referenceCorrection_abcCoefficients_cov = [[6.210441332505573e-06, -0.00026708328912830614, 0.002613875252542956], [-0.0002670832891283059, 0.01155046014720452, -0.11397285273190337], [0.0026138752525429526, -0.11397285273190326, 1.140196952429929]] -minimalReferenceValue = yes -referenceValueThreshold = [2.0, 2.0, 2.0, 2.0] +applyReferenceMassFragmentsThresholds = yes +referenceMassFragmentFilterThreshold = [2.0, 2.0, 2.0, 2.0] referenceSignificantFragmentThresholds = [6.0, 6.0, 6.0, 6.0] answer = sls uniqueOrCommon = unique diff --git a/ExampleTuningCorrectorGasMixture/MSRESOLVE.py b/ExampleTuningCorrectorGasMixture/MSRESOLVE.py index 3871a1e5..818764d8 100644 --- a/ExampleTuningCorrectorGasMixture/MSRESOLVE.py +++ b/ExampleTuningCorrectorGasMixture/MSRESOLVE.py @@ -381,7 +381,7 @@ def ABCDetermination(ReferencePatternExistingTuning_FileNameAndForm, ReferencePa ''' - if G.minimalReferenceValue !='yes': + if G.applyReferenceMassFragmentsThresholds !='yes': print("Warning: The ABCDetermination will occur without threshold filtering, since that setting is off.") if G.extractReferencePatternFromDataOption == 'yes': @@ -393,16 +393,16 @@ def ABCDetermination(ReferencePatternExistingTuning_FileNameAndForm, ReferencePa ReferencePatternExistingTuningDict['molecules']=molecules ReferencePatternExistingTuningDict['provided_reference_patterns'] = provided_reference_patterns ReferencePatternExistingTuningDict['provided_reference_patterns'] = StandardizeReferencePattern(ReferencePatternExistingTuningDict['provided_reference_patterns'],len(molecules)) #this does have the molecular weight as the first column. - if G.minimalReferenceValue =='yes': - ReferencePatternExistingTuningDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternExistingTuningDict['provided_reference_patterns'],G.referenceValueThreshold) + if G.applyReferenceMassFragmentsThresholds =='yes': + ReferencePatternExistingTuningDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternExistingTuningDict['provided_reference_patterns'],G.referenceMassFragmentFilterThreshold) ReferencePatternDesiredTuningDict = {} [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form] = readReferenceFile(*ReferencePatternDesiredTuning_FileNameAndForm) ReferencePatternDesiredTuningDict['molecules']=molecules ReferencePatternDesiredTuningDict['provided_reference_patterns'] = provided_reference_patterns ReferencePatternDesiredTuningDict['provided_reference_patterns'] = StandardizeReferencePattern(ReferencePatternDesiredTuningDict['provided_reference_patterns'],len(molecules)) #this does have the molecular weight as the first column. - if G.minimalReferenceValue =='yes': - ReferencePatternDesiredTuningDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternDesiredTuningDict['provided_reference_patterns'],G.referenceValueThreshold) + if G.applyReferenceMassFragmentsThresholds =='yes': + ReferencePatternDesiredTuningDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternDesiredTuningDict['provided_reference_patterns'],G.referenceMassFragmentFilterThreshold) ''' Step 3a: Truncate to the molecules which match. @@ -499,15 +499,15 @@ def ABCDetermination(ReferencePatternExistingTuning_FileNameAndForm, ReferencePa #this function either creates or gets the three coefficients for the polynomial correction (Tuning Correction) and calculates #the correction factor for the relative intensities of each mass fragment, outputting a corrected set #of relative intensities -def TuningCorrector(referenceDataArrayWithAbscissa,referenceCorrectionCoefficients, referenceCorrectionCoefficients_cov, referenceFileExistingTuningAndForm=None,referenceFileDesiredTuningAndForm=None,measuredReferenceYorN="no"): +def TuningCorrector(referenceDataArrayWithAbscissa,referenceCorrectionCoefficients, referenceCorrectionCoefficients_cov, referenceFileExistingTuningAndForm=None,referenceFileDesiredTuningAndForm=None,tuningCorrection="no"): #Tuning corrector is designed to work with standardized_reference_patterns, so first we make sure standardize the data. referenceDataArrayWithAbscissa=StandardizeReferencePattern(referenceDataArrayWithAbscissa) if type(referenceCorrectionCoefficients) == type({}):#check if it's a dictionary. If it is, we need to make it a list. referenceCorrectionCoefficients = [referenceCorrectionCoefficients['A'],referenceCorrectionCoefficients['B'],referenceCorrectionCoefficients['C']] - if measuredReferenceYorN =='yes': + if tuningCorrection =='yes': print("line 520!!!!!") if referenceFileDesiredTuningAndForm == []:#TODO: this isn't very good logic, but it allows automatic population of referenceFileDesiredTuningAndForm. The problem is it is reading from file again instead of using the already made ReferenceData object. ABCDetermination and possibly TuningCorrector should be changed so that it can take *either* a ReferenceData object **or** a ReferenceData filename. The function can check if it is receiving a string, and if it's not receiving a string it can assume it's receiving an object. - referenceFileDesiredTuningAndForm = [ "ExportedDesiredTuningReferencePattern.csv","xyyy" ] #Take the first item from G.referenceFileNamesList and from G.referenceFormsList. + referenceFileDesiredTuningAndForm = [ "ExportedDesiredTuningReferencePattern.csv","xyyy" ] #Take the first item from G.referencePatternsFileNamesList and from G.referencePatternsFormsList. abcCoefficients, abcCoefficients_cov = ABCDetermination(referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm) referenceCorrectionCoefficients[0],referenceCorrectionCoefficients[1],referenceCorrectionCoefficients[2]= abcCoefficients G.referenceCorrectionCoefficients = referenceCorrectionCoefficients #TODO: Maybe this logic should be changed, since it will result in an exporting of the last coefficients used, whether a person is doing forward tuning or reverse tuning. @@ -558,11 +558,11 @@ def createReferencePatternWithTuningCorrection(ReferenceData, verbose=True, retu G.referenceCorrectionCoefficients_cov = None #Wanted to do something like "if list(G.referenceCorrectionCoefficients) != [0,0,1]:" but can't do it out here. Can do it inside function. - if G.measuredReferenceYorN =='no': + if G.tuningCorrection =='no': G.createMixedTuningPattern = False #override the mixed tuning pattern choice if there is no measured reference. if G.createMixedTuningPattern == False: - if G.measuredReferenceYorN =='yes': #in this case, we are going to apply the external tuning to the current pattern. + if G.tuningCorrection =='yes': #in this case, we are going to apply the external tuning to the current pattern. print("line 520!!!!!") referenceFileDesiredTuningAndForm = G.referenceFileDesiredTuningAndForm @@ -570,7 +570,7 @@ def createReferencePatternWithTuningCorrection(ReferenceData, verbose=True, retu ReferenceDataExistingTuning = createReferenceDataObject ( G.referenceFileDesiredTuningAndForm[0],G.referenceFileDesiredTuningAndForm[1], AllMID_ObjectsDict=G.AllMID_ObjectsDict) ReferenceDataExistingTuning.exportReferencePattern('ExportedReferencePatternOriginalTuning.csv') if referenceFileDesiredTuningAndForm == []:#TODO: this isn't very good logic, but it allows automatic population of referenceFileDesiredTuningAndForm. The problem is it is reading from file again instead of using the already made ReferenceData object. ABCDetermination and possibly TuningCorrector should be changed so that it can take *either* a ReferenceData object **or** a ReferenceData filename. The function can check if it is receiving a string, and if it's not receiving a string it can assume it's receiving an object. - referenceFileDesiredTuningAndForm = [ "ExportedReferencePatternOriginalAnalysis.csv","xyyy" ] #Take the first item from G.referenceFileNamesList and from G.referenceFormsList. + referenceFileDesiredTuningAndForm = [ "ExportedReferencePatternOriginalAnalysis.csv","xyyy" ] #Take the first item from G.referencePatternsFileNamesList and from G.referencePatternsFormsList. print("line 1489", referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm) abcCoefficients, abcCoefficients_cov = ABCDetermination(referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm) referenceCorrectionCoefficients = numpy.zeros(3) @@ -612,13 +612,13 @@ def createReferencePatternWithTuningCorrection(ReferenceData, verbose=True, retu if G.createMixedTuningPattern== True: #in this case, we are going to apply the current tuning to the external pattern, and also create a mixed pattern. So the ReferenceData pointer will point to a mixed pattern by the end of this if statement. print("line 619!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!") - if G.measuredReferenceYorN =='yes': + if G.tuningCorrection =='yes': #First read in the existing tuning patterns. referenceFileDesiredTuningAndForm = G.referenceFileDesiredTuningAndForm referenceFileExistingTuningAndForm = G.referenceFileExistingTuningAndForm if referenceFileDesiredTuningAndForm == []: - print("line 622", G.referenceFormsList) - referenceFileDesiredTuningAndForm = [G.referenceFileNamesList[0], G.referenceFormsList[0]] #Take the first item from G.referenceFileNamesList and from G.referenceFormsList. + print("line 622", G.referencePatternsFormsList) + referenceFileDesiredTuningAndForm = [G.referencePatternsFileNamesList[0], G.referencePatternsFormsList[0]] #Take the first item from G.referencePatternsFileNamesList and from G.referencePatternsFormsList. #We don't use the function GenerateReferenceDataList because that function does more than just making a reference object. ReferenceDataExistingTuning = createReferenceDataObject ( referenceFileExistingTuningAndForm[0],referenceFileExistingTuningAndForm[1], AllMID_ObjectsDict=G.AllMID_ObjectsDict) ReferenceDataExistingTuning.exportReferencePattern('ExportedReferencePatternExternal.csv') @@ -754,9 +754,9 @@ def tuningCorrectorGasMixture(ReferenceDataList, G): #making it clear that there for moleculeIndex,moleculeName in enumerate(ReferenceDataExistingTuning.molecules): desiredConcentrationIndex = moleculeIndex #Take the concentration if it's named: - if moleculeName in G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames']: - currentConcentrationIndex = list(G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames']).index(moleculeName) - knownConcentrationsArray[desiredConcentrationIndex] = G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureConcentrations'][currentConcentrationIndex] + if moleculeName in G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames']: + currentConcentrationIndex = list(G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames']).index(moleculeName) + knownConcentrationsArray[desiredConcentrationIndex] = G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureConcentrations'][currentConcentrationIndex] else: #else set it to zero. knownConcentrationsArray[desiredConcentrationIndex] = 0 #The first item in the concentrations array is supposed to be the time. We will simply put the integer "1" there, since we will have one point. @@ -783,13 +783,13 @@ def tuningCorrectorGasMixture(ReferenceDataList, G): #making it clear that there TuningCorrectorGasMixtureSimulatedHypotheticalReferenceDataObject.exportReferencePattern("TuningCorrectorGasMixtureSimulatedHypotheticalReferenceData.csv") print('line 646') - if G.measuredReferenceYorN =='yes': + if G.tuningCorrection =='yes': #we are using specific files for obtaining the tuning correction coefficients in the case of GasMixtureTuningCorrector referenceFileExistingTuningAndForm=["TuningCorrectorGasMixtureSimulatedHypotheticalReferenceData.csv","XYYY"] referenceFileDesiredTuningAndForm=["TuningCorrectorGasMixtureMeasuredHypotheticalReferenceData.csv", "XYYY"] if referenceFileDesiredTuningAndForm == []:#TODO: this isn't very good logic, but it allows automatic population of referenceFileDesiredTuningAndForm. The problem is it is reading from file again instead of using the already made ReferenceData object. ABCDetermination and possibly TuningCorrector should be changed so that it can take *either* a ReferenceData object **or** a ReferenceData filename. The function can check if it is receiving a string, and if it's not receiving a string it can assume it's receiving an object. print("line 522!!!!!") - referenceFileDesiredTuningAndForm = [ "ExportedDesiredTuningReferencePattern.csv","xyyy" ] #Take the first item from G.referenceFileNamesList and from G.referenceFormsList. + referenceFileDesiredTuningAndForm = [ "ExportedDesiredTuningReferencePattern.csv","xyyy" ] #Take the first item from G.referencePatternsFileNamesList and from G.referencePatternsFormsList. abcCoefficients, abcCoefficients_cov = ABCDetermination(referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm) referenceCorrectionCoefficients = numpy.zeros(3) referenceCorrectionCoefficients[0],referenceCorrectionCoefficients[1],referenceCorrectionCoefficients[2]= abcCoefficients @@ -865,7 +865,7 @@ def tuningCorrectorGasMixture(ReferenceDataList, G): #making it clear that there if ReferenceDataList[ReferenceDataIndex].ExportAtEachStep == 'yes': print("line 685", ReferenceDataList[ReferenceDataIndex].relativeIonizationEfficiencies) print("line 686", ReferenceDataList[ReferenceDataIndex].sourceOfIonizationData) - print(G.UserChoices['minimalReferenceValue']['referenceValueThreshold']) + print(G.UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold']) ReferenceDataList[ReferenceDataIndex].ExportCollector('StandardizedReferencePattern', use_provided_reference_patterns=False) ReferenceDataList[ReferenceDataIndex].exportReferencePattern("TuningCorrectorMixedPattern.csv") @@ -877,20 +877,20 @@ def tuningCorrectorGasMixture(ReferenceDataList, G): #making it clear that there #this function eliminates (neglects) reference intensities that are below a certain threshold. Useful for solving #data that is giving negatives or over emphasizing small mass fragments,by assuming no contribution from the molecule at that mass fragment. -def ReferenceThresholdFilter(referenceDataArrayWithAbscissa,referenceValueThreshold): +def ReferenceThresholdFilter(referenceDataArrayWithAbscissa,referenceMassFragmentFilterThreshold): numMolecules = len(referenceDataArrayWithAbscissa[0]-1) - if numMolecules > len(list(referenceValueThreshold)): - referenceValueThreshold = list(referenceValueThreshold)* numMolecules + if numMolecules > len(list(referenceMassFragmentFilterThreshold)): + referenceMassFragmentFilterThreshold = list(referenceMassFragmentFilterThreshold)* numMolecules referenceDataArray = referenceDataArrayWithAbscissa[:,1:] #all the data except the line of abscissa- mass fragment numbers for columncounter in range(len(referenceDataArray[0,:])):#goes through all columns in all rows in reference (this loop is one molecule at a time) for rowcounter in range(len(referenceDataArray[:,0])):#goes through all rows in references (one mass fragment at a time) - if len(referenceValueThreshold) == 1: #this is for if a single value was provided for referenceValueThreshold - if referenceDataArray[rowcounter,columncounter] < referenceValueThreshold[0]: + if len(referenceMassFragmentFilterThreshold) == 1: #this is for if a single value was provided for referenceMassFragmentFilterThreshold + if referenceDataArray[rowcounter,columncounter] < referenceMassFragmentFilterThreshold[0]: referenceDataArray[rowcounter,columncounter] = 0 #made to be equal to zero # (len(referenceDataArray[:,0])) #this is masses. # (len(referenceDataArray[0,:])) #this is molecules - else: #this is for if values of referenceValueThreshold were provided for each molecule. - if referenceDataArray[rowcounter,columncounter] < referenceValueThreshold[columncounter]: + else: #this is for if values of referenceMassFragmentFilterThreshold were provided for each molecule. + if referenceDataArray[rowcounter,columncounter] < referenceMassFragmentFilterThreshold[columncounter]: referenceDataArray[rowcounter,columncounter] = 0 #made to be equal to zero referenceDataArrayWithAbscissa[:,1:] = referenceDataArray #this puts changed referenceData back with mass fragment numbers return referenceDataArrayWithAbscissa @@ -1615,15 +1615,15 @@ def ImportAnalyzedData(concentrationsOutputName): ''' def ReferenceInputPreProcessing(ReferenceData, verbose=True): #We will skip the regular createReferencePatternWithTuningCorrection if using the gas mixture feature. - if len(G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames']) == 0: + if len(G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames']) == 0: ReferenceData = createReferencePatternWithTuningCorrection(ReferenceData, verbose=verbose) #TODO: the minimal reference value can cause inaccuracies if interpolating between multiple reference patterns if one pattern has a value rounded to 0 and the other does not #TODO: option 1: this issue can be fixed by moving this to after interpolation #TODO: option 2: Or we can below assign to preprocessed_reference_pattern rather than standardized_reference_patterns and then use that in data analysis (Note that interpolate would continue to use standardized_reference_patterns as well as preprocess the output) - if G.minimalReferenceValue == 'yes': + if G.applyReferenceMassFragmentsThresholds == 'yes': if G.implicitSLScorrection == True: #This feature requires us to have unfiltered reference patterns to do an implicit/recursive correction at the end. G.currentReferenceDataUnfiltered = copy.deepcopy(ReferenceData) #Make a copy before any filtering occurs. There is an implied return in global variable. - ReferenceData.standardized_reference_patterns = ReferenceThresholdFilter(ReferenceData.standardized_reference_patterns,G.referenceValueThreshold) + ReferenceData.standardized_reference_patterns = ReferenceThresholdFilter(ReferenceData.standardized_reference_patterns,G.referenceMassFragmentFilterThreshold) ReferenceData.ExportCollector('ReferenceThresholdFilter') #As the program is currently written, this function is called to act upon already threshold filtered standardized reference patterns which could cause innaccuracy. @@ -1640,22 +1640,22 @@ def ReferenceInputPreProcessing(ReferenceData, verbose=True): return ReferenceData ''' -GenerateReferenceDataAndFormsList takes in the list of referenceFileNamesList and the +GenerateReferenceDataAndFormsList takes in the list of referencePatternsFileNamesList and the list of forms. A list is generated containing MSReference objects created based on the referenceFileName and the corresponding form It allows MSRESOLVE to be backwards compatible with previous user input files ''' -def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_ObjectsDict={}): - #referenceFormsList can take values of 'xyyy' or 'xyxy' and must be a string - ##If referenceFileNamesList is a string or if form is a string then make them lists - if isinstance(referenceFileNamesList,str): - referenceFileNamesList = [referenceFileNamesList] - if isinstance(referenceFormsList,str): - referenceFormsList = [referenceFormsList] - #If referenceFileNamesList and forms are lists of 1 then create a list of the single MSReference object +def GenerateReferenceDataList(referencePatternsFileNamesList,referencePatternsFormsList,AllMID_ObjectsDict={}): + #referencePatternsFormsList can take values of 'xyyy' or 'xyxy' and must be a string + ##If referencePatternsFileNamesList is a string or if form is a string then make them lists + if isinstance(referencePatternsFileNamesList,str): + referencePatternsFileNamesList = [referencePatternsFileNamesList] + if isinstance(referencePatternsFormsList,str): + referencePatternsFormsList = [referencePatternsFormsList] + #If referencePatternsFileNamesList and forms are lists of 1 then create a list of the single MSReference object #This allows MSRESOLVE to be backwards compatible with previous user input files while still incorporating the reference pattern time chooser feature - if len(referenceFormsList) == 1 and len(referenceFileNamesList) == 1: - [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referenceFileNamesList[0],referenceFormsList[0]) + if len(referencePatternsFormsList) == 1 and len(referencePatternsFileNamesList) == 1: + [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referencePatternsFileNamesList[0],referencePatternsFormsList[0]) ReferenceDataList = [MSReference(provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName=referenceFileName, form=form, AllMID_ObjectsDict=AllMID_ObjectsDict)] #save each global variable into the class objects ReferenceDataList[0].ExportAtEachStep = G.ExportAtEachStep @@ -1676,7 +1676,7 @@ def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_O ReferenceDataList[0].absolute_standard_uncertainties = absolute_standard_uncertainties #We can't convert to relative uncertainties yet because the file may not be standardized yet. if type(G.referenceFileUncertainties) == type('string'): - provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referenceFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referenceFormsList[0]) + provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referencePatternsFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referencePatternsFormsList[0]) ReferenceDataList[0].absolute_standard_uncertainties = provided_reference_patterns_absolute_uncertainties #Just initializing the variable before filling it properly. maximum_absolute_intensities = numpy.amax(ReferenceDataList[0].provided_reference_patterns[:,1:], axis = 0) #Find the maximum intensity for each molecule. ReferenceDataList[0].absolute_standard_uncertainties[:,1:] = 100*ReferenceDataList[0].absolute_standard_uncertainties[:,1:]/maximum_absolute_intensities @@ -1687,22 +1687,22 @@ def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_O ReferenceDataList[0].update_relative_standard_uncertainties() return ReferenceDataList #Otherwise we have multiple reference files and forms - #If just one form is used, make a list of forms that is the same length as referenceFileNamesList - if len(referenceFormsList) == 1: - #Generate a copy of referenceFileNamesList to be overwritten with forms - listOfForms = copy.copy(referenceFileNamesList) + #If just one form is used, make a list of forms that is the same length as referencePatternsFileNamesList + if len(referencePatternsFormsList) == 1: + #Generate a copy of referencePatternsFileNamesList to be overwritten with forms + listOfForms = copy.copy(referencePatternsFileNamesList) #replace each value with the given form - for i in range(len(referenceFileNamesList)): - listOfForms[i] = referenceFormsList[0] - #If list of forms is the same length of referenceFileNamesList then each form should correspond to the referenceFile of the same index - elif len(referenceFormsList) == len(referenceFileNamesList): + for i in range(len(referencePatternsFileNamesList)): + listOfForms[i] = referencePatternsFormsList[0] + #If list of forms is the same length of referencePatternsFileNamesList then each form should correspond to the referenceFile of the same index + elif len(referencePatternsFormsList) == len(referencePatternsFileNamesList): #So just set listOfForms equal to forms - listOfForms = referenceFormsList + listOfForms = referencePatternsFormsList #Initialize ReferenceDataList so it can be appended to ReferenceDataList = [] #For loop to generate each MSReferenceObject and append it to a list - for i in range(len(referenceFileNamesList)): - [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referenceFileNamesList[i],listOfForms[i]) + for i in range(len(referencePatternsFileNamesList)): + [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referencePatternsFileNamesList[i],listOfForms[i]) ReferenceDataList.append(MSReference(provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName=referenceFileName, form=form, AllMID_ObjectsDict=AllMID_ObjectsDict)) #save each global variable into the class objects ReferenceDataList[i].ExportAtEachStep = G.ExportAtEachStep @@ -1723,7 +1723,7 @@ def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_O ReferenceDataList[i].absolute_standard_uncertainties = absolute_standard_uncertainties #We can't convert to relative uncertainties yet because the file may not be standardized yet. if type(G.referenceFileUncertainties) == type('string'): - provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referenceFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referenceFormsList[i]) + provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referencePatternsFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referencePatternsFormsList[i]) ReferenceDataList[i].absolute_standard_uncertainties = provided_reference_patterns_absolute_uncertainties #Just initializing the variable before filling it properly. maximum_absolute_intensities = numpy.amax(ReferenceDataList[i].provided_reference_patterns[:,1:], axis = 0) #Find the maximum intensity for each molecule. ReferenceDataList[i].absolute_standard_uncertainties[:,1:] = ReferenceDataList[i].absolute_standard_uncertainties[:,1:]/maximum_absolute_intensities @@ -2079,50 +2079,50 @@ def IterativeDirectoryChange(iterativeAnalysis, iterationNumber): os.chdir(iterationDirectoryName) #this will be changed back at the end of the program def IterationDirectoryPreparation(iterativeAnalysis, iterationNumber): - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterativeDirectoryChange(iterativeAnalysis, iterationNumber) #naming for collected file #record the old file names - G.oldcollectedFileName = G.collectedFileName + G.oldDataToAnalyzeFileName = G.dataToAnalyzeFileName #construct the file names for the current run of the program #TODO FIXME, This syntax with -21 will not allow iterative to be compatible with more than 9 iterations - collectedFileNameTemp = str(G.collectedFileName)[:-21] + str(G.iterationSuffix) + str(G.collectedFileName)[-4:] + dataToAnalyzeFileNameTemp = str(G.dataToAnalyzeFileName)[:-21] + str(G.iterationSuffix) + str(G.dataToAnalyzeFileName)[-4:] #copy the experimental and reference files into new names for this iterative run - shutil.copy(G.collectedFileName, collectedFileNameTemp) + shutil.copy(G.dataToAnalyzeFileName, dataToAnalyzeFileNameTemp) #change the globals to reflect the renaming of the ref and exp files - G.collectedFileName = collectedFileNameTemp + G.dataToAnalyzeFileName = dataToAnalyzeFileNameTemp #construct file names for the next run of the program #TODO FIXME, This syntax with -11 will not allow iterative to be compatible with more than 9 iterations - G.nextExpFileName = G.collectedFileName[:-11] + str('_remaining') + G.collectedFileName[-11:] + G.nextExpFileName = G.dataToAnalyzeFileName[:-11] + str('_remaining') + G.dataToAnalyzeFileName[-11:] #naming for reference files G.oldReferenceFileName = [] G.nextRefFileName = [] - for RefIndex, RefName in enumerate(G.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.referencePatternsFileNamesList): #a list #record the old file names G.oldReferenceFileName.append(RefName) #construct the file names for the current run of the program #TODO FIXME, This syntax with -18 will not allow iterative to be compatible with more than 9 iterations - referenceFileNameTemp = G.referenceFileNamesList[RefIndex][:-18] + str(G.iterationSuffix) + G.referenceFileNamesList[RefIndex][-4:] + referenceFileNameTemp = G.referencePatternsFileNamesList[RefIndex][:-18] + str(G.iterationSuffix) + G.referencePatternsFileNamesList[RefIndex][-4:] #copy the experimental and reference files into new names for this iterative run shutil.copy(RefName, referenceFileNameTemp) #change the globals to reflect the renaming of the ref and exp files - G.referenceFileNamesList[RefIndex] = referenceFileNameTemp + G.referencePatternsFileNamesList[RefIndex] = referenceFileNameTemp #construct file names for the next run of the program #TODO FIXME, This syntax with -18 will not allow iterative to be compatible with more than 9 iterations G.nextRefFileName.append(RefName[:-18] + '_unused_iter_%s' %G.iterationNumber + RefName[-4:]) return None - #implied returns: G.oldReferenceFileName, G.oldcollectedFileName, G.referenceFileNamesList,G.collectedFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber + #implied returns: G.oldReferenceFileName, G.oldDataToAnalyzeFileName, G.referencePatternsFileNamesList,G.dataToAnalyzeFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber def IterationFirstDirectoryPreparation(iterativeAnalysis,iterationNumber): - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName #this global value is set so that each export statement can label the output files correctly G.iterationNumber = iterationNumber @@ -2141,27 +2141,27 @@ def IterationFirstDirectoryPreparation(iterativeAnalysis,iterationNumber): AppendListToFile("__var_list__", G.__var_list__, "UserInput_iter_1.py", float('Inf')) #record the old file names - G.oldcollectedFileName = G.collectedFileName + G.oldDataToAnalyzeFileName = G.dataToAnalyzeFileName #construct the file names for the first run of the program - G.collectedFileName = G.collectedFileName[:-4] + str(G.iterationSuffix) + G.collectedFileName[-4:] + G.dataToAnalyzeFileName = G.dataToAnalyzeFileName[:-4] + str(G.iterationSuffix) + G.dataToAnalyzeFileName[-4:] #construct file names for the second run of the program #TODO FIXME, This syntax with -11 will not allow iterative to be compatible with more than 9 iterations - G.nextExpFileName = G.collectedFileName[:-11] + '_remaining_iter_1' + G.collectedFileName[-4:] + G.nextExpFileName = G.dataToAnalyzeFileName[:-11] + '_remaining_iter_1' + G.dataToAnalyzeFileName[-4:] G.oldReferenceFileName = [] - for RefIndex, RefName in enumerate(G.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.referencePatternsFileNamesList): #a list G.oldReferenceFileName.append(RefName) #construct the file names for the first run of the program - G.referenceFileNamesList[RefIndex] = G.referenceFileNamesList[RefIndex][:-4] + str(G.iterationSuffix) + G.referenceFileNamesList[RefIndex][-4:] + G.referencePatternsFileNamesList[RefIndex] = G.referencePatternsFileNamesList[RefIndex][:-4] + str(G.iterationSuffix) + G.referencePatternsFileNamesList[RefIndex][-4:] #construct file names for the second run of the program G.nextRefFileName.append(RefName[:-4] + '_unused_iter_1' + RefName[-4:]) return None - #implied returns: G.oldReferenceFileName, G.oldcollectedFileName, G.referenceFileNamesList,G.collectedFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber + #implied returns: G.oldReferenceFileName, G.oldDataToAnalyzeFileName, G.referencePatternsFileNamesList,G.dataToAnalyzeFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber #The IterativeAnalysisDirectory and Variable Population function is used to shrink the size of the program analysis and redirect the output. def IADirandVarPopulation(iterativeAnalysis, chosenMassFragments, chosenMolecules, ExperimentData, ExperimentDataFullCopy, ReferenceDataList, ReferenceDataListFullCopy): - #implied arguments: G.dataSimulation, G.referenceFileNamesList, G.collectedFileName, G.nextRefFileName, G.oldReferenceFileName, G.chosenMoleculesNames, G.iterationNumber + #implied arguments: G.dataSimulation, G.referencePatternsFileNamesList, G.dataToAnalyzeFileName, G.nextRefFileName, G.oldReferenceFileName, G.chosenMoleculesNames, G.iterationNumber #override data simulation to yes if it was not selected if G.dataSimulation != 'yes': print("Iterative analysis cannot find the remaining signals in the experiment without signal simulation being run.") @@ -2191,11 +2191,11 @@ def IADirandVarPopulation(iterativeAnalysis, chosenMassFragments, chosenMolecule for RefObjectIndex, RefObject in enumerate(ReferenceDataList): #a list #Export current Reference Data #Reference data is trimmed prior to this function - ExportXYYYData(G.referenceFileNamesList[RefObjectIndex], RefObject.provided_reference_patterns, RefObject.molecules, abscissaHeader = 'M/Z') + ExportXYYYData(G.referencePatternsFileNamesList[RefObjectIndex], RefObject.provided_reference_patterns, RefObject.molecules, abscissaHeader = 'M/Z') #Export current Experimental Data #Experimental data is trimmed prior to this function, but it still needs to be exported - ExportXYYYData(G.collectedFileName, ExperimentData.workingData, ExperimentData.mass_fragment_numbers, + ExportXYYYData(G.dataToAnalyzeFileName, ExperimentData.workingData, ExperimentData.mass_fragment_numbers, abscissaHeader = ExperimentData.abscissaHeader, dataType = 'preProcessed', rowIndex = ExperimentData.times) for RefObjectIndex, RefObject in enumerate(ReferenceDataList): #a list @@ -2296,8 +2296,8 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): G.nextUserInputModule.__var_list__ = G.__var_list__ #save the new file name for the next user input file - G.nextUserInputModule.collectedFileName = G.nextExpFileName - G.nextUserInputModule.referenceFileNamesList = G.nextRefFileName + G.nextUserInputModule.dataToAnalyzeFileName = G.nextExpFileName + G.nextUserInputModule.referencePatternsFileNamesList = G.nextRefFileName #updating the selected molecules for the next user input file G.nextUserInputModule.chosenMoleculesNames = G.unusedMolecules #Updating the selected masses for the next user input file @@ -2318,7 +2318,7 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): G.nextUserInputModule.scaleRawDataFactor = G.scaleRawDataFactor #Now going to overwrite parallelized variables with their original versions if they were set to length of chosen molecules. - delimitedStringOfVariablesToUnparallelize = 'moleculeLikelihoods, sensitivityValues, referenceValueThreshold, referenceSignificantFragmentThresholds' + delimitedStringOfVariablesToUnparallelize = 'moleculeLikelihoods, sensitivityValues, referenceMassFragmentFilterThreshold, referenceSignificantFragmentThresholds' listOfVariablesToUnparallelize = delimitedStringOfVariablesToUnparallelize.split(", ") #Note that we are using ", " as the delimeter, not just "," for variable in listOfVariablesToUnparallelize: G.nextUserInputModule.__dict__[variable]=G.beforeParsedGDict[variable] @@ -2335,14 +2335,14 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): #copy the experimental signals to the next iteration copyFromPath = os.path.join(os.curdir, os.pardir, str(iterationDirectoryName), - str(G.nextUserInputModule.collectedFileName)) + str(G.nextUserInputModule.dataToAnalyzeFileName)) shutil.copy(copyFromPath, os.getcwd()) - for RefIndex, RefName in enumerate(G.nextUserInputModule.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.nextUserInputModule.referencePatternsFileNamesList): #a list #copy the next reference file from the previous iteration folder to the next iteration folder copyFromPath = os.path.join(os.curdir, os.pardir, str(iterationDirectoryName), - str(G.nextUserInputModule.referenceFileNamesList[RefIndex])) + str(G.nextUserInputModule.referencePatternsFileNamesList[RefIndex])) shutil.copy(copyFromPath, os.getcwd()) #returning to the parent directory os.chdir('..') @@ -2370,17 +2370,17 @@ def IterativeAnalysisPostProcessing(ExperimentData, simulateddata, mass_fragment exportSimulatedSignalsSoFar(G.simulatedSignalsOutputName,iterationDirectoryName,G.iterationNumber) #subtract 1 from the iteration number since the iteration number has already been changed IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy) return None - #implied returns: G.referenceFileNamesList, G.collectedFileName, G.nextRefFileName, G.chosenMoleculesNames, G.iterationSuffix + #implied returns: G.referencePatternsFileNamesList, G.dataToAnalyzeFileName, G.nextRefFileName, G.chosenMoleculesNames, G.iterationSuffix ############################################################################### ######################### Functions to read data files ####################### ############################################################################### #These functions read in the experimental data file and the reference file. The #returned variables can then be used to initialize the respective classes. -def readDataFile(collectedFileName): +def readDataFile(dataToAnalyzeFileName): #read the csv file into a dataframe. dataFrame means "dataframe" and is a pandas object. - dataFrame = pandas.read_csv('%s' %collectedFileName, header=None) + dataFrame = pandas.read_csv('%s' %dataToAnalyzeFileName, header=None) ''' generate mass fragment list''' #select only the 2nd row down, all columns except for the first. #"iloc" is a pandas dataframe function. All it does is select a portion of the data. @@ -2423,7 +2423,7 @@ def readDataFile(collectedFileName): rawCollectedData = numpy.vstack((rawCollectedData,rawCollectedData)) - return mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName + return mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName #readReferenceFile is a helper function that reads the reference file in a certain form and returns the #variables and data that are used to initialize the class. It can read files both in XYYY and XYXY form. @@ -2693,10 +2693,10 @@ def getMoleculesFromReferenceData(ReferenceFileName): ''' getMassFragmentsFromCollectedData is a function that takes in the collected filename and returns the mass fragments present in the data ''' -def getMassFragmentsFromCollectedData(CollectedFileName): +def getMassFragmentsFromCollectedData(dataToAnalyzeFileName): #Read the csv file #TODO CHange to use numpy.gen_from_text instead of pandas - DataInfo = pandas.read_csv(CollectedFileName,header=0) + DataInfo = pandas.read_csv(dataToAnalyzeFileName,header=0) #Convert the data into an array DataInfoArray = numpy.array(DataInfo) #Get the names of mass fragments in collected data @@ -2767,9 +2767,9 @@ class MSData (object): #self.mass_fragment_numbers , 1D and must be integers #self.rawCollectedData, a 2D array of the signals. - def __init__(self, mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName=None): + def __init__(self, mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName=None): - self.mass_fragment_numbers, self.abscissaHeader, self.times, self.rawCollectedData, self.collectedFileName=mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName + self.mass_fragment_numbers, self.abscissaHeader, self.times, self.rawCollectedData, self.dataToAnalyzeFileName=mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName #class object variable created to allow class to be used separately from the program. self.ExportAtEachStep = '' @@ -3232,7 +3232,7 @@ def CombinationMaker(reciprocal_matching_correction_values,rawsignalsarrayline,m if combinations == []:#This function will not work without enough mass fragments, so the user must know the problem print('****************************************') print('Not enough matching mass fragments input') - print("This means that at some point in the analysis, there were not enough masses in the reference file to apply the inverse method. It could mean you have too many overlapping masses for the molecules you are trying to resolve. You can get around this by using the '#//Reference Mass Fragmentation Threshold//' feature to exclude tiny fragementation peaks. This would be done by setting the value to 'yes' for minimalReferenceValue feature with referenceValueThreshold, such as referenceValueThreshold = 5.0 . Alternatively, to be more targeted, if you know *which* fragmentation patterns could be overlapping, you could set those minor fragments to 0 in your reference pattern csv file. TODO: Print out the relevant masses here. This requires keeping track of when they are selected prior to combination maker, and possibly passing them as an additional argument.") + print("This means that at some point in the analysis, there were not enough masses in the reference file to apply the inverse method. It could mean you have too many overlapping masses for the molecules you are trying to resolve. You can get around this by using the '#//Reference Mass Fragmentation Threshold//' feature to exclude tiny fragementation peaks. This would be done by setting the value to 'yes' for applyReferenceMassFragmentsThresholds feature with referenceMassFragmentFilterThreshold, such as referenceMassFragmentFilterThreshold = 5.0 . Alternatively, to be more targeted, if you know *which* fragmentation patterns could be overlapping, you could set those minor fragments to 0 in your reference pattern csv file. TODO: Print out the relevant masses here. This requires keeping track of when they are selected prior to combination maker, and possibly passing them as an additional argument.") print('****************************************') combinations_len = len(combinations) correctionarray = numpy.zeros([1,num_molecules]) @@ -3495,7 +3495,7 @@ def InverseMethodDistinguished(monitored_reference_intensities,reciprocal_matchi try: numpy.linalg.det(reciprocal_matching_correction_values) except: - print("There is an error in a matrix operation evaluation: The number of feasible mass fragments to check is probably less than the number of molecules. This can happen if referenceValueThreshold is too strict, leaving not enough feasible fargments to consider. The program is probably about to crash.") + print("There is an error in a matrix operation evaluation: The number of feasible mass fragments to check is probably less than the number of molecules. This can happen if referenceMassFragmentFilterThreshold is too strict, leaving not enough feasible fargments to consider. The program is probably about to crash.") if numpy.linalg.det(reciprocal_matching_correction_values) != 0:#only solves if determinant is not equal to zero #Now we will solve with the inverse way, and also for uncertainties if that module is present. #The uncertainties module works well for matrix inverse, but not for dot product. So we make a custom function. @@ -4027,7 +4027,7 @@ def SLSUniqueFragments(molecules,monitored_reference_intensities,reciprocal_matc chosenMolecule = None tuplesOfUniqueFragmentsList = [] - if G.minimalReferenceValue == "yes": #We only will do some filtering things if it's requested. + if G.applyReferenceMassFragmentsThresholds == "yes": #We only will do some filtering things if it's requested. #Before going forward, we're going to make a variable called remaining_referenceSignificantFragmentThresholds, using a function. def get_remaining_referenceSignificantFragmentThresholds(referenceSignificantFragmentThresholds, molecules_unedited, remaining_molecules_SLS): remaining_referenceSignificantFragmentThresholds = list(copy.deepcopy(referenceSignificantFragmentThresholds)) @@ -4067,12 +4067,12 @@ def get_remaining_referenceSignificantFragmentThresholds(referenceSignificantFra #consideredMolecule = remaining_molecules_SLS[moleculeIndexOfUniqueIntensity] #This is for debugging purposes, this can be printed. #For debugging, also print remaining_reference_intensities_SLS and massFragmentIndex_i. #However, now we have a few lines of code to check if we are above the referenceSignificantFragmentThresholds. - if G.minimalReferenceValue == "yes": #We only check for the remaining_referenceSignificantFragmentThresholds if this option has been chosen. + if G.applyReferenceMassFragmentsThresholds == "yes": #We only check for the remaining_referenceSignificantFragmentThresholds if this option has been chosen. if (max(remaining_reference_intensities_SLS[massFragmentIndex_i]) < remaining_referenceSignificantFragmentThresholds[moleculeIndexOfUniqueIntensity]): #This allows separate referenceSignificantFragmentThresholds for each molecule. significantFragment = False #Set to false if the fragment is too small. else: significantFragment = True #This means the fragment is greater than or equal to the threshold for significance. - if G.minimalReferenceValue != "yes": #if the option is not selected, then all fragments are considered significant. + if G.applyReferenceMassFragmentsThresholds != "yes": #if the option is not selected, then all fragments are considered significant. significantFragment = True if significantFragment == True: #now make a tuple with the unique standardized intensity in the front so we can sort by that @@ -4703,7 +4703,7 @@ def SLSMethod(molecules,monitored_reference_intensities,reciprocal_matching_corr except: pass except IndexError: - print("Warning: SLS could not solve this problem. If you are already using SLS Common, you can try raising the referenceValueThreshold within the feature Reference Mass Fragmentation Threshold. Alternatively, you can try using inverse.") + print("Warning: SLS could not solve this problem. If you are already using SLS Common, you can try raising the referenceMassFragmentFilterThreshold within the feature Reference Mass Fragmentation Threshold. Alternatively, you can try using inverse.") solutions = numpy.array([None]) #This is just creating a numpy array with an element that has a None object, so that the main function can know that SLSMethod failed. if len(uncertainties_dict) > 0: #Note: the indexing in the solutions must match the original indexing, or errors will occur. Now we take the "filled up" solutions and put everything together. uncertainties_dict['concentrations_relative_uncertainties_one_time'] = uncertainties_dict['concentrations_relative_uncertainties_one_time_after_finisher'].transpose()*1.0 @@ -4747,7 +4747,7 @@ def RawSignalThresholdFilter (distinguished,reciprocal_matching_correction_value monitored_reference_intensities_copy = monitored_reference_intensities rawsignalsarray_copy = remaining_rawsignals_SLS summation = sum(rawsignalsarray_copy) - [rawSignalThresholdMethod,rawSignalThresholdValue,sensitivityThresholdValue,rawSignalThresholdDivider,rawSignalThresholdLimit,rawSignalThresholdLimitPercent] = ThresholdList + [applyRawSignalThresholds,rawSignalThresholdValue,sensitivityThresholdValue,rawSignalThresholdDivider,rawSignalThresholdLimit,rawSignalThresholdLimitPercent] = ThresholdList #this section of the code enables the function to eliminate from the raw signal array (for the purpose of this function only) #the highest value in the array, if it makes up over 90 percent of the raw signals present. This is useful because if one of #the signals does become this great then it will eliminate all the other signals present when it becomes very high @@ -4953,7 +4953,7 @@ def subtract_simulated_signals_of_specific_molecules(moleculeIndicesToSubtract, -#This function is intended to add back any concentration / intensity that was removed or distorted by reference fragmentation pattern high pass filtering (which is UserChoices['minimalReferenceValue']['referenceValueThreshold']). It also adds half of the difference to the uncertainties. As of 5/17/20, only a single recursion iteration is performed. +#This function is intended to add back any concentration / intensity that was removed or distorted by reference fragmentation pattern high pass filtering (which is UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold']). It also adds half of the difference to the uncertainties. As of 5/17/20, only a single recursion iteration is performed. #The corrections are performed from largest to smallest (in percentage), with only one molecule's correction per sls mass. That is, the effect of molecule A's filtering on molecule B's concentration, for example. A molecule can be its largest self correction (A to A). Each molecule is corrected in kind, so serial (stacked) correction is among the possibilities that can occur. #TODO: May 17 2020. Right now, we only take the LARGEST correction for each sls when deciding which sls mass to correct, then we apply that correction. But maybe we should take a single recursion of all molecules affecting? Then apply all molecules to that sls mass before moving to the next one? This would still be a single recursion, but would matter if (for example) a single molecule's sls was able to occur due to filtering out 20 other molecule's contributions at that mass. class referenceThresholdFilterCorrectingSandbox(): @@ -5517,9 +5517,9 @@ def PopulateLogFile(): filename6 = 'LogFile.txt' #the log file is printed here f6 = open(filename6,'a') f6.write('\n') - f6.write('referenceFileName = %s \n'%(G.referenceFileNamesList)) - f6.write('form = %s \n'%(G.referenceFormsList)) - f6.write('collectedFileName = %s \n'%(G.collectedFileName )) + f6.write('referenceFileName = %s \n'%(G.referencePatternsFileNamesList)) + f6.write('form = %s \n'%(G.referencePatternsFormsList)) + f6.write('dataToAnalyzeFileName = %s \n'%(G.dataToAnalyzeFileName )) if G.timeRangeLimit == 'yes':#some of the lines in the backgroundinput file don't need to be printed unless a selection is made, so the if statements here make that happen f6.write('timeRangeLimit = %s \n'%(G.timeRangeLimit)) f6.write('timeRangeStart = %s \n'%(G.timeRangeStart)) @@ -5528,8 +5528,8 @@ def PopulateLogFile(): f6.write('backgroundMassFragment = %s \n'%(G.backgroundMassFragment)) f6.write('backgroundSlopes = %s \n'%(G.backgroundSlopes)) f6.write('backgroundIntercepts = %s \n'%(G.backgroundIntercepts)) - if G.measuredReferenceYorN == 'yes': - f6.write('measuredReferenceYorN = %s \n'%G.measuredReferenceYorN) + if G.tuningCorrection == 'yes': + f6.write('tuningCorrection = %s \n'%G.tuningCorrection) f6.write('referenceCorrectionCoefficientA = %s \n'%(G.referenceCorrectionCoefficients[0])) f6.write('referenceCorrectionCoefficientB = %s \n'%(G.referenceCorrectionCoefficients[1])) f6.write('referenceCorrectionCoefficientC = %s \n'%(G.referenceCorrectionCoefficients[2])) @@ -5572,9 +5572,9 @@ def PopulateLogFile(): f6.write('rpcMoleculesToChange = %s \n'%(G.rpcMoleculesToChange)) f6.write('rpcMoleculesToChangeMF = %s \n'%(G.rpcMoleculesToChangeMF)) f6.write('rpcTimeRanges = %s \n'%(G.rpcTimeRanges)) - if G.minimalReferenceValue == 'yes': - f6.write('minimalReferenceValue = %s \n'%(G.minimalReferenceValue)) - f6.write('referenceValueThreshold = %s \n'%(G.referenceValueThreshold)) + if G.applyReferenceMassFragmentsThresholds == 'yes': + f6.write('applyReferenceMassFragmentsThresholds = %s \n'%(G.applyReferenceMassFragmentsThresholds)) + f6.write('referenceMassFragmentFilterThreshold = %s \n'%(G.referenceMassFragmentFilterThreshold)) f6.write('referenceSignificantFragmentThresholds = %s \n'%(G.referenceSignificantFragmentThresholds)) if G.lowerBoundThresholdChooser == 'yes': f6.write('lowerBoundThresholdChooser = %s \n'%(G.lowerBoundThresholdChooser)) @@ -5587,8 +5587,8 @@ def PopulateLogFile(): f6.write('dataSmootherTimeRadius = %s \n'%(G.dataSmootherTimeRadius)) f6.write('dataSmootherPointRadius = %s \n'%(G.dataSmootherPointRadius)) f6.write('dataSmootherHeadersToConfineTo = %s \n'%(G.dataSmootherHeadersToConfineTo)) - if G.rawSignalThresholdMethod == 'yes': - f6.write('rawSignalThresholdMethod = %s \n'%(G.rawSignalThresholdMethod)) + if G.applyRawSignalThresholds == 'yes': + f6.write('applyRawSignalThresholds = %s \n'%(G.applyRawSignalThresholds)) f6.write('rawSignalThresholdValue = %s \n'%(G.rawSignalThresholdValue)) f6.write('sensitivityThresholdValue = %s \n'%(G.sensitivityThresholdValue)) f6.write('rawSignalThresholdDivider = %s \n'%(G.rawSignalThresholdDivider)) @@ -5636,7 +5636,7 @@ def main(): if name.startswith("Exported") and name.endswith(".csv"): print("Previous run Exported file detected. Deleting file", name) os.remove(name) - print("Line 5500!!!!!", G.measuredReferenceYorN) + print("Line 5500!!!!!", G.tuningCorrection) # #The below try statement is to check the user input dictionary's existence. Older MSRESOLVE did not use a dictionary. # for now, these types of lines are at the bottom of the UserInput and DefaultUserInput files. I'm considering keeping there permanently and then deleting these commented out lines. #from userInputValidityFunctions import parseUserInput, userInputValidityCheck, settingsCompatibilityCheck, #settingsDependenciesCheck,populateModuleVariablesFromDictionary,populateModuleVariablesFromNestedDictionary @@ -5685,16 +5685,16 @@ def main(): #if this is not the first iterative run, then the required files are all stored in the highest iteration directory if G.iterativeAnalysis and G.iterationNumber != 1: - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterationDirectoryPreparation(G.iterativeAnalysis, G.iterationNumber) #This function also changes the working directory #Read in the molecules used before parsing the user input file - G.referenceFileNamesList = parse.listCast(G.referenceFileNamesList) - G.referenceFormsList = parse.listCast(G.referenceFormsList) - G.moleculesNames = getMoleculesFromReferenceData(G.referenceFileNamesList[0]) + G.referencePatternsFileNamesList = parse.listCast(G.referencePatternsFileNamesList) + G.referencePatternsFormsList = parse.listCast(G.referencePatternsFormsList) + G.moleculesNames = getMoleculesFromReferenceData(G.referencePatternsFileNamesList[0]) #If a tuning correction is going to be done, we'll make a mixed reference pattern. #G.moleculesNamesExtended needs to be populated before the first tuning correction and before parsing of userinput. - if str(G.measuredReferenceYorN).lower() == 'yes': + if str(G.tuningCorrection).lower() == 'yes': G.moleculesNamesExistingTuning = getMoleculesFromReferenceData(G.referenceFileExistingTuningAndForm[0]) moleculesToAddToReferencePattern = [] for moleculeName in list(G.moleculesNamesExistingTuning): @@ -5704,24 +5704,24 @@ def main(): moleculesToAddToReferencePattern.append(moleculeName) G.moleculesNamesExtended = list(G.moleculesNames) + list(moleculesToAddToReferencePattern) #We are reading the experimental data in and this must be before user input processing so we have the mass fragments - G.exp_mass_fragment_numbers = getMassFragmentsFromCollectedData(G.collectedFileName) + G.exp_mass_fragment_numbers = getMassFragmentsFromCollectedData(G.dataToAnalyzeFileName) #Save an MSReference object containing all molecules and an MSData object containing all mass fragments if G.iterativeAnalysis and G.iterationNumber != 1: #If using iterative and not on the first iteration we will need to remove _iter_x from the file names - AllMoleculesReferenceFileNamesList = [] #Initialize AllMoleculesReferenceDataList as an empty list - for referenceFileNameIndex in range(len(G.referenceFileNamesList)): #Loop through the reference file names list - AllMoleculesReferenceFileName = remove_iter_fromFileName(G.referenceFileNamesList[referenceFileNameIndex]) #Remove the _iter_ from the name so the program has the original filename to access from the parent directory + AllMoleculesreferencePatternsFileNamesList = [] #Initialize AllMoleculesReferenceDataList as an empty list + for referenceFileNameIndex in range(len(G.referencePatternsFileNamesList)): #Loop through the reference file names list + AllMoleculesReferenceFileName = remove_iter_fromFileName(G.referencePatternsFileNamesList[referenceFileNameIndex]) #Remove the _iter_ from the name so the program has the original filename to access from the parent directory AllMoleculesReferenceDataFilePath = os.path.normpath(os.path.join(os.curdir, os.pardir,AllMoleculesReferenceFileName)) #This function will get the path of the reference file from the parent directory - AllMoleculesReferenceFileNamesList.append(AllMoleculesReferenceDataFilePath) #Append the path to the list and the program will read the reference file from the path name - AllMassFragmentsExperimentDataFileName = remove_iter_fromFileName(G.collectedFileName) #Remove _iter_ from the data filename so the program has the original filename to access from the parent directory + AllMoleculesreferencePatternsFileNamesList.append(AllMoleculesReferenceDataFilePath) #Append the path to the list and the program will read the reference file from the path name + AllMassFragmentsExperimentDataFileName = remove_iter_fromFileName(G.dataToAnalyzeFileName) #Remove _iter_ from the data filename so the program has the original filename to access from the parent directory AllMassFragmentsExperimentDataFileNamePath = os.path.normpath(os.path.join(os.curdir, os.pardir, AllMassFragmentsExperimentDataFileName)) #This function will get the path of the data file from the parent directory else: #Otherwise not running iterative or in the first iteration, just copy the filename - AllMoleculesReferenceFileNamesList = copy.copy(G.referenceFileNamesList) - AllMassFragmentsExperimentDataFileNamePath = copy.copy(G.collectedFileName) + AllMoleculesreferencePatternsFileNamesList = copy.copy(G.referencePatternsFileNamesList) + AllMassFragmentsExperimentDataFileNamePath = copy.copy(G.dataToAnalyzeFileName) #Create the MSReference and MSData objects containing all molecules and all mass fragments, respectively - [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_collectedFileName]=readDataFile(AllMassFragmentsExperimentDataFileNamePath) - AllMassFragmentsExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, collectedFileName=exp_collectedFileName) - AllMoleculesReferenceDataList = GenerateReferenceDataList(AllMoleculesReferenceFileNamesList,G.referenceFormsList,G.AllMID_ObjectsDict) + [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_dataToAnalyzeFileName]=readDataFile(AllMassFragmentsExperimentDataFileNamePath) + AllMassFragmentsExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, dataToAnalyzeFileName=exp_dataToAnalyzeFileName) + AllMoleculesReferenceDataList = GenerateReferenceDataList(AllMoleculesreferencePatternsFileNamesList,G.referencePatternsFormsList,G.AllMID_ObjectsDict) #Then prepare AllMoleculesReferenceDataList to get reciprocal_matching_correction_values, this value is fed into RatioFinder for referenceObjectIndex in range(len(AllMoleculesReferenceDataList)): AllMoleculesReferenceDataList[referenceObjectIndex].ExportAtEachStep = 'no' @@ -5757,9 +5757,9 @@ def main(): global currentReferenceData global resultsObjects resultsObjects = {} - [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_collectedFileName]=readDataFile(G.collectedFileName) - ExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, collectedFileName=exp_collectedFileName) - ReferenceDataList = GenerateReferenceDataList(G.referenceFileNamesList,G.referenceFormsList,G.AllMID_ObjectsDict) + [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_dataToAnalyzeFileName]=readDataFile(G.dataToAnalyzeFileName) + ExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, dataToAnalyzeFileName=exp_dataToAnalyzeFileName) + ReferenceDataList = GenerateReferenceDataList(G.referencePatternsFileNamesList,G.referencePatternsFormsList,G.AllMID_ObjectsDict) ExperimentData.provided_mass_fragment_numbers = ExperimentData.mass_fragment_numbers #This is where the experimental uncertainties object first gets populated, but it does get modified later as masses are removed and time-points are removed. if type(G.collectedFileUncertainties) != type(None): @@ -5767,14 +5767,14 @@ def main(): G.collectedFileUncertainties = int(G.collectedFileUncertainties) #Prints a warning if the user has more reference files than specified time ranges - if len(G.referencePatternTimeRanges) > 0 and (len(G.referenceFileNamesList) > len(G.referencePatternTimeRanges)): + if len(G.referencePatternTimeRanges) > 0 and (len(G.referencePatternsFileNamesList) > len(G.referencePatternTimeRanges)): print("WARNING: There are more reference files given than time ranges") #save global variable into the class objects ExperimentData.ExportAtEachStep = G.ExportAtEachStep #if this is the first iterative run, then the reference and experimental files need to have been imported before the iteration can begin if G.iterativeAnalysis and G.iterationNumber == 1 : - #implied arguments for the following function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for the following function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterationFirstDirectoryPreparation(G.iterativeAnalysis, G.iterationNumber) # Skip preProcessing all together if we are loading analyzed data @@ -5845,8 +5845,8 @@ def main(): #This codeblock is for the TuningCorrectorGasMixture feature. It should be before the prototypicalReferenceData is created. #A measured gas mixture spectrum is compared to a simulated gas mixture spectrum, and the tuning correction is then made accordingly. - if G.measuredReferenceYorN == 'yes': - if len(G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames']) > 0: + if G.tuningCorrection == 'yes': + if len(G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames']) > 0: ReferenceDataList = tuningCorrectorGasMixture(ReferenceDataList, G) #Creating prototypicalReferenceData which will be interrogated later for which molecules and masses to expect in the ReferenceDataObjects. prototypicalReferenceData = copy.deepcopy(ReferenceDataList[0]) @@ -5947,7 +5947,7 @@ def main(): G.csvFile, G.moleculesToRestrict, G.csvFileName,G.dataUpperBound, G.dataLowerBound, G.bruteIncrements, G.permutationNum] SLSChoices = [G.uniqueOrCommon, G.slsFinish, G.distinguished] - ThresholdList = [G.rawSignalThresholdMethod, G.rawSignalThresholdValue, G.sensitivityThresholdValue, + ThresholdList = [G.applyRawSignalThresholds, G.rawSignalThresholdValue, G.sensitivityThresholdValue, G.rawSignalThresholdDivider, G.rawSignalThresholdLimit, G.rawSignalThresholdLimitPercent] currentReferenceData = ReferenceDataList[0] #TODO this line is placeholder by charles to fix currentRefenceData issue until Alex has a better solution @@ -6024,7 +6024,7 @@ def main(): #TODO continued: I am putting some variables here to make that process easier by getting some of it done already, then only the user input file needs to be changed. #This feature is intended to remove molecules that have major fragments not observed. previously, it was done in a more complicated way. # now, to simplify things, is being used as a filter that simply sets standardized intensities in the reference patterns to zero. - G.excludeMoleculesIfSignificantFragmentNotObserved = G.rawSignalThresholdMethod + G.excludeMoleculesIfSignificantFragmentNotObserved = G.applyRawSignalThresholds G.minimumSignalRequired = G.rawSignalThresholdValue G.minimumStandardizedReferenceHeightToBeSignificant = G.sensitivityThresholdValue if G.excludeMoleculesIfSignificantFragmentNotObserved == 'yes': @@ -6098,7 +6098,7 @@ def main(): referenceAfterFiltering = currentReferenceData slsSolvedMasses = G.massesUsedInSolvingMoleculesForThisPoint if 0 in slsSolvedMasses: - print("The concentrations are currently not completely solvable by SLS at this time so implicitSLScorrection is being skipped and changed to False. One option to consider is increasing UserChoices['minimalReferenceValue']['referenceValueThreshold'] to a highernumber." ) + print("The concentrations are currently not completely solvable by SLS at this time so implicitSLScorrection is being skipped and changed to False. One option to consider is increasing UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] to a highernumber." ) G.implicitSLScorrection = False else: #Now need to move the class out of this area. Currently test 2 is taking 0.08 to 0.20 anlaysis time versus 0.014 for test_1. diff --git a/ExampleTuningCorrectorGasMixture/MSRESOLVEBad1.py b/ExampleTuningCorrectorGasMixture/MSRESOLVEBad1.py index 51b7f093..8e78dcc2 100644 --- a/ExampleTuningCorrectorGasMixture/MSRESOLVEBad1.py +++ b/ExampleTuningCorrectorGasMixture/MSRESOLVEBad1.py @@ -381,7 +381,7 @@ def ABCDetermination(ReferencePatternExistingTuning_FileNameAndForm, ReferencePa ''' - if G.minimalReferenceValue !='yes': + if G.applyReferenceMassFragmentsThresholds !='yes': print("Warning: The ABCDetermination will occur without threshold filtering, since that setting is off.") if G.extractReferencePatternFromDataOption == 'yes': @@ -393,16 +393,16 @@ def ABCDetermination(ReferencePatternExistingTuning_FileNameAndForm, ReferencePa ReferencePatternExistingTuningDict['molecules']=molecules ReferencePatternExistingTuningDict['provided_reference_patterns'] = provided_reference_patterns ReferencePatternExistingTuningDict['provided_reference_patterns'] = StandardizeReferencePattern(ReferencePatternExistingTuningDict['provided_reference_patterns'],len(molecules)) #this does have the molecular weight as the first column. - if G.minimalReferenceValue =='yes': - ReferencePatternExistingTuningDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternExistingTuningDict['provided_reference_patterns'],G.referenceValueThreshold) + if G.applyReferenceMassFragmentsThresholds =='yes': + ReferencePatternExistingTuningDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternExistingTuningDict['provided_reference_patterns'],G.referenceMassFragmentFilterThreshold) ReferencePatternDesiredTuningDict = {} [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form] = readReferenceFile(*ReferencePatternDesiredTuning_FileNameAndForm) ReferencePatternDesiredTuningDict['molecules']=molecules ReferencePatternDesiredTuningDict['provided_reference_patterns'] = provided_reference_patterns ReferencePatternDesiredTuningDict['provided_reference_patterns'] = StandardizeReferencePattern(ReferencePatternDesiredTuningDict['provided_reference_patterns'],len(molecules)) #this does have the molecular weight as the first column. - if G.minimalReferenceValue =='yes': - ReferencePatternDesiredTuningDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternDesiredTuningDict['provided_reference_patterns'],G.referenceValueThreshold) + if G.applyReferenceMassFragmentsThresholds =='yes': + ReferencePatternDesiredTuningDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternDesiredTuningDict['provided_reference_patterns'],G.referenceMassFragmentFilterThreshold) ''' Step 3a: Truncate to the molecules which match. @@ -500,16 +500,16 @@ def ABCDetermination(ReferencePatternExistingTuning_FileNameAndForm, ReferencePa #this function either creates or gets the three coefficients for the polynomial correction (Tuning Correction) and calculates #the correction factor for the relative intensities of each mass fragment, outputting a corrected set #of relative intensities -def TuningCorrector(referenceDataArrayWithAbscissa,referenceCorrectionCoefficients, referenceCorrectionCoefficients_cov, referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm,measuredReferenceYorN): +def TuningCorrector(referenceDataArrayWithAbscissa,referenceCorrectionCoefficients, referenceCorrectionCoefficients_cov, referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm,tuningCorrection): #Tuning corrector is designed to work with standardized_reference_patterns, so first we make sure standardize the data. referenceDataArrayWithAbscissa=StandardizeReferencePattern(referenceDataArrayWithAbscissa) if type(referenceCorrectionCoefficients) == type({}):#check if it's a dictionary. If it is, we need to make it a list. referenceCorrectionCoefficients = [referenceCorrectionCoefficients['A'],referenceCorrectionCoefficients['B'],referenceCorrectionCoefficients['C']] - if measuredReferenceYorN =='yes': + if tuningCorrection =='yes': print("line 520!!!!!") if referenceFileDesiredTuningAndForm == []:#TODO: this isn't very good logic, but it allows automatic population of referenceFileDesiredTuningAndForm. The problem is it is reading from file again instead of using the already made ReferenceData object. ABCDetermination and possibly TuningCorrector should be changed so that it can take *either* a ReferenceData object **or** a ReferenceData filename. The function can check if it is receiving a string, and if it's not receiving a string it can assume it's receiving an object. print("line 522!!!!!") - referenceFileDesiredTuningAndForm = [ "ExportedDesiredTuningReferencePattern.csv","xyyy" ] #Take the first item from G.referenceFileNamesList and from G.referenceFormsList. + referenceFileDesiredTuningAndForm = [ "ExportedDesiredTuningReferencePattern.csv","xyyy" ] #Take the first item from G.referencePatternsFileNamesList and from G.referencePatternsFormsList. abcCoefficients, abcCoefficients_cov = ABCDetermination(referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm) referenceCorrectionCoefficients[0],referenceCorrectionCoefficients[1],referenceCorrectionCoefficients[2]= abcCoefficients G.referenceCorrectionCoefficients = referenceCorrectionCoefficients #TODO: Maybe this logic should be changed, since it will result in an exporting of the last coefficients used, whether a person is doing forward tuning or reverse tuning. @@ -600,9 +600,9 @@ def tuningCorrectorGasMixture(ReferenceDataList, G): #making it clear that there for moleculeIndex,moleculeName in enumerate(ReferenceDataExistingTuning.molecules): desiredConcentrationIndex = moleculeIndex #Take the concentration if it's named: - if moleculeName in G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames']: - currentConcentrationIndex = list(G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames']).index(moleculeName) - knownConcentrationsArray[desiredConcentrationIndex] = G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureConcentrations'][currentConcentrationIndex] + if moleculeName in G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames']: + currentConcentrationIndex = list(G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames']).index(moleculeName) + knownConcentrationsArray[desiredConcentrationIndex] = G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureConcentrations'][currentConcentrationIndex] else: #else set it to zero. knownConcentrationsArray[desiredConcentrationIndex] = 0 #The first item in the concentrations array is supposed to be the time. We will simply put the integer "1" there, since we will have one point. @@ -630,7 +630,7 @@ def tuningCorrectorGasMixture(ReferenceDataList, G): #making it clear that there print('line 646') ReferenceDataExistingTuningAfterCorrection = copy.deepcopy(ReferenceDataExistingTuning) #just initializing here, then actual tuning correction occurs in next lines. #Tuning corrector does not operate on a ReferenceData object, it operates on standardized reference patterns. - ReferenceDataExistingTuningAfterCorrection.standardized_reference_patterns, ReferenceDataExistingTuningAfterCorrection.standardized_reference_patterns_tuning_uncertainties = TuningCorrector(ReferenceDataExistingTuning.standardized_reference_patterns, G.referenceCorrectionCoefficients, G.referenceCorrectionCoefficients_cov, referenceFileExistingTuningAndForm=["TuningCorrectorGasMixtureSimulatedHypotheticalReferenceData.csv","XYYY"], referenceFileDesiredTuningAndForm=["TuningCorrectorGasMixtureMeasuredHypotheticalReferenceData.csv", "XYYY"], measuredReferenceYorN =G.measuredReferenceYorN) + ReferenceDataExistingTuningAfterCorrection.standardized_reference_patterns, ReferenceDataExistingTuningAfterCorrection.standardized_reference_patterns_tuning_uncertainties = TuningCorrector(ReferenceDataExistingTuning.standardized_reference_patterns, G.referenceCorrectionCoefficients, G.referenceCorrectionCoefficients_cov, referenceFileExistingTuningAndForm=["TuningCorrectorGasMixtureSimulatedHypotheticalReferenceData.csv","XYYY"], referenceFileDesiredTuningAndForm=["TuningCorrectorGasMixtureMeasuredHypotheticalReferenceData.csv", "XYYY"], tuningCorrection =G.tuningCorrection) # TuningCorrectorGasMixtureCorrectedReferenceDataObject = MSReference(ReferenceDataExistingTuning.standardized_reference_patterns, electronnumbers=ReferenceDataExistingTuning.electronnumbers, molecules=ReferenceDataExistingTuning.molecules, molecularWeights=ReferenceDataExistingTuning.molecularWeights, SourceOfFragmentationPatterns=ReferenceDataExistingTuning.SourceOfFragmentationPatterns, sourceOfIonizationData=ReferenceDataExistingTuning.sourceOfIonizationData, relativeIonizationEfficiencies=ReferenceDataExistingTuning.relativeIonizationEfficiencies, moleculeIonizationType=ReferenceDataExistingTuning.moleculeIonizationType) ReferenceDataExistingTuningAfterCorrection.addSuffixToSourceOfFragmentationPatterns("_TuningCorrected") @@ -697,7 +697,7 @@ def tuningCorrectorGasMixture(ReferenceDataList, G): #making it clear that there if ReferenceDataList[ReferenceDataIndex].ExportAtEachStep == 'yes': print("line 685", ReferenceDataList[ReferenceDataIndex].relativeIonizationEfficiencies) print("line 686", ReferenceDataList[ReferenceDataIndex].sourceOfIonizationData) - print(G.UserChoices['minimalReferenceValue']['referenceValueThreshold']) + print(G.UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold']) ReferenceDataList[ReferenceDataIndex].ExportCollector('StandardizedReferencePattern', use_provided_reference_patterns=False) ReferenceDataList[ReferenceDataIndex].exportReferencePattern("TuningCorrectorMixedPattern.csv") @@ -709,20 +709,20 @@ def tuningCorrectorGasMixture(ReferenceDataList, G): #making it clear that there #this function eliminates (neglects) reference intensities that are below a certain threshold. Useful for solving #data that is giving negatives or over emphasizing small mass fragments,by assuming no contribution from the molecule at that mass fragment. -def ReferenceThresholdFilter(referenceDataArrayWithAbscissa,referenceValueThreshold): +def ReferenceThresholdFilter(referenceDataArrayWithAbscissa,referenceMassFragmentFilterThreshold): numMolecules = len(referenceDataArrayWithAbscissa[0]-1) - if numMolecules > len(list(referenceValueThreshold)): - referenceValueThreshold = list(referenceValueThreshold)* numMolecules + if numMolecules > len(list(referenceMassFragmentFilterThreshold)): + referenceMassFragmentFilterThreshold = list(referenceMassFragmentFilterThreshold)* numMolecules referenceDataArray = referenceDataArrayWithAbscissa[:,1:] #all the data except the line of abscissa- mass fragment numbers for columncounter in range(len(referenceDataArray[0,:])):#goes through all columns in all rows in reference (this loop is one molecule at a time) for rowcounter in range(len(referenceDataArray[:,0])):#goes through all rows in references (one mass fragment at a time) - if len(referenceValueThreshold) == 1: #this is for if a single value was provided for referenceValueThreshold - if referenceDataArray[rowcounter,columncounter] < referenceValueThreshold[0]: + if len(referenceMassFragmentFilterThreshold) == 1: #this is for if a single value was provided for referenceMassFragmentFilterThreshold + if referenceDataArray[rowcounter,columncounter] < referenceMassFragmentFilterThreshold[0]: referenceDataArray[rowcounter,columncounter] = 0 #made to be equal to zero # (len(referenceDataArray[:,0])) #this is masses. # (len(referenceDataArray[0,:])) #this is molecules - else: #this is for if values of referenceValueThreshold were provided for each molecule. - if referenceDataArray[rowcounter,columncounter] < referenceValueThreshold[columncounter]: + else: #this is for if values of referenceMassFragmentFilterThreshold were provided for each molecule. + if referenceDataArray[rowcounter,columncounter] < referenceMassFragmentFilterThreshold[columncounter]: referenceDataArray[rowcounter,columncounter] = 0 #made to be equal to zero referenceDataArrayWithAbscissa[:,1:] = referenceDataArray #this puts changed referenceData back with mass fragment numbers return referenceDataArrayWithAbscissa @@ -1448,7 +1448,7 @@ def createReferencePatternWithTuningCorrection(ReferenceData, verbose=True): if type(G.referenceFileUncertainties) != type(None): ReferenceData.update_relative_standard_uncertainties() #Skip much of the function if using tuningCorrectorGasMixtureMoleculeNames - if len(G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames']) == 0: + if len(G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames']) == 0: if verbose: print('beginning TuningCorrector') if G.referenceFileExistingTuningAndForm == []: #Mkae the current reference data the Existing Tuning pattern. @@ -1464,7 +1464,7 @@ def createReferencePatternWithTuningCorrection(ReferenceData, verbose=True): ReferenceData.standardized_reference_patterns, ReferenceData.standardized_reference_patterns_tuning_uncertainties = TuningCorrector(ReferenceData.standardized_reference_patterns, G.referenceCorrectionCoefficients,G.referenceCorrectionCoefficients_cov, G.referenceFileExistingTuningAndForm, G.referenceFileDesiredTuningAndForm, - G.measuredReferenceYorN) + G.tuningCorrection) ReferenceData.ExportCollector('TuningCorrector', use_provided_reference_patterns=False) #TuningCorrector un-standardizes the patterns, so the patterns have to be standardized again. ReferenceData.standardized_reference_patterns=StandardizeReferencePattern(ReferenceData.standardized_reference_patterns,len(ReferenceData.molecules)) @@ -1495,10 +1495,10 @@ def ReferenceInputPreProcessing(ReferenceData, verbose=True): #TODO: the minimal reference value can cause inaccuracies if interpolating between multiple reference patterns if one pattern has a value rounded to 0 and the other does not #TODO: option 1: this issue can be fixed by moving this to after interpolation #TODO: option 2: Or we can below assign to preprocessed_reference_pattern rather than standardized_reference_patterns and then use that in data analysis (Note that interpolate would continue to use standardized_reference_patterns as well as preprocess the output) - if G.minimalReferenceValue == 'yes': + if G.applyReferenceMassFragmentsThresholds == 'yes': if G.implicitSLScorrection == True: #This feature requires us to have unfiltered reference patterns to do an implicit/recursive correction at the end. G.currentReferenceDataUnfiltered = copy.deepcopy(ReferenceData) #Make a copy before any filtering occurs. There is an implied return in global variable. - ReferenceData.standardized_reference_patterns = ReferenceThresholdFilter(ReferenceData.standardized_reference_patterns,G.referenceValueThreshold) + ReferenceData.standardized_reference_patterns = ReferenceThresholdFilter(ReferenceData.standardized_reference_patterns,G.referenceMassFragmentFilterThreshold) ReferenceData.ExportCollector('ReferenceThresholdFilter') #As the program is currently written, this function is called to act upon already threshold filtered standardized reference patterns which could cause innaccuracy. @@ -1515,22 +1515,22 @@ def ReferenceInputPreProcessing(ReferenceData, verbose=True): return ReferenceData ''' -GenerateReferenceDataAndFormsList takes in the list of referenceFileNamesList and the +GenerateReferenceDataAndFormsList takes in the list of referencePatternsFileNamesList and the list of forms. A list is generated containing MSReference objects created based on the referenceFileName and the corresponding form It allows MSRESOLVE to be backwards compatible with previous user input files ''' -def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_ObjectsDict={}): - #referenceFormsList can take values of 'xyyy' or 'xyxy' and must be a string - ##If referenceFileNamesList is a string or if form is a string then make them lists - if isinstance(referenceFileNamesList,str): - referenceFileNamesList = [referenceFileNamesList] - if isinstance(referenceFormsList,str): - referenceFormsList = [referenceFormsList] - #If referenceFileNamesList and forms are lists of 1 then create a list of the single MSReference object +def GenerateReferenceDataList(referencePatternsFileNamesList,referencePatternsFormsList,AllMID_ObjectsDict={}): + #referencePatternsFormsList can take values of 'xyyy' or 'xyxy' and must be a string + ##If referencePatternsFileNamesList is a string or if form is a string then make them lists + if isinstance(referencePatternsFileNamesList,str): + referencePatternsFileNamesList = [referencePatternsFileNamesList] + if isinstance(referencePatternsFormsList,str): + referencePatternsFormsList = [referencePatternsFormsList] + #If referencePatternsFileNamesList and forms are lists of 1 then create a list of the single MSReference object #This allows MSRESOLVE to be backwards compatible with previous user input files while still incorporating the reference pattern time chooser feature - if len(referenceFormsList) == 1 and len(referenceFileNamesList) == 1: - [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referenceFileNamesList[0],referenceFormsList[0]) + if len(referencePatternsFormsList) == 1 and len(referencePatternsFileNamesList) == 1: + [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referencePatternsFileNamesList[0],referencePatternsFormsList[0]) ReferenceDataList = [MSReference(provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName=referenceFileName, form=form, AllMID_ObjectsDict=AllMID_ObjectsDict)] #save each global variable into the class objects ReferenceDataList[0].ExportAtEachStep = G.ExportAtEachStep @@ -1551,7 +1551,7 @@ def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_O ReferenceDataList[0].absolute_standard_uncertainties = absolute_standard_uncertainties #We can't convert to relative uncertainties yet because the file may not be standardized yet. if type(G.referenceFileUncertainties) == type('string'): - provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referenceFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referenceFormsList[0]) + provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referencePatternsFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referencePatternsFormsList[0]) ReferenceDataList[0].absolute_standard_uncertainties = provided_reference_patterns_absolute_uncertainties #Just initializing the variable before filling it properly. maximum_absolute_intensities = numpy.amax(ReferenceDataList[0].provided_reference_patterns[:,1:], axis = 0) #Find the maximum intensity for each molecule. ReferenceDataList[0].absolute_standard_uncertainties[:,1:] = 100*ReferenceDataList[0].absolute_standard_uncertainties[:,1:]/maximum_absolute_intensities @@ -1562,22 +1562,22 @@ def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_O ReferenceDataList[0].update_relative_standard_uncertainties() return ReferenceDataList #Otherwise we have multiple reference files and forms - #If just one form is used, make a list of forms that is the same length as referenceFileNamesList - if len(referenceFormsList) == 1: - #Generate a copy of referenceFileNamesList to be overwritten with forms - listOfForms = copy.copy(referenceFileNamesList) + #If just one form is used, make a list of forms that is the same length as referencePatternsFileNamesList + if len(referencePatternsFormsList) == 1: + #Generate a copy of referencePatternsFileNamesList to be overwritten with forms + listOfForms = copy.copy(referencePatternsFileNamesList) #replace each value with the given form - for i in range(len(referenceFileNamesList)): - listOfForms[i] = referenceFormsList[0] - #If list of forms is the same length of referenceFileNamesList then each form should correspond to the referenceFile of the same index - elif len(referenceFormsList) == len(referenceFileNamesList): + for i in range(len(referencePatternsFileNamesList)): + listOfForms[i] = referencePatternsFormsList[0] + #If list of forms is the same length of referencePatternsFileNamesList then each form should correspond to the referenceFile of the same index + elif len(referencePatternsFormsList) == len(referencePatternsFileNamesList): #So just set listOfForms equal to forms - listOfForms = referenceFormsList + listOfForms = referencePatternsFormsList #Initialize ReferenceDataList so it can be appended to ReferenceDataList = [] #For loop to generate each MSReferenceObject and append it to a list - for i in range(len(referenceFileNamesList)): - [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referenceFileNamesList[i],listOfForms[i]) + for i in range(len(referencePatternsFileNamesList)): + [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referencePatternsFileNamesList[i],listOfForms[i]) ReferenceDataList.append(MSReference(provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName=referenceFileName, form=form, AllMID_ObjectsDict=AllMID_ObjectsDict)) #save each global variable into the class objects ReferenceDataList[i].ExportAtEachStep = G.ExportAtEachStep @@ -1598,7 +1598,7 @@ def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_O ReferenceDataList[i].absolute_standard_uncertainties = absolute_standard_uncertainties #We can't convert to relative uncertainties yet because the file may not be standardized yet. if type(G.referenceFileUncertainties) == type('string'): - provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referenceFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referenceFormsList[i]) + provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referencePatternsFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referencePatternsFormsList[i]) ReferenceDataList[i].absolute_standard_uncertainties = provided_reference_patterns_absolute_uncertainties #Just initializing the variable before filling it properly. maximum_absolute_intensities = numpy.amax(ReferenceDataList[i].provided_reference_patterns[:,1:], axis = 0) #Find the maximum intensity for each molecule. ReferenceDataList[i].absolute_standard_uncertainties[:,1:] = ReferenceDataList[i].absolute_standard_uncertainties[:,1:]/maximum_absolute_intensities @@ -1951,50 +1951,50 @@ def IterativeDirectoryChange(iterativeAnalysis, iterationNumber): os.chdir(iterationDirectoryName) #this will be changed back at the end of the program def IterationDirectoryPreparation(iterativeAnalysis, iterationNumber): - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterativeDirectoryChange(iterativeAnalysis, iterationNumber) #naming for collected file #record the old file names - G.oldcollectedFileName = G.collectedFileName + G.oldDataToAnalyzeFileName = G.dataToAnalyzeFileName #construct the file names for the current run of the program #TODO FIXME, This syntax with -21 will not allow iterative to be compatible with more than 9 iterations - collectedFileNameTemp = str(G.collectedFileName)[:-21] + str(G.iterationSuffix) + str(G.collectedFileName)[-4:] + dataToAnalyzeFileNameTemp = str(G.dataToAnalyzeFileName)[:-21] + str(G.iterationSuffix) + str(G.dataToAnalyzeFileName)[-4:] #copy the experimental and reference files into new names for this iterative run - shutil.copy(G.collectedFileName, collectedFileNameTemp) + shutil.copy(G.dataToAnalyzeFileName, dataToAnalyzeFileNameTemp) #change the globals to reflect the renaming of the ref and exp files - G.collectedFileName = collectedFileNameTemp + G.dataToAnalyzeFileName = dataToAnalyzeFileNameTemp #construct file names for the next run of the program #TODO FIXME, This syntax with -11 will not allow iterative to be compatible with more than 9 iterations - G.nextExpFileName = G.collectedFileName[:-11] + str('_remaining') + G.collectedFileName[-11:] + G.nextExpFileName = G.dataToAnalyzeFileName[:-11] + str('_remaining') + G.dataToAnalyzeFileName[-11:] #naming for reference files G.oldReferenceFileName = [] G.nextRefFileName = [] - for RefIndex, RefName in enumerate(G.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.referencePatternsFileNamesList): #a list #record the old file names G.oldReferenceFileName.append(RefName) #construct the file names for the current run of the program #TODO FIXME, This syntax with -18 will not allow iterative to be compatible with more than 9 iterations - referenceFileNameTemp = G.referenceFileNamesList[RefIndex][:-18] + str(G.iterationSuffix) + G.referenceFileNamesList[RefIndex][-4:] + referenceFileNameTemp = G.referencePatternsFileNamesList[RefIndex][:-18] + str(G.iterationSuffix) + G.referencePatternsFileNamesList[RefIndex][-4:] #copy the experimental and reference files into new names for this iterative run shutil.copy(RefName, referenceFileNameTemp) #change the globals to reflect the renaming of the ref and exp files - G.referenceFileNamesList[RefIndex] = referenceFileNameTemp + G.referencePatternsFileNamesList[RefIndex] = referenceFileNameTemp #construct file names for the next run of the program #TODO FIXME, This syntax with -18 will not allow iterative to be compatible with more than 9 iterations G.nextRefFileName.append(RefName[:-18] + '_unused_iter_%s' %G.iterationNumber + RefName[-4:]) return None - #implied returns: G.oldReferenceFileName, G.oldcollectedFileName, G.referenceFileNamesList,G.collectedFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber + #implied returns: G.oldReferenceFileName, G.oldDataToAnalyzeFileName, G.referencePatternsFileNamesList,G.dataToAnalyzeFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber def IterationFirstDirectoryPreparation(iterativeAnalysis,iterationNumber): - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName #this global value is set so that each export statement can label the output files correctly G.iterationNumber = iterationNumber @@ -2013,27 +2013,27 @@ def IterationFirstDirectoryPreparation(iterativeAnalysis,iterationNumber): AppendListToFile("__var_list__", G.__var_list__, "UserInput_iter_1.py", float('Inf')) #record the old file names - G.oldcollectedFileName = G.collectedFileName + G.oldDataToAnalyzeFileName = G.dataToAnalyzeFileName #construct the file names for the first run of the program - G.collectedFileName = G.collectedFileName[:-4] + str(G.iterationSuffix) + G.collectedFileName[-4:] + G.dataToAnalyzeFileName = G.dataToAnalyzeFileName[:-4] + str(G.iterationSuffix) + G.dataToAnalyzeFileName[-4:] #construct file names for the second run of the program #TODO FIXME, This syntax with -11 will not allow iterative to be compatible with more than 9 iterations - G.nextExpFileName = G.collectedFileName[:-11] + '_remaining_iter_1' + G.collectedFileName[-4:] + G.nextExpFileName = G.dataToAnalyzeFileName[:-11] + '_remaining_iter_1' + G.dataToAnalyzeFileName[-4:] G.oldReferenceFileName = [] - for RefIndex, RefName in enumerate(G.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.referencePatternsFileNamesList): #a list G.oldReferenceFileName.append(RefName) #construct the file names for the first run of the program - G.referenceFileNamesList[RefIndex] = G.referenceFileNamesList[RefIndex][:-4] + str(G.iterationSuffix) + G.referenceFileNamesList[RefIndex][-4:] + G.referencePatternsFileNamesList[RefIndex] = G.referencePatternsFileNamesList[RefIndex][:-4] + str(G.iterationSuffix) + G.referencePatternsFileNamesList[RefIndex][-4:] #construct file names for the second run of the program G.nextRefFileName.append(RefName[:-4] + '_unused_iter_1' + RefName[-4:]) return None - #implied returns: G.oldReferenceFileName, G.oldcollectedFileName, G.referenceFileNamesList,G.collectedFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber + #implied returns: G.oldReferenceFileName, G.oldDataToAnalyzeFileName, G.referencePatternsFileNamesList,G.dataToAnalyzeFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber #The IterativeAnalysisDirectory and Variable Population function is used to shrink the size of the program analysis and redirect the output. def IADirandVarPopulation(iterativeAnalysis, chosenMassFragments, chosenMolecules, ExperimentData, ExperimentDataFullCopy, ReferenceDataList, ReferenceDataListFullCopy): - #implied arguments: G.dataSimulation, G.referenceFileNamesList, G.collectedFileName, G.nextRefFileName, G.oldReferenceFileName, G.chosenMoleculesNames, G.iterationNumber + #implied arguments: G.dataSimulation, G.referencePatternsFileNamesList, G.dataToAnalyzeFileName, G.nextRefFileName, G.oldReferenceFileName, G.chosenMoleculesNames, G.iterationNumber #override data simulation to yes if it was not selected if G.dataSimulation != 'yes': print("Iterative analysis cannot find the remaining signals in the experiment without signal simulation being run.") @@ -2063,11 +2063,11 @@ def IADirandVarPopulation(iterativeAnalysis, chosenMassFragments, chosenMolecule for RefObjectIndex, RefObject in enumerate(ReferenceDataList): #a list #Export current Reference Data #Reference data is trimmed prior to this function - ExportXYYYData(G.referenceFileNamesList[RefObjectIndex], RefObject.provided_reference_patterns, RefObject.molecules, abscissaHeader = 'M/Z') + ExportXYYYData(G.referencePatternsFileNamesList[RefObjectIndex], RefObject.provided_reference_patterns, RefObject.molecules, abscissaHeader = 'M/Z') #Export current Experimental Data #Experimental data is trimmed prior to this function, but it still needs to be exported - ExportXYYYData(G.collectedFileName, ExperimentData.workingData, ExperimentData.mass_fragment_numbers, + ExportXYYYData(G.dataToAnalyzeFileName, ExperimentData.workingData, ExperimentData.mass_fragment_numbers, abscissaHeader = ExperimentData.abscissaHeader, dataType = 'preProcessed', rowIndex = ExperimentData.times) for RefObjectIndex, RefObject in enumerate(ReferenceDataList): #a list @@ -2168,8 +2168,8 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): G.nextUserInputModule.__var_list__ = G.__var_list__ #save the new file name for the next user input file - G.nextUserInputModule.collectedFileName = G.nextExpFileName - G.nextUserInputModule.referenceFileNamesList = G.nextRefFileName + G.nextUserInputModule.dataToAnalyzeFileName = G.nextExpFileName + G.nextUserInputModule.referencePatternsFileNamesList = G.nextRefFileName #updating the selected molecules for the next user input file G.nextUserInputModule.chosenMoleculesNames = G.unusedMolecules #Updating the selected masses for the next user input file @@ -2190,7 +2190,7 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): G.nextUserInputModule.scaleRawDataFactor = G.scaleRawDataFactor #Now going to overwrite parallelized variables with their original versions if they were set to length of chosen molecules. - delimitedStringOfVariablesToUnparallelize = 'moleculeLikelihoods, sensitivityValues, referenceValueThreshold, referenceSignificantFragmentThresholds' + delimitedStringOfVariablesToUnparallelize = 'moleculeLikelihoods, sensitivityValues, referenceMassFragmentFilterThreshold, referenceSignificantFragmentThresholds' listOfVariablesToUnparallelize = delimitedStringOfVariablesToUnparallelize.split(", ") #Note that we are using ", " as the delimeter, not just "," for variable in listOfVariablesToUnparallelize: G.nextUserInputModule.__dict__[variable]=G.beforeParsedGDict[variable] @@ -2207,14 +2207,14 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): #copy the experimental signals to the next iteration copyFromPath = os.path.join(os.curdir, os.pardir, str(iterationDirectoryName), - str(G.nextUserInputModule.collectedFileName)) + str(G.nextUserInputModule.dataToAnalyzeFileName)) shutil.copy(copyFromPath, os.getcwd()) - for RefIndex, RefName in enumerate(G.nextUserInputModule.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.nextUserInputModule.referencePatternsFileNamesList): #a list #copy the next reference file from the previous iteration folder to the next iteration folder copyFromPath = os.path.join(os.curdir, os.pardir, str(iterationDirectoryName), - str(G.nextUserInputModule.referenceFileNamesList[RefIndex])) + str(G.nextUserInputModule.referencePatternsFileNamesList[RefIndex])) shutil.copy(copyFromPath, os.getcwd()) #returning to the parent directory os.chdir('..') @@ -2242,17 +2242,17 @@ def IterativeAnalysisPostProcessing(ExperimentData, simulateddata, mass_fragment exportSimulatedSignalsSoFar(G.simulatedSignalsOutputName,iterationDirectoryName,G.iterationNumber) #subtract 1 from the iteration number since the iteration number has already been changed IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy) return None - #implied returns: G.referenceFileNamesList, G.collectedFileName, G.nextRefFileName, G.chosenMoleculesNames, G.iterationSuffix + #implied returns: G.referencePatternsFileNamesList, G.dataToAnalyzeFileName, G.nextRefFileName, G.chosenMoleculesNames, G.iterationSuffix ############################################################################### ######################### Functions to read data files ####################### ############################################################################### #These functions read in the experimental data file and the reference file. The #returned variables can then be used to initialize the respective classes. -def readDataFile(collectedFileName): +def readDataFile(dataToAnalyzeFileName): #read the csv file into a dataframe. dataFrame means "dataframe" and is a pandas object. - dataFrame = pandas.read_csv('%s' %collectedFileName, header=None) + dataFrame = pandas.read_csv('%s' %dataToAnalyzeFileName, header=None) ''' generate mass fragment list''' #select only the 2nd row down, all columns except for the first. #"iloc" is a pandas dataframe function. All it does is select a portion of the data. @@ -2295,7 +2295,7 @@ def readDataFile(collectedFileName): rawCollectedData = numpy.vstack((rawCollectedData,rawCollectedData)) - return mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName + return mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName #readReferenceFile is a helper function that reads the reference file in a certain form and returns the #variables and data that are used to initialize the class. It can read files both in XYYY and XYXY form. @@ -2561,10 +2561,10 @@ def getMoleculesFromReferenceData(ReferenceFileName): ''' getMassFragmentsFromCollectedData is a function that takes in the collected filename and returns the mass fragments present in the data ''' -def getMassFragmentsFromCollectedData(CollectedFileName): +def getMassFragmentsFromCollectedData(dataToAnalyzeFileName): #Read the csv file #TODO CHange to use numpy.gen_from_text instead of pandas - DataInfo = pandas.read_csv(CollectedFileName,header=0) + DataInfo = pandas.read_csv(dataToAnalyzeFileName,header=0) #Convert the data into an array DataInfoArray = numpy.array(DataInfo) #Get the names of mass fragments in collected data @@ -2635,9 +2635,9 @@ class MSData (object): #self.mass_fragment_numbers , 1D and must be integers #self.rawCollectedData, a 2D array of the signals. - def __init__(self, mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName=None): + def __init__(self, mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName=None): - self.mass_fragment_numbers, self.abscissaHeader, self.times, self.rawCollectedData, self.collectedFileName=mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName + self.mass_fragment_numbers, self.abscissaHeader, self.times, self.rawCollectedData, self.dataToAnalyzeFileName=mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName #class object variable created to allow class to be used separately from the program. self.ExportAtEachStep = '' @@ -3095,7 +3095,7 @@ def CombinationMaker(reciprocal_matching_correction_values,rawsignalsarrayline,m if combinations == []:#This function will not work without enough mass fragments, so the user must know the problem print('****************************************') print('Not enough matching mass fragments input') - print("This means that at some point in the analysis, there were not enough masses in the reference file to apply the inverse method. It could mean you have too many overlapping masses for the molecules you are trying to resolve. You can get around this by using the '#//Reference Mass Fragmentation Threshold//' feature to exclude tiny fragementation peaks. This would be done by setting the value to 'yes' for minimalReferenceValue feature with referenceValueThreshold, such as referenceValueThreshold = 5.0 . Alternatively, to be more targeted, if you know *which* fragmentation patterns could be overlapping, you could set those minor fragments to 0 in your reference pattern csv file. TODO: Print out the relevant masses here. This requires keeping track of when they are selected prior to combination maker, and possibly passing them as an additional argument.") + print("This means that at some point in the analysis, there were not enough masses in the reference file to apply the inverse method. It could mean you have too many overlapping masses for the molecules you are trying to resolve. You can get around this by using the '#//Reference Mass Fragmentation Threshold//' feature to exclude tiny fragementation peaks. This would be done by setting the value to 'yes' for applyReferenceMassFragmentsThresholds feature with referenceMassFragmentFilterThreshold, such as referenceMassFragmentFilterThreshold = 5.0 . Alternatively, to be more targeted, if you know *which* fragmentation patterns could be overlapping, you could set those minor fragments to 0 in your reference pattern csv file. TODO: Print out the relevant masses here. This requires keeping track of when they are selected prior to combination maker, and possibly passing them as an additional argument.") print('****************************************') combinations_len = len(combinations) correctionarray = numpy.zeros([1,num_molecules]) @@ -3358,7 +3358,7 @@ def InverseMethodDistinguished(monitored_reference_intensities,reciprocal_matchi try: numpy.linalg.det(reciprocal_matching_correction_values) except: - print("There is an error in a matrix operation evaluation: The number of feasible mass fragments to check is probably less than the number of molecules. This can happen if referenceValueThreshold is too strict, leaving not enough feasible fargments to consider. The program is probably about to crash.") + print("There is an error in a matrix operation evaluation: The number of feasible mass fragments to check is probably less than the number of molecules. This can happen if referenceMassFragmentFilterThreshold is too strict, leaving not enough feasible fargments to consider. The program is probably about to crash.") if numpy.linalg.det(reciprocal_matching_correction_values) != 0:#only solves if determinant is not equal to zero #Now we will solve with the inverse way, and also for uncertainties if that module is present. #The uncertainties module works well for matrix inverse, but not for dot product. So we make a custom function. @@ -3890,7 +3890,7 @@ def SLSUniqueFragments(molecules,monitored_reference_intensities,reciprocal_matc chosenMolecule = None tuplesOfUniqueFragmentsList = [] - if G.minimalReferenceValue == "yes": #We only will do some filtering things if it's requested. + if G.applyReferenceMassFragmentsThresholds == "yes": #We only will do some filtering things if it's requested. #Before going forward, we're going to make a variable called remaining_referenceSignificantFragmentThresholds, using a function. def get_remaining_referenceSignificantFragmentThresholds(referenceSignificantFragmentThresholds, molecules_unedited, remaining_molecules_SLS): remaining_referenceSignificantFragmentThresholds = list(copy.deepcopy(referenceSignificantFragmentThresholds)) @@ -3932,12 +3932,12 @@ def get_remaining_referenceSignificantFragmentThresholds(referenceSignificantFra #consideredMolecule = remaining_molecules_SLS[moleculeIndexOfUniqueIntensity] #This is for debugging purposes, this can be printed. #For debugging, also print remaining_reference_intensities_SLS and massFragmentIndex_i. #However, now we have a few lines of code to check if we are above the referenceSignificantFragmentThresholds. - if G.minimalReferenceValue == "yes": #We only check for the remaining_referenceSignificantFragmentThresholds if this option has been chosen. + if G.applyReferenceMassFragmentsThresholds == "yes": #We only check for the remaining_referenceSignificantFragmentThresholds if this option has been chosen. if (max(remaining_reference_intensities_SLS[massFragmentIndex_i]) < remaining_referenceSignificantFragmentThresholds[moleculeIndexOfUniqueIntensity]): #This allows separate referenceSignificantFragmentThresholds for each molecule. significantFragment = False #Set to false if the fragment is too small. else: significantFragment = True #This means the fragment is greater than or equal to the threshold for significance. - if G.minimalReferenceValue != "yes": #if the option is not selected, then all fragments are considered significant. + if G.applyReferenceMassFragmentsThresholds != "yes": #if the option is not selected, then all fragments are considered significant. significantFragment = True if significantFragment == True: #now make a tuple with the unique standardized intensity in the front so we can sort by that @@ -4568,7 +4568,7 @@ def SLSMethod(molecules,monitored_reference_intensities,reciprocal_matching_corr except: pass except IndexError: - print("Warning: SLS could not solve this problem. If you are already using SLS Common, you can try raising the referenceValueThreshold within the feature Reference Mass Fragmentation Threshold. Alternatively, you can try using inverse.") + print("Warning: SLS could not solve this problem. If you are already using SLS Common, you can try raising the referenceMassFragmentFilterThreshold within the feature Reference Mass Fragmentation Threshold. Alternatively, you can try using inverse.") solutions = numpy.array([None]) #This is just creating a numpy array with an element that has a None object, so that the main function can know that SLSMethod failed. if len(uncertainties_dict) > 0: #Note: the indexing in the solutions must match the original indexing, or errors will occur. Now we take the "filled up" solutions and put everything together. uncertainties_dict['concentrations_relative_uncertainties_one_time'] = uncertainties_dict['concentrations_relative_uncertainties_one_time_after_finisher'].transpose()*1.0 @@ -4612,7 +4612,7 @@ def RawSignalThresholdFilter (distinguished,reciprocal_matching_correction_value monitored_reference_intensities_copy = monitored_reference_intensities rawsignalsarray_copy = remaining_rawsignals_SLS summation = sum(rawsignalsarray_copy) - [rawSignalThresholdMethod,rawSignalThresholdValue,sensitivityThresholdValue,rawSignalThresholdDivider,rawSignalThresholdLimit,rawSignalThresholdLimitPercent] = ThresholdList + [applyRawSignalThresholds,rawSignalThresholdValue,sensitivityThresholdValue,rawSignalThresholdDivider,rawSignalThresholdLimit,rawSignalThresholdLimitPercent] = ThresholdList #this section of the code enables the function to eliminate from the raw signal array (for the purpose of this function only) #the highest value in the array, if it makes up over 90 percent of the raw signals present. This is useful because if one of #the signals does become this great then it will eliminate all the other signals present when it becomes very high @@ -4818,7 +4818,7 @@ def subtract_simulated_signals_of_specific_molecules(moleculeIndicesToSubtract, -#This function is intended to add back any concentration / intensity that was removed or distorted by reference fragmentation pattern high pass filtering (which is UserChoices['minimalReferenceValue']['referenceValueThreshold']). It also adds half of the difference to the uncertainties. As of 5/17/20, only a single recursion iteration is performed. +#This function is intended to add back any concentration / intensity that was removed or distorted by reference fragmentation pattern high pass filtering (which is UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold']). It also adds half of the difference to the uncertainties. As of 5/17/20, only a single recursion iteration is performed. #The corrections are performed from largest to smallest (in percentage), with only one molecule's correction per sls mass. That is, the effect of molecule A's filtering on molecule B's concentration, for example. A molecule can be its largest self correction (A to A). Each molecule is corrected in kind, so serial (stacked) correction is among the possibilities that can occur. #TODO: May 17 2020. Right now, we only take the LARGEST correction for each sls when deciding which sls mass to correct, then we apply that correction. But maybe we should take a single recursion of all molecules affecting? Then apply all molecules to that sls mass before moving to the next one? This would still be a single recursion, but would matter if (for example) a single molecule's sls was able to occur due to filtering out 20 other molecule's contributions at that mass. class referenceThresholdFilterCorrectingSandbox(): @@ -5382,9 +5382,9 @@ def PopulateLogFile(): filename6 = 'LogFile.txt' #the log file is printed here f6 = open(filename6,'a') f6.write('\n') - f6.write('referenceFileName = %s \n'%(G.referenceFileNamesList)) - f6.write('form = %s \n'%(G.referenceFormsList)) - f6.write('collectedFileName = %s \n'%(G.collectedFileName )) + f6.write('referenceFileName = %s \n'%(G.referencePatternsFileNamesList)) + f6.write('form = %s \n'%(G.referencePatternsFormsList)) + f6.write('dataToAnalyzeFileName = %s \n'%(G.dataToAnalyzeFileName )) if G.timeRangeLimit == 'yes':#some of the lines in the backgroundinput file don't need to be printed unless a selection is made, so the if statements here make that happen f6.write('timeRangeLimit = %s \n'%(G.timeRangeLimit)) f6.write('timeRangeStart = %s \n'%(G.timeRangeStart)) @@ -5393,8 +5393,8 @@ def PopulateLogFile(): f6.write('backgroundMassFragment = %s \n'%(G.backgroundMassFragment)) f6.write('backgroundSlopes = %s \n'%(G.backgroundSlopes)) f6.write('backgroundIntercepts = %s \n'%(G.backgroundIntercepts)) - if G.measuredReferenceYorN == 'yes': - f6.write('measuredReferenceYorN = %s \n'%G.measuredReferenceYorN) + if G.tuningCorrection == 'yes': + f6.write('tuningCorrection = %s \n'%G.tuningCorrection) f6.write('referenceCorrectionCoefficientA = %s \n'%(G.referenceCorrectionCoefficients[0])) f6.write('referenceCorrectionCoefficientB = %s \n'%(G.referenceCorrectionCoefficients[1])) f6.write('referenceCorrectionCoefficientC = %s \n'%(G.referenceCorrectionCoefficients[2])) @@ -5437,9 +5437,9 @@ def PopulateLogFile(): f6.write('rpcMoleculesToChange = %s \n'%(G.rpcMoleculesToChange)) f6.write('rpcMoleculesToChangeMF = %s \n'%(G.rpcMoleculesToChangeMF)) f6.write('rpcTimeRanges = %s \n'%(G.rpcTimeRanges)) - if G.minimalReferenceValue == 'yes': - f6.write('minimalReferenceValue = %s \n'%(G.minimalReferenceValue)) - f6.write('referenceValueThreshold = %s \n'%(G.referenceValueThreshold)) + if G.applyReferenceMassFragmentsThresholds == 'yes': + f6.write('applyReferenceMassFragmentsThresholds = %s \n'%(G.applyReferenceMassFragmentsThresholds)) + f6.write('referenceMassFragmentFilterThreshold = %s \n'%(G.referenceMassFragmentFilterThreshold)) f6.write('referenceSignificantFragmentThresholds = %s \n'%(G.referenceSignificantFragmentThresholds)) if G.lowerBoundThresholdChooser == 'yes': f6.write('lowerBoundThresholdChooser = %s \n'%(G.lowerBoundThresholdChooser)) @@ -5452,8 +5452,8 @@ def PopulateLogFile(): f6.write('dataSmootherTimeRadius = %s \n'%(G.dataSmootherTimeRadius)) f6.write('dataSmootherPointRadius = %s \n'%(G.dataSmootherPointRadius)) f6.write('dataSmootherHeadersToConfineTo = %s \n'%(G.dataSmootherHeadersToConfineTo)) - if G.rawSignalThresholdMethod == 'yes': - f6.write('rawSignalThresholdMethod = %s \n'%(G.rawSignalThresholdMethod)) + if G.applyRawSignalThresholds == 'yes': + f6.write('applyRawSignalThresholds = %s \n'%(G.applyRawSignalThresholds)) f6.write('rawSignalThresholdValue = %s \n'%(G.rawSignalThresholdValue)) f6.write('sensitivityThresholdValue = %s \n'%(G.sensitivityThresholdValue)) f6.write('rawSignalThresholdDivider = %s \n'%(G.rawSignalThresholdDivider)) @@ -5549,35 +5549,35 @@ def main(): #if this is not the first iterative run, then the required files are all stored in the highest iteration directory if G.iterativeAnalysis and G.iterationNumber != 1: - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterationDirectoryPreparation(G.iterativeAnalysis, G.iterationNumber) #This function also changes the working directory #Save an MSReference object containing all molecules and an MSData object containing all mass fragments if G.iterativeAnalysis and G.iterationNumber != 1: #If using iterative and not on the first iteration we will need to remove _iter_x from the file names - AllMoleculesReferenceFileNamesList = [] #Initialize AllMoleculesReferenceDataList as an empty list - for referenceFileNameIndex in range(len(G.referenceFileNamesList)): #Loop through the reference file names list - AllMoleculesReferenceFileName = remove_iter_fromFileName(G.referenceFileNamesList[referenceFileNameIndex]) #Remove the _iter_ from the name so the program has the original filename to access from the parent directory + AllMoleculesreferencePatternsFileNamesList = [] #Initialize AllMoleculesReferenceDataList as an empty list + for referenceFileNameIndex in range(len(G.referencePatternsFileNamesList)): #Loop through the reference file names list + AllMoleculesReferenceFileName = remove_iter_fromFileName(G.referencePatternsFileNamesList[referenceFileNameIndex]) #Remove the _iter_ from the name so the program has the original filename to access from the parent directory AllMoleculesReferenceDataFilePath = os.path.normpath(os.path.join(os.curdir, os.pardir,AllMoleculesReferenceFileName)) #This function will get the path of the reference file from the parent directory - AllMoleculesReferenceFileNamesList.append(AllMoleculesReferenceDataFilePath) #Append the path to the list and the program will read the reference file from the path name - AllMassFragmentsExperimentDataFileName = remove_iter_fromFileName(G.collectedFileName) #Remove _iter_ from the data filename so the program has the original filename to access from the parent directory + AllMoleculesreferencePatternsFileNamesList.append(AllMoleculesReferenceDataFilePath) #Append the path to the list and the program will read the reference file from the path name + AllMassFragmentsExperimentDataFileName = remove_iter_fromFileName(G.dataToAnalyzeFileName) #Remove _iter_ from the data filename so the program has the original filename to access from the parent directory AllMassFragmentsExperimentDataFileNamePath = os.path.normpath(os.path.join(os.curdir, os.pardir, AllMassFragmentsExperimentDataFileName)) #This function will get the path of the data file from the parent directory else: #Otherwise not running iterative or in the first iteration, just copy the filename - AllMoleculesReferenceFileNamesList = copy.copy(G.referenceFileNamesList) - AllMassFragmentsExperimentDataFileNamePath = copy.copy(G.collectedFileName) + AllMoleculesreferencePatternsFileNamesList = copy.copy(G.referencePatternsFileNamesList) + AllMassFragmentsExperimentDataFileNamePath = copy.copy(G.dataToAnalyzeFileName) #Create the MSReference and MSData objects containing all molecules and all mass fragments, respectively - [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_collectedFileName]=readDataFile(AllMassFragmentsExperimentDataFileNamePath) - AllMassFragmentsExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, collectedFileName=exp_collectedFileName) - AllMoleculesReferenceDataList = GenerateReferenceDataList(AllMoleculesReferenceFileNamesList,G.referenceFormsList,G.AllMID_ObjectsDict) + [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_dataToAnalyzeFileName]=readDataFile(AllMassFragmentsExperimentDataFileNamePath) + AllMassFragmentsExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, dataToAnalyzeFileName=exp_dataToAnalyzeFileName) + AllMoleculesReferenceDataList = GenerateReferenceDataList(AllMoleculesreferencePatternsFileNamesList,G.referencePatternsFormsList,G.AllMID_ObjectsDict) #Then prepare AllMoleculesReferenceDataList to get reciprocal_matching_correction_values, this value is fed into RatioFinder for referenceObjectIndex in range(len(AllMoleculesReferenceDataList)): AllMoleculesReferenceDataList[referenceObjectIndex].ExportAtEachStep = 'no' PrepareReferenceObjectsAndCorrectionValues(AllMoleculesReferenceDataList[referenceObjectIndex],AllMassFragmentsExperimentData.mass_fragment_numbers, AllMassFragmentsExperimentData) #Read in the molecules used before parsing the user input file - G.referenceFileNamesList = parse.listCast(G.referenceFileNamesList) - G.moleculesNames = getMoleculesFromReferenceData(G.referenceFileNamesList[0]) + G.referencePatternsFileNamesList = parse.listCast(G.referencePatternsFileNamesList) + G.moleculesNames = getMoleculesFromReferenceData(G.referencePatternsFileNamesList[0]) #We are reading the experimental data in and this must be before user input processing so we have the mass fragments - G.exp_mass_fragment_numbers = getMassFragmentsFromCollectedData(G.collectedFileName) + G.exp_mass_fragment_numbers = getMassFragmentsFromCollectedData(G.dataToAnalyzeFileName) #beforeParsedGDict this will be needed for iterative. This actually contains "UserChoices" when that's available, but we won't use that. beforeParsedGDict = {} @@ -5609,9 +5609,9 @@ def main(): global currentReferenceData global resultsObjects resultsObjects = {} - [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_collectedFileName]=readDataFile(G.collectedFileName) - ExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, collectedFileName=exp_collectedFileName) - ReferenceDataList = GenerateReferenceDataList(G.referenceFileNamesList,G.referenceFormsList,G.AllMID_ObjectsDict) + [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_dataToAnalyzeFileName]=readDataFile(G.dataToAnalyzeFileName) + ExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, dataToAnalyzeFileName=exp_dataToAnalyzeFileName) + ReferenceDataList = GenerateReferenceDataList(G.referencePatternsFileNamesList,G.referencePatternsFormsList,G.AllMID_ObjectsDict) ExperimentData.provided_mass_fragment_numbers = ExperimentData.mass_fragment_numbers #This is where the experimental uncertainties object first gets populated, but it does get modified later as masses are removed and time-points are removed. if type(G.collectedFileUncertainties) != type(None): @@ -5619,14 +5619,14 @@ def main(): G.collectedFileUncertainties = int(G.collectedFileUncertainties) #Prints a warning if the user has more reference files than specified time ranges - if len(G.referencePatternTimeRanges) > 0 and (len(G.referenceFileNamesList) > len(G.referencePatternTimeRanges)): + if len(G.referencePatternTimeRanges) > 0 and (len(G.referencePatternsFileNamesList) > len(G.referencePatternTimeRanges)): print("WARNING: There are more reference files given than time ranges") #save global variable into the class objects ExperimentData.ExportAtEachStep = G.ExportAtEachStep #if this is the first iterative run, then the reference and experimental files need to have been imported before the iteration can begin if G.iterativeAnalysis and G.iterationNumber == 1 : - #implied arguments for the following function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for the following function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterationFirstDirectoryPreparation(G.iterativeAnalysis, G.iterationNumber) # Skip preProcessing all together if we are loading analyzed data @@ -5697,8 +5697,8 @@ def main(): #This codeblock is for the TuningCorrectorGasMixture feature. It should be before the prototypicalReferenceData is created. #A measured gas mixture spectrum is compared to a simulated gas mixture spectrum, and the tuning correction is then made accordingly. - if G.UserChoices['measuredReferenceYorN']['on'] == 'yes': - if len(G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames']) > 0: + if G.UserChoices['tuningCorrection']['on'] == 'yes': + if len(G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames']) > 0: ReferenceDataList = tuningCorrectorGasMixture(ReferenceDataList, G) #Creating prototypicalReferenceData which will be interrogated later for which molecules and masses to expect in the ReferenceDataObjects. prototypicalReferenceData = copy.deepcopy(ReferenceDataList[0]) @@ -5799,7 +5799,7 @@ def main(): G.csvFile, G.moleculesToRestrict, G.csvFileName,G.dataUpperBound, G.dataLowerBound, G.bruteIncrements, G.permutationNum] SLSChoices = [G.uniqueOrCommon, G.slsFinish, G.distinguished] - ThresholdList = [G.rawSignalThresholdMethod, G.rawSignalThresholdValue, G.sensitivityThresholdValue, + ThresholdList = [G.applyRawSignalThresholds, G.rawSignalThresholdValue, G.sensitivityThresholdValue, G.rawSignalThresholdDivider, G.rawSignalThresholdLimit, G.rawSignalThresholdLimitPercent] currentReferenceData = ReferenceDataList[0] #TODO this line is placeholder by charles to fix currentRefenceData issue until Alex has a better solution @@ -5876,7 +5876,7 @@ def main(): #TODO continued: I am putting some variables here to make that process easier by getting some of it done already, then only the user input file needs to be changed. #This feature is intended to remove molecules that have major fragments not observed. previously, it was done in a more complicated way. # now, to simplify things, is being used as a filter that simply sets standardized intensities in the reference patterns to zero. - G.excludeMoleculesIfSignificantFragmentNotObserved = G.rawSignalThresholdMethod + G.excludeMoleculesIfSignificantFragmentNotObserved = G.applyRawSignalThresholds G.minimumSignalRequired = G.rawSignalThresholdValue G.minimumStandardizedReferenceHeightToBeSignificant = G.sensitivityThresholdValue if G.excludeMoleculesIfSignificantFragmentNotObserved == 'yes': @@ -5950,7 +5950,7 @@ def main(): referenceAfterFiltering = currentReferenceData slsSolvedMasses = G.massesUsedInSolvingMoleculesForThisPoint if 0 in slsSolvedMasses: - print("The concentrations are currently not completely solvable by SLS at this time so implicitSLScorrection is being skipped and changed to False. One option to consider is increasing UserChoices['minimalReferenceValue']['referenceValueThreshold'] to a highernumber." ) + print("The concentrations are currently not completely solvable by SLS at this time so implicitSLScorrection is being skipped and changed to False. One option to consider is increasing UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] to a highernumber." ) G.implicitSLScorrection = False else: #Now need to move the class out of this area. Currently test 2 is taking 0.08 to 0.20 anlaysis time versus 0.014 for test_1. diff --git a/ExampleTuningCorrectorGasMixture/MSRESOLVEPrevious.py b/ExampleTuningCorrectorGasMixture/MSRESOLVEPrevious.py index 7c75995c..cbb97699 100644 --- a/ExampleTuningCorrectorGasMixture/MSRESOLVEPrevious.py +++ b/ExampleTuningCorrectorGasMixture/MSRESOLVEPrevious.py @@ -381,7 +381,7 @@ def ABCDetermination(ReferencePatternExistingTuning_FileNameAndForm, ReferencePa ''' - if G.minimalReferenceValue !='yes': + if G.applyReferenceMassFragmentsThresholds !='yes': print("Warning: The ABCDetermination will occur without threshold filtering, since that setting is off.") if G.extractReferencePatternFromDataOption == 'yes': @@ -393,16 +393,16 @@ def ABCDetermination(ReferencePatternExistingTuning_FileNameAndForm, ReferencePa ReferencePatternExistingTuningDict['molecules']=molecules ReferencePatternExistingTuningDict['provided_reference_patterns'] = provided_reference_patterns ReferencePatternExistingTuningDict['provided_reference_patterns'] = StandardizeReferencePattern(ReferencePatternExistingTuningDict['provided_reference_patterns'],len(molecules)) #this does have the molecular weight as the first column. - if G.minimalReferenceValue =='yes': - ReferencePatternExistingTuningDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternExistingTuningDict['provided_reference_patterns'],G.referenceValueThreshold) + if G.applyReferenceMassFragmentsThresholds =='yes': + ReferencePatternExistingTuningDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternExistingTuningDict['provided_reference_patterns'],G.referenceMassFragmentFilterThreshold) ReferencePatternDesiredTuningDict = {} [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form] = readReferenceFile(*ReferencePatternDesiredTuning_FileNameAndForm) ReferencePatternDesiredTuningDict['molecules']=molecules ReferencePatternDesiredTuningDict['provided_reference_patterns'] = provided_reference_patterns ReferencePatternDesiredTuningDict['provided_reference_patterns'] = StandardizeReferencePattern(ReferencePatternDesiredTuningDict['provided_reference_patterns'],len(molecules)) #this does have the molecular weight as the first column. - if G.minimalReferenceValue =='yes': - ReferencePatternDesiredTuningDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternDesiredTuningDict['provided_reference_patterns'],G.referenceValueThreshold) + if G.applyReferenceMassFragmentsThresholds =='yes': + ReferencePatternDesiredTuningDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternDesiredTuningDict['provided_reference_patterns'],G.referenceMassFragmentFilterThreshold) ''' Step 3a: Truncate to the molecules which match. @@ -500,17 +500,17 @@ def ABCDetermination(ReferencePatternExistingTuning_FileNameAndForm, ReferencePa #this function either creates or gets the three coefficients for the polynomial correction (Tuning Correction) and calculates #the correction factor for the relative intensities of each mass fragment, outputting a corrected set #of relative intensities -def TuningCorrector(referenceDataArrayWithAbscissa,referenceCorrectionCoefficients, referenceCorrectionCoefficients_cov, referenceFileExistingTuningAndForm=None,referenceFileDesiredTuningAndForm=None,measuredReferenceYorN="no"): +def TuningCorrector(referenceDataArrayWithAbscissa,referenceCorrectionCoefficients, referenceCorrectionCoefficients_cov, referenceFileExistingTuningAndForm=None,referenceFileDesiredTuningAndForm=None,tuningCorrection="no"): #Tuning corrector is designed to work with standardized_reference_patterns, so first we make sure standardize the data. referenceDataArrayWithAbscissa=StandardizeReferencePattern(referenceDataArrayWithAbscissa) if type(referenceCorrectionCoefficients) == type({}):#check if it's a dictionary. If it is, we need to make it a list. referenceCorrectionCoefficients = [referenceCorrectionCoefficients['A'],referenceCorrectionCoefficients['B'],referenceCorrectionCoefficients['C']] - if measuredReferenceYorN =='yes': + if tuningCorrection =='yes': print("line 520!!!!!") if referenceFileDesiredTuningAndForm == []:#TODO: this isn't very good logic, but it allows automatic population of referenceFileDesiredTuningAndForm. The problem is it is reading from file again instead of using the already made ReferenceData object. ABCDetermination and possibly TuningCorrector should be changed so that it can take *either* a ReferenceData object **or** a ReferenceData filename. The function can check if it is receiving a string, and if it's not receiving a string it can assume it's receiving an object. print("line 522!!!!!") - referenceFileDesiredTuningAndForm = [ "ExportedDesiredTuningReferencePattern.csv","xyyy" ] #Take the first item from G.referenceFileNamesList and from G.referenceFormsList. + referenceFileDesiredTuningAndForm = [ "ExportedDesiredTuningReferencePattern.csv","xyyy" ] #Take the first item from G.referencePatternsFileNamesList and from G.referencePatternsFormsList. abcCoefficients, abcCoefficients_cov = ABCDetermination(referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm) referenceCorrectionCoefficients[0],referenceCorrectionCoefficients[1],referenceCorrectionCoefficients[2]= abcCoefficients G.referenceCorrectionCoefficients = referenceCorrectionCoefficients #TODO: Maybe this logic should be changed, since it will result in an exporting of the last coefficients used, whether a person is doing forward tuning or reverse tuning. @@ -563,11 +563,11 @@ def createReferencePatternWithTuningCorrection(ReferenceData, verbose=True, retu G.referenceCorrectionCoefficients_cov = None #Wanted to do something like "if list(G.referenceCorrectionCoefficients) != [0,0,1]:" but can't do it out here. Can do it inside function. - if G.measuredReferenceYorN =='no': + if G.tuningCorrection =='no': G.createMixedTuningPattern = False #override the mixed tuning pattern choice if there is no measured reference. if G.createMixedTuningPattern == False: - if G.measuredReferenceYorN =='yes': #in this case, we are going to apply the external tuning to the current pattern. + if G.tuningCorrection =='yes': #in this case, we are going to apply the external tuning to the current pattern. print("line 520!!!!!") referenceFileDesiredTuningAndForm = G.referenceFileDesiredTuningAndForm @@ -576,7 +576,7 @@ def createReferencePatternWithTuningCorrection(ReferenceData, verbose=True, retu ReferenceDataExistingTuning.exportReferencePattern('ExportedReferencePatternOriginalTuning.csv') if referenceFileDesiredTuningAndForm == []:#TODO: this isn't very good logic, but it allows automatic population of referenceFileDesiredTuningAndForm. The problem is it is reading from file again instead of using the already made ReferenceData object. ABCDetermination and possibly TuningCorrector should be changed so that it can take *either* a ReferenceData object **or** a ReferenceData filename. The function can check if it is receiving a string, and if it's not receiving a string it can assume it's receiving an object. print("line 522!!!!! TODO: NEED TO MAKE ExportedReferencePatternDesiredTuning FOR CASE OF THIS IF STATEMENT") - referenceFileDesiredTuningAndForm = [ "ExportedReferencePatternOriginalAnalysis.csv","xyyy" ] #Take the first item from G.referenceFileNamesList and from G.referenceFormsList. + referenceFileDesiredTuningAndForm = [ "ExportedReferencePatternOriginalAnalysis.csv","xyyy" ] #Take the first item from G.referencePatternsFileNamesList and from G.referencePatternsFormsList. print("line 1489", referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm) abcCoefficients, abcCoefficients_cov = ABCDetermination(referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm) referenceCorrectionCoefficients = numpy.zeros(3) @@ -619,13 +619,13 @@ def createReferencePatternWithTuningCorrection(ReferenceData, verbose=True, retu if G.createMixedTuningPattern== True: #in this case, we are going to apply the current tuning to the external pattern, and also create a mixed pattern. So the ReferenceData pointer will point to a mixed pattern by the end of this if statement. print("line 619!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!") - if G.measuredReferenceYorN =='yes': + if G.tuningCorrection =='yes': #First read in the existing tuning patterns. referenceFileDesiredTuningAndForm = G.referenceFileDesiredTuningAndForm referenceFileExistingTuningAndForm = G.referenceFileExistingTuningAndForm if referenceFileDesiredTuningAndForm == []: - print("line 622", G.referenceFormsList) - referenceFileDesiredTuningAndForm = [G.referenceFileNamesList[0], G.referenceFormsList[0]] #Take the first item from G.referenceFileNamesList and from G.referenceFormsList. + print("line 622", G.referencePatternsFormsList) + referenceFileDesiredTuningAndForm = [G.referencePatternsFileNamesList[0], G.referencePatternsFormsList[0]] #Take the first item from G.referencePatternsFileNamesList and from G.referencePatternsFormsList. #We don't use the function GenerateReferenceDataList because that function does more than just making a reference object. ReferenceDataExistingTuning = createReferenceDataObject ( referenceFileExistingTuningAndForm[0],referenceFileExistingTuningAndForm[1], AllMID_ObjectsDict=G.AllMID_ObjectsDict) ReferenceDataExistingTuning.exportReferencePattern('ExportedReferencePatternExternal.csv') @@ -761,9 +761,9 @@ def tuningCorrectorGasMixture(ReferenceDataList, G): #making it clear that there for moleculeIndex,moleculeName in enumerate(ReferenceDataExistingTuning.molecules): desiredConcentrationIndex = moleculeIndex #Take the concentration if it's named: - if moleculeName in G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames']: - currentConcentrationIndex = list(G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames']).index(moleculeName) - knownConcentrationsArray[desiredConcentrationIndex] = G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureConcentrations'][currentConcentrationIndex] + if moleculeName in G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames']: + currentConcentrationIndex = list(G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames']).index(moleculeName) + knownConcentrationsArray[desiredConcentrationIndex] = G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureConcentrations'][currentConcentrationIndex] else: #else set it to zero. knownConcentrationsArray[desiredConcentrationIndex] = 0 #The first item in the concentrations array is supposed to be the time. We will simply put the integer "1" there, since we will have one point. @@ -790,13 +790,13 @@ def tuningCorrectorGasMixture(ReferenceDataList, G): #making it clear that there TuningCorrectorGasMixtureSimulatedHypotheticalReferenceDataObject.exportReferencePattern("TuningCorrectorGasMixtureSimulatedHypotheticalReferenceData.csv") print('line 646') - if G.measuredReferenceYorN =='yes': + if G.tuningCorrection =='yes': #we are using specific files for obtaining the tuning correction coefficients in the case of GasMixtureTuningCorrector referenceFileExistingTuningAndForm=["TuningCorrectorGasMixtureSimulatedHypotheticalReferenceData.csv","XYYY"] referenceFileDesiredTuningAndForm=["TuningCorrectorGasMixtureMeasuredHypotheticalReferenceData.csv", "XYYY"] if referenceFileDesiredTuningAndForm == []:#TODO: this isn't very good logic, but it allows automatic population of referenceFileDesiredTuningAndForm. The problem is it is reading from file again instead of using the already made ReferenceData object. ABCDetermination and possibly TuningCorrector should be changed so that it can take *either* a ReferenceData object **or** a ReferenceData filename. The function can check if it is receiving a string, and if it's not receiving a string it can assume it's receiving an object. print("line 522!!!!!") - referenceFileDesiredTuningAndForm = [ "ExportedDesiredTuningReferencePattern.csv","xyyy" ] #Take the first item from G.referenceFileNamesList and from G.referenceFormsList. + referenceFileDesiredTuningAndForm = [ "ExportedDesiredTuningReferencePattern.csv","xyyy" ] #Take the first item from G.referencePatternsFileNamesList and from G.referencePatternsFormsList. abcCoefficients, abcCoefficients_cov = ABCDetermination(referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm) referenceCorrectionCoefficients = numpy.zeros(3) referenceCorrectionCoefficients[0],referenceCorrectionCoefficients[1],referenceCorrectionCoefficients[2]= abcCoefficients @@ -872,7 +872,7 @@ def tuningCorrectorGasMixture(ReferenceDataList, G): #making it clear that there if ReferenceDataList[ReferenceDataIndex].ExportAtEachStep == 'yes': print("line 685", ReferenceDataList[ReferenceDataIndex].relativeIonizationEfficiencies) print("line 686", ReferenceDataList[ReferenceDataIndex].sourceOfIonizationData) - print(G.UserChoices['minimalReferenceValue']['referenceValueThreshold']) + print(G.UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold']) ReferenceDataList[ReferenceDataIndex].ExportCollector('StandardizedReferencePattern', use_provided_reference_patterns=False) ReferenceDataList[ReferenceDataIndex].exportReferencePattern("TuningCorrectorMixedPattern.csv") @@ -884,20 +884,20 @@ def tuningCorrectorGasMixture(ReferenceDataList, G): #making it clear that there #this function eliminates (neglects) reference intensities that are below a certain threshold. Useful for solving #data that is giving negatives or over emphasizing small mass fragments,by assuming no contribution from the molecule at that mass fragment. -def ReferenceThresholdFilter(referenceDataArrayWithAbscissa,referenceValueThreshold): +def ReferenceThresholdFilter(referenceDataArrayWithAbscissa,referenceMassFragmentFilterThreshold): numMolecules = len(referenceDataArrayWithAbscissa[0]-1) - if numMolecules > len(list(referenceValueThreshold)): - referenceValueThreshold = list(referenceValueThreshold)* numMolecules + if numMolecules > len(list(referenceMassFragmentFilterThreshold)): + referenceMassFragmentFilterThreshold = list(referenceMassFragmentFilterThreshold)* numMolecules referenceDataArray = referenceDataArrayWithAbscissa[:,1:] #all the data except the line of abscissa- mass fragment numbers for columncounter in range(len(referenceDataArray[0,:])):#goes through all columns in all rows in reference (this loop is one molecule at a time) for rowcounter in range(len(referenceDataArray[:,0])):#goes through all rows in references (one mass fragment at a time) - if len(referenceValueThreshold) == 1: #this is for if a single value was provided for referenceValueThreshold - if referenceDataArray[rowcounter,columncounter] < referenceValueThreshold[0]: + if len(referenceMassFragmentFilterThreshold) == 1: #this is for if a single value was provided for referenceMassFragmentFilterThreshold + if referenceDataArray[rowcounter,columncounter] < referenceMassFragmentFilterThreshold[0]: referenceDataArray[rowcounter,columncounter] = 0 #made to be equal to zero # (len(referenceDataArray[:,0])) #this is masses. # (len(referenceDataArray[0,:])) #this is molecules - else: #this is for if values of referenceValueThreshold were provided for each molecule. - if referenceDataArray[rowcounter,columncounter] < referenceValueThreshold[columncounter]: + else: #this is for if values of referenceMassFragmentFilterThreshold were provided for each molecule. + if referenceDataArray[rowcounter,columncounter] < referenceMassFragmentFilterThreshold[columncounter]: referenceDataArray[rowcounter,columncounter] = 0 #made to be equal to zero referenceDataArrayWithAbscissa[:,1:] = referenceDataArray #this puts changed referenceData back with mass fragment numbers return referenceDataArrayWithAbscissa @@ -1626,10 +1626,10 @@ def ReferenceInputPreProcessing(ReferenceData, verbose=True): #TODO: the minimal reference value can cause inaccuracies if interpolating between multiple reference patterns if one pattern has a value rounded to 0 and the other does not #TODO: option 1: this issue can be fixed by moving this to after interpolation #TODO: option 2: Or we can below assign to preprocessed_reference_pattern rather than standardized_reference_patterns and then use that in data analysis (Note that interpolate would continue to use standardized_reference_patterns as well as preprocess the output) - if G.minimalReferenceValue == 'yes': + if G.applyReferenceMassFragmentsThresholds == 'yes': if G.implicitSLScorrection == True: #This feature requires us to have unfiltered reference patterns to do an implicit/recursive correction at the end. G.currentReferenceDataUnfiltered = copy.deepcopy(ReferenceData) #Make a copy before any filtering occurs. There is an implied return in global variable. - ReferenceData.standardized_reference_patterns = ReferenceThresholdFilter(ReferenceData.standardized_reference_patterns,G.referenceValueThreshold) + ReferenceData.standardized_reference_patterns = ReferenceThresholdFilter(ReferenceData.standardized_reference_patterns,G.referenceMassFragmentFilterThreshold) ReferenceData.ExportCollector('ReferenceThresholdFilter') #As the program is currently written, this function is called to act upon already threshold filtered standardized reference patterns which could cause innaccuracy. @@ -1646,22 +1646,22 @@ def ReferenceInputPreProcessing(ReferenceData, verbose=True): return ReferenceData ''' -GenerateReferenceDataAndFormsList takes in the list of referenceFileNamesList and the +GenerateReferenceDataAndFormsList takes in the list of referencePatternsFileNamesList and the list of forms. A list is generated containing MSReference objects created based on the referenceFileName and the corresponding form It allows MSRESOLVE to be backwards compatible with previous user input files ''' -def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_ObjectsDict={}): - #referenceFormsList can take values of 'xyyy' or 'xyxy' and must be a string - ##If referenceFileNamesList is a string or if form is a string then make them lists - if isinstance(referenceFileNamesList,str): - referenceFileNamesList = [referenceFileNamesList] - if isinstance(referenceFormsList,str): - referenceFormsList = [referenceFormsList] - #If referenceFileNamesList and forms are lists of 1 then create a list of the single MSReference object +def GenerateReferenceDataList(referencePatternsFileNamesList,referencePatternsFormsList,AllMID_ObjectsDict={}): + #referencePatternsFormsList can take values of 'xyyy' or 'xyxy' and must be a string + ##If referencePatternsFileNamesList is a string or if form is a string then make them lists + if isinstance(referencePatternsFileNamesList,str): + referencePatternsFileNamesList = [referencePatternsFileNamesList] + if isinstance(referencePatternsFormsList,str): + referencePatternsFormsList = [referencePatternsFormsList] + #If referencePatternsFileNamesList and forms are lists of 1 then create a list of the single MSReference object #This allows MSRESOLVE to be backwards compatible with previous user input files while still incorporating the reference pattern time chooser feature - if len(referenceFormsList) == 1 and len(referenceFileNamesList) == 1: - [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referenceFileNamesList[0],referenceFormsList[0]) + if len(referencePatternsFormsList) == 1 and len(referencePatternsFileNamesList) == 1: + [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referencePatternsFileNamesList[0],referencePatternsFormsList[0]) ReferenceDataList = [MSReference(provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName=referenceFileName, form=form, AllMID_ObjectsDict=AllMID_ObjectsDict)] #save each global variable into the class objects ReferenceDataList[0].ExportAtEachStep = G.ExportAtEachStep @@ -1682,7 +1682,7 @@ def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_O ReferenceDataList[0].absolute_standard_uncertainties = absolute_standard_uncertainties #We can't convert to relative uncertainties yet because the file may not be standardized yet. if type(G.referenceFileUncertainties) == type('string'): - provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referenceFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referenceFormsList[0]) + provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referencePatternsFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referencePatternsFormsList[0]) ReferenceDataList[0].absolute_standard_uncertainties = provided_reference_patterns_absolute_uncertainties #Just initializing the variable before filling it properly. maximum_absolute_intensities = numpy.amax(ReferenceDataList[0].provided_reference_patterns[:,1:], axis = 0) #Find the maximum intensity for each molecule. ReferenceDataList[0].absolute_standard_uncertainties[:,1:] = 100*ReferenceDataList[0].absolute_standard_uncertainties[:,1:]/maximum_absolute_intensities @@ -1693,22 +1693,22 @@ def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_O ReferenceDataList[0].update_relative_standard_uncertainties() return ReferenceDataList #Otherwise we have multiple reference files and forms - #If just one form is used, make a list of forms that is the same length as referenceFileNamesList - if len(referenceFormsList) == 1: - #Generate a copy of referenceFileNamesList to be overwritten with forms - listOfForms = copy.copy(referenceFileNamesList) + #If just one form is used, make a list of forms that is the same length as referencePatternsFileNamesList + if len(referencePatternsFormsList) == 1: + #Generate a copy of referencePatternsFileNamesList to be overwritten with forms + listOfForms = copy.copy(referencePatternsFileNamesList) #replace each value with the given form - for i in range(len(referenceFileNamesList)): - listOfForms[i] = referenceFormsList[0] - #If list of forms is the same length of referenceFileNamesList then each form should correspond to the referenceFile of the same index - elif len(referenceFormsList) == len(referenceFileNamesList): + for i in range(len(referencePatternsFileNamesList)): + listOfForms[i] = referencePatternsFormsList[0] + #If list of forms is the same length of referencePatternsFileNamesList then each form should correspond to the referenceFile of the same index + elif len(referencePatternsFormsList) == len(referencePatternsFileNamesList): #So just set listOfForms equal to forms - listOfForms = referenceFormsList + listOfForms = referencePatternsFormsList #Initialize ReferenceDataList so it can be appended to ReferenceDataList = [] #For loop to generate each MSReferenceObject and append it to a list - for i in range(len(referenceFileNamesList)): - [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referenceFileNamesList[i],listOfForms[i]) + for i in range(len(referencePatternsFileNamesList)): + [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referencePatternsFileNamesList[i],listOfForms[i]) ReferenceDataList.append(MSReference(provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName=referenceFileName, form=form, AllMID_ObjectsDict=AllMID_ObjectsDict)) #save each global variable into the class objects ReferenceDataList[i].ExportAtEachStep = G.ExportAtEachStep @@ -1729,7 +1729,7 @@ def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_O ReferenceDataList[i].absolute_standard_uncertainties = absolute_standard_uncertainties #We can't convert to relative uncertainties yet because the file may not be standardized yet. if type(G.referenceFileUncertainties) == type('string'): - provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referenceFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referenceFormsList[i]) + provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referencePatternsFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referencePatternsFormsList[i]) ReferenceDataList[i].absolute_standard_uncertainties = provided_reference_patterns_absolute_uncertainties #Just initializing the variable before filling it properly. maximum_absolute_intensities = numpy.amax(ReferenceDataList[i].provided_reference_patterns[:,1:], axis = 0) #Find the maximum intensity for each molecule. ReferenceDataList[i].absolute_standard_uncertainties[:,1:] = ReferenceDataList[i].absolute_standard_uncertainties[:,1:]/maximum_absolute_intensities @@ -2082,50 +2082,50 @@ def IterativeDirectoryChange(iterativeAnalysis, iterationNumber): os.chdir(iterationDirectoryName) #this will be changed back at the end of the program def IterationDirectoryPreparation(iterativeAnalysis, iterationNumber): - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterativeDirectoryChange(iterativeAnalysis, iterationNumber) #naming for collected file #record the old file names - G.oldcollectedFileName = G.collectedFileName + G.oldDataToAnalyzeFileName = G.dataToAnalyzeFileName #construct the file names for the current run of the program #TODO FIXME, This syntax with -21 will not allow iterative to be compatible with more than 9 iterations - collectedFileNameTemp = str(G.collectedFileName)[:-21] + str(G.iterationSuffix) + str(G.collectedFileName)[-4:] + dataToAnalyzeFileNameTemp = str(G.dataToAnalyzeFileName)[:-21] + str(G.iterationSuffix) + str(G.dataToAnalyzeFileName)[-4:] #copy the experimental and reference files into new names for this iterative run - shutil.copy(G.collectedFileName, collectedFileNameTemp) + shutil.copy(G.dataToAnalyzeFileName, dataToAnalyzeFileNameTemp) #change the globals to reflect the renaming of the ref and exp files - G.collectedFileName = collectedFileNameTemp + G.dataToAnalyzeFileName = dataToAnalyzeFileNameTemp #construct file names for the next run of the program #TODO FIXME, This syntax with -11 will not allow iterative to be compatible with more than 9 iterations - G.nextExpFileName = G.collectedFileName[:-11] + str('_remaining') + G.collectedFileName[-11:] + G.nextExpFileName = G.dataToAnalyzeFileName[:-11] + str('_remaining') + G.dataToAnalyzeFileName[-11:] #naming for reference files G.oldReferenceFileName = [] G.nextRefFileName = [] - for RefIndex, RefName in enumerate(G.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.referencePatternsFileNamesList): #a list #record the old file names G.oldReferenceFileName.append(RefName) #construct the file names for the current run of the program #TODO FIXME, This syntax with -18 will not allow iterative to be compatible with more than 9 iterations - referenceFileNameTemp = G.referenceFileNamesList[RefIndex][:-18] + str(G.iterationSuffix) + G.referenceFileNamesList[RefIndex][-4:] + referenceFileNameTemp = G.referencePatternsFileNamesList[RefIndex][:-18] + str(G.iterationSuffix) + G.referencePatternsFileNamesList[RefIndex][-4:] #copy the experimental and reference files into new names for this iterative run shutil.copy(RefName, referenceFileNameTemp) #change the globals to reflect the renaming of the ref and exp files - G.referenceFileNamesList[RefIndex] = referenceFileNameTemp + G.referencePatternsFileNamesList[RefIndex] = referenceFileNameTemp #construct file names for the next run of the program #TODO FIXME, This syntax with -18 will not allow iterative to be compatible with more than 9 iterations G.nextRefFileName.append(RefName[:-18] + '_unused_iter_%s' %G.iterationNumber + RefName[-4:]) return None - #implied returns: G.oldReferenceFileName, G.oldcollectedFileName, G.referenceFileNamesList,G.collectedFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber + #implied returns: G.oldReferenceFileName, G.oldDataToAnalyzeFileName, G.referencePatternsFileNamesList,G.dataToAnalyzeFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber def IterationFirstDirectoryPreparation(iterativeAnalysis,iterationNumber): - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName #this global value is set so that each export statement can label the output files correctly G.iterationNumber = iterationNumber @@ -2144,27 +2144,27 @@ def IterationFirstDirectoryPreparation(iterativeAnalysis,iterationNumber): AppendListToFile("__var_list__", G.__var_list__, "UserInput_iter_1.py", float('Inf')) #record the old file names - G.oldcollectedFileName = G.collectedFileName + G.oldDataToAnalyzeFileName = G.dataToAnalyzeFileName #construct the file names for the first run of the program - G.collectedFileName = G.collectedFileName[:-4] + str(G.iterationSuffix) + G.collectedFileName[-4:] + G.dataToAnalyzeFileName = G.dataToAnalyzeFileName[:-4] + str(G.iterationSuffix) + G.dataToAnalyzeFileName[-4:] #construct file names for the second run of the program #TODO FIXME, This syntax with -11 will not allow iterative to be compatible with more than 9 iterations - G.nextExpFileName = G.collectedFileName[:-11] + '_remaining_iter_1' + G.collectedFileName[-4:] + G.nextExpFileName = G.dataToAnalyzeFileName[:-11] + '_remaining_iter_1' + G.dataToAnalyzeFileName[-4:] G.oldReferenceFileName = [] - for RefIndex, RefName in enumerate(G.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.referencePatternsFileNamesList): #a list G.oldReferenceFileName.append(RefName) #construct the file names for the first run of the program - G.referenceFileNamesList[RefIndex] = G.referenceFileNamesList[RefIndex][:-4] + str(G.iterationSuffix) + G.referenceFileNamesList[RefIndex][-4:] + G.referencePatternsFileNamesList[RefIndex] = G.referencePatternsFileNamesList[RefIndex][:-4] + str(G.iterationSuffix) + G.referencePatternsFileNamesList[RefIndex][-4:] #construct file names for the second run of the program G.nextRefFileName.append(RefName[:-4] + '_unused_iter_1' + RefName[-4:]) return None - #implied returns: G.oldReferenceFileName, G.oldcollectedFileName, G.referenceFileNamesList,G.collectedFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber + #implied returns: G.oldReferenceFileName, G.oldDataToAnalyzeFileName, G.referencePatternsFileNamesList,G.dataToAnalyzeFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber #The IterativeAnalysisDirectory and Variable Population function is used to shrink the size of the program analysis and redirect the output. def IADirandVarPopulation(iterativeAnalysis, chosenMassFragments, chosenMolecules, ExperimentData, ExperimentDataFullCopy, ReferenceDataList, ReferenceDataListFullCopy): - #implied arguments: G.dataSimulation, G.referenceFileNamesList, G.collectedFileName, G.nextRefFileName, G.oldReferenceFileName, G.chosenMoleculesNames, G.iterationNumber + #implied arguments: G.dataSimulation, G.referencePatternsFileNamesList, G.dataToAnalyzeFileName, G.nextRefFileName, G.oldReferenceFileName, G.chosenMoleculesNames, G.iterationNumber #override data simulation to yes if it was not selected if G.dataSimulation != 'yes': print("Iterative analysis cannot find the remaining signals in the experiment without signal simulation being run.") @@ -2194,11 +2194,11 @@ def IADirandVarPopulation(iterativeAnalysis, chosenMassFragments, chosenMolecule for RefObjectIndex, RefObject in enumerate(ReferenceDataList): #a list #Export current Reference Data #Reference data is trimmed prior to this function - ExportXYYYData(G.referenceFileNamesList[RefObjectIndex], RefObject.provided_reference_patterns, RefObject.molecules, abscissaHeader = 'M/Z') + ExportXYYYData(G.referencePatternsFileNamesList[RefObjectIndex], RefObject.provided_reference_patterns, RefObject.molecules, abscissaHeader = 'M/Z') #Export current Experimental Data #Experimental data is trimmed prior to this function, but it still needs to be exported - ExportXYYYData(G.collectedFileName, ExperimentData.workingData, ExperimentData.mass_fragment_numbers, + ExportXYYYData(G.dataToAnalyzeFileName, ExperimentData.workingData, ExperimentData.mass_fragment_numbers, abscissaHeader = ExperimentData.abscissaHeader, dataType = 'preProcessed', rowIndex = ExperimentData.times) for RefObjectIndex, RefObject in enumerate(ReferenceDataList): #a list @@ -2299,8 +2299,8 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): G.nextUserInputModule.__var_list__ = G.__var_list__ #save the new file name for the next user input file - G.nextUserInputModule.collectedFileName = G.nextExpFileName - G.nextUserInputModule.referenceFileNamesList = G.nextRefFileName + G.nextUserInputModule.dataToAnalyzeFileName = G.nextExpFileName + G.nextUserInputModule.referencePatternsFileNamesList = G.nextRefFileName #updating the selected molecules for the next user input file G.nextUserInputModule.chosenMoleculesNames = G.unusedMolecules #Updating the selected masses for the next user input file @@ -2321,7 +2321,7 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): G.nextUserInputModule.scaleRawDataFactor = G.scaleRawDataFactor #Now going to overwrite parallelized variables with their original versions if they were set to length of chosen molecules. - delimitedStringOfVariablesToUnparallelize = 'moleculeLikelihoods, sensitivityValues, referenceValueThreshold, referenceSignificantFragmentThresholds' + delimitedStringOfVariablesToUnparallelize = 'moleculeLikelihoods, sensitivityValues, referenceMassFragmentFilterThreshold, referenceSignificantFragmentThresholds' listOfVariablesToUnparallelize = delimitedStringOfVariablesToUnparallelize.split(", ") #Note that we are using ", " as the delimeter, not just "," for variable in listOfVariablesToUnparallelize: G.nextUserInputModule.__dict__[variable]=G.beforeParsedGDict[variable] @@ -2338,14 +2338,14 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): #copy the experimental signals to the next iteration copyFromPath = os.path.join(os.curdir, os.pardir, str(iterationDirectoryName), - str(G.nextUserInputModule.collectedFileName)) + str(G.nextUserInputModule.dataToAnalyzeFileName)) shutil.copy(copyFromPath, os.getcwd()) - for RefIndex, RefName in enumerate(G.nextUserInputModule.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.nextUserInputModule.referencePatternsFileNamesList): #a list #copy the next reference file from the previous iteration folder to the next iteration folder copyFromPath = os.path.join(os.curdir, os.pardir, str(iterationDirectoryName), - str(G.nextUserInputModule.referenceFileNamesList[RefIndex])) + str(G.nextUserInputModule.referencePatternsFileNamesList[RefIndex])) shutil.copy(copyFromPath, os.getcwd()) #returning to the parent directory os.chdir('..') @@ -2373,17 +2373,17 @@ def IterativeAnalysisPostProcessing(ExperimentData, simulateddata, mass_fragment exportSimulatedSignalsSoFar(G.simulatedSignalsOutputName,iterationDirectoryName,G.iterationNumber) #subtract 1 from the iteration number since the iteration number has already been changed IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy) return None - #implied returns: G.referenceFileNamesList, G.collectedFileName, G.nextRefFileName, G.chosenMoleculesNames, G.iterationSuffix + #implied returns: G.referencePatternsFileNamesList, G.dataToAnalyzeFileName, G.nextRefFileName, G.chosenMoleculesNames, G.iterationSuffix ############################################################################### ######################### Functions to read data files ####################### ############################################################################### #These functions read in the experimental data file and the reference file. The #returned variables can then be used to initialize the respective classes. -def readDataFile(collectedFileName): +def readDataFile(dataToAnalyzeFileName): #read the csv file into a dataframe. dataFrame means "dataframe" and is a pandas object. - dataFrame = pandas.read_csv('%s' %collectedFileName, header=None) + dataFrame = pandas.read_csv('%s' %dataToAnalyzeFileName, header=None) ''' generate mass fragment list''' #select only the 2nd row down, all columns except for the first. #"iloc" is a pandas dataframe function. All it does is select a portion of the data. @@ -2426,7 +2426,7 @@ def readDataFile(collectedFileName): rawCollectedData = numpy.vstack((rawCollectedData,rawCollectedData)) - return mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName + return mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName #readReferenceFile is a helper function that reads the reference file in a certain form and returns the #variables and data that are used to initialize the class. It can read files both in XYYY and XYXY form. @@ -2696,10 +2696,10 @@ def getMoleculesFromReferenceData(ReferenceFileName): ''' getMassFragmentsFromCollectedData is a function that takes in the collected filename and returns the mass fragments present in the data ''' -def getMassFragmentsFromCollectedData(CollectedFileName): +def getMassFragmentsFromCollectedData(dataToAnalyzeFileName): #Read the csv file #TODO CHange to use numpy.gen_from_text instead of pandas - DataInfo = pandas.read_csv(CollectedFileName,header=0) + DataInfo = pandas.read_csv(dataToAnalyzeFileName,header=0) #Convert the data into an array DataInfoArray = numpy.array(DataInfo) #Get the names of mass fragments in collected data @@ -2770,9 +2770,9 @@ class MSData (object): #self.mass_fragment_numbers , 1D and must be integers #self.rawCollectedData, a 2D array of the signals. - def __init__(self, mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName=None): + def __init__(self, mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName=None): - self.mass_fragment_numbers, self.abscissaHeader, self.times, self.rawCollectedData, self.collectedFileName=mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName + self.mass_fragment_numbers, self.abscissaHeader, self.times, self.rawCollectedData, self.dataToAnalyzeFileName=mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName #class object variable created to allow class to be used separately from the program. self.ExportAtEachStep = '' @@ -3234,7 +3234,7 @@ def CombinationMaker(reciprocal_matching_correction_values,rawsignalsarrayline,m if combinations == []:#This function will not work without enough mass fragments, so the user must know the problem print('****************************************') print('Not enough matching mass fragments input') - print("This means that at some point in the analysis, there were not enough masses in the reference file to apply the inverse method. It could mean you have too many overlapping masses for the molecules you are trying to resolve. You can get around this by using the '#//Reference Mass Fragmentation Threshold//' feature to exclude tiny fragementation peaks. This would be done by setting the value to 'yes' for minimalReferenceValue feature with referenceValueThreshold, such as referenceValueThreshold = 5.0 . Alternatively, to be more targeted, if you know *which* fragmentation patterns could be overlapping, you could set those minor fragments to 0 in your reference pattern csv file. TODO: Print out the relevant masses here. This requires keeping track of when they are selected prior to combination maker, and possibly passing them as an additional argument.") + print("This means that at some point in the analysis, there were not enough masses in the reference file to apply the inverse method. It could mean you have too many overlapping masses for the molecules you are trying to resolve. You can get around this by using the '#//Reference Mass Fragmentation Threshold//' feature to exclude tiny fragementation peaks. This would be done by setting the value to 'yes' for applyReferenceMassFragmentsThresholds feature with referenceMassFragmentFilterThreshold, such as referenceMassFragmentFilterThreshold = 5.0 . Alternatively, to be more targeted, if you know *which* fragmentation patterns could be overlapping, you could set those minor fragments to 0 in your reference pattern csv file. TODO: Print out the relevant masses here. This requires keeping track of when they are selected prior to combination maker, and possibly passing them as an additional argument.") print('****************************************') combinations_len = len(combinations) correctionarray = numpy.zeros([1,num_molecules]) @@ -3497,7 +3497,7 @@ def InverseMethodDistinguished(monitored_reference_intensities,reciprocal_matchi try: numpy.linalg.det(reciprocal_matching_correction_values) except: - print("There is an error in a matrix operation evaluation: The number of feasible mass fragments to check is probably less than the number of molecules. This can happen if referenceValueThreshold is too strict, leaving not enough feasible fargments to consider. The program is probably about to crash.") + print("There is an error in a matrix operation evaluation: The number of feasible mass fragments to check is probably less than the number of molecules. This can happen if referenceMassFragmentFilterThreshold is too strict, leaving not enough feasible fargments to consider. The program is probably about to crash.") if numpy.linalg.det(reciprocal_matching_correction_values) != 0:#only solves if determinant is not equal to zero #Now we will solve with the inverse way, and also for uncertainties if that module is present. #The uncertainties module works well for matrix inverse, but not for dot product. So we make a custom function. @@ -4029,7 +4029,7 @@ def SLSUniqueFragments(molecules,monitored_reference_intensities,reciprocal_matc chosenMolecule = None tuplesOfUniqueFragmentsList = [] - if G.minimalReferenceValue == "yes": #We only will do some filtering things if it's requested. + if G.applyReferenceMassFragmentsThresholds == "yes": #We only will do some filtering things if it's requested. #Before going forward, we're going to make a variable called remaining_referenceSignificantFragmentThresholds, using a function. def get_remaining_referenceSignificantFragmentThresholds(referenceSignificantFragmentThresholds, molecules_unedited, remaining_molecules_SLS): remaining_referenceSignificantFragmentThresholds = list(copy.deepcopy(referenceSignificantFragmentThresholds)) @@ -4071,12 +4071,12 @@ def get_remaining_referenceSignificantFragmentThresholds(referenceSignificantFra #consideredMolecule = remaining_molecules_SLS[moleculeIndexOfUniqueIntensity] #This is for debugging purposes, this can be printed. #For debugging, also print remaining_reference_intensities_SLS and massFragmentIndex_i. #However, now we have a few lines of code to check if we are above the referenceSignificantFragmentThresholds. - if G.minimalReferenceValue == "yes": #We only check for the remaining_referenceSignificantFragmentThresholds if this option has been chosen. + if G.applyReferenceMassFragmentsThresholds == "yes": #We only check for the remaining_referenceSignificantFragmentThresholds if this option has been chosen. if (max(remaining_reference_intensities_SLS[massFragmentIndex_i]) < remaining_referenceSignificantFragmentThresholds[moleculeIndexOfUniqueIntensity]): #This allows separate referenceSignificantFragmentThresholds for each molecule. significantFragment = False #Set to false if the fragment is too small. else: significantFragment = True #This means the fragment is greater than or equal to the threshold for significance. - if G.minimalReferenceValue != "yes": #if the option is not selected, then all fragments are considered significant. + if G.applyReferenceMassFragmentsThresholds != "yes": #if the option is not selected, then all fragments are considered significant. significantFragment = True if significantFragment == True: #now make a tuple with the unique standardized intensity in the front so we can sort by that @@ -4707,7 +4707,7 @@ def SLSMethod(molecules,monitored_reference_intensities,reciprocal_matching_corr except: pass except IndexError: - print("Warning: SLS could not solve this problem. If you are already using SLS Common, you can try raising the referenceValueThreshold within the feature Reference Mass Fragmentation Threshold. Alternatively, you can try using inverse.") + print("Warning: SLS could not solve this problem. If you are already using SLS Common, you can try raising the referenceMassFragmentFilterThreshold within the feature Reference Mass Fragmentation Threshold. Alternatively, you can try using inverse.") solutions = numpy.array([None]) #This is just creating a numpy array with an element that has a None object, so that the main function can know that SLSMethod failed. if len(uncertainties_dict) > 0: #Note: the indexing in the solutions must match the original indexing, or errors will occur. Now we take the "filled up" solutions and put everything together. uncertainties_dict['concentrations_relative_uncertainties_one_time'] = uncertainties_dict['concentrations_relative_uncertainties_one_time_after_finisher'].transpose()*1.0 @@ -4751,7 +4751,7 @@ def RawSignalThresholdFilter (distinguished,reciprocal_matching_correction_value monitored_reference_intensities_copy = monitored_reference_intensities rawsignalsarray_copy = remaining_rawsignals_SLS summation = sum(rawsignalsarray_copy) - [rawSignalThresholdMethod,rawSignalThresholdValue,sensitivityThresholdValue,rawSignalThresholdDivider,rawSignalThresholdLimit,rawSignalThresholdLimitPercent] = ThresholdList + [applyRawSignalThresholds,rawSignalThresholdValue,sensitivityThresholdValue,rawSignalThresholdDivider,rawSignalThresholdLimit,rawSignalThresholdLimitPercent] = ThresholdList #this section of the code enables the function to eliminate from the raw signal array (for the purpose of this function only) #the highest value in the array, if it makes up over 90 percent of the raw signals present. This is useful because if one of #the signals does become this great then it will eliminate all the other signals present when it becomes very high @@ -4957,7 +4957,7 @@ def subtract_simulated_signals_of_specific_molecules(moleculeIndicesToSubtract, -#This function is intended to add back any concentration / intensity that was removed or distorted by reference fragmentation pattern high pass filtering (which is UserChoices['minimalReferenceValue']['referenceValueThreshold']). It also adds half of the difference to the uncertainties. As of 5/17/20, only a single recursion iteration is performed. +#This function is intended to add back any concentration / intensity that was removed or distorted by reference fragmentation pattern high pass filtering (which is UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold']). It also adds half of the difference to the uncertainties. As of 5/17/20, only a single recursion iteration is performed. #The corrections are performed from largest to smallest (in percentage), with only one molecule's correction per sls mass. That is, the effect of molecule A's filtering on molecule B's concentration, for example. A molecule can be its largest self correction (A to A). Each molecule is corrected in kind, so serial (stacked) correction is among the possibilities that can occur. #TODO: May 17 2020. Right now, we only take the LARGEST correction for each sls when deciding which sls mass to correct, then we apply that correction. But maybe we should take a single recursion of all molecules affecting? Then apply all molecules to that sls mass before moving to the next one? This would still be a single recursion, but would matter if (for example) a single molecule's sls was able to occur due to filtering out 20 other molecule's contributions at that mass. class referenceThresholdFilterCorrectingSandbox(): @@ -5521,9 +5521,9 @@ def PopulateLogFile(): filename6 = 'LogFile.txt' #the log file is printed here f6 = open(filename6,'a') f6.write('\n') - f6.write('referenceFileName = %s \n'%(G.referenceFileNamesList)) - f6.write('form = %s \n'%(G.referenceFormsList)) - f6.write('collectedFileName = %s \n'%(G.collectedFileName )) + f6.write('referenceFileName = %s \n'%(G.referencePatternsFileNamesList)) + f6.write('form = %s \n'%(G.referencePatternsFormsList)) + f6.write('dataToAnalyzeFileName = %s \n'%(G.dataToAnalyzeFileName )) if G.timeRangeLimit == 'yes':#some of the lines in the backgroundinput file don't need to be printed unless a selection is made, so the if statements here make that happen f6.write('timeRangeLimit = %s \n'%(G.timeRangeLimit)) f6.write('timeRangeStart = %s \n'%(G.timeRangeStart)) @@ -5532,8 +5532,8 @@ def PopulateLogFile(): f6.write('backgroundMassFragment = %s \n'%(G.backgroundMassFragment)) f6.write('backgroundSlopes = %s \n'%(G.backgroundSlopes)) f6.write('backgroundIntercepts = %s \n'%(G.backgroundIntercepts)) - if G.measuredReferenceYorN == 'yes': - f6.write('measuredReferenceYorN = %s \n'%G.measuredReferenceYorN) + if G.tuningCorrection == 'yes': + f6.write('tuningCorrection = %s \n'%G.tuningCorrection) f6.write('referenceCorrectionCoefficientA = %s \n'%(G.referenceCorrectionCoefficients[0])) f6.write('referenceCorrectionCoefficientB = %s \n'%(G.referenceCorrectionCoefficients[1])) f6.write('referenceCorrectionCoefficientC = %s \n'%(G.referenceCorrectionCoefficients[2])) @@ -5576,9 +5576,9 @@ def PopulateLogFile(): f6.write('rpcMoleculesToChange = %s \n'%(G.rpcMoleculesToChange)) f6.write('rpcMoleculesToChangeMF = %s \n'%(G.rpcMoleculesToChangeMF)) f6.write('rpcTimeRanges = %s \n'%(G.rpcTimeRanges)) - if G.minimalReferenceValue == 'yes': - f6.write('minimalReferenceValue = %s \n'%(G.minimalReferenceValue)) - f6.write('referenceValueThreshold = %s \n'%(G.referenceValueThreshold)) + if G.applyReferenceMassFragmentsThresholds == 'yes': + f6.write('applyReferenceMassFragmentsThresholds = %s \n'%(G.applyReferenceMassFragmentsThresholds)) + f6.write('referenceMassFragmentFilterThreshold = %s \n'%(G.referenceMassFragmentFilterThreshold)) f6.write('referenceSignificantFragmentThresholds = %s \n'%(G.referenceSignificantFragmentThresholds)) if G.lowerBoundThresholdChooser == 'yes': f6.write('lowerBoundThresholdChooser = %s \n'%(G.lowerBoundThresholdChooser)) @@ -5591,8 +5591,8 @@ def PopulateLogFile(): f6.write('dataSmootherTimeRadius = %s \n'%(G.dataSmootherTimeRadius)) f6.write('dataSmootherPointRadius = %s \n'%(G.dataSmootherPointRadius)) f6.write('dataSmootherHeadersToConfineTo = %s \n'%(G.dataSmootherHeadersToConfineTo)) - if G.rawSignalThresholdMethod == 'yes': - f6.write('rawSignalThresholdMethod = %s \n'%(G.rawSignalThresholdMethod)) + if G.applyRawSignalThresholds == 'yes': + f6.write('applyRawSignalThresholds = %s \n'%(G.applyRawSignalThresholds)) f6.write('rawSignalThresholdValue = %s \n'%(G.rawSignalThresholdValue)) f6.write('sensitivityThresholdValue = %s \n'%(G.sensitivityThresholdValue)) f6.write('rawSignalThresholdDivider = %s \n'%(G.rawSignalThresholdDivider)) @@ -5688,16 +5688,16 @@ def main(): #if this is not the first iterative run, then the required files are all stored in the highest iteration directory if G.iterativeAnalysis and G.iterationNumber != 1: - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterationDirectoryPreparation(G.iterativeAnalysis, G.iterationNumber) #This function also changes the working directory #Read in the molecules used before parsing the user input file - G.referenceFileNamesList = parse.listCast(G.referenceFileNamesList) - G.referenceFormsList = parse.listCast(G.referenceFormsList) - G.moleculesNames = getMoleculesFromReferenceData(G.referenceFileNamesList[0]) + G.referencePatternsFileNamesList = parse.listCast(G.referencePatternsFileNamesList) + G.referencePatternsFormsList = parse.listCast(G.referencePatternsFormsList) + G.moleculesNames = getMoleculesFromReferenceData(G.referencePatternsFileNamesList[0]) #If a tuning correction is going to be done, we'll make a mixed reference pattern. #G.moleculesNamesExtended needs to be populated before the first tuning correction and before parsing of userinput. - if str(G.measuredReferenceYorN).lower() == 'yes': + if str(G.tuningCorrection).lower() == 'yes': G.moleculesNamesExistingTuning = getMoleculesFromReferenceData(G.referenceFileExistingTuningAndForm[0]) moleculesToAddToReferencePattern = [] for moleculeName in list(G.moleculesNamesExistingTuning): @@ -5707,24 +5707,24 @@ def main(): moleculesToAddToReferencePattern.append(moleculeName) G.moleculesNamesExtended = list(G.moleculesNames) + list(moleculesToAddToReferencePattern) #We are reading the experimental data in and this must be before user input processing so we have the mass fragments - G.exp_mass_fragment_numbers = getMassFragmentsFromCollectedData(G.collectedFileName) + G.exp_mass_fragment_numbers = getMassFragmentsFromCollectedData(G.dataToAnalyzeFileName) #Save an MSReference object containing all molecules and an MSData object containing all mass fragments if G.iterativeAnalysis and G.iterationNumber != 1: #If using iterative and not on the first iteration we will need to remove _iter_x from the file names - AllMoleculesReferenceFileNamesList = [] #Initialize AllMoleculesReferenceDataList as an empty list - for referenceFileNameIndex in range(len(G.referenceFileNamesList)): #Loop through the reference file names list - AllMoleculesReferenceFileName = remove_iter_fromFileName(G.referenceFileNamesList[referenceFileNameIndex]) #Remove the _iter_ from the name so the program has the original filename to access from the parent directory + AllMoleculesreferencePatternsFileNamesList = [] #Initialize AllMoleculesReferenceDataList as an empty list + for referenceFileNameIndex in range(len(G.referencePatternsFileNamesList)): #Loop through the reference file names list + AllMoleculesReferenceFileName = remove_iter_fromFileName(G.referencePatternsFileNamesList[referenceFileNameIndex]) #Remove the _iter_ from the name so the program has the original filename to access from the parent directory AllMoleculesReferenceDataFilePath = os.path.normpath(os.path.join(os.curdir, os.pardir,AllMoleculesReferenceFileName)) #This function will get the path of the reference file from the parent directory - AllMoleculesReferenceFileNamesList.append(AllMoleculesReferenceDataFilePath) #Append the path to the list and the program will read the reference file from the path name - AllMassFragmentsExperimentDataFileName = remove_iter_fromFileName(G.collectedFileName) #Remove _iter_ from the data filename so the program has the original filename to access from the parent directory + AllMoleculesreferencePatternsFileNamesList.append(AllMoleculesReferenceDataFilePath) #Append the path to the list and the program will read the reference file from the path name + AllMassFragmentsExperimentDataFileName = remove_iter_fromFileName(G.dataToAnalyzeFileName) #Remove _iter_ from the data filename so the program has the original filename to access from the parent directory AllMassFragmentsExperimentDataFileNamePath = os.path.normpath(os.path.join(os.curdir, os.pardir, AllMassFragmentsExperimentDataFileName)) #This function will get the path of the data file from the parent directory else: #Otherwise not running iterative or in the first iteration, just copy the filename - AllMoleculesReferenceFileNamesList = copy.copy(G.referenceFileNamesList) - AllMassFragmentsExperimentDataFileNamePath = copy.copy(G.collectedFileName) + AllMoleculesreferencePatternsFileNamesList = copy.copy(G.referencePatternsFileNamesList) + AllMassFragmentsExperimentDataFileNamePath = copy.copy(G.dataToAnalyzeFileName) #Create the MSReference and MSData objects containing all molecules and all mass fragments, respectively - [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_collectedFileName]=readDataFile(AllMassFragmentsExperimentDataFileNamePath) - AllMassFragmentsExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, collectedFileName=exp_collectedFileName) - AllMoleculesReferenceDataList = GenerateReferenceDataList(AllMoleculesReferenceFileNamesList,G.referenceFormsList,G.AllMID_ObjectsDict) + [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_dataToAnalyzeFileName]=readDataFile(AllMassFragmentsExperimentDataFileNamePath) + AllMassFragmentsExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, dataToAnalyzeFileName=exp_dataToAnalyzeFileName) + AllMoleculesReferenceDataList = GenerateReferenceDataList(AllMoleculesreferencePatternsFileNamesList,G.referencePatternsFormsList,G.AllMID_ObjectsDict) #Then prepare AllMoleculesReferenceDataList to get reciprocal_matching_correction_values, this value is fed into RatioFinder for referenceObjectIndex in range(len(AllMoleculesReferenceDataList)): AllMoleculesReferenceDataList[referenceObjectIndex].ExportAtEachStep = 'no' @@ -5760,9 +5760,9 @@ def main(): global currentReferenceData global resultsObjects resultsObjects = {} - [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_collectedFileName]=readDataFile(G.collectedFileName) - ExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, collectedFileName=exp_collectedFileName) - ReferenceDataList = GenerateReferenceDataList(G.referenceFileNamesList,G.referenceFormsList,G.AllMID_ObjectsDict) + [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_dataToAnalyzeFileName]=readDataFile(G.dataToAnalyzeFileName) + ExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, dataToAnalyzeFileName=exp_dataToAnalyzeFileName) + ReferenceDataList = GenerateReferenceDataList(G.referencePatternsFileNamesList,G.referencePatternsFormsList,G.AllMID_ObjectsDict) ExperimentData.provided_mass_fragment_numbers = ExperimentData.mass_fragment_numbers #This is where the experimental uncertainties object first gets populated, but it does get modified later as masses are removed and time-points are removed. if type(G.collectedFileUncertainties) != type(None): @@ -5770,14 +5770,14 @@ def main(): G.collectedFileUncertainties = int(G.collectedFileUncertainties) #Prints a warning if the user has more reference files than specified time ranges - if len(G.referencePatternTimeRanges) > 0 and (len(G.referenceFileNamesList) > len(G.referencePatternTimeRanges)): + if len(G.referencePatternTimeRanges) > 0 and (len(G.referencePatternsFileNamesList) > len(G.referencePatternTimeRanges)): print("WARNING: There are more reference files given than time ranges") #save global variable into the class objects ExperimentData.ExportAtEachStep = G.ExportAtEachStep #if this is the first iterative run, then the reference and experimental files need to have been imported before the iteration can begin if G.iterativeAnalysis and G.iterationNumber == 1 : - #implied arguments for the following function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for the following function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterationFirstDirectoryPreparation(G.iterativeAnalysis, G.iterationNumber) # Skip preProcessing all together if we are loading analyzed data @@ -5848,8 +5848,8 @@ def main(): #This codeblock is for the TuningCorrectorGasMixture feature. It should be before the prototypicalReferenceData is created. #A measured gas mixture spectrum is compared to a simulated gas mixture spectrum, and the tuning correction is then made accordingly. - if G.measuredReferenceYorN == 'yes': - if len(G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames']) > 0: + if G.tuningCorrection == 'yes': + if len(G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames']) > 0: ReferenceDataList = tuningCorrectorGasMixture(ReferenceDataList, G) #Creating prototypicalReferenceData which will be interrogated later for which molecules and masses to expect in the ReferenceDataObjects. prototypicalReferenceData = copy.deepcopy(ReferenceDataList[0]) @@ -5950,7 +5950,7 @@ def main(): G.csvFile, G.moleculesToRestrict, G.csvFileName,G.dataUpperBound, G.dataLowerBound, G.bruteIncrements, G.permutationNum] SLSChoices = [G.uniqueOrCommon, G.slsFinish, G.distinguished] - ThresholdList = [G.rawSignalThresholdMethod, G.rawSignalThresholdValue, G.sensitivityThresholdValue, + ThresholdList = [G.applyRawSignalThresholds, G.rawSignalThresholdValue, G.sensitivityThresholdValue, G.rawSignalThresholdDivider, G.rawSignalThresholdLimit, G.rawSignalThresholdLimitPercent] currentReferenceData = ReferenceDataList[0] #TODO this line is placeholder by charles to fix currentRefenceData issue until Alex has a better solution @@ -6027,7 +6027,7 @@ def main(): #TODO continued: I am putting some variables here to make that process easier by getting some of it done already, then only the user input file needs to be changed. #This feature is intended to remove molecules that have major fragments not observed. previously, it was done in a more complicated way. # now, to simplify things, is being used as a filter that simply sets standardized intensities in the reference patterns to zero. - G.excludeMoleculesIfSignificantFragmentNotObserved = G.rawSignalThresholdMethod + G.excludeMoleculesIfSignificantFragmentNotObserved = G.applyRawSignalThresholds G.minimumSignalRequired = G.rawSignalThresholdValue G.minimumStandardizedReferenceHeightToBeSignificant = G.sensitivityThresholdValue if G.excludeMoleculesIfSignificantFragmentNotObserved == 'yes': @@ -6101,7 +6101,7 @@ def main(): referenceAfterFiltering = currentReferenceData slsSolvedMasses = G.massesUsedInSolvingMoleculesForThisPoint if 0 in slsSolvedMasses: - print("The concentrations are currently not completely solvable by SLS at this time so implicitSLScorrection is being skipped and changed to False. One option to consider is increasing UserChoices['minimalReferenceValue']['referenceValueThreshold'] to a highernumber." ) + print("The concentrations are currently not completely solvable by SLS at this time so implicitSLScorrection is being skipped and changed to False. One option to consider is increasing UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] to a highernumber." ) G.implicitSLScorrection = False else: #Now need to move the class out of this area. Currently test 2 is taking 0.08 to 0.20 anlaysis time versus 0.014 for test_1. diff --git a/ExampleTuningCorrectorGasMixture/UserInput.py b/ExampleTuningCorrectorGasMixture/UserInput.py index 807829aa..1be1c100 100644 --- a/ExampleTuningCorrectorGasMixture/UserInput.py +++ b/ExampleTuningCorrectorGasMixture/UserInput.py @@ -13,10 +13,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ExtractedReferencePattern.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ExtractedReferencePattern.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = 'Collected_Data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = 'Collected_Data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -31,7 +31,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -150,20 +150,20 @@ #Note that 1 is the default and will make no alteration to the data #//Tuning Corrector - Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='yes' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] = ['LiteratureReference.csv','xyyy'] #This is the pattern that will be changed. Typically this is NIST patterns. -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] =[] #normally to be left blank. #This is what the pattern will look more like after everything is done. Typically, this is a measured pattern. -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureSignals'] = [] -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames'] =['ethane', 'ethene', 'ethyne'] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureConcentrations'] =[10, 2, 1] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='yes' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] = ['LiteratureReference.csv','xyyy'] #This is the pattern that will be changed. Typically this is NIST patterns. +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] =[] #normally to be left blank. #This is what the pattern will look more like after everything is done. Typically, this is a measured pattern. +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureSignals'] = [] +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames'] =['ethane', 'ethene', 'ethyne'] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureConcentrations'] =[10, 2, 1] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0. Used as.... Factor = A*X^2 + B*X + C, so A=0,B=0,C=1.0 means the final factor is 1.0 and independent of molecular weight. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. #//Reference Pattern Changer // (rpc) @@ -182,11 +182,11 @@ ] #Make sure every mass you listed was collected otherwise there will be an error. #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [6.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [6.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -214,18 +214,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -298,4 +298,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/ExampleTuningCorrectorGasMixture/userInputValidityFunctions.py b/ExampleTuningCorrectorGasMixture/userInputValidityFunctions.py index 7fd5995b..54a42a19 100644 --- a/ExampleTuningCorrectorGasMixture/userInputValidityFunctions.py +++ b/ExampleTuningCorrectorGasMixture/userInputValidityFunctions.py @@ -8,14 +8,14 @@ ''' def parseUserInput(currentUserInput): #Input Files - currentUserInput.referenceFileNamesList = parse.listCast(currentUserInput.referenceFileNamesList) #referenceFileName needs to be a list - currentUserInput.referenceFileNamesList = parse.stripListOfStrings(currentUserInput.referenceFileNamesList) - currentUserInput.referenceFormsList = parse.listCast(currentUserInput.referenceFormsList) #form needs to be a list - currentUserInput.referenceFormsList = parse.stripListOfStrings(currentUserInput.referenceFormsList) - currentUserInput.referenceFormsList = parse.parallelVectorize(currentUserInput.referenceFormsList,len(currentUserInput.referenceFileNamesList)) #form needs to be a list of the same length as referenceFileName + currentUserInput.referencePatternsFileNamesList = parse.listCast(currentUserInput.referencePatternsFileNamesList) #referenceFileName needs to be a list + currentUserInput.referencePatternsFileNamesList = parse.stripListOfStrings(currentUserInput.referencePatternsFileNamesList) + currentUserInput.referencePatternsFormsList = parse.listCast(currentUserInput.referencePatternsFormsList) #form needs to be a list + currentUserInput.referencePatternsFormsList = parse.stripListOfStrings(currentUserInput.referencePatternsFormsList) + currentUserInput.referencePatternsFormsList = parse.parallelVectorize(currentUserInput.referencePatternsFormsList,len(currentUserInput.referencePatternsFileNamesList)) #form needs to be a list of the same length as referenceFileName currentUserInput.referencePatternTimeRanges = parse.listCast(currentUserInput.referencePatternTimeRanges) #RefPatternTimeRanges needs to be a list - parse.strCheck(currentUserInput.collectedFileName,'collectedFileName') #collectedFileName must be a string - currentUserInput.collectedFileName = currentUserInput.collectedFileName.strip() + parse.strCheck(currentUserInput.dataToAnalyzeFileName,'dataToAnalyzeFileName') #dataToAnalyzeFileName must be a string + currentUserInput.dataToAnalyzeFileName = currentUserInput.dataToAnalyzeFileName.strip() #preProcessing, dataAnalysis, dataSimulation, grapher @@ -52,16 +52,16 @@ def parseUserInput(currentUserInput): if currentUserInput.specificMolecules == 'yes': #if yes, use the user's chosen moleclues chosenMoleculesForParsing = copy.deepcopy(currentUserInput.chosenMoleculesNames) #If using specificMolecules, make sure all selected molecules are in the reference data - if currentUserInput.measuredReferenceYorN == 'no': #If not making a mixed reference pattern, then use the regular moleculesNames object for comparison. + if currentUserInput.tuningCorrection == 'no': #If not making a mixed reference pattern, then use the regular moleculesNames object for comparison. parse.compareElementsBetweenLists(currentUserInput.chosenMoleculesNames,currentUserInput.moleculesNames,'chosenMolecules','Molecules from Reference Data') - if currentUserInput.measuredReferenceYorN == 'yes':#If using a making a reference pattern, check the extended moleculesNames list. + if currentUserInput.tuningCorrection == 'yes':#If using a making a reference pattern, check the extended moleculesNames list. currentUserInput.moleculesNamesExtended = parse.stripListOfStrings(currentUserInput.moleculesNamesExtended) parse.compareElementsBetweenLists(currentUserInput.chosenMoleculesNames,currentUserInput.moleculesNamesExtended,'chosenMolecules','Molecules from Reference Data') elif currentUserInput.specificMolecules == 'no': #Otherwise use all molecules - if currentUserInput.measuredReferenceYorN == 'no': #If not making a mixed reference pattern, then use the regular moleculesNames object for comparison. + if currentUserInput.tuningCorrection == 'no': #If not making a mixed reference pattern, then use the regular moleculesNames object for comparison. currentUserInput.moleculesNames = parse.stripListOfStrings(list(currentUserInput.moleculesNames)) chosenMoleculesForParsing = copy.deepcopy(currentUserInput.moleculesNames) - if currentUserInput.measuredReferenceYorN == 'yes':#If using a making a reference pattern, check the extended moleculesNames list. + if currentUserInput.tuningCorrection == 'yes':#If using a making a reference pattern, check the extended moleculesNames list. currentUserInput.moleculesNamesExtended = parse.stripListOfStrings(currentUserInput.moleculesNamesExtended) chosenMoleculesForParsing = copy.deepcopy(currentUserInput.moleculesNamesExtended) @@ -122,7 +122,7 @@ def parseUserInput(currentUserInput): currentUserInput.scaleRawDataFactor = float(currentUserInput.scaleRawDataFactor) #scaleRawDataFactor is a float #Reference Correction Changer - parse.strCheck(currentUserInput.measuredReferenceYorN,'measuredReferenceYorN') + parse.strCheck(currentUserInput.tuningCorrection,'tuningCorrection') #The below two variables are no longer strings. They are now lists with two elements, each of which are strings. TODO: Change their names to referenceFileExistingTuningAndForm and referenceFileDesiredTuningAndForm #parse.strCheck(currentUserInput.referenceFileExistingTuningAndForm,'referenceFileExistingTuningAndForm') #parse.strCheck(currentUserInput.referenceFileDesiredTuningAndForm,'referenceFileDesiredTuningAndForm') @@ -140,11 +140,11 @@ def parseUserInput(currentUserInput): parse.compareElementsBetweenLists(currentUserInput.rpcMoleculesToChange,chosenMoleculesForParsing,'rpcMoleculesToChange','chosenMolecules') #Reference Mass Fragmentation Threshold - parse.strCheck(currentUserInput.minimalReferenceValue,'minimalReferenceValue') - if currentUserInput.minimalReferenceValue == 'yes': #If using reference mass fragmentation threshold - currentUserInput.referenceValueThreshold = parse.listCast(currentUserInput.referenceValueThreshold) #reference value threshold is a list + parse.strCheck(currentUserInput.applyReferenceMassFragmentsThresholds,'applyReferenceMassFragmentsThresholds') + if currentUserInput.applyReferenceMassFragmentsThresholds == 'yes': #If using reference mass fragmentation threshold + currentUserInput.referenceMassFragmentFilterThreshold = parse.listCast(currentUserInput.referenceMassFragmentFilterThreshold) #reference value threshold is a list #The length of the reference value thresholds needs to be the same length as the number of molecules - currentUserInput.referenceValueThreshold = parse.parallelVectorize(currentUserInput.referenceValueThreshold,len(chosenMoleculesForParsing)) + currentUserInput.referenceMassFragmentFilterThreshold = parse.parallelVectorize(currentUserInput.referenceMassFragmentFilterThreshold,len(chosenMoleculesForParsing)) currentUserInput.referenceSignificantFragmentThresholds = parse.parallelVectorize(currentUserInput.referenceSignificantFragmentThresholds,len(chosenMoleculesForParsing)) @@ -175,9 +175,9 @@ def parseUserInput(currentUserInput): parse.compareElementsBetweenLists(currentUserInput.dataSmootherHeadersToConfineTo,chosenMassFragmentsForParsing,'dataSmootherHeadersToConfineTo','chosenMolecules') #Raw Signal Threshold - parse.strCheck(currentUserInput.rawSignalThresholdMethod,'rawSignalThresholdMethod') + parse.strCheck(currentUserInput.applyRawSignalThresholds,'applyRawSignalThresholds') parse.strCheck(currentUserInput.rawSignalThresholdLimit,'rawSignalThresholdLimit') - if currentUserInput.rawSignalThresholdMethod == 'yes': #If using rawSignalThresholdMethod + if currentUserInput.applyRawSignalThresholds == 'yes': #If using applyRawSignalThresholds #raw signal threshold value, sensitivity value, raw signal threshold divider, and raw signal threshold limit percent are all lists currentUserInput.rawSignalThresholdValue = parse.listCast(currentUserInput.rawSignalThresholdValue) currentUserInput.sensitivityThresholdValue = parse.listCast(currentUserInput.sensitivityThresholdValue) @@ -224,10 +224,10 @@ def parseUserInput(currentUserInput): if currentUserInput.TSC_List_Type == 'MultipleReferencePatterns': #If using multiple reference patterns then the user must input 1 value to use for each reference file or a value for each reference file #Then parallelize these variables to have the same length as number of reference patterns - currentUserInput.moleculesTSC_List = parse.parallelVectorize(currentUserInput.moleculesTSC_List,len(currentUserInput.referenceFileNamesList)) - currentUserInput.moleculeSignalTSC_List = parse.parallelVectorize(currentUserInput.moleculeSignalTSC_List,len(currentUserInput.referenceFileNamesList)) - currentUserInput.massNumberTSC_List = parse.parallelVectorize(currentUserInput.massNumberTSC_List,len(currentUserInput.referenceFileNamesList)) - currentUserInput.moleculeConcentrationTSC_List = parse.parallelVectorize(currentUserInput.moleculeConcentrationTSC_List,len(currentUserInput.referenceFileNamesList)) + currentUserInput.moleculesTSC_List = parse.parallelVectorize(currentUserInput.moleculesTSC_List,len(currentUserInput.referencePatternsFileNamesList)) + currentUserInput.moleculeSignalTSC_List = parse.parallelVectorize(currentUserInput.moleculeSignalTSC_List,len(currentUserInput.referencePatternsFileNamesList)) + currentUserInput.massNumberTSC_List = parse.parallelVectorize(currentUserInput.massNumberTSC_List,len(currentUserInput.referencePatternsFileNamesList)) + currentUserInput.moleculeConcentrationTSC_List = parse.parallelVectorize(currentUserInput.moleculeConcentrationTSC_List,len(currentUserInput.referencePatternsFileNamesList)) #NOTE: vectorizing these lists for 'SeparateMoleculesFactors' occurs in RatioFinder #Output Files @@ -274,10 +274,10 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t #TODO: Consider if G.iterativeAnalysis = True or False should be changed to G.IterativeAnalysis_On or something like that, but will break backwards compatibility unless special care is taken. #Also to consider if other variables should change to have names like G.specificMolecules_chosenMoleculesNames. Probably not necessary since we have the dictionaries. SettingsVDictionary = {} - SettingsVDictionary['referenceFileNamesList'] = UserChoices['inputFiles']['referenceFileNamesList'] - SettingsVDictionary['referenceFormsList'] = UserChoices['inputFiles']['referenceFormsList'] + SettingsVDictionary['referencePatternsFileNamesList'] = UserChoices['inputFiles']['referencePatternsFileNamesList'] + SettingsVDictionary['referencePatternsFormsList'] = UserChoices['inputFiles']['referencePatternsFormsList'] SettingsVDictionary['referencePatternTimeRanges'] = UserChoices['inputFiles']['referencePatternTimeRanges'] - SettingsVDictionary['collectedFileName'] = UserChoices['inputFiles']['collectedFileName'] + SettingsVDictionary['dataToAnalyzeFileName'] = UserChoices['inputFiles']['dataToAnalyzeFileName'] SettingsVDictionary['ionizationDataFileName'] = UserChoices['inputFiles']['ionizationDataFileName'] SettingsVDictionary['preProcessing'] = UserChoices['preProcessing']['on'] @@ -296,7 +296,7 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t SettingsVDictionary['iterationSuffix'] = UserChoices['iterativeAnalysis']['iterationSuffix'] SettingsVDictionary['unusedMolecules'] = UserChoices['iterativeAnalysis']['unusedMolecules'] SettingsVDictionary['oldReferenceFileName'] = UserChoices['iterativeAnalysis']['oldReferenceFileName'] - SettingsVDictionary['oldCollectedFileName'] = UserChoices['iterativeAnalysis']['oldCollectedFileName'] + SettingsVDictionary['oldDataToAnalyzeFileName'] = UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] SettingsVDictionary['nextRefFileName'] = UserChoices['iterativeAnalysis']['nextRefFileName'] SettingsVDictionary['nextExpFileName'] = UserChoices['iterativeAnalysis']['nextExpFileName'] SettingsVDictionary['iterationNumber'] = UserChoices['iterativeAnalysis']['iterationNumber'] @@ -338,22 +338,22 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t SettingsVDictionary['scaleRawDataOption'] = UserChoices['scaleRawDataYorN']['scaleRawDataOption'] SettingsVDictionary['scaleRawDataFactor'] = UserChoices['scaleRawDataYorN']['scaleRawDataFactor'] - SettingsVDictionary['measuredReferenceYorN'] = UserChoices['measuredReferenceYorN']['on'] - if 'createMixedTuningPattern' not in UserChoices['measuredReferenceYorN']: - UserChoices['measuredReferenceYorN']['createMixedTuningPattern'] = True - SettingsVDictionary['createMixedTuningPattern'] = UserChoices['measuredReferenceYorN']['createMixedTuningPattern'] - SettingsVDictionary['referenceFileExistingTuningAndForm'] = UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] - SettingsVDictionary['referenceFileDesiredTuningAndForm'] = UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] - SettingsVDictionary['referenceCorrectionCoefficients'] = UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] + SettingsVDictionary['tuningCorrection'] = UserChoices['tuningCorrection']['on'] + if 'createMixedTuningPattern' not in UserChoices['tuningCorrection']: + UserChoices['tuningCorrection']['createMixedTuningPattern'] = True + SettingsVDictionary['createMixedTuningPattern'] = UserChoices['tuningCorrection']['createMixedTuningPattern'] + SettingsVDictionary['referenceFileExistingTuningAndForm'] = UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] + SettingsVDictionary['referenceFileDesiredTuningAndForm'] = UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] + SettingsVDictionary['referenceCorrectionCoefficients'] = UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] try: #to make sure old unit tests and analyses work. - #if 'tuningCorrectorGasMixtureMoleculeNames' in UserChoices['measuredReferenceYorN'].keys(): - SettingsVDictionary['tuningCorrectorGasMixtureMoleculeNames'] = UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames'] + #if 'tuningCorrectorGasMixtureMoleculeNames' in UserChoices['tuningCorrection'].keys(): + SettingsVDictionary['tuningCorrectorGasMixtureMoleculeNames'] = UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames'] except: #to make sure old unit tests work. SettingsVDictionary['tuningCorrectorGasMixtureMoleculeNames'] = [] - UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames'] = [] + UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames'] = [] try: - SettingsVDictionary['referenceCorrectionCoefficients_cov'] = UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] + SettingsVDictionary['referenceCorrectionCoefficients_cov'] = UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] except: SettingsVDictionary['referenceCorrectionCoefficients_cov'] = [0,0,0] #TODO: This is to keep some old unit tests running. Ideally they should be fixed. SettingsVDictionary['extractReferencePatternFromDataOption'] = UserChoices['extractReferencePatternFromDataOption']['on'] @@ -361,9 +361,9 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t SettingsVDictionary['rpcTimeRanges'] = UserChoices['extractReferencePatternFromDataOption']['rpcTimeRanges'] SettingsVDictionary['rpcMoleculesToChangeMF'] = UserChoices['extractReferencePatternFromDataOption']['rpcMoleculesToChangeMF'] - SettingsVDictionary['minimalReferenceValue'] = UserChoices['minimalReferenceValue']['on'] - SettingsVDictionary['referenceValueThreshold'] = UserChoices['minimalReferenceValue']['referenceValueThreshold'] - SettingsVDictionary['referenceSignificantFragmentThresholds'] = UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] + SettingsVDictionary['applyReferenceMassFragmentsThresholds'] = UserChoices['applyReferenceMassFragmentsThresholds']['on'] + SettingsVDictionary['referenceMassFragmentFilterThreshold'] = UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] + SettingsVDictionary['referenceSignificantFragmentThresholds'] = UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] SettingsVDictionary['lowerBoundThresholdChooser'] = UserChoices['lowerBoundThresholdChooser']['on'] SettingsVDictionary['massesToLowerBoundThresholdFilter'] = UserChoices['lowerBoundThresholdChooser']['massesToLowerBoundThresholdFilter'] @@ -377,12 +377,12 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t SettingsVDictionary['dataSmootherHeadersToConfineTo'] = UserChoices['dataSmootherYorN']['dataSmootherHeadersToConfineTo'] SettingsVDictionary['polynomialOrder'] = UserChoices['dataSmootherYorN']['polynomialOrder'] - SettingsVDictionary['rawSignalThresholdMethod'] = UserChoices['rawSignalThresholdMethod']['on'] - SettingsVDictionary['rawSignalThresholdValue'] = UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] - SettingsVDictionary['sensitivityThresholdValue'] = UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] - SettingsVDictionary['rawSignalThresholdDivider'] = UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] - SettingsVDictionary['rawSignalThresholdLimit'] = UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] - SettingsVDictionary['rawSignalThresholdLimitPercent'] = UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] + SettingsVDictionary['applyRawSignalThresholds'] = UserChoices['applyRawSignalThresholds']['on'] + SettingsVDictionary['rawSignalThresholdValue'] = UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] + SettingsVDictionary['sensitivityThresholdValue'] = UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] + SettingsVDictionary['rawSignalThresholdDivider'] = UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] + SettingsVDictionary['rawSignalThresholdLimit'] = UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] + SettingsVDictionary['rawSignalThresholdLimitPercent'] = UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] SettingsVDictionary['calculateUncertaintiesInConcentrations'] = UserChoices['uncertainties']['calculateUncertaintiesInConcentrations'] SettingsVDictionary['referenceFileUncertainties'] = UserChoices['uncertainties']['referenceFileUncertainties'] diff --git a/MSRESOLVE.py b/MSRESOLVE.py index 5d393d7c..74d4742e 100644 --- a/MSRESOLVE.py +++ b/MSRESOLVE.py @@ -381,7 +381,7 @@ def ABCDetermination(ReferencePatternExistingTuning_FileNameAndForm, ReferencePa ''' - if G.minimalReferenceValue !='yes': + if G.applyReferenceMassFragmentsThresholds !='yes': print("Warning: The ABCDetermination will occur without threshold filtering, since that setting is off.") if G.extractReferencePatternFromDataOption == 'yes': @@ -393,16 +393,16 @@ def ABCDetermination(ReferencePatternExistingTuning_FileNameAndForm, ReferencePa ReferencePatternExistingTuningDict['molecules']=molecules ReferencePatternExistingTuningDict['provided_reference_patterns'] = provided_reference_patterns ReferencePatternExistingTuningDict['provided_reference_patterns'] = StandardizeReferencePattern(ReferencePatternExistingTuningDict['provided_reference_patterns'],len(molecules)) #this does have the molecular weight as the first column. - if G.minimalReferenceValue =='yes': - ReferencePatternExistingTuningDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternExistingTuningDict['provided_reference_patterns'],G.referenceValueThreshold) + if G.applyReferenceMassFragmentsThresholds =='yes': + ReferencePatternExistingTuningDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternExistingTuningDict['provided_reference_patterns'],G.referenceMassFragmentFilterThreshold) ReferencePatternDesiredTuningDict = {} [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form] = readReferenceFile(*ReferencePatternDesiredTuning_FileNameAndForm) ReferencePatternDesiredTuningDict['molecules']=molecules ReferencePatternDesiredTuningDict['provided_reference_patterns'] = provided_reference_patterns ReferencePatternDesiredTuningDict['provided_reference_patterns'] = StandardizeReferencePattern(ReferencePatternDesiredTuningDict['provided_reference_patterns'],len(molecules)) #this does have the molecular weight as the first column. - if G.minimalReferenceValue =='yes': - ReferencePatternDesiredTuningDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternDesiredTuningDict['provided_reference_patterns'],G.referenceValueThreshold) + if G.applyReferenceMassFragmentsThresholds =='yes': + ReferencePatternDesiredTuningDict['provided_reference_patterns'] = ReferenceThresholdFilter(ReferencePatternDesiredTuningDict['provided_reference_patterns'],G.referenceMassFragmentFilterThreshold) ''' Step 3a: Truncate to the molecules which match. @@ -516,17 +516,17 @@ def ABCDetermination(ReferencePatternExistingTuning_FileNameAndForm, ReferencePa #this function either creates or gets the three coefficients for the polynomial correction (Tuning Correction) and calculates #the correction factor for the relative intensities of each mass fragment, outputting a corrected set #of relative intensities -def TuningCorrector(referenceDataArrayWithAbscissa,referenceCorrectionCoefficients, referenceCorrectionCoefficients_cov, referenceFileExistingTuningAndForm=None,referenceFileDesiredTuningAndForm=None,measuredReferenceYorN="no"): +def TuningCorrector(referenceDataArrayWithAbscissa,referenceCorrectionCoefficients, referenceCorrectionCoefficients_cov, referenceFileExistingTuningAndForm=None,referenceFileDesiredTuningAndForm=None,tuningCorrection="no"): #Tuning corrector is designed to work with standardized_reference_patterns, so first we make sure standardize the data. referenceDataArrayWithAbscissa=StandardizeReferencePattern(referenceDataArrayWithAbscissa) if type(referenceCorrectionCoefficients) == type({}):#check if it's a dictionary. If it is, we need to make it a list. referenceCorrectionCoefficients = [referenceCorrectionCoefficients['A'],referenceCorrectionCoefficients['B'],referenceCorrectionCoefficients['C']] - if measuredReferenceYorN =='yes': + if tuningCorrection =='yes': if len(referenceFileDesiredTuningAndForm) == 0:#TODO: this isn't very good logic, but it allows automatic population of referenceFileDesiredTuningAndForm. The problem is it is reading from file again instead of using the already made ReferenceData object. ABCDetermination and possibly TuningCorrector should be changed so that it can take *either* a ReferenceData object **or** a ReferenceData filename. The function can check if it is receiving a string, and if it's not receiving a string it can assume it's receiving an object. - if '.csv' in G.referenceFileNamesList[0]: - referenceFileDesiredTuningAndForm = [ "ExportedDesiredTuningReferencePattern.csv","xyyy" ] #Take the first item from G.referenceFileNamesList and from G.referenceFormsList. - if '.tsv' in G.referenceFileNamesList[0]: - referenceFileDesiredTuningAndForm = [ "ExportedDesiredTuningReferencePattern.tsv","xyyy" ] #Take the first item from G.referenceFileNamesList and from G.referenceFormsList. + if '.csv' in G.referencePatternsFileNamesList[0]: + referenceFileDesiredTuningAndForm = [ "ExportedDesiredTuningReferencePattern.csv","xyyy" ] #Take the first item from G.referencePatternsFileNamesList and from G.referencePatternsFormsList. + if '.tsv' in G.referencePatternsFileNamesList[0]: + referenceFileDesiredTuningAndForm = [ "ExportedDesiredTuningReferencePattern.tsv","xyyy" ] #Take the first item from G.referencePatternsFileNamesList and from G.referencePatternsFormsList. abcCoefficients, abcCoefficients_cov = ABCDetermination(referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm) referenceCorrectionCoefficients[0],referenceCorrectionCoefficients[1],referenceCorrectionCoefficients[2]= abcCoefficients G.referenceCorrectionCoefficients = referenceCorrectionCoefficients #TODO: Maybe this logic should be changed, since it will result in an exporting of the last coefficients used, whether a person is doing forward tuning or reverse tuning. @@ -560,8 +560,8 @@ def TuningCorrector(referenceDataArrayWithAbscissa,referenceCorrectionCoefficien '''Makes a mixed reference pattern from two reference patterns, including tuning correction.''' def createReferencePatternWithTuningCorrection(ReferenceData, verbose=True, returnMixedPattern=False): - #If tuning corrector is off (as of Nov 2021, variable measuredReferenceYorN), then we return ReferenceData unchanged. - if G.measuredReferenceYorN =='no': + #If tuning corrector is off (as of Nov 2021, variable tuningCorrection), then we return ReferenceData unchanged. + if G.tuningCorrection =='no': return ReferenceData @@ -587,7 +587,7 @@ def createReferencePatternWithTuningCorrection(ReferenceData, verbose=True, retu G.referenceCorrectionCoefficients_cov = None #Wanted to do something like "if list(G.referenceCorrectionCoefficients) != [0,0,1]:" but can't do it out here. Can do it inside function. - if G.measuredReferenceYorN =='no': + if G.tuningCorrection =='no': G.createMixedTuningPattern = False #override the mixed tuning pattern choice if there is no measured reference. resetReferenceFileDesiredTuningAndForm = False #initializing. At end, will reset G.referenceFileDesiredTuningAndForm if it was originally blank. @@ -612,7 +612,7 @@ def createReferencePatternWithTuningCorrection(ReferenceData, verbose=True, retu if len(referenceFileDesiredTuningAndForm) == 0:#TODO: this isn't very good logic, but it allows automatic population of referenceFileDesiredTuningAndForm. The problem is it is reading from file again instead of using the already made ReferenceData object. ABCDetermination and possibly TuningCorrector should be changed so that it can take *either* a ReferenceData object **or** a ReferenceData filename. The function can check if it is receiving a string, and if it's not receiving a string it can assume it's receiving an object. resetReferenceFileDesiredTuningAndForm = True if ReferenceDataExistingTuning.referenceFileNameExtension =='csv': - referenceFileDesiredTuningAndForm = [ "ExportedReferencePatternOriginalAnalysis.csv","xyyy" ] #Take the first item from G.referenceFileNamesList and from G.referenceFormsList. + referenceFileDesiredTuningAndForm = [ "ExportedReferencePatternOriginalAnalysis.csv","xyyy" ] #Take the first item from G.referencePatternsFileNamesList and from G.referencePatternsFormsList. if ReferenceDataExistingTuning.referenceFileNameExtension =='tsv': referenceFileDesiredTuningAndForm = [ "ExportedReferencePatternOriginalAnalysis.tsv","xyyy" ] abcCoefficients, abcCoefficients_cov = ABCDetermination(referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm) @@ -659,7 +659,7 @@ def createReferencePatternWithTuningCorrection(ReferenceData, verbose=True, retu referenceFileExistingTuningAndForm = G.referenceFileStandardTuningAndForm if len(referenceFileDesiredTuningAndForm) == 0: #Use the original reference pattern if blank. resetReferenceFileDesiredTuningAndForm = True - referenceFileDesiredTuningAndForm = [G.referenceFileNamesList[0], G.referenceFormsList[0]] #Take the first item from G.referenceFileNamesList and from G.referenceFormsList. + referenceFileDesiredTuningAndForm = [G.referencePatternsFileNamesList[0], G.referencePatternsFormsList[0]] #Take the first item from G.referencePatternsFileNamesList and from G.referencePatternsFormsList. #We don't use the function GenerateReferenceDataList because that function does more than just making a reference object. ReferenceDataExistingTuning = createReferenceDataObject ( referenceFileExistingTuningAndForm[0],referenceFileExistingTuningAndForm[1], AllMID_ObjectsDict=G.AllMID_ObjectsDict) if ReferenceDataExistingTuning.referenceFileNameExtension == 'csv': @@ -708,7 +708,7 @@ def createReferencePatternWithTuningCorrection(ReferenceData, verbose=True, retu ReferenceData.ExportCollector('StandardizeReferencePattern_relative_standard_uncertainties', export_relative_uncertainties= True) elif ((G.createMixedTuningPattern== True) and (G.tuningCorrectPatternInternalVsExternal =='External')): #in this case, we are going to apply the current tuning to the external pattern, and also create a mixed pattern. So the ReferenceData pointer will point to a mixed pattern by the end of this if statement. - if G.measuredReferenceYorN =='yes': + if G.tuningCorrection =='yes': #First read in the existing tuning patterns. referenceFileDesiredTuningAndForm = G.referenceFileDesiredTuningAndForm referenceFileExistingTuningAndForm = G.referenceFileExistingTuningAndForm @@ -716,7 +716,7 @@ def createReferencePatternWithTuningCorrection(ReferenceData, verbose=True, retu referenceFileExistingTuningAndForm = G.referenceFileStandardTuningAndForm if len(referenceFileDesiredTuningAndForm) == 0: #Use the original reference pattern if blank. resetReferenceFileDesiredTuningAndForm = True - referenceFileDesiredTuningAndForm = [G.referenceFileNamesList[0], G.referenceFormsList[0]] #Take the first item from G.referenceFileNamesList and from G.referenceFormsList. + referenceFileDesiredTuningAndForm = [G.referencePatternsFileNamesList[0], G.referencePatternsFormsList[0]] #Take the first item from G.referencePatternsFileNamesList and from G.referencePatternsFormsList. #We don't use the function GenerateReferenceDataList because that function does more than just making a reference object. ReferenceDataExistingTuning = createReferenceDataObject ( referenceFileExistingTuningAndForm[0],referenceFileExistingTuningAndForm[1], AllMID_ObjectsDict=G.AllMID_ObjectsDict) if ReferenceDataExistingTuning.referenceFileNameExtension == 'csv': @@ -881,9 +881,9 @@ def tuningCorrectorGasMixture(ReferenceDataList, G, ExperimentData=None): #makin for moleculeIndex,moleculeName in enumerate(ReferenceDataExistingTuning.molecules): desiredConcentrationIndex = moleculeIndex #Take the concentration if it's named: - if moleculeName in G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames']: - currentConcentrationIndex = list(G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames']).index(moleculeName) - knownConcentrationsArray[desiredConcentrationIndex] = G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureConcentrations'][currentConcentrationIndex] + if moleculeName in G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames']: + currentConcentrationIndex = list(G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames']).index(moleculeName) + knownConcentrationsArray[desiredConcentrationIndex] = G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureConcentrations'][currentConcentrationIndex] else: #else set it to zero. knownConcentrationsArray[desiredConcentrationIndex] = 0 #The first item in the concentrations array is supposed to be the time. We will simply put the integer "1" there, since we will have one point. @@ -911,9 +911,9 @@ def tuningCorrectorGasMixture(ReferenceDataList, G, ExperimentData=None): #makin if ReferenceDataTuningCorrectorGasMixtureSimulatedHypothetical.referenceFileNameExtension == 'tsv': ReferenceDataTuningCorrectorGasMixtureSimulatedHypothetical.exportReferencePattern("ExportedReferencePatternGasMixtureSimulatedHypothetical.tsv") - if len(G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureSignals']) == 0: #if the length is zero, we will populate this with the max and min of the times. - G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureSignals'] = [ min(ExperimentData.times), max(ExperimentData.times)] - if len(G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureSignals']) == 2: #We assume in this case that we have a pair of times. + if len(G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureSignals']) == 0: #if the length is zero, we will populate this with the max and min of the times. + G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureSignals'] = [ min(ExperimentData.times), max(ExperimentData.times)] + if len(G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureSignals']) == 2: #We assume in this case that we have a pair of times. ReferenceDataTuningCorrectorGasMixtureMeasuredHypothetical = copy.deepcopy(ReferenceDataTuningCorrectorGasMixtureSimulatedHypothetical) #just initializing. ReferenceDataTuningCorrectorGasMixtureMeasuredHypothetical.SourceOfFragmentationPatterns = ["measured"] #Get the mass fragments we need. @@ -929,14 +929,14 @@ def tuningCorrectorGasMixture(ReferenceDataList, G, ExperimentData=None): #makin ReferenceDataTuningCorrectorGasMixtureMeasuredHypothetical.provided_reference_patterns[:,1:] = numpy.ones(numpy.shape(ReferenceDataTuningCorrectorGasMixtureMeasuredHypothetical.provided_reference_patterns[:,1:])) ReferenceDataTuningCorrectorGasMixtureMeasuredHypothetical.provided_mass_fragments = ReferenceDataTuningCorrectorGasMixtureMeasuredHypothetical.provided_reference_patterns[:,0] #note that the last two arguments need to be further nested. - ReferenceDataTuningCorrectorGasMixtureMeasuredHypothetical.standardized_reference_patterns,ReferenceDataTuningCorrectorGasMixtureMeasuredHypothetical_uncertainties = ExtractReferencePatternFromData(ExperimentData=ExperimentData, referenceData=ReferenceDataTuningCorrectorGasMixtureMeasuredHypothetical,rpcChosenMolecules=["GasMixture"],rpcChosenMoleculesMF=[commonMF],rpcTimeRanges=[G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureSignals']]) + ReferenceDataTuningCorrectorGasMixtureMeasuredHypothetical.standardized_reference_patterns,ReferenceDataTuningCorrectorGasMixtureMeasuredHypothetical_uncertainties = ExtractReferencePatternFromData(ExperimentData=ExperimentData, referenceData=ReferenceDataTuningCorrectorGasMixtureMeasuredHypothetical,rpcChosenMolecules=["GasMixture"],rpcChosenMoleculesMF=[commonMF],rpcTimeRanges=[G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureSignals']]) if ReferenceDataTuningCorrectorGasMixtureMeasuredHypothetical.referenceFileNameExtension == 'csv': ReferenceDataTuningCorrectorGasMixtureMeasuredHypothetical.exportReferencePattern("ExportedReferencePatternGasMixtureMeasuredHypothetical.csv") if ReferenceDataTuningCorrectorGasMixtureMeasuredHypothetical.referenceFileNameExtension == 'tsv': ReferenceDataTuningCorrectorGasMixtureMeasuredHypothetical.exportReferencePattern("ExportedReferencePatternGasMixtureMeasuredHypothetical.tsv") - if G.measuredReferenceYorN =='yes': + if G.tuningCorrection =='yes': #we are using specific files for obtaining the tuning correction coefficients in the case of GasMixtureTuningCorrector if ReferenceDataTuningCorrectorGasMixtureMeasuredHypothetical.referenceFileNameExtension == 'csv': referenceFileExistingTuningAndForm=["ExportedReferencePatternGasMixtureSimulatedHypothetical.csv","XYYY"] @@ -1037,20 +1037,20 @@ def tuningCorrectorGasMixture(ReferenceDataList, G, ExperimentData=None): #makin #this function eliminates (neglects) reference intensities that are below a certain threshold. Useful for solving #data that is giving negatives or over emphasizing small mass fragments,by assuming no contribution from the molecule at that mass fragment. -def ReferenceThresholdFilter(referenceDataArrayWithAbscissa,referenceValueThreshold): +def ReferenceThresholdFilter(referenceDataArrayWithAbscissa,referenceMassFragmentFilterThreshold): numMolecules = len(referenceDataArrayWithAbscissa[0]-1) - if numMolecules > len(list(referenceValueThreshold)): - referenceValueThreshold = list(referenceValueThreshold)* numMolecules + if numMolecules > len(list(referenceMassFragmentFilterThreshold)): + referenceMassFragmentFilterThreshold = list(referenceMassFragmentFilterThreshold)* numMolecules referenceDataArray = referenceDataArrayWithAbscissa[:,1:] #all the data except the line of abscissa- mass fragment numbers for columncounter in range(len(referenceDataArray[0,:])):#goes through all columns in all rows in reference (this loop is one molecule at a time) for rowcounter in range(len(referenceDataArray[:,0])):#goes through all rows in references (one mass fragment at a time) - if len(referenceValueThreshold) == 1: #this is for if a single value was provided for referenceValueThreshold - if referenceDataArray[rowcounter,columncounter] < referenceValueThreshold[0]: + if len(referenceMassFragmentFilterThreshold) == 1: #this is for if a single value was provided for referenceMassFragmentFilterThreshold + if referenceDataArray[rowcounter,columncounter] < referenceMassFragmentFilterThreshold[0]: referenceDataArray[rowcounter,columncounter] = 0 #made to be equal to zero # (len(referenceDataArray[:,0])) #this is masses. # (len(referenceDataArray[0,:])) #this is molecules - else: #this is for if values of referenceValueThreshold were provided for each molecule. - if referenceDataArray[rowcounter,columncounter] < referenceValueThreshold[columncounter]: + else: #this is for if values of referenceMassFragmentFilterThreshold were provided for each molecule. + if referenceDataArray[rowcounter,columncounter] < referenceMassFragmentFilterThreshold[columncounter]: referenceDataArray[rowcounter,columncounter] = 0 #made to be equal to zero referenceDataArrayWithAbscissa[:,1:] = referenceDataArray #this puts changed referenceData back with mass fragment numbers return referenceDataArrayWithAbscissa @@ -1419,7 +1419,7 @@ def CorrectionValuesObtain(ReferenceData): #NEED AN IF STATEMENT TO DETERMINE THESE COEFFICENTS FROM GAS MIXTURE IF USING THAT. if str(G.referenceFileStandardTuningAndForm[0]).lower() != 'gaxmixture': if len(G.referenceFileDesiredTuningAndForm) == 0: #Use the original reference pattern if blank. - referenceFileDesiredTuningAndForm = [G.referenceFileNamesList[0], G.referenceFormsList[0]] #Take the first item from G.referenceFileNamesList and from G.referenceFormsList. + referenceFileDesiredTuningAndForm = [G.referencePatternsFileNamesList[0], G.referencePatternsFormsList[0]] #Take the first item from G.referencePatternsFileNamesList and from G.referencePatternsFormsList. else: referenceFileDesiredTuningAndForm = G.referenceFileDesiredTuningAndForm abcCoefficients, abcCoefficients_covmat = ABCDetermination(ReferencePatternExistingTuning_FileNameAndForm=referenceFileDesiredTuningAndForm, ReferencePatternDesiredTuning_FileNameAndForm = G.referenceFileStandardTuningAndForm, exportCoefficients=False) #We will separately export the coefficents for this usage. @@ -1463,7 +1463,7 @@ def CorrectionValuesObtain(ReferenceData): listOfMoleculesToRemove.append(moleculeName) ReferenceDataStandardTuning = ReferenceDataStandardTuning.removeMolecules(listOfMoleculesToRemove) #Now have to convert the original reference data for anlaysis to standard tuning to make the mixed pattern. - referenceDataArrayWithAbscissa, referenceDataArrayWithAbscissa_tuning_uncertainties = TuningCorrector(ReferenceDataOriginalStandardTuning.standardized_reference_patterns,abcCoefficients, abcCoefficients_covmat, referenceFileExistingTuningAndForm=None,referenceFileDesiredTuningAndForm=None,measuredReferenceYorN="no") + referenceDataArrayWithAbscissa, referenceDataArrayWithAbscissa_tuning_uncertainties = TuningCorrector(ReferenceDataOriginalStandardTuning.standardized_reference_patterns,abcCoefficients, abcCoefficients_covmat, referenceFileExistingTuningAndForm=None,referenceFileDesiredTuningAndForm=None,tuningCorrection="no") #TuningCorrector un-standardizes the patterns, so the patterns have to be standardized again. ReferenceDataOriginalStandardTuning.standardized_reference_patterns = StandardizeReferencePattern(referenceDataArrayWithAbscissa) ReferenceDataOriginalStandardTuning.standardized_reference_patterns_tuning_uncertainties = referenceDataArrayWithAbscissa_tuning_uncertainties @@ -1926,24 +1926,24 @@ def ImportAnalyzedData(concentrationsOutputName): def ReferenceInputPreProcessing(ReferenceData, verbose=True): #We will skip the regular createReferencePatternWithTuningCorrection if using the gas mixture feature. try: - if len(G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames']) == 0: + if len(G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames']) == 0: ReferenceData = createReferencePatternWithTuningCorrection(ReferenceData, verbose=verbose) except: #This try and except is so that iterative can work correctly. ReferenceData = createReferencePatternWithTuningCorrection(ReferenceData, verbose=verbose) #TODO: the minimal reference value can cause inaccuracies if interpolating between multiple reference patterns if one pattern has a value rounded to 0 and the other does not #TODO: option 1: this issue can be fixed by moving this to after interpolation #TODO: option 2: Or we can below assign to preprocessed_reference_pattern rather than standardized_reference_patterns and then use that in data analysis (Note that interpolate would continue to use standardized_reference_patterns as well as preprocess the output) - if G.minimalReferenceValue == 'yes': + if G.applyReferenceMassFragmentsThresholds == 'yes': if G.implicitSLScorrection == True: #This feature requires us to have unfiltered reference patterns to do an implicit/recursive correction at the end. G.currentReferenceDataUnfiltered = copy.deepcopy(ReferenceData) #Make a copy before any filtering occurs. There is an implied return in global variable. - ReferenceData.standardized_reference_patterns = ReferenceThresholdFilter(ReferenceData.standardized_reference_patterns,G.referenceValueThreshold) + ReferenceData.standardized_reference_patterns = ReferenceThresholdFilter(ReferenceData.standardized_reference_patterns,G.referenceMassFragmentFilterThreshold) ReferenceData.ExportCollector('ReferenceThresholdFilter') #As the program is currently written, this function is called to act upon already threshold filtered standardized reference patterns which could cause innaccuracy. #One could move this function prior to threshold filtering however then correction values would not be correctly calculated for interpolated reference patterns #We are not sure there are any other reasons we can't move this function call. However, there may be some care needed when using uncertainties. ReferenceData.correction_values, ReferenceData.correction_values_relative_uncertainties = CorrectionValuesObtain(ReferenceData) - if G.minimalReferenceValue == 'yes': + if G.applyReferenceMassFragmentsThresholds == 'yes': if G.implicitSLScorrection == True: #This feature requires us to have unfiltered reference patterns to do an implicit/recursive correction at the end. There is an implied return in global variable. G.currentReferenceDataUnfiltered.correction_values, G.currentReferenceDataUnfiltered.correction_values_relative_uncertainties = CorrectionValuesObtain(G.currentReferenceDataUnfiltered) @@ -1954,22 +1954,22 @@ def ReferenceInputPreProcessing(ReferenceData, verbose=True): return ReferenceData ''' -GenerateReferenceDataAndFormsList takes in the list of referenceFileNamesList and the +GenerateReferenceDataAndFormsList takes in the list of referencePatternsFileNamesList and the list of forms. A list is generated containing MSReference objects created based on the referenceFileName and the corresponding form It allows MSRESOLVE to be backwards compatible with previous user input files ''' -def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_ObjectsDict={}): - #referenceFormsList can take values of 'xyyy' or 'xyxy' and must be a string - ##If referenceFileNamesList is a string or if form is a string then make them lists - if isinstance(referenceFileNamesList,str): - referenceFileNamesList = [referenceFileNamesList] - if isinstance(referenceFormsList,str): - referenceFormsList = [referenceFormsList] - #If referenceFileNamesList and forms are lists of 1 then create a list of the single MSReference object +def GenerateReferenceDataList(referencePatternsFileNamesList,referencePatternsFormsList,AllMID_ObjectsDict={}): + #referencePatternsFormsList can take values of 'xyyy' or 'xyxy' and must be a string + ##If referencePatternsFileNamesList is a string or if form is a string then make them lists + if isinstance(referencePatternsFileNamesList,str): + referencePatternsFileNamesList = [referencePatternsFileNamesList] + if isinstance(referencePatternsFormsList,str): + referencePatternsFormsList = [referencePatternsFormsList] + #If referencePatternsFileNamesList and forms are lists of 1 then create a list of the single MSReference object #This allows MSRESOLVE to be backwards compatible with previous user input files while still incorporating the reference pattern time chooser feature - if len(referenceFormsList) == 1 and len(referenceFileNamesList) == 1: - [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referenceFileNamesList[0],referenceFormsList[0]) + if len(referencePatternsFormsList) == 1 and len(referencePatternsFileNamesList) == 1: + [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referencePatternsFileNamesList[0],referencePatternsFormsList[0]) ReferenceDataList = [MSReference(provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName=referenceFileName, form=form, AllMID_ObjectsDict=AllMID_ObjectsDict)] #save each global variable into the class objects ReferenceDataList[0].ExportAtEachStep = G.ExportAtEachStep @@ -1990,11 +1990,11 @@ def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_O ReferenceDataList[0].absolute_standard_uncertainties = absolute_standard_uncertainties #We can't convert to relative uncertainties yet because the file may not be standardized yet. if type(G.referenceFileUncertainties) == type('string'): - if '.csv' in referenceFileNamesList[0]: - provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referenceFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referenceFormsList[0]) + if '.csv' in referencePatternsFileNamesList[0]: + provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referencePatternsFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referencePatternsFormsList[0]) ReferenceDataList[0].absolute_standard_uncertainties = provided_reference_patterns_absolute_uncertainties #Just initializing the variable before filling it properly. - if '.tsv' in referenceFileNamesList[0]: - provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referenceFileNamesList[0][:-4]+"_absolute_uncertainties.tsv",referenceFormsList[0]) + if '.tsv' in referencePatternsFileNamesList[0]: + provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referencePatternsFileNamesList[0][:-4]+"_absolute_uncertainties.tsv",referencePatternsFormsList[0]) ReferenceDataList[0].absolute_standard_uncertainties = provided_reference_patterns_absolute_uncertainties #Just initializing the variable before filling it properly. maximum_absolute_intensities = numpy.amax(ReferenceDataList[0].provided_reference_patterns[:,1:], axis = 0) #Find the maximum intensity for each molecule. ReferenceDataList[0].absolute_standard_uncertainties[:,1:] = 100*ReferenceDataList[0].absolute_standard_uncertainties[:,1:]/maximum_absolute_intensities @@ -2005,22 +2005,22 @@ def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_O ReferenceDataList[0].update_relative_standard_uncertainties() return ReferenceDataList #Otherwise we have multiple reference files and forms - #If just one form is used, make a list of forms that is the same length as referenceFileNamesList - if len(referenceFormsList) == 1: - #Generate a copy of referenceFileNamesList to be overwritten with forms - listOfForms = copy.copy(referenceFileNamesList) + #If just one form is used, make a list of forms that is the same length as referencePatternsFileNamesList + if len(referencePatternsFormsList) == 1: + #Generate a copy of referencePatternsFileNamesList to be overwritten with forms + listOfForms = copy.copy(referencePatternsFileNamesList) #replace each value with the given form - for i in range(len(referenceFileNamesList)): - listOfForms[i] = referenceFormsList[0] - #If list of forms is the same length of referenceFileNamesList then each form should correspond to the referenceFile of the same index - elif len(referenceFormsList) == len(referenceFileNamesList): + for i in range(len(referencePatternsFileNamesList)): + listOfForms[i] = referencePatternsFormsList[0] + #If list of forms is the same length of referencePatternsFileNamesList then each form should correspond to the referenceFile of the same index + elif len(referencePatternsFormsList) == len(referencePatternsFileNamesList): #So just set listOfForms equal to forms - listOfForms = referenceFormsList + listOfForms = referencePatternsFormsList #Initialize ReferenceDataList so it can be appended to ReferenceDataList = [] #For loop to generate each MSReferenceObject and append it to a list - for i in range(len(referenceFileNamesList)): - [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referenceFileNamesList[i],listOfForms[i]) + for i in range(len(referencePatternsFileNamesList)): + [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(referencePatternsFileNamesList[i],listOfForms[i]) ReferenceDataList.append(MSReference(provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName=referenceFileName, form=form, AllMID_ObjectsDict=AllMID_ObjectsDict)) #save each global variable into the class objects ReferenceDataList[i].ExportAtEachStep = G.ExportAtEachStep @@ -2041,10 +2041,10 @@ def GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_O ReferenceDataList[i].absolute_standard_uncertainties = absolute_standard_uncertainties #We can't convert to relative uncertainties yet because the file may not be standardized yet. if type(G.referenceFileUncertainties) == type('string'): - if '.csv'in referenceFileNamesList[0]: - provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referenceFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referenceFormsList[i]) - if '.tsv'in referenceFileNamesList[0]: - provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referenceFileNamesList[0][:-4]+"_absolute_uncertainties.tsv",referenceFormsList[i]) + if '.csv'in referencePatternsFileNamesList[0]: + provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referencePatternsFileNamesList[0][:-4]+"_absolute_uncertainties.csv",referencePatternsFormsList[i]) + if '.tsv'in referencePatternsFileNamesList[0]: + provided_reference_patterns_absolute_uncertainties, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, mass_fragment_numbers_monitored, referenceFileName, form = readReferenceFile(referencePatternsFileNamesList[0][:-4]+"_absolute_uncertainties.tsv",referencePatternsFormsList[i]) ReferenceDataList[i].absolute_standard_uncertainties = provided_reference_patterns_absolute_uncertainties #Just initializing the variable before filling it properly. maximum_absolute_intensities = numpy.amax(ReferenceDataList[i].provided_reference_patterns[:,1:], axis = 0) #Find the maximum intensity for each molecule. ReferenceDataList[i].absolute_standard_uncertainties[:,1:] = ReferenceDataList[i].absolute_standard_uncertainties[:,1:]/maximum_absolute_intensities @@ -2243,7 +2243,7 @@ def PrepareReferenceObjectsAndCorrectionValues(ReferenceData, massesOfInterest=[ # based on the massesOfInterest, which is typically the ExperimentData.mass_fragment_numbers if len(massesOfInterest) > 0: ReferenceData = Populate_reciprocal_matching_correction_values(massesOfInterest,ReferenceData) - if G.minimalReferenceValue == 'yes': + if G.applyReferenceMassFragmentsThresholds == 'yes': if G.implicitSLScorrection == True: #if implicitSLS correction is being used, we need to do it for the unfiltered reference pattern also. G.currentReferenceDataUnfiltered = Populate_reciprocal_matching_correction_values(massesOfInterest,G.currentReferenceDataUnfiltered) #Exports the matching correction value @@ -2257,7 +2257,7 @@ def PrepareReferenceObjectsAndCorrectionValues(ReferenceData, massesOfInterest=[ ## (monitored_reference_intensities) so that it can potentially be applied to other arrays ## like ReferenceData.standardized_reference_patterns ReferenceData = UnnecessaryMoleculesDeleter(ReferenceData) - if G.minimalReferenceValue == 'yes': + if G.applyReferenceMassFragmentsThresholds == 'yes': if G.implicitSLScorrection == True: #if implicitSLS correction is being used, we need to do it for the unfiltered reference pattern also. G.currentReferenceDataUnfiltered = UnnecessaryMoleculesDeleter(G.currentReferenceDataUnfiltered) ReferenceData.ExportCollector('UnnecessaryMoleculesDeleter') @@ -2402,50 +2402,50 @@ def IterativeDirectoryChange(iterativeAnalysis, iterationNumber): os.chdir(iterationDirectoryName) #this will be changed back at the end of the program def IterationDirectoryPreparation(iterativeAnalysis, iterationNumber): - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterativeDirectoryChange(iterativeAnalysis, iterationNumber) #naming for collected file #record the old file names - G.oldcollectedFileName = G.collectedFileName + G.oldDataToAnalyzeFileName = G.dataToAnalyzeFileName #construct the file names for the current run of the program #TODO FIXME, This syntax with -21 will not allow iterative to be compatible with more than 9 iterations - collectedFileNameTemp = str(G.collectedFileName)[:-21] + str(G.iterationSuffix) + str(G.collectedFileName)[-4:] + dataToAnalyzeFileNameTemp = str(G.dataToAnalyzeFileName)[:-21] + str(G.iterationSuffix) + str(G.dataToAnalyzeFileName)[-4:] #copy the experimental and reference files into new names for this iterative run - shutil.copy(G.collectedFileName, collectedFileNameTemp) + shutil.copy(G.dataToAnalyzeFileName, dataToAnalyzeFileNameTemp) #change the globals to reflect the renaming of the ref and exp files - G.collectedFileName = collectedFileNameTemp + G.dataToAnalyzeFileName = dataToAnalyzeFileNameTemp #construct file names for the next run of the program #TODO FIXME, This syntax with -11 will not allow iterative to be compatible with more than 9 iterations - G.nextExpFileName = G.collectedFileName[:-11] + str('_remaining') + G.collectedFileName[-11:] + G.nextExpFileName = G.dataToAnalyzeFileName[:-11] + str('_remaining') + G.dataToAnalyzeFileName[-11:] #naming for reference files G.oldReferenceFileName = [] G.nextRefFileName = [] - for RefIndex, RefName in enumerate(G.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.referencePatternsFileNamesList): #a list #record the old file names G.oldReferenceFileName.append(RefName) #construct the file names for the current run of the program #TODO FIXME, This syntax with -18 will not allow iterative to be compatible with more than 9 iterations - referenceFileNameTemp = G.referenceFileNamesList[RefIndex][:-18] + str(G.iterationSuffix) + G.referenceFileNamesList[RefIndex][-4:] + referenceFileNameTemp = G.referencePatternsFileNamesList[RefIndex][:-18] + str(G.iterationSuffix) + G.referencePatternsFileNamesList[RefIndex][-4:] #copy the experimental and reference files into new names for this iterative run shutil.copy(RefName, referenceFileNameTemp) #change the globals to reflect the renaming of the ref and exp files - G.referenceFileNamesList[RefIndex] = referenceFileNameTemp + G.referencePatternsFileNamesList[RefIndex] = referenceFileNameTemp #construct file names for the next run of the program #TODO FIXME, This syntax with -18 will not allow iterative to be compatible with more than 9 iterations G.nextRefFileName.append(RefName[:-18] + '_unused_iter_%s' %G.iterationNumber + RefName[-4:]) return None - #implied returns: G.oldReferenceFileName, G.oldcollectedFileName, G.referenceFileNamesList,G.collectedFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber + #implied returns: G.oldReferenceFileName, G.oldDataToAnalyzeFileName, G.referencePatternsFileNamesList,G.dataToAnalyzeFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber def IterationFirstDirectoryPreparation(iterativeAnalysis,iterationNumber): - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName #this global value is set so that each export statement can label the output files correctly G.iterationNumber = iterationNumber @@ -2464,27 +2464,27 @@ def IterationFirstDirectoryPreparation(iterativeAnalysis,iterationNumber): AppendListToFile("__var_list__", G.__var_list__, "UserInput_iter_1.py", float('Inf')) #record the old file names - G.oldcollectedFileName = G.collectedFileName + G.oldDataToAnalyzeFileName = G.dataToAnalyzeFileName #construct the file names for the first run of the program - G.collectedFileName = G.collectedFileName[:-4] + str(G.iterationSuffix) + G.collectedFileName[-4:] + G.dataToAnalyzeFileName = G.dataToAnalyzeFileName[:-4] + str(G.iterationSuffix) + G.dataToAnalyzeFileName[-4:] #construct file names for the second run of the program #TODO FIXME, This syntax with -11 will not allow iterative to be compatible with more than 9 iterations - G.nextExpFileName = G.collectedFileName[:-11] + '_remaining_iter_1' + G.collectedFileName[-4:] + G.nextExpFileName = G.dataToAnalyzeFileName[:-11] + '_remaining_iter_1' + G.dataToAnalyzeFileName[-4:] G.oldReferenceFileName = [] - for RefIndex, RefName in enumerate(G.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.referencePatternsFileNamesList): #a list G.oldReferenceFileName.append(RefName) #construct the file names for the first run of the program - G.referenceFileNamesList[RefIndex] = G.referenceFileNamesList[RefIndex][:-4] + str(G.iterationSuffix) + G.referenceFileNamesList[RefIndex][-4:] + G.referencePatternsFileNamesList[RefIndex] = G.referencePatternsFileNamesList[RefIndex][:-4] + str(G.iterationSuffix) + G.referencePatternsFileNamesList[RefIndex][-4:] #construct file names for the second run of the program G.nextRefFileName.append(RefName[:-4] + '_unused_iter_1' + RefName[-4:]) return None - #implied returns: G.oldReferenceFileName, G.oldcollectedFileName, G.referenceFileNamesList,G.collectedFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber + #implied returns: G.oldReferenceFileName, G.oldDataToAnalyzeFileName, G.referencePatternsFileNamesList,G.dataToAnalyzeFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber #The IterativeAnalysisDirectory and Variable Population function is used to shrink the size of the program analysis and redirect the output. def IADirandVarPopulation(iterativeAnalysis, chosenMassFragments, chosenMolecules, ExperimentData, ExperimentDataFullCopy, ReferenceDataList, ReferenceDataListFullCopy): - #implied arguments: G.dataSimulation, G.referenceFileNamesList, G.collectedFileName, G.nextRefFileName, G.oldReferenceFileName, G.chosenMoleculesNames, G.iterationNumber + #implied arguments: G.dataSimulation, G.referencePatternsFileNamesList, G.dataToAnalyzeFileName, G.nextRefFileName, G.oldReferenceFileName, G.chosenMoleculesNames, G.iterationNumber #override data simulation to yes if it was not selected if G.dataSimulation != 'yes': print("Iterative analysis cannot find the remaining signals in the experiment without signal simulation being run.") @@ -2514,11 +2514,11 @@ def IADirandVarPopulation(iterativeAnalysis, chosenMassFragments, chosenMolecule for RefObjectIndex, RefObject in enumerate(ReferenceDataList): #a list #Export current Reference Data #Reference data is trimmed prior to this function - ExportXYYYData(G.referenceFileNamesList[RefObjectIndex], RefObject.provided_reference_patterns, RefObject.molecules, abscissaHeader = 'M/Z') + ExportXYYYData(G.referencePatternsFileNamesList[RefObjectIndex], RefObject.provided_reference_patterns, RefObject.molecules, abscissaHeader = 'M/Z') #Export current Experimental Data #Experimental data is trimmed prior to this function, but it still needs to be exported - ExportXYYYData(G.collectedFileName, ExperimentData.workingData, ExperimentData.mass_fragment_numbers, + ExportXYYYData(G.dataToAnalyzeFileName, ExperimentData.workingData, ExperimentData.mass_fragment_numbers, abscissaHeader = ExperimentData.abscissaHeader, dataType = 'preProcessed', rowIndex = ExperimentData.times) for RefObjectIndex, RefObject in enumerate(ReferenceDataList): #a list @@ -2619,8 +2619,8 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): G.nextUserInputModule.__var_list__ = G.__var_list__ #save the new file name for the next user input file - G.nextUserInputModule.collectedFileName = G.nextExpFileName - G.nextUserInputModule.referenceFileNamesList = G.nextRefFileName + G.nextUserInputModule.dataToAnalyzeFileName = G.nextExpFileName + G.nextUserInputModule.referencePatternsFileNamesList = G.nextRefFileName #updating the selected molecules for the next user input file G.nextUserInputModule.chosenMoleculesNames = G.unusedMolecules #Updating the selected masses for the next user input file @@ -2641,7 +2641,7 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): G.nextUserInputModule.scaleRawDataFactor = G.scaleRawDataFactor #Now going to overwrite parallelized variables with their original versions if they were set to length of chosen molecules. - delimitedStringOfVariablesToUnparallelize = 'moleculeLikelihoods, sensitivityValues, referenceValueThreshold, referenceSignificantFragmentThresholds' + delimitedStringOfVariablesToUnparallelize = 'moleculeLikelihoods, sensitivityValues, referenceMassFragmentFilterThreshold, referenceSignificantFragmentThresholds' listOfVariablesToUnparallelize = delimitedStringOfVariablesToUnparallelize.split(", ") #Note that we are using ", " as the delimiter, not just "," for variable in listOfVariablesToUnparallelize: G.nextUserInputModule.__dict__[variable]=G.beforeParsedGDict[variable] @@ -2658,14 +2658,14 @@ def IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy): #copy the experimental signals to the next iteration copyFromPath = os.path.join(os.curdir, os.pardir, str(iterationDirectoryName), - str(G.nextUserInputModule.collectedFileName)) + str(G.nextUserInputModule.dataToAnalyzeFileName)) shutil.copy(copyFromPath, os.getcwd()) - for RefIndex, RefName in enumerate(G.nextUserInputModule.referenceFileNamesList): #a list + for RefIndex, RefName in enumerate(G.nextUserInputModule.referencePatternsFileNamesList): #a list #copy the next reference file from the previous iteration folder to the next iteration folder copyFromPath = os.path.join(os.curdir, os.pardir, str(iterationDirectoryName), - str(G.nextUserInputModule.referenceFileNamesList[RefIndex])) + str(G.nextUserInputModule.referencePatternsFileNamesList[RefIndex])) shutil.copy(copyFromPath, os.getcwd()) #returning to the parent directory os.chdir('..') @@ -2693,15 +2693,15 @@ def IterativeAnalysisPostProcessing(ExperimentData, simulateddata, mass_fragment exportSimulatedSignalsSoFar(G.simulatedSignalsOutputName,iterationDirectoryName,G.iterationNumber) #subtract 1 from the iteration number since the iteration number has already been changed IterativePrepareNextIterationInputFiles(ExperimentDataFullCopy) return None - #implied returns: G.referenceFileNamesList, G.collectedFileName, G.nextRefFileName, G.chosenMoleculesNames, G.iterationSuffix + #implied returns: G.referencePatternsFileNamesList, G.dataToAnalyzeFileName, G.nextRefFileName, G.chosenMoleculesNames, G.iterationSuffix ############################################################################### ######################### Functions to read data files ####################### ############################################################################### #These functions read in the experimental data file and the reference file. The #returned variables can then be used to initialize the respective classes. -def readDataFile(collectedFileName): +def readDataFile(dataToAnalyzeFileName): #read the csv file into a dataframe. dataFrame means "dataframe" and is a pandas object. - dataFrame = pandas.read_csv('%s' %collectedFileName, header=None) + dataFrame = pandas.read_csv('%s' %dataToAnalyzeFileName, header=None) ''' generate mass fragment list''' #select only the 2nd row down, all columns except for the first. #"iloc" is a pandas dataframe function. All it does is select a portion of the data. @@ -2744,7 +2744,7 @@ def readDataFile(collectedFileName): rawCollectedData = numpy.vstack((rawCollectedData,rawCollectedData)) - return mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName + return mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName #readReferenceFile is a helper function that reads the reference file in a certain form and returns the #variables and data that are used to initialize the class. It can read files both in XYYY and XYXY form. @@ -3065,10 +3065,10 @@ def FromXYXYtoXYYY(provided_reference_patterns): ''' getMassFragmentsFromCollectedData is a function that takes in the collected filename and returns the mass fragments present in the data ''' -def getMassFragmentsFromCollectedData(CollectedFileName): +def getMassFragmentsFromCollectedData(dataToAnalyzeFileName): #Read the csv file #TODO CHange to use numpy.gen_from_text instead of pandas - DataInfo = pandas.read_csv(CollectedFileName,header=0) + DataInfo = pandas.read_csv(dataToAnalyzeFileName,header=0) #Convert the data into an array DataInfoArray = numpy.array(DataInfo) #Get the names of mass fragments in collected data @@ -3142,9 +3142,9 @@ class MSData (object): #self.mass_fragment_numbers , 1D and must be integers #self.rawCollectedData, a 2D array of the signals. - def __init__(self, mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName=None): + def __init__(self, mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName=None): - self.mass_fragment_numbers, self.abscissaHeader, self.times, self.rawCollectedData, self.collectedFileName=mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName + self.mass_fragment_numbers, self.abscissaHeader, self.times, self.rawCollectedData, self.dataToAnalyzeFileName=mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName #class object variable created to allow class to be used separately from the program. self.ExportAtEachStep = '' @@ -3628,7 +3628,7 @@ def CombinationMaker(reciprocal_matching_correction_values,rawsignalsarrayline,m if len(combinations) == 0:#This function will not work without enough mass fragments, so the user must know the problem print('****************************************') print('Not enough matching mass fragments input') - print("This means that at some point in the analysis, there were not enough masses in the reference file to apply the inverse method. It could mean you have too many overlapping masses for the molecules you are trying to resolve. You can get around this by using the '#//Reference Mass Fragmentation Threshold//' feature to exclude tiny fragementation peaks. This would be done by setting the value to 'yes' for minimalReferenceValue feature with referenceValueThreshold, such as referenceValueThreshold = 5.0 . Alternatively, to be more targeted, if you know *which* fragmentation patterns could be overlapping, you could set those minor fragments to 0 in your reference pattern csv file. TODO: Print out the relevant masses here. This requires keeping track of when they are selected prior to combination maker, and possibly passing them as an additional argument.") + print("This means that at some point in the analysis, there were not enough masses in the reference file to apply the inverse method. It could mean you have too many overlapping masses for the molecules you are trying to resolve. You can get around this by using the '#//Reference Mass Fragmentation Threshold//' feature to exclude tiny fragementation peaks. This would be done by setting the value to 'yes' for applyReferenceMassFragmentsThresholds feature with referenceMassFragmentFilterThreshold, such as referenceMassFragmentFilterThreshold = 5.0 . Alternatively, to be more targeted, if you know *which* fragmentation patterns could be overlapping, you could set those minor fragments to 0 in your reference pattern csv file. TODO: Print out the relevant masses here. This requires keeping track of when they are selected prior to combination maker, and possibly passing them as an additional argument.") print('****************************************') combinations_len = len(combinations) correctionarray = numpy.zeros([1,num_molecules]) @@ -3891,7 +3891,7 @@ def InverseMethodDistinguished(monitored_reference_intensities,reciprocal_matchi try: numpy.linalg.det(reciprocal_matching_correction_values) except: - print("There is an error in a matrix operation evaluation: The number of feasible mass fragments to check is probably less than the number of molecules. This can happen if referenceValueThreshold is too strict, leaving not enough feasible fargments to consider. The program is probably about to crash.") + print("There is an error in a matrix operation evaluation: The number of feasible mass fragments to check is probably less than the number of molecules. This can happen if referenceMassFragmentFilterThreshold is too strict, leaving not enough feasible fargments to consider. The program is probably about to crash.") if numpy.linalg.det(reciprocal_matching_correction_values) != 0:#only solves if determinant is not equal to zero #Now we will solve with the inverse way, and also for uncertainties if that module is present. #The uncertainties module works well for matrix inverse, but not for dot product. So we make a custom function. @@ -4431,7 +4431,7 @@ def SLSUniqueFragments(molecules,monitored_reference_intensities,reciprocal_matc chosenMolecule = None tuplesOfUniqueFragmentsList = [] - if G.minimalReferenceValue == "yes": #We only will do some filtering things if it's requested. + if G.applyReferenceMassFragmentsThresholds == "yes": #We only will do some filtering things if it's requested. #Before going forward, we're going to make a variable called remaining_referenceSignificantFragmentThresholds, using a function. def get_remaining_referenceSignificantFragmentThresholds(referenceSignificantFragmentThresholds, molecules_unedited, remaining_molecules_SLS): remaining_referenceSignificantFragmentThresholds = list(copy.deepcopy(referenceSignificantFragmentThresholds)) @@ -4471,12 +4471,12 @@ def get_remaining_referenceSignificantFragmentThresholds(referenceSignificantFra #consideredMolecule = remaining_molecules_SLS[moleculeIndexOfUniqueIntensity] #This is for debugging purposes, this can be printed. #For debugging, also print remaining_reference_intensities_SLS and massFragmentIndex_i. #However, now we have a few lines of code to check if we are above the referenceSignificantFragmentThresholds. - if G.minimalReferenceValue == "yes": #We only check for the remaining_referenceSignificantFragmentThresholds if this option has been chosen. + if G.applyReferenceMassFragmentsThresholds == "yes": #We only check for the remaining_referenceSignificantFragmentThresholds if this option has been chosen. if (max(remaining_reference_intensities_SLS[massFragmentIndex_i]) < remaining_referenceSignificantFragmentThresholds[moleculeIndexOfUniqueIntensity]): #This allows separate referenceSignificantFragmentThresholds for each molecule. significantFragment = False #Set to false if the fragment is too small. else: significantFragment = True #This means the fragment is greater than or equal to the threshold for significance. - if G.minimalReferenceValue != "yes": #if the option is not selected, then all fragments are considered significant. + if G.applyReferenceMassFragmentsThresholds != "yes": #if the option is not selected, then all fragments are considered significant. significantFragment = True if significantFragment == True: #now make a tuple with the unique standardized intensity in the front so we can sort by that @@ -5137,7 +5137,7 @@ def SLSMethod(molecules,monitored_reference_intensities,reciprocal_matching_corr if len(solvedmolecules) == 0: print("Warning: If you have chosen to use unique fragment SLS and your data has no unique fragments (not unique to any molecule), "\ "then the program may be about to crash. If autosolver has been turned on, the program will first attempt to use SLS common and then inverse." \ - " You may want to try using referenceValueThreshold within the feature Reference Mass Fragmentation Threshold, or to raise referenceValueThreshold if already using it.") + " You may want to try using referenceMassFragmentFilterThreshold within the feature Reference Mass Fragmentation Threshold, or to raise referenceMassFragmentFilterThreshold if already using it.") try: #if the molecule wasn't solved for in the inital analysis, then it will have 0 for its solved molecules counter. if solvedmolecules[molecule_iiii] == 0: @@ -5150,7 +5150,7 @@ def SLSMethod(molecules,monitored_reference_intensities,reciprocal_matching_corr except: pass except IndexError: - print("Warning: SLS could not solve this problem. If you are already using SLS Common, you can try raising the referenceValueThreshold within the feature Reference Mass Fragmentation Threshold. Alternatively, you can try using 'inverse' rather than 'sls'.") + print("Warning: SLS could not solve this problem. If you are already using SLS Common, you can try raising the referenceMassFragmentFilterThreshold within the feature Reference Mass Fragmentation Threshold. Alternatively, you can try using 'inverse' rather than 'sls'.") solutions = numpy.array([None]) #This is just creating a numpy array with an element that has a None object, so that the main function can know that SLSMethod failed. if len(uncertainties_dict) > 0: #Note: the indexing in the solutions must match the original indexing, or errors will occur. Now we take the "filled up" solutions and put everything together. uncertainties_dict['concentrations_relative_uncertainties_one_time'] = uncertainties_dict['concentrations_relative_uncertainties_one_time_after_finisher'].transpose()*1.0 @@ -5194,7 +5194,7 @@ def RawSignalThresholdFilter (distinguished,reciprocal_matching_correction_value monitored_reference_intensities_copy = monitored_reference_intensities rawsignalsarray_copy = remaining_rawsignals_SLS summation = sum(rawsignalsarray_copy) - [rawSignalThresholdMethod,rawSignalThresholdValue,sensitivityThresholdValue,rawSignalThresholdDivider,rawSignalThresholdLimit,rawSignalThresholdLimitPercent] = ThresholdList + [applyRawSignalThresholds,rawSignalThresholdValue,sensitivityThresholdValue,rawSignalThresholdDivider,rawSignalThresholdLimit,rawSignalThresholdLimitPercent] = ThresholdList #this section of the code enables the function to eliminate from the raw signal array (for the purpose of this function only) #the highest value in the array, if it makes up over 90 percent of the raw signals present. This is useful because if one of #the signals does become this great then it will eliminate all the other signals present when it becomes very high @@ -5400,7 +5400,7 @@ def subtract_simulated_signals_of_specific_molecules(moleculeIndicesToSubtract, -#This function is intended to add back any concentration / intensity that was removed or distorted by reference fragmentation pattern high pass filtering (which is UserChoices['minimalReferenceValue']['referenceValueThreshold']). It also adds half of the difference to the uncertainties. As of 5/17/20, only a single recursion iteration is performed. +#This function is intended to add back any concentration / intensity that was removed or distorted by reference fragmentation pattern high pass filtering (which is UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold']). It also adds half of the difference to the uncertainties. As of 5/17/20, only a single recursion iteration is performed. #The corrections are performed from largest to smallest (in percentage), with only one molecule's correction per sls mass. That is, the effect of molecule A's filtering on molecule B's concentration, for example. A molecule can be its largest self correction (A to A). Each molecule is corrected in kind, so serial (stacked) correction is among the possibilities that can occur. #TODO: May 17 2020. Right now, we only take the LARGEST correction for each sls when deciding which sls mass to correct, then we apply that correction. But maybe we should take a single recursion of all molecules affecting? Then apply all molecules to that sls mass before moving to the next one? This would still be a single recursion, but would matter if (for example) a single molecule's sls was able to occur due to filtering out 20 other molecule's contributions at that mass. class referenceThresholdFilterCorrectingSandbox(): @@ -5966,9 +5966,9 @@ def PopulateLogFile(): filename6 = 'LogFile.txt' #the log file is printed here f6 = open(filename6,'a') f6.write('\n') - f6.write('referenceFileName = %s \n'%(G.referenceFileNamesList)) - f6.write('form = %s \n'%(G.referenceFormsList)) - f6.write('collectedFileName = %s \n'%(G.collectedFileName )) + f6.write('referenceFileName = %s \n'%(G.referencePatternsFileNamesList)) + f6.write('form = %s \n'%(G.referencePatternsFormsList)) + f6.write('dataToAnalyzeFileName = %s \n'%(G.dataToAnalyzeFileName )) if G.timeRangeLimit == 'yes':#some of the lines in the backgroundinput file don't need to be printed unless a selection is made, so the if statements here make that happen f6.write('timeRangeLimit = %s \n'%(G.timeRangeLimit)) f6.write('timeRangeStart = %s \n'%(G.timeRangeStart)) @@ -5977,8 +5977,8 @@ def PopulateLogFile(): f6.write('backgroundMassFragment = %s \n'%(G.backgroundMassFragment)) f6.write('backgroundSlopes = %s \n'%(G.backgroundSlopes)) f6.write('backgroundIntercepts = %s \n'%(G.backgroundIntercepts)) - if G.measuredReferenceYorN == 'yes': - f6.write('measuredReferenceYorN = %s \n'%G.measuredReferenceYorN) + if G.tuningCorrection == 'yes': + f6.write('tuningCorrection = %s \n'%G.tuningCorrection) f6.write('referenceCorrectionCoefficientA = %s \n'%(G.referenceCorrectionCoefficients[0])) f6.write('referenceCorrectionCoefficientB = %s \n'%(G.referenceCorrectionCoefficients[1])) f6.write('referenceCorrectionCoefficientC = %s \n'%(G.referenceCorrectionCoefficients[2])) @@ -6022,9 +6022,9 @@ def PopulateLogFile(): f6.write('rpcMoleculesToChange = %s \n'%(G.rpcMoleculesToChange)) f6.write('rpcMoleculesToChangeMF = %s \n'%(G.rpcMoleculesToChangeMF)) f6.write('rpcTimeRanges = %s \n'%(G.rpcTimeRanges)) - if G.minimalReferenceValue == 'yes': - f6.write('minimalReferenceValue = %s \n'%(G.minimalReferenceValue)) - f6.write('referenceValueThreshold = %s \n'%(G.referenceValueThreshold)) + if G.applyReferenceMassFragmentsThresholds == 'yes': + f6.write('applyReferenceMassFragmentsThresholds = %s \n'%(G.applyReferenceMassFragmentsThresholds)) + f6.write('referenceMassFragmentFilterThreshold = %s \n'%(G.referenceMassFragmentFilterThreshold)) f6.write('referenceSignificantFragmentThresholds = %s \n'%(G.referenceSignificantFragmentThresholds)) if G.lowerBoundThresholdChooser == 'yes': f6.write('lowerBoundThresholdChooser = %s \n'%(G.lowerBoundThresholdChooser)) @@ -6037,8 +6037,8 @@ def PopulateLogFile(): f6.write('dataSmootherTimeRadius = %s \n'%(G.dataSmootherTimeRadius)) f6.write('dataSmootherPointRadius = %s \n'%(G.dataSmootherPointRadius)) f6.write('dataSmootherHeadersToConfineTo = %s \n'%(G.dataSmootherHeadersToConfineTo)) - if G.rawSignalThresholdMethod == 'yes': - f6.write('rawSignalThresholdMethod = %s \n'%(G.rawSignalThresholdMethod)) + if G.applyRawSignalThresholds == 'yes': + f6.write('applyRawSignalThresholds = %s \n'%(G.applyRawSignalThresholds)) f6.write('rawSignalThresholdValue = %s \n'%(G.rawSignalThresholdValue)) f6.write('sensitivityThresholdValue = %s \n'%(G.sensitivityThresholdValue)) f6.write('rawSignalThresholdDivider = %s \n'%(G.rawSignalThresholdDivider)) @@ -6212,22 +6212,22 @@ def main(): #if this is not the first iterative run, then the required files are all stored in the highest iteration directory if G.iterativeAnalysis and G.iterationNumber != 1: - #implied arguments for this function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for this function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterationDirectoryPreparation(G.iterativeAnalysis, G.iterationNumber) #This function also changes the working directory #Read in the molecules used before parsing the user input file - G.referenceFileNamesList = parse.listCast(G.referenceFileNamesList) - G.referenceFormsList = parse.listCast(G.referenceFormsList) + G.referencePatternsFileNamesList = parse.listCast(G.referencePatternsFileNamesList) + G.referencePatternsFormsList = parse.listCast(G.referencePatternsFormsList) [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, relativeIonizationEfficiencies, moleculeIonizationType, - mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(G.referenceFileNamesList[0], G.referenceFormsList[0]) + mass_fragment_numbers_monitored, referenceFileName, form]=readReferenceFile(G.referencePatternsFileNamesList[0], G.referencePatternsFormsList[0]) G.moleculesNames = molecules #If a tuning correction is going to be done, and if requested, we'll make a mixed reference pattern. #G.moleculesNamesExtended needs to be populated before the first tuning correction and before parsing of userinput. - if str(G.measuredReferenceYorN).lower() == 'yes': + if str(G.tuningCorrection).lower() == 'yes': if G.createMixedTuningPattern == True: if len(G.referenceFileExistingTuningAndForm) == 0: G.referenceFileExistingTuningAndForm = G.referenceFileStandardTuningAndForm #Use the standard tuning file if blank. @@ -6245,24 +6245,24 @@ def main(): #We are reading the experimental data in and this must be before user input processing so we have the mass fragments - G.exp_mass_fragment_numbers = getMassFragmentsFromCollectedData(G.collectedFileName) + G.exp_mass_fragment_numbers = getMassFragmentsFromCollectedData(G.dataToAnalyzeFileName) #Save an MSReference object containing all molecules and an MSData object containing all mass fragments if G.iterativeAnalysis and G.iterationNumber != 1: #If using iterative and not on the first iteration we will need to remove _iter_x from the file names - AllMoleculesReferenceFileNamesList = [] #Initialize AllMoleculesReferenceDataList as an empty list - for referenceFileNameIndex in range(len(G.referenceFileNamesList)): #Loop through the reference file names list - AllMoleculesReferenceFileName = remove_iter_fromFileName(G.referenceFileNamesList[referenceFileNameIndex]) #Remove the _iter_ from the name so the program has the original filename to access from the parent directory + AllMoleculesreferencePatternsFileNamesList = [] #Initialize AllMoleculesReferenceDataList as an empty list + for referenceFileNameIndex in range(len(G.referencePatternsFileNamesList)): #Loop through the reference file names list + AllMoleculesReferenceFileName = remove_iter_fromFileName(G.referencePatternsFileNamesList[referenceFileNameIndex]) #Remove the _iter_ from the name so the program has the original filename to access from the parent directory AllMoleculesReferenceDataFilePath = os.path.normpath(os.path.join(os.curdir, os.pardir,AllMoleculesReferenceFileName)) #This function will get the path of the reference file from the parent directory - AllMoleculesReferenceFileNamesList.append(AllMoleculesReferenceDataFilePath) #Append the path to the list and the program will read the reference file from the path name - AllMassFragmentsExperimentDataFileName = remove_iter_fromFileName(G.collectedFileName) #Remove _iter_ from the data filename so the program has the original filename to access from the parent directory + AllMoleculesreferencePatternsFileNamesList.append(AllMoleculesReferenceDataFilePath) #Append the path to the list and the program will read the reference file from the path name + AllMassFragmentsExperimentDataFileName = remove_iter_fromFileName(G.dataToAnalyzeFileName) #Remove _iter_ from the data filename so the program has the original filename to access from the parent directory AllMassFragmentsExperimentDataFileNamePath = os.path.normpath(os.path.join(os.curdir, os.pardir, AllMassFragmentsExperimentDataFileName)) #This function will get the path of the data file from the parent directory else: #Otherwise not running iterative or in the first iteration, just copy the filename - AllMoleculesReferenceFileNamesList = copy.copy(G.referenceFileNamesList) - AllMassFragmentsExperimentDataFileNamePath = copy.copy(G.collectedFileName) + AllMoleculesreferencePatternsFileNamesList = copy.copy(G.referencePatternsFileNamesList) + AllMassFragmentsExperimentDataFileNamePath = copy.copy(G.dataToAnalyzeFileName) #Create the MSReference and MSData objects containing all molecules and all mass fragments, respectively - [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_collectedFileName]=readDataFile(AllMassFragmentsExperimentDataFileNamePath) - AllMassFragmentsExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, collectedFileName=exp_collectedFileName) - AllMoleculesReferenceDataList = GenerateReferenceDataList(AllMoleculesReferenceFileNamesList,G.referenceFormsList,G.AllMID_ObjectsDict) + [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_dataToAnalyzeFileName]=readDataFile(AllMassFragmentsExperimentDataFileNamePath) + AllMassFragmentsExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, dataToAnalyzeFileName=exp_dataToAnalyzeFileName) + AllMoleculesReferenceDataList = GenerateReferenceDataList(AllMoleculesreferencePatternsFileNamesList,G.referencePatternsFormsList,G.AllMID_ObjectsDict) #Then prepare AllMoleculesReferenceDataList to get reciprocal_matching_correction_values, this value is fed into RatioFinder global PreparingAllMoleculesReferenceDataList; PreparingAllMoleculesReferenceDataList = False #initializing this flag for referenceObjectIndex in range(len(AllMoleculesReferenceDataList)): @@ -6300,9 +6300,9 @@ def main(): global currentReferenceData global resultsObjects resultsObjects = {} - [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_collectedFileName]=readDataFile(G.collectedFileName) - ExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, collectedFileName=exp_collectedFileName) - ReferenceDataList = GenerateReferenceDataList(G.referenceFileNamesList,G.referenceFormsList,G.AllMID_ObjectsDict) + [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_dataToAnalyzeFileName]=readDataFile(G.dataToAnalyzeFileName) + ExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, dataToAnalyzeFileName=exp_dataToAnalyzeFileName) + ReferenceDataList = GenerateReferenceDataList(G.referencePatternsFileNamesList,G.referencePatternsFormsList,G.AllMID_ObjectsDict) ExperimentData.provided_mass_fragment_numbers = ExperimentData.mass_fragment_numbers #This is where the experimental uncertainties object first gets populated, but it does get modified later as masses are removed and time-points are removed. if type(G.collectedFileUncertainties) != type(None): @@ -6310,14 +6310,14 @@ def main(): G.collectedFileUncertainties = int(G.collectedFileUncertainties) #Prints a warning if the user has more reference files than specified time ranges - if len(G.referencePatternTimeRanges) > 0 and (len(G.referenceFileNamesList) > len(G.referencePatternTimeRanges)): + if len(G.referencePatternTimeRanges) > 0 and (len(G.referencePatternsFileNamesList) > len(G.referencePatternTimeRanges)): print("WARNING: There are more reference files given than time ranges") #save global variable into the class objects ExperimentData.ExportAtEachStep = G.ExportAtEachStep #if this is the first iterative run, then the reference and experimental files need to have been imported before the iteration can begin if G.iterativeAnalysis and G.iterationNumber == 1 : - #implied arguments for the following function are G.referenceFileNamesList and G.collectedFileName + #implied arguments for the following function are G.referencePatternsFileNamesList and G.dataToAnalyzeFileName IterationFirstDirectoryPreparation(G.iterativeAnalysis, G.iterationNumber) # Skip preProcessing all together if we are loading analyzed data @@ -6388,8 +6388,8 @@ def main(): #This codeblock is for the TuningCorrectorGasMixture feature. It should be before the prototypicalReferenceData is created. #A measured gas mixture spectrum is compared to a simulated gas mixture spectrum, and the tuning correction is then made accordingly. - if G.measuredReferenceYorN == 'yes': - if len(G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames']) > 0: + if G.tuningCorrection == 'yes': + if len(G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames']) > 0: ReferenceDataList = tuningCorrectorGasMixture(ReferenceDataList, G, ExperimentData) #Creating prototypicalReferenceData which will be interrogated later for which molecules and masses to expect in the ReferenceDataObjects. prototypicalReferenceData = copy.deepcopy(ReferenceDataList[0]) @@ -6490,7 +6490,7 @@ def main(): G.csvFile, G.moleculesToRestrict, G.csvFileName,G.dataUpperBound, G.dataLowerBound, G.bruteIncrements, G.permutationNum] SLSChoices = [G.uniqueOrCommon, G.slsFinish, G.distinguished] - ThresholdList = [G.rawSignalThresholdMethod, G.rawSignalThresholdValue, G.sensitivityThresholdValue, + ThresholdList = [G.applyRawSignalThresholds, G.rawSignalThresholdValue, G.sensitivityThresholdValue, G.rawSignalThresholdDivider, G.rawSignalThresholdLimit, G.rawSignalThresholdLimitPercent] currentReferenceData = ReferenceDataList[0] #TODO this line is placeholder by charles to fix currentRefenceData issue until Alex has a better solution @@ -6567,7 +6567,7 @@ def main(): #TODO continued: I am putting some variables here to make that process easier by getting some of it done already, then only the user input file needs to be changed. #This feature is intended to remove molecules that have major fragments not observed. previously, it was done in a more complicated way. # now, to simplify things, is being used as a filter that simply sets standardized intensities in the reference patterns to zero. - G.excludeMoleculesIfSignificantFragmentNotObserved = G.rawSignalThresholdMethod + G.excludeMoleculesIfSignificantFragmentNotObserved = G.applyRawSignalThresholds G.minimumSignalRequired = G.rawSignalThresholdValue G.minimumStandardizedReferenceHeightToBeSignificant = G.sensitivityThresholdValue if G.excludeMoleculesIfSignificantFragmentNotObserved == 'yes': @@ -6641,7 +6641,7 @@ def main(): referenceAfterFiltering = currentReferenceData slsSolvedMasses = G.massesUsedInSolvingMoleculesForThisPoint if 0 in slsSolvedMasses: - print("The concentrations are currently not completely solvable by SLS at this time so implicitSLScorrection is being skipped and changed to False. One option to consider is increasing UserChoices['minimalReferenceValue']['referenceValueThreshold'] to a highernumber." ) + print("The concentrations are currently not completely solvable by SLS at this time so implicitSLScorrection is being skipped and changed to False. One option to consider is increasing UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] to a highernumber." ) G.implicitSLScorrection = False else: #Now need to move the class out of this area. Currently test 2 is taking 0.08 to 0.20 anlaysis time versus 0.014 for test_1. diff --git a/README.txt b/README.txt index 0e7f5ad6..5fe572f5 100644 --- a/README.txt +++ b/README.txt @@ -17,7 +17,7 @@ Suggested Procedure for Solving Time Series Data of Mass Signals 2) Create an MSRESOLVE run with SLS Unique and see what masse MSRESOLVE chooses, with ExportedSLSUniqueMassesUsedInSolvingMolecules. 3) If unsatisfied, start narrowing things down with chosen masses. 4) Also start using some reference file threshold filtering . -a. UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [1.0] #this is what I am suggesting that you use. +a. UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [1.0] #this is what I am suggesting that you use. 5) If the application warrants doing so, include more sophisticated features of MSRESOLVE, such as mass spectrum tuning correction. diff --git a/Todo/SLS Common vs. Unique Bug/DefaultUserInput.py b/Todo/SLS Common vs. Unique Bug/DefaultUserInput.py index 29131b46..d4ca4926 100644 --- a/Todo/SLS Common vs. Unique Bug/DefaultUserInput.py +++ b/Todo/SLS Common vs. Unique Bug/DefaultUserInput.py @@ -8,7 +8,7 @@ #//Input Files// referenceFileName = 'AcetaldehydeNISTRefMixed2.csv' #enter the file name of the file containing reference information form = 'xyyy' #form is either 'xyyy' or 'xyxy' -collectedFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data exportSuffix = '' #Iterative Analysis @@ -119,7 +119,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -143,8 +143,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -176,7 +176,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'yes' +applyRawSignalThresholds = 'yes' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] @@ -235,13 +235,13 @@ timeSinceLastCheckpoint = '' -__var_list__ = ['referenceFileName','form','collectedFileName','iterativeAnalysis','preProcessing','dataAnalysis','dataSimulation','grapher','timeRangeLimit','timeRangeStart','timeRangeFinish', +__var_list__ = ['referenceFileName','form','dataToAnalyzeFileName','iterativeAnalysis','preProcessing','dataAnalysis','dataSimulation','grapher','timeRangeLimit','timeRangeStart','timeRangeFinish', 'specificMolecules','chosenMolecules','specificMassFragments','chosenMassFragments', 'moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes', 'backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound', 'dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesRange','csvFileName','increments','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor', - 'measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF', - 'rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute', - 'dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod', + 'tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF', + 'rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute', + 'dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds', 'rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','answer', 'uniqueOrCommon','slsFinish','objectiveFunctionType','distinguished','fullBrute','SLSUniquePrint','SLSUniqueExport','concentrationFinder','molecule','moleculeSignal','massNumber','moleculeConcentration', 'units','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName', diff --git a/Todo/SLS Common vs. Unique Bug/MSRESOLVE.py b/Todo/SLS Common vs. Unique Bug/MSRESOLVE.py index 3b0d4b66..a7b0d7b8 100644 --- a/Todo/SLS Common vs. Unique Bug/MSRESOLVE.py +++ b/Todo/SLS Common vs. Unique Bug/MSRESOLVE.py @@ -341,9 +341,9 @@ def ABCDetermination(ReferencePatternMeasured, ReferencePatternLiterature): #this function either creates or gets the three coefficients for the polynomial correction and calculates #the correction factor for the relative intensities of each mass fragment, outputting a corrected set #of relative intensities -def CorrectionValueCorrector(reference,referenceCorrectionCoefficients,referenceFileDesiredTuningAndForm,referenceFileExistingTuningAndForm,measuredReferenceYorN): +def CorrectionValueCorrector(reference,referenceCorrectionCoefficients,referenceFileDesiredTuningAndForm,referenceFileExistingTuningAndForm,tuningCorrection): - if measuredReferenceYorN =='yes': + if tuningCorrection =='yes': (referenceCorrectionCoefficients['A'],referenceCorrectionCoefficients['B'],referenceCorrectionCoefficients['C'])=ABCDetermination(referenceFileExistingTuningAndForm,referenceFileDesiredTuningAndForm ) referenceabscissa = reference[:,0] #gets arrays of just data and abscissa @@ -358,11 +358,11 @@ def CorrectionValueCorrector(reference,referenceCorrectionCoefficients,reference #this function eliminates any fragments that are below a certain threshold, for solving #data that is giving negatives or over emphasizing small mass fragments, this will eliminate #those below a certain user-input value -def ReferenceThreshold(reference,referenceValueThreshold): +def ReferenceThreshold(reference,referenceMassFragmentFilterThreshold): referencedata = reference[:,1:] #all the data except the line of abscissa- mass fragment numbers for rowcounter in range(len(referencedata[:,0])):#goes through all rows in references for columncounter in range(len(referencedata[0,:])):#goes through all columns in all rows in reference - if referencedata[rowcounter,columncounter] < referenceValueThreshold:#user input changes + if referencedata[rowcounter,columncounter] < referenceMassFragmentFilterThreshold:#user input changes referencedata[rowcounter,columncounter] = 0 #made to be equal to zero reference[:,1:] = referencedata #this puts changed reference back with mass fragment numbers return reference @@ -925,11 +925,11 @@ def ReferenceInputPreProcessing(ReferenceData): print('beginning CorrectionValueCorrector') ReferenceData.standardized_reference_intensities = CorrectionValueCorrector(ReferenceData.standardized_reference_intensities, G.referenceCorrectionCoefficients, G.referenceFileDesiredTuningAndForm, G.referenceFileExistingTuningAndForm, - G.measuredReferenceYorN) + G.tuningCorrection) ReferenceData.ExportCollector('CorrectionValueCorrector') - if G.minimalReferenceValue == 'yes': - ReferenceData.standardized_reference_intensities = ReferenceThreshold(ReferenceData.standardized_reference_intensities,G.referenceValueThreshold) + if G.applyReferenceMassFragmentsThresholds == 'yes': + ReferenceData.standardized_reference_intensities = ReferenceThreshold(ReferenceData.standardized_reference_intensities,G.referenceMassFragmentFilterThreshold) ReferenceData.ExportCollector('ReferenceThreshold') ReferenceData.correction_values = CorrectionValuesObtain(ReferenceData) @@ -1131,7 +1131,7 @@ def SpecificIterationName(iterativeAnalysis, iterationNumber): return iterationDirectoryName def IterationDirectoryPreparation(iterativeAnalysis, iterationNumber, iterate = False): - #implied arguments for this function are G.referenceFileName and G.collectedFileName + #implied arguments for this function are G.referenceFileName and G.dataToAnalyzeFileName if iterate: iterationNumber += 1 G.iterationNumber = iterationNumber @@ -1148,29 +1148,29 @@ def IterationDirectoryPreparation(iterativeAnalysis, iterationNumber, iterate = if not iterate: #record the old file names G.oldReferenceFileName = G.referenceFileName - G.oldcollectedFileName = G.collectedFileName + G.oldDataToAnalyzeFileName = G.dataToAnalyzeFileName #construct the file names for the current run of the program referenceFileNameTemp = G.referenceFileName[:-18] + str(G.iterationSuffix) + G.referenceFileName[-4:] - collectedFileNameTemp = G.collectedFileName[:-21] + str(G.iterationSuffix) + G.collectedFileName[-4:] + dataToAnalyzeFileNameTemp = G.dataToAnalyzeFileName[:-21] + str(G.iterationSuffix) + G.dataToAnalyzeFileName[-4:] #copy the experimental and reference files into new names for this iterative run shutil.copy(G.referenceFileName, referenceFileNameTemp) - shutil.copy(G.collectedFileName, collectedFileNameTemp) + shutil.copy(G.dataToAnalyzeFileName, dataToAnalyzeFileNameTemp) #change the globals to reflect the renaming of the ref and exp files G.referenceFileName = referenceFileNameTemp - G.collectedFileName = collectedFileNameTemp + G.dataToAnalyzeFileName = dataToAnalyzeFileNameTemp #construct file names for the next run of the program G.nextRefFileName = G.referenceFileName[:-11] + str('_unused') + G.referenceFileName[-11:] - G.nextExpFileName = G.collectedFileName[:-11] + str('_remaining') + G.collectedFileName[-11:] + G.nextExpFileName = G.dataToAnalyzeFileName[:-11] + str('_remaining') + G.dataToAnalyzeFileName[-11:] return None - #implied returns: G.oldReferenceFileName, G.oldcollectedFileName, G.referenceFileName,G.collectedFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber + #implied returns: G.oldReferenceFileName, G.oldDataToAnalyzeFileName, G.referenceFileName,G.dataToAnalyzeFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber def IterationFirstDirectoryPreparation(iterativeAnalysis,iterationNumber): - #implied arguments for this function are G.referenceFileName and G.collectedFileName + #implied arguments for this function are G.referenceFileName and G.dataToAnalyzeFileName #this global value is set so that each export statement can label the output files correctly G.iterationNumber = iterationNumber @@ -1190,22 +1190,22 @@ def IterationFirstDirectoryPreparation(iterativeAnalysis,iterationNumber): #record the old file names G.oldReferenceFileName = G.referenceFileName - G.oldcollectedFileName = G.collectedFileName + G.oldDataToAnalyzeFileName = G.dataToAnalyzeFileName #construct the file names for the first run of the program G.referenceFileName = G.referenceFileName[:-4] + str(G.iterationSuffix) + G.referenceFileName[-4:] - G.collectedFileName = G.collectedFileName[:-4] + str(G.iterationSuffix) + G.collectedFileName[-4:] + G.dataToAnalyzeFileName = G.dataToAnalyzeFileName[:-4] + str(G.iterationSuffix) + G.dataToAnalyzeFileName[-4:] #construct file names for the second run of the program G.nextRefFileName = G.referenceFileName[:-11] + '_unused_iter_1' + G.referenceFileName[-4:] - G.nextExpFileName = G.collectedFileName[:-11] + '_remaining_iter_1' + G.collectedFileName[-4:] + G.nextExpFileName = G.dataToAnalyzeFileName[:-11] + '_remaining_iter_1' + G.dataToAnalyzeFileName[-4:] return None - #implied returns: G.oldReferenceFileName, G.oldcollectedFileName, G.referenceFileName,G.collectedFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber + #implied returns: G.oldReferenceFileName, G.oldDataToAnalyzeFileName, G.referenceFileName,G.dataToAnalyzeFileName, G.nextRefFileName, G. nextExpFileName, G.iterationNumber #The IterativeAnalysisDirectory and Variable Population function is used to shrink the size of the program analysis and redirect the output. def IADirandVarPopulation(iterativeAnalysis, chosenMassFragments, chosenMolecules, ExperimentData, ReferenceData, ReferenceDataFullCopy): - #implied arguments: G.dataSimulation, G.referenceFileName, G.collectedFileName, G.nextRefFileName, G.oldReferenceFileName, G.chosenMolecules, G.iterationNumber + #implied arguments: G.dataSimulation, G.referenceFileName, G.dataToAnalyzeFileName, G.nextRefFileName, G.oldReferenceFileName, G.chosenMolecules, G.iterationNumber #override data simulation to yes if it was not selected if G.dataSimulation != 'yes': print("Iterative analysis cannot find the remaining signals in the experiment without signal simulation being run.") @@ -1231,7 +1231,7 @@ def IADirandVarPopulation(iterativeAnalysis, chosenMassFragments, chosenMolecule #Export current Experimental Data #Experimental data is trimmed prior to this function, but it still needs to be exported - ExportXYYYData(G.collectedFileName, ExperimentData.workingData, ExperimentData.mass_fragment_numbers, + ExportXYYYData(G.dataToAnalyzeFileName, ExperimentData.workingData, ExperimentData.mass_fragment_numbers, abscissaHeader = ExperimentData.abscissaHeader, dataType = 'preProcessed', rowIndex = ExperimentData.times) #export reference data for next iteration @@ -1262,7 +1262,7 @@ def IterativeAnalysisPostProcessing(ExperimentData, simulateddata, mass_fragment IterationDirectoryPreparation(G.iterativeAnalysis, G.iterationNumber, iterate = True) #save the new file name for the next user input file - G.collectedFileName = G.nextExpFileName + G.dataToAnalyzeFileName = G.nextExpFileName G.referenceFileName = G.nextRefFileName #updating the selected molecules for the next user input file G.chosenMolecules = G.unusedMolecules @@ -1277,7 +1277,7 @@ def IterativeAnalysisPostProcessing(ExperimentData, simulateddata, mass_fragment if not G.iterativeAnalysis == True: iterationDirectoryName = '%s_iter_%s' %(G.iterativeAnalysis, str(G.iterationNumber - 1)) #copy the experimental signals to the next iteration - shutil.copy("..\%s\%s" %(iterationDirectoryName, G.collectedFileName), os.getcwd()) + shutil.copy("..\%s\%s" %(iterationDirectoryName, G.dataToAnalyzeFileName), os.getcwd()) #copy the next reference file from the previous iteration folder to the next iteration folder shutil.copy("..\%s\%s" %(iterationDirectoryName, G.referenceFileName), os.getcwd()) @@ -1289,17 +1289,17 @@ def IterativeAnalysisPostProcessing(ExperimentData, simulateddata, mass_fragment DataFunctions.AppendColumnsToCSV(G.TotalConcentrationsOutputName, concdata, moleculeConcLabels, times, ["Time"]) return None - #implied returns: G.referenceFileName, G.collectedFileName, G.nextRefFileName, G.chosenMolecules, G.iterationSuffix + #implied returns: G.referenceFileName, G.dataToAnalyzeFileName, G.nextRefFileName, G.chosenMolecules, G.iterationSuffix ############################################################################### ######################### Functions to read data files ####################### ############################################################################### #These functions read in the experimental data file and the reference file. The #returned variables can then be used to initialize the respective classes. -def readDataFile(collectedFileName): +def readDataFile(dataToAnalyzeFileName): #read the csv file into a dataframe. dataFrame means "dataframe" and is a pandas object. - dataFrame = pandas.read_csv('%s' %collectedFileName, header=None) + dataFrame = pandas.read_csv('%s' %dataToAnalyzeFileName, header=None) ''' generate mass fragment list''' #select only the 2nd row down, all columns except for the first. #"iloc" is a pandas dataframe function. All it does is select a portion of the data. @@ -1341,7 +1341,7 @@ def readDataFile(collectedFileName): rawCollectedData = numpy.vstack((rawCollectedData,rawCollectedData)) - return mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName + return mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName #readReferenceFile is a helper function that reads the reference file in a certain form and returns the #variables and data that are used to initialize the class. It can read files both in XYYY and XYXY form. @@ -1502,9 +1502,9 @@ class MSData (object): #self.mass_fragment_numbers , 1D and must be integers #self.rawCollectedData, a 2D array of the signals. - def __init__(self, mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName=None): + def __init__(self, mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName=None): - [self.mass_fragment_numbers, self.abscissaHeader, self.times, self.rawCollectedData, self.collectedFileName]=[mass_fragment_numbers, abscissaHeader, times, rawCollectedData, collectedFileName] + [self.mass_fragment_numbers, self.abscissaHeader, self.times, self.rawCollectedData, self.dataToAnalyzeFileName]=[mass_fragment_numbers, abscissaHeader, times, rawCollectedData, dataToAnalyzeFileName] '''create data set to work on''' @@ -1688,7 +1688,7 @@ def CombinationMaker(reciprocal_matching_correction_values,rawsignalsarrayline,m if combinations == []:#This function will not work without enough mass fragments, so the user must know the problem print('****************************************') print('Not enough matching mass fragments input') - print("This means that at some point in the analysis, there were not enough masses in the reference file to apply the inverse method. It could mean you have too many overlapping masses for the molecules you are trying to resolve. You can get around this by using the '#//Reference Mass Fragmentation Threshold//' feature to exclude tiny fragementation peaks. This would be done by setting the value to 'yes' for minimalReferenceValue feature with referenceValueThreshold, such as referenceValueThreshold = 5.0 . Alternatively, to be more targeted, if you know *which* fragmentation patterns could be overlapping, you could set those minor fragments to 0 in your reference pattern csv file. TODO: Print out the relevant masses here. This requires keeping track of when they are selected prior to combination maker, and possibly passing them as an additional argument.") + print("This means that at some point in the analysis, there were not enough masses in the reference file to apply the inverse method. It could mean you have too many overlapping masses for the molecules you are trying to resolve. You can get around this by using the '#//Reference Mass Fragmentation Threshold//' feature to exclude tiny fragementation peaks. This would be done by setting the value to 'yes' for applyReferenceMassFragmentsThresholds feature with referenceMassFragmentFilterThreshold, such as referenceMassFragmentFilterThreshold = 5.0 . Alternatively, to be more targeted, if you know *which* fragmentation patterns could be overlapping, you could set those minor fragments to 0 in your reference pattern csv file. TODO: Print out the relevant masses here. This requires keeping track of when they are selected prior to combination maker, and possibly passing them as an additional argument.") print('****************************************') combinations_len = len(combinations) correctionarray = numpy.zeros([1,moleculenum]) @@ -2684,7 +2684,7 @@ def RawSignalThresholdFilter (distinguished,reciprocal_matching_correction_value monitored_reference_intensities_copy = monitored_reference_intensities rawsignalsarray_copy = remaining_rawsignals_SLS summation = sum(rawsignalsarray_copy) - [rawSignalThresholdMethod,rawSignalThresholdValue,sensitivityThresholdValue,rawSignalThresholdDivider,rawSignalThresholdLimit,rawSignalThresholdLimitPercent] = ThresholdList + [applyRawSignalThresholds,rawSignalThresholdValue,sensitivityThresholdValue,rawSignalThresholdDivider,rawSignalThresholdLimit,rawSignalThresholdLimitPercent] = ThresholdList #this section of the code enables the function to eliminate from the raw signal array (for the purpose of this function only) #the highest value in the array, if it makes up over 90 percent of the raw signals present. This is useful because if one of #the signals does become this great then it will eliminate all the other signals present when it becomes very high @@ -3022,7 +3022,7 @@ def PopulateLogFile(): f6.write('\n') f6.write('referenceFileName = %s \n'%(G.referenceFileName)) f6.write('form = %s \n'%(G.form)) - f6.write('collectedFileName = %s \n'%(G.collectedFileName )) + f6.write('dataToAnalyzeFileName = %s \n'%(G.dataToAnalyzeFileName )) if G.timeRangeLimit == 'yes':#some of the lines in the backgroundinput file don't need to be printed unless a selection is made, so the if statements here make that happen f6.write('timeRangeLimit = %s \n'%(G.timeRangeLimit)) f6.write('timeRangeStart = %s \n'%(G.timeRangeStart)) @@ -3031,8 +3031,8 @@ def PopulateLogFile(): f6.write('backgroundMassFragment = %s \n'%(G.backgroundMassFragment)) f6.write('backgroundSlopes = %s \n'%(G.backgroundSlopes)) f6.write('backgroundIntercepts = %s \n'%(G.backgroundIntercepts)) - if G.measuredReferenceYorN == 'yes': - f6.write('measuredReferenceYorN = %s \n'%G.measuredReferenceYorN) + if G.tuningCorrection == 'yes': + f6.write('tuningCorrection = %s \n'%G.tuningCorrection) f6.write('referenceCorrectionCoefficientA = %s \n'%(G.referenceCorrectionCoefficients['A'])) f6.write('referenceCorrectionCoefficientB = %s \n'%(G.referenceCorrectionCoefficients['B'])) f6.write('referenceCorrectionCoefficientC = %s \n'%(G.referenceCorrectionCoefficients['C'])) @@ -3062,9 +3062,9 @@ def PopulateLogFile(): f6.write('rpcMoleculesToChange = %s \n'%(G.rpcMoleculesToChange)) f6.write('rpcMoleculesToChangeMF = %s \n'%(G.rpcMoleculesToChangeMF)) f6.write('rpcTimeRanges = %s \n'%(G.rpcTimeRanges)) - if G.minimalReferenceValue == 'yes': - f6.write('minimalReferenceValue = %s \n'%(G.minimalReferenceValue)) - f6.write('referenceValueThreshold = %s \n'%(G.referenceValueThreshold)) + if G.applyReferenceMassFragmentsThresholds == 'yes': + f6.write('applyReferenceMassFragmentsThresholds = %s \n'%(G.applyReferenceMassFragmentsThresholds)) + f6.write('referenceMassFragmentFilterThreshold = %s \n'%(G.referenceMassFragmentFilterThreshold)) if G.lowerBoundThresholdChooser == 'yes': f6.write('lowerBoundThresholdChooser = %s \n'%(G.lowerBoundThresholdChooser)) f6.write('massesToLowerBoundThresholdFilter = %s \n'%(G.massesToLowerBoundThresholdFilter )) @@ -3076,8 +3076,8 @@ def PopulateLogFile(): f6.write('dataSmootherTimeRadius = %s \n'%(G.dataSmootherTimeRadius)) f6.write('dataSmootherPointRadius = %s \n'%(G.dataSmootherPointRadius)) f6.write('dataSmootherHeadersToConfineTo = %s \n'%(G.dataSmootherHeadersToConfineTo)) - if G.rawSignalThresholdMethod == 'yes': - f6.write('rawSignalThresholdMethod = %s \n'%(G.rawSignalThresholdMethod)) + if G.applyRawSignalThresholds == 'yes': + f6.write('applyRawSignalThresholds = %s \n'%(G.applyRawSignalThresholds)) f6.write('rawSignalThresholdValue = %s \n'%(G.rawSignalThresholdValue)) f6.write('sensitivityThresholdValue = %s \n'%(G.sensitivityThresholdValue)) f6.write('rawSignalThresholdDivider = %s \n'%(G.rawSignalThresholdDivider)) @@ -3139,7 +3139,7 @@ def main(): #if this is not the first iterative run, then the required files are all stored in the highest iteration directory if G.iterativeAnalysis and G.iterationNumber != 1: - #implied arguments for this function are G.referenceFileName and G.collectedFileName + #implied arguments for this function are G.referenceFileName and G.dataToAnalyzeFileName IterationDirectoryPreparation(G.iterativeAnalysis, G.iterationNumber) #initalize the data classes with the data from given Excel files @@ -3148,8 +3148,8 @@ def main(): global ExperimentData global currentReferenceData - [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_collectedFileName]=readDataFile(G.collectedFileName) - ExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, collectedFileName=exp_collectedFileName) + [exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, exp_dataToAnalyzeFileName]=readDataFile(G.dataToAnalyzeFileName) + ExperimentData = MSData(exp_mass_fragment_numbers, exp_abscissaHeader, exp_times, exp_rawCollectedData, dataToAnalyzeFileName=exp_dataToAnalyzeFileName) ReferenceDataList = GenerateReferenceDataList(G.referenceFileName,G.form) currentReferenceData = ReferenceDataList[0] #Prints a warning if the user has more reference files than specified time ranges @@ -3158,7 +3158,7 @@ def main(): #if this is the first iterative run, then the reference and experimental files need to have been imported before the iteration can begin if G.iterativeAnalysis and G.iterationNumber == 1 : - #implied arguments for the following function are G.referenceFileName and G.collectedFileName + #implied arguments for the following function are G.referenceFileName and G.dataToAnalyzeFileName IterationFirstDirectoryPreparation(G.iterativeAnalysis, G.iterationNumber) # Skip preProcessing all together if we are loading analyzed data @@ -3313,7 +3313,7 @@ def main(): G.csvFile, G.moleculesRange, G.csvFileName,G.dataUpperBound, G.dataLowerBound, G.increments, G.permutationNum] SLSChoices = [G.uniqueOrCommon, G.slsFinish, G.distinguished] - ThresholdList = [G.rawSignalThresholdMethod, G.rawSignalThresholdValue, G.sensitivityThresholdValue, + ThresholdList = [G.applyRawSignalThresholds, G.rawSignalThresholdValue, G.sensitivityThresholdValue, G.rawSignalThresholdDivider, G.rawSignalThresholdLimit, G.rawSignalThresholdLimitPercent] # Calculate a coefficient for doing a unit conversion on concentrations @@ -3335,7 +3335,7 @@ def main(): timeIndex,currentReferenceData.referenceabscissa)#gets the collected values that will be solved - if G.rawSignalThresholdMethod == 'yes':#user input, this function calls either sls or inverse, deletes thresholds + if G.applyRawSignalThresholds == 'yes':#user input, this function calls either sls or inverse, deletes thresholds solutions =RawSignalThresholdFilter(G.distinguished, currentReferenceData.reciprocal_matching_correction_values,rawsignalsarrayline, currentReferenceData.monitored_reference_intensities,currentReferenceData.molecules,timeIndex,ExperimentData.mass_fragment_numbers, ThresholdList,G.answer,ExperimentData.times[timeIndex],ExperimentData.conversionfactor,ExperimentData.datafromcsv, diff --git a/Todo/SLS Common vs. Unique Bug/UserInput.py b/Todo/SLS Common vs. Unique Bug/UserInput.py index adc33e67..4d42fdd4 100644 --- a/Todo/SLS Common vs. Unique Bug/UserInput.py +++ b/Todo/SLS Common vs. Unique Bug/UserInput.py @@ -9,7 +9,7 @@ referenceFileName = '180710ReferenceFile14thiteration.csv' #enter the file name of the file containing reference information form = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '180710MassSpecSSITKAData.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '180710MassSpecSSITKAData.csv' #enter the file name with raw mass spectrometer data #Iterative Analysis #Options are True, False, or '' @@ -119,7 +119,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -144,8 +144,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'yes' -referenceValueThreshold = [4.9] +applyReferenceMassFragmentsThresholds= 'yes' +referenceMassFragmentFilterThreshold = [4.9] #//Data Threshold Filter// @@ -177,7 +177,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] @@ -238,17 +238,17 @@ iterationSuffix= '' unusedMolecules ='' oldReferenceFileName = '' -oldCollectedFileName ='' +oldDataToAnalyzeFileName ='' nextRefFileName = '' nextExpFileName = '' -__var_list__ = ['referenceFileName','form','collectedFileName','referencePatternTimeRanges','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','timeRangeLimit','timeRangeStart','timeRangeFinish', +__var_list__ = ['referenceFileName','form','dataToAnalyzeFileName','referencePatternTimeRanges','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','timeRangeLimit','timeRangeStart','timeRangeFinish', 'specificMolecules','chosenMolecules','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes', 'backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound', 'dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesRange','csvFileName','increments','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor', - 'measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF', - 'rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute', - 'dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod', + 'tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF', + 'rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute', + 'dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds', 'rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','answer', 'uniqueOrCommon','slsFinish','objectiveFunctionType','distinguished','fullBrute','SLSUniquePrint','SLSUniqueExport','concentrationFinder','molecule','moleculeSignal','massNumber','moleculeConcentration', 'units','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName', diff --git a/UnitTests/BestMassFragmentChooser/bestMassFragChooser.py b/UnitTests/BestMassFragmentChooser/bestMassFragChooser.py index f61e630e..48c0b0b2 100644 --- a/UnitTests/BestMassFragmentChooser/bestMassFragChooser.py +++ b/UnitTests/BestMassFragmentChooser/bestMassFragChooser.py @@ -81,7 +81,7 @@ def bestMassFragChooser(chosenMolecules, G.uniqueOrCommon='unique' - G.excludeMoleculesIfSignificantFragmentNotObserved=G.rawSignalThresholdMethod + G.excludeMoleculesIfSignificantFragmentNotObserved=G.applyRawSignalThresholds #Initialize a ReferenceData class object [provided_reference_patterns, electronnumbers, molecules, molecularWeights, SourceOfFragmentationPatterns, sourceOfIonizationData, @@ -117,7 +117,7 @@ def bestMassFragChooser(chosenMolecules, G.referenceCorrectionCoefficients = [G.referenceCorrectionCoefficients['A'],G.referenceCorrectionCoefficients['B'],G.referenceCorrectionCoefficients['C']] truncatedReferenceData.standardized_reference_patterns, ReferenceData.standardized_reference_patterns_tuning_uncertainties = MSRESOLVE.TuningCorrector( truncatedReferenceData.standardized_reference_patterns, G.referenceCorrectionCoefficients, G.referenceCorrectionCoefficients_cov, - G.referenceFileDesiredTuningAndForm, G.referenceFileExistingTuningAndForm, G.measuredReferenceYorN) + G.referenceFileDesiredTuningAndForm, G.referenceFileExistingTuningAndForm, G.tuningCorrection) #Removing entire rows of data for mass fragments with all reference #intensities below the threshold. diff --git a/UnitTests/ConcentrationFinder/test_1.py b/UnitTests/ConcentrationFinder/test_1.py index 26d5abe0..13e71815 100644 --- a/UnitTests/ConcentrationFinder/test_1.py +++ b/UnitTests/ConcentrationFinder/test_1.py @@ -23,9 +23,9 @@ #Replace the global variables being pointed to in MSRESOLVE #This reference file has two molecules: Acetaldehyde and Acetaldehyde_easy_to_ionize #They are identical with the exceptions that Acetaldehyde has an ionization factor of 1 and signal peaks at m29 and m29.2 are 9999 and 0, respectively, and Acetaldehyde_easy_to_ionize has an ionization factor of 2 and signal peaks at m29 and m29.2 are 0 and 9999, respectively. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_test_1.csv'] +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_test_1.csv'] #Use the truncated reference data that contains only m29 and m29.2 with signals of 1 for each time for both mass fragments -MSRESOLVE.G.collectedFileName = '2-CrotAcetExp#2Truncated.csv' +MSRESOLVE.G.dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' MSRESOLVE.G.concentrationFinder = 'yes' #Turn on concentrationFinder MSRESOLVE.G.TSC_List_Type = 'SeparateMolecularFactors' #Use factors for separate molecules rather than numerous reference files MSRESOLVE.G.moleculesTSC_List = ['Acetaldehyde'] #Using the 'known' concentration values for Acetaldehyde with SeparateMoleculesFactors, concentrationFinder will calculate a conversion factor based on this info and apply to it the scaled concentration of itself and Acetaldehyde_easy_to_ionize diff --git a/UnitTests/ConcentrationFinder/test_1_initial_input_iterative.py b/UnitTests/ConcentrationFinder/test_1_initial_input_iterative.py index d4e8951b..e33656a0 100644 --- a/UnitTests/ConcentrationFinder/test_1_initial_input_iterative.py +++ b/UnitTests/ConcentrationFinder/test_1_initial_input_iterative.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data ionizationDataFileName = '_ProvidedIonizationData.csv' @@ -121,7 +121,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -146,8 +146,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -179,7 +179,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/ConcentrationFinder/test_1_initial_input_noniterative.py b/UnitTests/ConcentrationFinder/test_1_initial_input_noniterative.py index ebd3798c..2f0e56ac 100644 --- a/UnitTests/ConcentrationFinder/test_1_initial_input_noniterative.py +++ b/UnitTests/ConcentrationFinder/test_1_initial_input_noniterative.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data ionizationDataFileName = '_ProvidedIonizationData.csv' @@ -121,7 +121,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -146,8 +146,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -179,7 +179,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/ConcentrationFinder/test_2.py b/UnitTests/ConcentrationFinder/test_2.py index 66f1ce36..52e6eded 100644 --- a/UnitTests/ConcentrationFinder/test_2.py +++ b/UnitTests/ConcentrationFinder/test_2.py @@ -23,10 +23,10 @@ #Replace the global variables being pointed to in MSRESOLVE #This reference file has two molecules: Acetaldehyde and Acetaldehyde_easy_to_ionize #They are identical with the exceptions that Acetaldehyde has an ionization factor of 1 and signal peaks at m29 and m29.2 are 9999 and 0, respectively, and Acetaldehyde_easy_to_ionize has an ionization factor of 2 and signal peaks at m29 and m29.2 are 0 and 9999, respectively. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_test_2.csv','AcetaldehydeNISTRefMixed2_test_2.csv'] #List the reference file twice +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_test_2.csv','AcetaldehydeNISTRefMixed2_test_2.csv'] #List the reference file twice MSRESOLVE.G.referencePatternTimeRanges = [[1,4],[5,8]] #Give time ranges for each reference file #Use the truncated reference data that contains only m29 and m29.2 with signals of 1 for each time for both mass fragments -MSRESOLVE.G.collectedFileName = '2-CrotAcetExp#2Truncated2.csv' +MSRESOLVE.G.dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated2.csv' MSRESOLVE.G.concentrationFinder = 'yes' #Turn on concentrationFinder MSRESOLVE.G.TSC_List_Type = 'MultipleReferencePatterns' #Use factors for numerous reference files MSRESOLVE.G.moleculesTSC_List = ['Acetaldehyde','Acetaldehyde'] diff --git a/UnitTests/ConcentrationFinder/test_3.py b/UnitTests/ConcentrationFinder/test_3.py index d300a328..7a62cfa2 100644 --- a/UnitTests/ConcentrationFinder/test_3.py +++ b/UnitTests/ConcentrationFinder/test_3.py @@ -24,9 +24,9 @@ #This reference file has three molecules: Acetaldehyde, Acetaldehyde_easy_to_ionize, and Acetaldehyde_copy #Acetaldehdye and Acetaldehyde_easy_to_ionize are identical with the exceptions that Acetaldehyde has an ionization factor of 1 and signal peaks at m29 and m29.2 are 9999 and 0, respectively, and Acetaldehyde_easy_to_ionize has an ionization factor of 2 and signal peaks at m29 and m29.2 are 0 and 9999, respectively. #Acetaldehyde and Acetaldheyde_copy are identical except Acetaldehyde has a signal of 9999 at m29 and 0 at m29.3. Acetaldehyde_copy is the opposite having a signal of 0 at m29 and 9999 at m29.3. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_test_3.csv'] +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_test_3.csv'] #Use the truncated reference data that contains only m29 and m29.2 with signals of 1 for each time for both mass fragments -MSRESOLVE.G.collectedFileName = '2-CrotAcetExp#2Truncated3.csv' +MSRESOLVE.G.dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated3.csv' MSRESOLVE.G.concentrationFinder = 'yes' #Turn on concentrationFinder MSRESOLVE.G.TSC_List_Type = 'SeparateMolecularFactors' #Use factors for separate molecules rather than numerous reference files MSRESOLVE.G.moleculesTSC_List = ['Acetaldehyde','Acetaldehyde_Easy_To_Ionize'] #the conversion factor for both molecules are determined based on the known concentrations at a particular signal for both molecules diff --git a/UnitTests/ConcentrationFinder/test_4.py b/UnitTests/ConcentrationFinder/test_4.py index 3382cf22..e98d2b8c 100644 --- a/UnitTests/ConcentrationFinder/test_4.py +++ b/UnitTests/ConcentrationFinder/test_4.py @@ -23,10 +23,10 @@ #Replace the global variables being pointed to in MSRESOLVE #This reference file has two molecules: Acetaldehyde and Acetaldehyde_easy_to_ionize #They are identical with the exceptions that Acetaldehyde has an ionization factor of 1 and signal peaks at m29 and m29.2 are 9999 and 0, respectively, and Acetaldehyde_easy_to_ionize has an ionization factor of 2 and signal peaks at m29 and m29.2 are 0 and 9999, respectively. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_test_2.csv','AcetaldehydeNISTRefMixed2_test_2.csv'] #List the reference file twice +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_test_2.csv','AcetaldehydeNISTRefMixed2_test_2.csv'] #List the reference file twice MSRESOLVE.G.referencePatternTimeRanges = [[1,1],[8,8]] #Give time ranges for each reference file (Every point that is not at 1 or 8 will need to be interpolated) #Use the truncated reference data that contains only 8 points with a signal of 1 for m29 -MSRESOLVE.G.collectedFileName = '2-CrotAcetExp#2Truncated2.csv' +MSRESOLVE.G.dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated2.csv' MSRESOLVE.G.concentrationFinder = 'yes' #Turn on concentrationFinder MSRESOLVE.G.TSC_List_Type = 'MultipleReferencePatterns' #Use factors for numerous reference files MSRESOLVE.G.moleculesTSC_List = ['Acetaldehyde','Acetaldehyde'] #Use the same molecule diff --git a/UnitTests/ExtractReferencePatternFromData/Exported1DataSmoother.csv b/UnitTests/ExtractReferencePatternFromData/Exported1DataSmoother.csv deleted file mode 100644 index 37353fe5..00000000 --- a/UnitTests/ExtractReferencePatternFromData/Exported1DataSmoother.csv +++ /dev/null @@ -1,957 +0,0 @@ -Temp,m2,m18,m26,m27,m28,m29,m31,m39,m41,m44,m45,m56,m57,m70 -1.768480999999999881e+02,1.264518349936488262e+00,1.975837889848244822e-01,1.434966953747456309e-01,1.484318964229909277e-01,4.148103293985883511e+00,2.812681495016242650e-01,5.568628553450519214e-02,4.079210467697833020e-02,6.069668464663791063e-02,1.269845799761352367e+00,2.706084837745692528e-02,1.104064086299079428e-02,7.325183238521576490e-03,6.784902435499479134e-03 -1.768944999999999936e+02,1.264553503674088919e+00,1.977258653965595081e-01,1.440627790123940599e-01,1.488054576335078316e-01,4.150421393268473480e+00,2.870067581047202054e-01,5.572909100277870231e-02,4.082885900027874437e-02,6.098770617258009175e-02,1.273745550068063892e+00,2.717254936896495998e-02,1.101471380112947762e-02,7.305144943131003377e-03,6.796311401227043969e-03 -1.768788000000000125e+02,1.264541608982702625e+00,1.976777921279337380e-01,1.438712377815520860e-01,1.486790586894322086e-01,4.149637036399150603e+00,2.850650306247963783e-01,5.571460725597066066e-02,4.081642273140340116e-02,6.088923552694902597e-02,1.272426022485838359e+00,2.713475399037285074e-02,1.102348653542305212e-02,7.311925142217887141e-03,6.792451039978712746e-03 -1.767940999999999860e+02,1.264477438259108188e+00,1.974184414366845775e-01,1.428378911412755414e-01,1.479971484624755806e-01,4.145405506027694642e+00,2.745895963859581457e-01,5.563646882573863861e-02,4.074933024899943246e-02,6.035799580179102009e-02,1.265307297249231411e+00,2.693085153389163100e-02,1.107081459877766461e-02,7.348503668501982222e-03,6.771624759868269394e-03 -1.767974000000000103e+02,1.264479938417170324e+00,1.974285460090709488e-01,1.428781513999877184e-01,1.480237163933961764e-01,4.145570370847362796e+00,2.749977301874757529e-01,5.563951318016327474e-02,4.075194424182040920e-02,6.037869345342072869e-02,1.265584650180528570e+00,2.693879578544289277e-02,1.106897064825734800e-02,7.347078531114270561e-03,6.772436173379074720e-03 -1.768505000000000109e+02,1.264520168233260744e+00,1.975911377647418532e-01,1.435259755629001432e-01,1.484512185545694418e-01,4.148223195672914088e+00,2.815649740845458382e-01,5.568849961045038710e-02,4.079400576266631329e-02,6.071173748418678962e-02,1.270047510984115391e+00,2.706662601494880249e-02,1.103929980806692135e-02,7.324146774966872053e-03,6.785492554416426569e-03 -1.769009000000000071e+02,1.264558352465482205e+00,1.977454621430057569e-01,1.441408595141386861e-01,1.488569833177171287e-01,4.150741131100556203e+00,2.877982903258349268e-01,5.573499520529917595e-02,4.083392856211329192e-02,6.102784707271036169e-02,1.274283446662094477e+00,2.718795640227644750e-02,1.101113765466583960e-02,7.302381040318495220e-03,6.797885051672225565e-03 -1.769664999999999964e+02,1.264608052577262498e+00,1.979463287940794181e-01,1.449411846570209939e-01,1.493851215808614796e-01,4.154018443879390787e+00,2.959114955922750312e-01,5.579551328113410702e-02,4.088589157091726545e-02,6.143929129904246444e-02,1.279796886750892426e+00,2.734587849371872270e-02,1.097448215341365052e-02,7.274051036490453148e-03,6.814014968735321309e-03 -1.769054999999999893e+02,1.264561837534295963e+00,1.977595473045138941e-01,1.441969798747675391e-01,1.488940174032422625e-01,4.150970942667363772e+00,2.883672041097611327e-01,5.573923885086076724e-02,4.083757230968185215e-02,6.105669834467852830e-02,1.274670059839051461e+00,2.719903020746899935e-02,1.100856729939511669e-02,7.300394485172029269e-03,6.799016112929691380e-03 -1.768098999999999990e+02,1.264489408712860197e+00,1.974668209044737055e-01,1.430306523799576013e-01,1.481243524953672619e-01,4.146194858800647864e+00,2.765436915568386667e-01,5.565104482571109346e-02,4.076184572977845089e-02,6.045709364898699256e-02,1.266635229465741475e+00,2.696888764737925825e-02,1.106198598719557169e-02,7.341680283433626997e-03,6.775509709404811676e-03 -1.768532999999999902e+02,1.264522289579495196e+00,1.975997113413119899e-01,1.435601357824132229e-01,1.484737610414108566e-01,4.148363080974450057e+00,2.819112694312835288e-01,5.569108269905309605e-02,4.079622369596891396e-02,6.072929912799351904e-02,1.270282840744000552e+00,2.707336659202247420e-02,1.103773524398909966e-02,7.322937567486420551e-03,6.786181026486190482e-03 -1.769335000000000093e+02,1.264583050996641145e+00,1.978452830702161491e-01,1.445385820699005563e-01,1.491194422716577428e-01,4.152369795682721687e+00,2.918301575771486966e-01,5.576506973688788449e-02,4.085975164270794213e-02,6.123231478274737682e-02,1.277023357437929718e+00,2.726643597820660458e-02,1.099292165861673332e-02,7.288302410367361595e-03,6.805900833627365198e-03 -1.768810000000000002e+02,1.264543275754743901e+00,1.976845285095246152e-01,1.438980779540268706e-01,1.486967706433790504e-01,4.149746946278927595e+00,2.853371198258010111e-01,5.571663682558705699e-02,4.081816539328400606e-02,6.090303396136853564e-02,1.272610924440034097e+00,2.714005015807363641e-02,1.102225723507618826e-02,7.310975050626097871e-03,6.792991982319238065e-03 -1.768104999999999905e+02,1.264489863287053373e+00,1.974686580994529650e-01,1.430379724269958963e-01,1.481291830282618349e-01,4.146224834222405065e+00,2.766178977025681718e-01,5.565159834469737832e-02,4.076232100120044666e-02,6.046085685837421231e-02,1.266685657271430898e+00,2.697033205675219980e-02,1.106165072346461387e-02,7.341421167544964765e-03,6.775657239134043330e-03 -1.768206999999999880e+02,1.264497591048336256e+00,1.974998904141015976e-01,1.431624132266513527e-01,1.482113020874702425e-01,4.146734416392284572e+00,2.778794021799733116e-01,5.566100816746438751e-02,4.077040061537423599e-02,6.052483141795628185e-02,1.267542929968165311e+00,2.699488701609231711e-02,1.105595124003820595e-02,7.337016197437554177e-03,6.778165244531050848e-03 -1.767428999999999917e+02,1.264438647927962789e+00,1.972616674651148094e-01,1.422132471273185317e-01,1.475849429888018705e-01,4.142847603371043519e+00,2.682573386170297169e-01,5.558923520557479403e-02,4.070877375432316314e-02,6.003686860075130305e-02,1.261004124496997392e+00,2.680759526740006393e-02,1.109942377048669937e-02,7.370614891001908697e-03,6.759035556306830506e-03 -1.767738999999999976e+02,1.264462134261273407e+00,1.973565892057136950e-01,1.425914495576443564e-01,1.478345205216904379e-01,4.144396333495189211e+00,2.720913228130612538e-01,5.561783368653336335e-02,4.073332944445920423e-02,6.023130108575602826e-02,1.263609561124328096e+00,2.688222308500237689e-02,1.108210181105348524e-02,7.357227236753902111e-03,6.766657925650669536e-03 -1.768874000000000137e+02,1.264548124546137187e+00,1.977041252559708640e-01,1.439761584557714968e-01,1.487482963275883474e-01,4.150066684111010318e+00,2.861286520469192851e-01,5.572254102810755838e-02,4.082323495511855360e-02,6.094317486149858354e-02,1.273148821034064682e+00,2.715545719138512393e-02,1.101868108861255025e-02,7.308211147813603592e-03,6.794565632764426599e-03 -1.768942000000000121e+02,1.264553276386992442e+00,1.977249467990698784e-01,1.440591189888751344e-01,1.488030423670605451e-01,4.150406405557596656e+00,2.869696550318572292e-01,5.572881424328557376e-02,4.082862136456774649e-02,6.098582456788670392e-02,1.273720336165220957e+00,2.717182716427851696e-02,1.101488143299494959e-02,7.305274501075320615e-03,6.796237636362424672e-03 -1.768326000000000136e+02,1.264506606769832953e+00,1.975363281145250949e-01,1.433075941595833847e-01,1.483071076565469770e-01,4.147328928923812441e+00,2.793511574036138256e-01,5.567198629402592136e-02,4.077982683191033741e-02,6.059946840413577007e-02,1.268543081447690568e+00,2.702353446865585207e-02,1.104930184270737359e-02,7.331877065645558966e-03,6.781091250827563088e-03 -1.768189000000000135e+02,1.264496227325756950e+00,1.974943788291637081e-01,1.431404530855360235e-01,1.481968104887865234e-01,4.146644490127012972e+00,2.776567837427847962e-01,5.565934761050553292e-02,4.076897480110830418e-02,6.051354178979484466e-02,1.267391646551095263e+00,2.699055378797354798e-02,1.105695703123107942e-02,7.337793545103554749e-03,6.777722655343348945e-03 -1.768508999999999958e+02,1.264520471282722935e+00,1.975923625613947299e-01,1.435308555942591546e-01,1.484544389098325645e-01,4.148243179287419480e+00,2.816144448483655083e-01,5.568886862310790109e-02,4.079432261028095863e-02,6.071424629044464005e-02,1.270081129521241081e+00,2.706758895453070801e-02,1.103907629891294484e-02,7.323974031041097232e-03,6.785590907569249985e-03 -1.768443000000000040e+02,1.264515470966598665e+00,1.975721534166220983e-01,1.434503350768348007e-01,1.484013030479918172e-01,4.147913449648084949e+00,2.807981772453409519e-01,5.568277991425868434e-02,4.078909462463908842e-02,6.067285098718566694e-02,1.269526423658648540e+00,2.705170045142829549e-02,1.104276419995356417e-02,7.326824305816478922e-03,6.783968080547660151e-03 -1.769281000000000006e+02,1.264578959828903226e+00,1.978287483154021476e-01,1.444727016465532365e-01,1.490759674756061415e-01,4.152100016886903333e+00,2.911623022655795978e-01,5.576008806601123746e-02,4.085547419991006346e-02,6.119844589826262116e-02,1.276569507186717800e+00,2.725343629385007516e-02,1.099593903219542312e-02,7.290634453365404943e-03,6.804573066064238673e-03 -1.769267999999999859e+02,1.264577974918151604e+00,1.978247677262802706e-01,1.444568415446365606e-01,1.490655013210011592e-01,4.152035070139760364e+00,2.910015222831638937e-01,5.575888877487422679e-02,4.085444444516239670e-02,6.119029227792371906e-02,1.276460246941054422e+00,2.725030674020861854e-02,1.099666543694585719e-02,7.291195871124200867e-03,6.804253418317557367e-03 -1.768663999999999987e+02,1.264532214449378245e+00,1.976398234316941172e-01,1.437199568094218449e-01,1.485792276762767372e-01,4.149017544349492326e+00,2.835314369463795003e-01,5.570316786358719963e-02,4.080660045534897917e-02,6.081146253294700266e-02,1.271383847834904657e+00,2.710490286333189225e-02,1.103041531919635165e-02,7.317280203917100878e-03,6.789402092241172970e-03 -1.769139999999999873e+02,1.264568277335365032e+00,1.977855742333877731e-01,1.443006805411473081e-01,1.489624499525825652e-01,4.151395594475596695e+00,2.894184578409308983e-01,5.574708036983327952e-02,4.084430532149332937e-02,6.111001047766362326e-02,1.275384453752995029e+00,2.721949267358575453e-02,1.100381772987311935e-02,7.296723676749189424e-03,6.801106117427201114e-03 -1.768830000000000098e+02,1.264544791002054414e+00,1.976906524927889985e-01,1.439224781108219275e-01,1.487128724196944418e-01,4.149846864351452780e+00,2.855844736449029142e-01,5.571848188887471021e-02,4.081974963135731604e-02,6.091557799265934214e-02,1.272779017125669654e+00,2.714486485598349708e-02,1.102113968930630572e-02,7.310111330997182133e-03,6.793483748083362084e-03 -1.769233999999999867e+02,1.264575398997723976e+00,1.978143569547306524e-01,1.444153612780847418e-01,1.490381283012649494e-01,4.151865209416467195e+00,2.905810207906966980e-01,5.575575216728523298e-02,4.085175124043780026e-02,6.116896742472954784e-02,1.276174489375476284e+00,2.724212175376194978e-02,1.099856526475466445e-02,7.292664194493342356e-03,6.803417416518554861e-03 -1.768343000000000131e+02,1.264507894730046766e+00,1.975415335002998485e-01,1.433283342928590720e-01,1.483207941664150820e-01,4.147413859285459026e+00,2.795614081498456471e-01,5.567355459782041827e-02,4.078117343427264951e-02,6.061013083073274466e-02,1.268685960230477860e+00,2.702762696187921421e-02,1.104835192880297690e-02,7.331142903961002100e-03,6.781509251727067811e-03 -1.768868999999999971e+02,1.264547745734309503e+00,1.977025942601546293e-01,1.439700584165723996e-01,1.487442708835093885e-01,4.150041704592878133e+00,2.860668135921429212e-01,5.572207976228563120e-02,4.082283889560023304e-02,6.094003885367582640e-02,1.273106797862654460e+00,2.715425351690758937e-02,1.101896047505503129e-02,7.308427077720835996e-03,6.794442691323392125e-03 -1.768666000000000054e+02,1.264532365974109229e+00,1.976404358300206110e-01,1.437223968251015727e-01,1.485808378539084096e-01,4.149027536156744134e+00,2.835561723282928881e-01,5.570335236991597050e-02,4.080675887915630184e-02,6.081271693607614992e-02,1.271400657103468390e+00,2.710538433312287276e-02,1.103030356461935646e-02,7.317193831954199590e-03,6.789451268817588148e-03 -1.768003999999999962e+02,1.264482211288135982e+00,1.974377319839675793e-01,1.429147516351805258e-01,1.480478690578692635e-01,4.145720247956150573e+00,2.753687609161197258e-01,5.564228077509472681e-02,4.075432059893033254e-02,6.039750950035660537e-02,1.265836789208979241e+00,2.694601783230760050e-02,1.106729432960251724e-02,7.345782951670931649e-03,6.773173822025246871e-03 -1.768890000000000100e+02,1.264549336743985508e+00,1.977090244425823706e-01,1.439956785812075424e-01,1.487611777486406162e-01,4.150146618569030110e+00,2.863265351021979654e-01,5.572401707873766985e-02,4.082450234557719049e-02,6.095321008653109551e-02,1.273283295182570996e+00,2.715930894971296805e-02,1.101778705199664421e-02,7.307520172110476553e-03,6.794959045375720263e-03 -1.770114000000000090e+02,1.264642069879380326e+00,1.980838122183661842e-01,1.454889681770730192e-01,1.497466064591419510e-01,4.156261604607589533e+00,3.014645888310454325e-01,5.583693495194186340e-02,4.092145771566269019e-02,6.172090480151704028e-02,1.283570567543378615e+00,2.745396846179437578e-02,1.094939325087974924e-02,7.254660530821563369e-03,6.825055110139796599e-03 -1.768457999999999970e+02,1.264516607402081494e+00,1.975767464040703580e-01,1.434686351944312044e-01,1.484133793802282497e-01,4.147988388202479726e+00,2.809836926096629384e-01,5.568416371172441037e-02,4.079028280319407784e-02,6.068225901065371630e-02,1.269652493172873875e+00,2.705531147486067711e-02,1.104192604062614880e-02,7.326176516094809466e-03,6.784336904870749696e-03 -1.769231000000000051e+02,1.264575171710627277e+00,1.978134383572411337e-01,1.444117012545653722e-01,1.490357130348178849e-01,4.151850221705588595e+00,2.905439177178337218e-01,5.575547540779210443e-02,4.085151360472683013e-02,6.116708582003616002e-02,1.276149275472633349e+00,2.724139954907550676e-02,1.099873289662013642e-02,7.292793752437659593e-03,6.803343651653942503e-03 -1.769848000000000070e+02,1.264621917090152259e+00,1.980023632409491641e-01,1.451644460916972079e-01,1.495324528341472892e-01,4.154932694242999602e+00,2.981747830370302665e-01,5.581239561021611451e-02,4.090038734928791442e-02,6.155406918535177851e-02,1.281334934824444716e+00,2.738993297959363415e-02,1.096425660961920789e-02,7.266148001885977536e-03,6.818514625477015145e-03 -1.770192999999999870e+02,1.264648055106256219e+00,1.981080019522606928e-01,1.455853487964140491e-01,1.498102084755874586e-01,4.156656280994063479e+00,3.024416364164821402e-01,5.584422295192806307e-02,4.092771545605217165e-02,6.177045372511469346e-02,1.284234533651630983e+00,2.747298651853813389e-02,1.094497894508872360e-02,7.251248838287399634e-03,6.826997584908060801e-03 -1.770320000000000107e+02,1.264657676926677077e+00,1.981468892459899434e-01,1.457402897920636597e-01,1.499124547551902165e-01,4.157290760754600356e+00,3.040123331677619944e-01,5.585593910380468041e-02,4.093777536781761928e-02,6.185010832381032664e-02,1.285301922205409397e+00,2.750355985026559091e-02,1.093788252944993822e-02,7.245764218643840904e-03,6.830120297510219873e-03 -1.769610999999999876e+02,1.264603961409524358e+00,1.979297940392654165e-01,1.448753042336736740e-01,1.493416467848098783e-01,4.153748665083572433e+00,2.952436402807094851e-01,5.579053161025743224e-02,4.088161412811935902e-02,6.140542241455770878e-02,1.279343036499678732e+00,2.733287880936213776e-02,1.097749952699234033e-02,7.276383079488496497e-03,6.812687201172201723e-03 -1.768494000000000028e+02,1.264519334847240106e+00,1.975877695739463591e-01,1.435125554766627509e-01,1.484423625775961320e-01,4.148168240733024703e+00,2.814289294840435218e-01,5.568748482564217506e-02,4.079313443172599696e-02,6.070483826697681273e-02,1.269955060007015746e+00,2.706397793109838190e-02,1.103991445824036022e-02,7.324621820762780566e-03,6.785222083246160441e-03 -1.769184999999999945e+02,1.264571686641813519e+00,1.977993531957328854e-01,1.443555808939365193e-01,1.489986789492923069e-01,4.151620410138779249e+00,2.899750039339039631e-01,5.575123176223048538e-02,4.084786985715824215e-02,6.113823454806754931e-02,1.275762662295672811e+00,2.723032574388284388e-02,1.100130325189087321e-02,7.294780307584153300e-03,6.802212590396469749e-03 -1.768734000000000037e+02,1.264537517814964485e+00,1.976612573731197364e-01,1.438053573582047662e-01,1.486355838933806073e-01,4.149367257603330472e+00,2.843971753132272795e-01,5.570962558509398588e-02,4.081214528860549473e-02,6.085536664246427030e-02,1.271972172234624665e+00,2.712175430601626580e-02,1.102650390900175581e-02,7.314257185215930490e-03,6.791123272415586221e-03 -1.769645999999999901e+02,1.264606613092317478e+00,1.979405110099781706e-01,1.449180045080655788e-01,1.493698248933617023e-01,4.153923521710492395e+00,2.956765094641298219e-01,5.579376047101083924e-02,4.088438654474763068e-02,6.142737446931634260e-02,1.279637198699539624e+00,2.734130453070438005e-02,1.097554382189504241e-02,7.274871570137911303e-03,6.813547791259408348e-03 -1.769394000000000062e+02,1.264587520976206747e+00,1.978633488208462743e-01,1.446105625324460853e-01,1.491669425117880809e-01,4.152664553996672225e+00,2.925598513434870540e-01,5.577051267358645870e-02,4.086442514502416912e-02,6.126931967505466758e-02,1.277519230860550081e+00,2.728063933704061306e-02,1.098962489859557634e-02,7.285754437462099720e-03,6.807351542631512320e-03 -1.768496000000000095e+02,1.264519486371971091e+00,1.975883819722728529e-01,1.435149954923424787e-01,1.484439727552275823e-01,4.148178232540278287e+00,2.814536648659533569e-01,5.568766933197094593e-02,4.079329285553331963e-02,6.070609267010596000e-02,1.269971869275579479e+00,2.706445940088936242e-02,1.103980270366336502e-02,7.324535448799879278e-03,6.785271259822575618e-03 -1.769132999999999925e+02,1.264567746998806363e+00,1.977834308392452667e-01,1.442921404862689272e-01,1.489568143308723780e-01,4.151360623150214479e+00,2.893318840042482520e-01,5.574643459768260922e-02,4.084375083816768615e-02,6.110562006671194091e-02,1.275325621313024627e+00,2.721780752931729497e-02,1.100420887089256783e-02,7.297025978619295361e-03,6.800933999409758401e-03 -1.767968999999999937e+02,1.264479559605342862e+00,1.974270150132547141e-01,1.428720513607886211e-01,1.480196909493172175e-01,4.145545391329230611e+00,2.749358917326958363e-01,5.563905191434134756e-02,4.075154818230206089e-02,6.037555744559797155e-02,1.265542627009120125e+00,2.693759211096541373e-02,1.106925003469981517e-02,7.347294461021502965e-03,6.772313231938040246e-03 -1.767920000000000016e+02,1.264475847249432405e+00,1.974120112542569472e-01,1.428122709766408427e-01,1.479802415973445751e-01,4.145300592051544442e+00,2.743298748759066541e-01,5.563453150928659996e-02,4.074766679902250277e-02,6.034482456893597302e-02,1.265130799929316652e+00,2.692579610108630783e-02,1.107198802183603781e-02,7.349410574112313910e-03,6.771108405815948195e-03 -1.767845000000000084e+02,1.264470165072018482e+00,1.973890463170153153e-01,1.427207703886588241e-01,1.479198599361619682e-01,4.144925899279574111e+00,2.734022980542860637e-01,5.562761252195794204e-02,4.074172590624766666e-02,6.029778445159617029e-02,1.264500452358188198e+00,2.690774098392451075e-02,1.107617881847310082e-02,7.352649522720702824e-03,6.769264284200507409e-03 -1.768007000000000062e+02,1.264482438575232459e+00,1.974386505814572090e-01,1.429184116586998954e-01,1.480502843243165501e-01,4.145735235667030949e+00,2.754058639889862548e-01,5.564255753458788312e-02,4.075455823464133043e-02,6.039939110505021524e-02,1.265862003111825729e+00,2.694674003699409903e-02,1.106712669773703139e-02,7.345653393726586655e-03,6.773247586889866168e-03 -1.769140999999999906e+02,1.264568353097730746e+00,1.977858804325510200e-01,1.443019005489869500e-01,1.489632550413984013e-01,4.151400590379223488e+00,2.894308255318875922e-01,5.574717262299766496e-02,4.084438453339700459e-02,6.111063767922830792e-02,1.275392858387277784e+00,2.721973340848121703e-02,1.100376185258461481e-02,7.296680490767745719e-03,6.801130705715405234e-03 -1.768141999999999996e+02,1.264492666494577477e+00,1.974799874684922130e-01,1.430831127170670847e-01,1.481589713144453313e-01,4.146409682656576834e+00,2.770755022679018964e-01,5.565501171177952844e-02,4.076525184163604099e-02,6.048406331626199339e-02,1.266996628739855524e+00,2.697923924788542260e-02,1.105958326379032075e-02,7.339823286231492161e-03,6.776567005797672072e-03 -1.767997000000000014e+02,1.264481680951577314e+00,1.974355885898249618e-01,1.429062115803021449e-01,1.480422334361588543e-01,4.145685276630766580e+00,2.752821870794370795e-01,5.564163500294405651e-02,4.075376611560466156e-02,6.039311908940492302e-02,1.265777956769007062e+00,2.694433268803914094e-02,1.106768547062197960e-02,7.346085253541037585e-03,6.773001704007804158e-03 -1.767838999999999885e+02,1.264469710497825305e+00,1.973872091220358338e-01,1.427134503416200850e-01,1.479150294032671731e-01,4.144895923857815134e+00,2.733280919085530059e-01,5.562705900297162942e-02,4.074125063482564313e-02,6.029402124220895054e-02,1.264450024552496998e+00,2.690629657455151369e-02,1.107651408220407252e-02,7.352908638609378933e-03,6.769116754471261876e-03 -1.768387999999999920e+02,1.264511304036495032e+00,1.975553124626448498e-01,1.433832346456478390e-01,1.483570231631243796e-01,4.147638674948639803e+00,2.801179542428151592e-01,5.567770599021762412e-02,4.078473796993753453e-02,6.063835490113644866e-02,1.269064168773153867e+00,2.703846003217624805e-02,1.104583745082074464e-02,7.329199534795965976e-03,6.782615724696329507e-03 -1.769100999999999999e+02,1.264565322603109943e+00,1.977736324660221423e-01,1.442531002353968361e-01,1.489310514887678405e-01,4.151200754234173118e+00,2.889361178936908914e-01,5.574348249642235853e-02,4.084121605725041237e-02,6.108554961664713900e-02,1.275056673016010222e+00,2.721010401266160672e-02,1.100599694412437990e-02,7.298407930025549439e-03,6.800147174187171073e-03 -1.770271999999999935e+02,1.264654040333132112e+00,1.981321916861552013e-01,1.456817294157550791e-01,1.498738104920331882e-01,4.157050957380539202e+00,3.034186840019224007e-01,5.585151095191429049e-02,4.093397319644170862e-02,6.182000264871279072e-02,1.284898499759886903e+00,2.749200457528194752e-02,1.094056463929767020e-02,7.247837145753222021e-03,6.828940059676331942e-03 -1.770201000000000136e+02,1.264648661205180380e+00,1.981104515455665571e-01,1.455951088591320719e-01,1.498166491861137040e-01,4.156696248223074264e+00,3.025405779441250331e-01,5.584496097724314656e-02,4.092834915128151785e-02,6.177547133763106046e-02,1.284301770725887692e+00,2.747491239770211147e-02,1.094453192678074283e-02,7.250903350435822237e-03,6.827194291213714572e-03 -1.769689999999999941e+02,1.264609946636400473e+00,1.979539837731600360e-01,1.449716848530151481e-01,1.494052488012556079e-01,4.154143341470048156e+00,2.962206878661497456e-01,5.579781961024365966e-02,4.088787186850889599e-02,6.145497133815580604e-02,1.280007002607934652e+00,2.735189686610600690e-02,1.097308522120130081e-02,7.272971386954332762e-03,6.814629675940472864e-03 -1.770026000000000010e+02,1.264635402791214558e+00,1.980568666920026755e-01,1.453816074871743247e-01,1.496757586433541398e-01,4.155821965088476233e+00,3.003762320270091379e-01,5.582881667347619481e-02,4.091448706814021508e-02,6.166571106383811340e-02,1.282830959726588560e+00,2.743278379099112207e-02,1.095431045226724631e-02,7.258460897188734329e-03,6.822891340777667568e-03 -1.769059000000000026e+02,1.264562140583758154e+00,1.977607721011668818e-01,1.442018599061269946e-01,1.488972377585056073e-01,4.150990926281869164e+00,2.884166748735843555e-01,5.573960786351830898e-02,4.083788915729649749e-02,6.105920715093682283e-02,1.274703678376178928e+00,2.719999314705096038e-02,1.100834379024114018e-02,7.300221741246240570e-03,6.799114466082521735e-03 -1.768848000000000127e+02,1.264546154724633720e+00,1.976961640777269991e-01,1.439444382519377008e-01,1.487273640183783829e-01,4.149936790616726157e+00,2.858070920820914296e-01,5.572014244583359255e-02,4.082117544562327560e-02,6.092686762082077934e-02,1.272930300542739701e+00,2.714919808410232172e-02,1.102013389811340449e-02,7.309333983331167683e-03,6.793926337271070925e-03 -1.768855000000000075e+02,1.264546685061192388e+00,1.976983074718696165e-01,1.439529783068160818e-01,1.487329996400885701e-01,4.149971761942110149e+00,2.858936659187740759e-01,5.572078821798426285e-02,4.082172992894891883e-02,6.093125803177246169e-02,1.272989132982711880e+00,2.715088322837078127e-02,1.101974275709395601e-02,7.309031681461061747e-03,6.794098455288506699e-03 -1.769601999999999862e+02,1.264603279548234704e+00,1.979270382467964162e-01,1.448643241631160095e-01,1.493344009854680188e-01,4.153703701950934857e+00,2.951323310621134510e-01,5.578970133177799107e-02,4.088090122098639312e-02,6.139977760047687916e-02,1.279267394791142820e+00,2.733071219530275320e-02,1.097800242258879788e-02,7.276771753321503722e-03,6.812465906578343833e-03 -1.770229999999999961e+02,1.264650858313780546e+00,1.981193313212999407e-01,1.456304890864852375e-01,1.498399967617709549e-01,4.156841129428235249e+00,3.028992409818158649e-01,5.584763631901024095e-02,4.093064629648779373e-02,6.179366018300247454e-02,1.284545505120055608e+00,2.748189370967130118e-02,1.094291148541443048e-02,7.249650956973913152e-03,6.827907351571682604e-03 -1.769497000000000071e+02,1.264595324499855344e+00,1.978948873346581538e-01,1.447362233399416276e-01,1.492498666598123247e-01,4.153179132070178525e+00,2.938337235118488877e-01,5.578001474951785332e-02,4.087258397110163366e-02,6.133392143620142178e-02,1.278384908191565472e+00,2.730543503127619287e-02,1.098386953788067777e-02,7.281306281373245426e-03,6.809884136316723957e-03 -1.768146999999999878e+02,1.264493045306405161e+00,1.974815184643083366e-01,1.430892127562657379e-01,1.481629967585240681e-01,4.146434662174707242e+00,2.771373407226747076e-01,5.565547297760142786e-02,4.076564790115436154e-02,6.048719932408452848e-02,1.267038651911262193e+00,2.698044292236284614e-02,1.105930387734785358e-02,7.339607356324259757e-03,6.776689947238692668e-03 -1.768541999999999916e+02,1.264522971440785071e+00,1.976024671337809901e-01,1.435711158529708875e-01,1.484810068407529382e-01,4.148408044107085857e+00,2.820225786498760101e-01,5.569191297753253722e-02,4.079693660310187986e-02,6.073494394207412661e-02,1.270358482452536464e+00,2.707553320608191427e-02,1.103723234839264211e-02,7.322548893653413327e-03,6.786402321080041433e-03 -1.769009000000000071e+02,1.264558352465482205e+00,1.977454621430057569e-01,1.441408595141386861e-01,1.488569833177171287e-01,4.150741131100556203e+00,2.877982903258349268e-01,5.573499520529917595e-02,4.083392856211329192e-02,6.102784707271036169e-02,1.274283446662094477e+00,2.718795640227644750e-02,1.101113765466583960e-02,7.302381040318495220e-03,6.797885051672225565e-03 -1.769336999999999875e+02,1.264583202521372352e+00,1.978458954685425319e-01,1.445410220855798400e-01,1.491210524492891931e-01,4.152379787489973495e+00,2.918548929590549790e-01,5.576525424321662761e-02,4.085991006651526480e-02,6.123356918587630204e-02,1.277040166706491675e+00,2.726691744799752959e-02,1.099280990403975200e-02,7.288216038404488062e-03,6.805950010203766498e-03 -1.768691000000000031e+02,1.264534260033247204e+00,1.976480908091011179e-01,1.437528970210952828e-01,1.486009650743025379e-01,4.149152433747401503e+00,2.838653646021640498e-01,5.570565869902555090e-02,4.080873917674793239e-02,6.082839697518949151e-02,1.271610772960510616e+00,2.711140270551015696e-02,1.102890663240700675e-02,7.316114182418079204e-03,6.790065976022732763e-03 -1.769353000000000122e+02,1.264584414719220673e+00,1.978507946551541496e-01,1.445605422110163296e-01,1.491339338703416839e-01,4.152459721947995064e+00,2.920527760143372120e-01,5.576673029384676683e-02,4.086117745697392944e-02,6.124360441090903606e-02,1.277174640855001542e+00,2.727076920632542922e-02,1.099191586742383209e-02,7.287525062701347145e-03,6.806343422815074040e-03 -1.769733999999999980e+02,1.264613280180483246e+00,1.979674565363417904e-01,1.450253651979642733e-01,1.494406727091495135e-01,4.154363161229603918e+00,2.967648662681661165e-01,5.580187874947650783e-02,4.089135719227013355e-02,6.148256820699504743e-02,1.280376806516329680e+00,2.736248920150763375e-02,1.097062662050754533e-02,7.271071203770740343e-03,6.815711560621530440e-03 -1.769555000000000007e+02,1.264599718717055232e+00,1.979126468861250321e-01,1.448069837946475147e-01,1.492965618111268267e-01,4.153468894480502271e+00,2.945510495872341039e-01,5.578536543305204209e-02,4.087717826151415768e-02,6.137029912694402789e-02,1.278872376979904857e+00,2.731939765521468333e-02,1.098062865514801145e-02,7.278801494449427256e-03,6.811310257032666959e-03 -1.768201999999999998e+02,1.264497212236508572e+00,1.974983594182855851e-01,1.431563131874526995e-01,1.482072766433915056e-01,4.146709436874154164e+00,2.778175637252005004e-01,5.566054690164248808e-02,4.077000455585591543e-02,6.052169541013374676e-02,1.267500906796756865e+00,2.699368334161489358e-02,1.105623062648067312e-02,7.337232127344772703e-03,6.778042303090023313e-03 -1.769250999999999863e+02,1.264576686957937568e+00,1.978195623405055170e-01,1.444361014113604291e-01,1.490518148111330543e-01,4.151950139778113780e+00,2.907912715369285195e-01,5.575732047107972988e-02,4.085309784280011236e-02,6.117962985132652243e-02,1.276317368158265353e+00,2.724621424698525640e-02,1.099761535085025388e-02,7.291930032808771611e-03,6.803835417418059583e-03 -1.768745999999999867e+02,1.264538426963350837e+00,1.976649317630783664e-01,1.438199974522818003e-01,1.486452449591697533e-01,4.149427208446844872e+00,2.845455876046862898e-01,5.571073262306655560e-02,4.081309583144945852e-02,6.086289306123848775e-02,1.272073027846003512e+00,2.712464312476214889e-02,1.102583338153982628e-02,7.313738953438592150e-03,6.791418331874056469e-03 -1.770054000000000087e+02,1.264637524137449232e+00,1.980654402685729232e-01,1.454157677066874044e-01,1.496983011301957767e-01,4.155961850390012202e+00,3.007225273737503812e-01,5.583139976207893151e-02,4.091670500144281575e-02,6.168327270764506487e-02,1.283066289486475497e+00,2.743952436806490480e-02,1.095274588818939687e-02,7.257251689708268949e-03,6.823579812847438419e-03 -1.770022999999999911e+02,1.264635175504118081e+00,1.980559480945129347e-01,1.453779474636549551e-01,1.496733433769066313e-01,4.155806977377597633e+00,3.003391289541426090e-01,5.582853991398303850e-02,4.091424943242918943e-02,6.166382945914450353e-02,1.282805745823742072e+00,2.743206158630462355e-02,1.095447808413273216e-02,7.258590455133079322e-03,6.822817575913048271e-03 -1.770163000000000011e+02,1.264645782235290561e+00,1.980988159773640622e-01,1.455487485612212417e-01,1.497860558111143714e-01,4.156506403885275702e+00,3.020706056878381673e-01,5.584145535699661100e-02,4.092533909894224831e-02,6.175163767817881677e-02,1.283982394623182088e+00,2.746576447167342616e-02,1.094665526374354048e-02,7.252544417730752424e-03,6.826259936261881711e-03 -1.771246999999999900e+02,1.264740741905242993e+00,1.984202356913037091e-01,1.468575277613852759e-01,1.506599190245760944e-01,4.161881150456578915e+00,3.153488192268874002e-01,5.594112459518647829e-02,4.102030423786476310e-02,6.242305812790960307e-02,1.293012352724939973e+00,2.772469537788957439e-02,1.089395746850452262e-02,7.206985192164061527e-03,6.845730722200828178e-03 -1.772479999999999905e+02,1.264924533369186754e+00,1.987238332271864805e-01,1.482652516256408592e-01,1.516606706779577429e-01,4.167753680105469094e+00,3.296942006053313889e-01,5.605252628910968593e-02,4.118205400753743861e-02,6.313677671829098781e-02,1.302807191650813934e+00,2.800725565260819838e-02,1.088050657222657328e-02,7.162570659771994031e-03,6.825463389384250901e-03 -1.772921000000000049e+02,1.264990269002276069e+00,1.988324192071737884e-01,1.487687441026379620e-01,1.520186037510651289e-01,4.169854073921496429e+00,3.348250304414186473e-01,5.609237069058588265e-02,4.123990611493863478e-02,6.339204833090950064e-02,1.306310455208244292e+00,2.810831735670471510e-02,1.087569566771839913e-02,7.146685170084307592e-03,6.818214489325763461e-03 -1.775622999999999934e+02,1.265393030182791811e+00,1.994977237829687333e-01,1.518536345172518676e-01,1.542116540085156640e-01,4.182723153492704959e+00,3.662615434053648755e-01,5.633649670597966341e-02,4.159436505869820722e-02,6.495609344949093700e-02,1.327774895417256573e+00,2.872752081354962295e-02,1.084621933216039016e-02,7.049355026918557865e-03,6.773800593729339958e-03 -1.777206999999999937e+02,1.264984443197896047e+00,2.001660253266993039e-01,1.532242165926684940e-01,1.552435738209063665e-01,4.188848547140951339e+00,3.813554997543278091e-01,5.640368328509194618e-02,4.151842038531532164e-02,6.573401853435389963e-02,1.338231590934670479e+00,2.894970847410127668e-02,1.053066798373598900e-02,7.043796145282013588e-03,7.063337420703488800e-03 -1.779971999999999923e+02,1.265093313582536183e+00,2.009777509885500302e-01,1.561750449924694806e-01,1.573684026901909228e-01,4.201350208953357424e+00,4.119560559387842602e-01,5.661778301525367818e-02,4.174766586190738205e-02,6.726915675905664749e-02,1.359196162177061851e+00,2.951710918333294575e-02,1.036019042099986520e-02,6.968423098653461767e-03,7.166341350122326648e-03 -1.782899999999999920e+02,1.266044028156555923e+00,2.013352024074150093e-01,1.589991790032445618e-01,1.596140984615694869e-01,4.211752081792942803e+00,4.386718157487443648e-01,5.693132913369350345e-02,4.228487262738017671e-02,6.855221752062756746e-02,1.377504491696152300e+00,2.997142470842223405e-02,1.063026502236998766e-02,6.936602884636024202e-03,6.755950021352659374e-03 -1.786543000000000063e+02,1.266855566930916055e+00,2.029002515308371835e-01,1.617198107848807354e-01,1.616208261323284212e-01,4.224935686420625558e+00,4.710233462560182716e-01,5.714146652851871677e-02,4.195974523066721418e-02,7.029812280833791505e-02,1.400189322813501391e+00,3.049026952274791480e-02,1.010098568167301647e-02,6.896781431837535614e-03,7.179206288711346973e-03 -1.790592000000000041e+02,1.267102211387217237e+00,2.032958393776860273e-01,1.650218767374806994e-01,1.645588963669564198e-01,4.236764897348734848e+00,5.055022757704250580e-01,5.783675657597035780e-02,4.247146367573650938e-02,7.204636146793830243e-02,1.425378219467097196e+00,3.112355716275660988e-02,1.046679903067287282e-02,6.737891575745266759e-03,6.944800769948489619e-03 -1.793063999999999965e+02,1.267406437043818723e+00,2.039159159112863828e-01,1.673312412760032952e-01,1.663304513334777912e-01,4.246276470042394280e+00,5.296964771231706948e-01,5.808103700535961755e-02,4.265533701345650130e-02,7.327142054664181892e-02,1.442233035248854378e+00,3.155543075401012754e-02,1.041469958169137511e-02,6.677992060876714042e-03,6.956340174978549104e-03 -1.797101000000000113e+02,1.265915701495932577e+00,2.049738278680302839e-01,1.704698742983057347e-01,1.679398891208958577e-01,4.258408567127416333e+00,5.637632076091065869e-01,5.829149457866898698e-02,4.242475451070518849e-02,7.533273309352783720e-02,1.466177608260519349e+00,3.189891860026805581e-02,9.919275172554170572e-03,6.795218608296651336e-03,7.412979791964251219e-03 -1.801774000000000058e+02,1.266002452557604352e+00,2.058222564633325480e-01,1.754539409010813511e-01,1.702559917047909988e-01,4.272287105677079921e+00,6.020286935306025100e-01,5.932033126871530393e-02,4.320547741579623680e-02,7.652626467393985887e-02,1.493058464346574965e+00,3.295110169942994105e-02,1.037823639995908570e-02,6.286620486714529499e-03,7.214542200457073687e-03 -1.805680999999999869e+02,1.266153401349978003e+00,2.067646100046134083e-01,1.791033252660811925e-01,1.727460678586953957e-01,4.286314875529170010e+00,6.385363680108433471e-01,5.975791146447562152e-02,4.348403672700117129e-02,7.831907442915575501e-02,1.518549730128617270e+00,3.361744618716661082e-02,1.031662424380316509e-02,6.167154227269509847e-03,7.261201523421594375e-03 -1.808961999999999932e+02,1.267077819606472477e+00,2.074967485018886781e-01,1.810956011013242772e-01,1.734989267386305434e-01,4.296376114293511961e+00,6.625059576548117946e-01,5.843307635999742122e-02,4.302597068760996568e-02,8.026159544574928972e-02,1.534634983222412430e+00,3.326798995407947990e-02,9.922494400736510400e-03,6.700898782998419845e-03,7.658579133384045556e-03 -1.813839999999999861e+02,1.268590838503012019e+00,2.079008642404760465e-01,1.853129058925444550e-01,1.755838732282513082e-01,4.306819348218670740e+00,6.962378667352613348e-01,5.953263782807105553e-02,4.367498492359628282e-02,8.097108220488324903e-02,1.558565578247428363e+00,3.431509815709735123e-02,1.032624387883161396e-02,6.223627718271812492e-03,7.188141793608362508e-03 -1.818505999999999858e+02,1.266390845329510961e+00,2.092408704255021012e-01,1.874252306908530397e-01,1.765524075543654092e-01,4.319202389923715302e+00,7.272872074950864629e-01,5.889377623205899887e-02,4.328750977326699390e-02,8.270309881212134506e-02,1.581137067424382536e+00,3.395015559113537251e-02,9.581578555815616072e-03,6.755657437871279147e-03,7.311237951051003520e-03 -1.822969999999999970e+02,1.266534503463031980e+00,2.102565574274729565e-01,1.912307677484634816e-01,1.789633782514487015e-01,4.333920940427787194e+00,7.659079615779571526e-01,5.916612977211944263e-02,4.349557300546115501e-02,8.460153406578585500e-02,1.608166715533457136e+00,3.452726338895065195e-02,9.458029761350343623e-03,6.716456041893269224e-03,7.353955211706661443e-03 -1.828437999999999874e+02,1.263082768408702483e+00,2.108703290863296886e-01,1.949303994886526503e-01,1.817675385247202735e-01,4.347324094283505858e+00,7.977441407572491983e-01,6.074628255326582071e-02,4.403458315860982880e-02,8.511081147638666078e-02,1.630635887162728892e+00,3.548948501656848387e-02,9.956821964766750244e-03,6.319204050088171598e-03,7.003431987203744165e-03 -1.832631000000000085e+02,1.264385808395577904e+00,2.116234680696743309e-01,1.959703792519187360e-01,1.828482539521429917e-01,4.352868270951430141e+00,8.154020535616979259e-01,6.010991943923611747e-02,4.408132294152199149e-02,8.653350176082563738e-02,1.644689277392453519e+00,3.479924551313456904e-02,9.769007510526409033e-03,6.899588712394240722e-03,7.031712889505018979e-03 -1.836243000000000052e+02,1.265000700739015604e+00,2.117330584141233207e-01,1.976812366290046086e-01,1.839709703777092642e-01,4.358174013729198215e+00,8.257132998151295311e-01,6.146173581406833009e-02,4.430046481847001172e-02,8.656339696845327669e-02,1.652334115264554981e+00,3.593855459325129287e-02,9.910926258395649086e-03,5.927871709200456529e-03,6.962495800880871138e-03 -1.840932999999999993e+02,1.266513939171399539e+00,2.140186529923727154e-01,2.067246403710042979e-01,1.902730163742037683e-01,4.393145659437985628e+00,9.175358293480950778e-01,6.213686134334321653e-02,4.520973023833712440e-02,9.122087017755343974e-02,1.713746372562360065e+00,3.856178704499511889e-02,9.685893730791627840e-03,5.824669189641515366e-03,6.856186915352681030e-03 -1.845897999999999968e+02,1.267762926824850256e+00,2.142497213785890253e-01,2.072832592415045916e-01,1.916423862465854999e-01,4.399399742716470385e+00,9.341875665356473846e-01,6.113687482383548671e-02,4.509885159542335875e-02,9.287226389248952330e-02,1.724587697024199784e+00,3.718290944885273286e-02,1.009279840047774129e-02,6.335782831786564845e-03,6.603423127115150629e-03 -1.850356999999999914e+02,1.265916276897334658e+00,2.146815812375408583e-01,2.089200902790603331e-01,1.911322413933118081e-01,4.399310425476894437e+00,9.362365543764834541e-01,6.173646195583148283e-02,4.516729842571551301e-02,9.191366295355045402e-02,1.729779259970294802e+00,3.784199523574795221e-02,1.023993180777884801e-02,5.288598489543676687e-03,7.029090915532120593e-03 -1.854776999999999987e+02,1.268506138357466062e+00,2.148700533474733332e-01,2.073272184851258082e-01,1.913149317160353080e-01,4.404692411959763909e+00,9.357856229307124352e-01,6.001993349047574089e-02,4.530889367951582841e-02,9.305353499711586929e-02,1.732217641045575407e+00,3.678266227185028603e-02,1.013555471447473086e-02,6.288764646233112668e-03,6.950675045971969196e-03 -1.859069000000000074e+02,1.267226442405586351e+00,2.150451370461227973e-01,2.087649902947388281e-01,1.919133161215541006e-01,4.408430103485493134e+00,9.427782642317814599e-01,6.024734764980988616e-02,4.545679548327605235e-02,9.295883071757829463e-02,1.740158247124402369e+00,3.707759753529014241e-02,1.001152848007716770e-02,5.999735863986020712e-03,7.059926501236303553e-03 -1.864913999999999987e+02,1.267255306583074725e+00,2.155150506164399682e-01,2.100214929011889331e-01,1.924211431515070736e-01,4.415790884794880355e+00,9.426850638210315658e-01,6.099373371567516633e-02,4.562471527386462167e-02,9.223182956659974063e-02,1.744352822233886213e+00,3.755375975242258857e-02,9.587545234957438323e-03,5.420085651303822340e-03,7.631538727959477630e-03 -1.870202999999999918e+02,1.264382751202293376e+00,2.152384292828311285e-01,2.086935246293961932e-01,1.936407690230323442e-01,4.424496303603955738e+00,9.446673071718612036e-01,6.008703681860037837e-02,4.603555577069694260e-02,9.292694170989801439e-02,1.747102788340555213e+00,3.695678955043114888e-02,9.912432088227137936e-03,6.483184193571669453e-03,7.204002458459743408e-03 -1.876228999999999871e+02,1.267431872782978530e+00,2.154293021764265847e-01,2.091746023994708326e-01,1.940925043174979991e-01,4.428580675114096366e+00,9.473259940388136791e-01,6.024019702020527722e-02,4.573658007218950328e-02,9.232405029948852204e-02,1.751628300048402531e+00,3.753021760624844494e-02,9.385588256928444062e-03,6.059831066471354361e-03,7.870270907818673056e-03 -1.881595000000000084e+02,1.269545156768791427e+00,2.154328473464379445e-01,2.090284639362997576e-01,1.946694015827893365e-01,4.435475055475439632e+00,9.501707421394387509e-01,6.011022456778375433e-02,4.593994371704433755e-02,9.266072572174433031e-02,1.757170020991959847e+00,3.764368577955411188e-02,9.690276130484249545e-03,5.958001184281958712e-03,7.694504903093909998e-03 -1.886697000000000060e+02,1.270007429904563168e+00,2.153763584158391031e-01,2.093203772175734056e-01,1.955535971444133936e-01,4.441796207636611094e+00,9.593960463185147169e-01,5.978815543330000953e-02,4.644419360681247694e-02,9.301032531027604577e-02,1.765849985598899829e+00,3.755349329639059291e-02,1.001576095160473800e-02,6.291212453265896190e-03,7.367807815494592516e-03 -1.893571000000000026e+02,1.265453852704558679e+00,2.170113064268977543e-01,2.104590791316913734e-01,1.957058418295123392e-01,4.446481174477716181e+00,9.653063315017700319e-01,6.062420699008590208e-02,4.552040443925347429e-02,9.300990667806731393e-02,1.773859285682743314e+00,3.798619207275580334e-02,9.170779451969889029e-03,5.690389918161849192e-03,8.626597058249953209e-03 -1.899037999999999897e+02,1.266344296707889283e+00,2.166028507185891183e-01,2.105640034137464256e-01,1.960902861002544739e-01,4.449161662564795172e+00,9.655780150748239921e-01,6.032332098962341072e-02,4.574434584918556090e-02,9.343422709643234292e-02,1.778727305647703316e+00,3.771666442464555180e-02,9.653651462402698669e-03,5.573118596867241564e-03,8.178377298150081576e-03 -1.905653000000000077e+02,1.266855032407659509e+00,2.169467803653811477e-01,2.119499377923868833e-01,1.960877214399158186e-01,4.456837881189256834e+00,9.665184905185376651e-01,6.065061183693704755e-02,4.526193744967610399e-02,9.309988470612125255e-02,1.783045672361932343e+00,3.808504703893104276e-02,9.310761176779161485e-03,4.862824645042937433e-03,9.019489236939376431e-03 -1.912235000000000014e+02,1.266865950908589333e+00,2.162948185618423502e-01,2.125793048186472578e-01,1.970453853855303472e-01,4.462528981464384259e+00,9.716924482435076449e-01,6.040724047780368644e-02,4.605224002840010988e-02,9.322631990131471924e-02,1.788971833015656543e+00,3.840736254185712212e-02,1.054497549414644408e-02,4.666298144591546349e-03,8.334700605090575309e-03 -1.919040999999999997e+02,1.266744979616523548e+00,2.179483637544066821e-01,2.131398093894416312e-01,1.964363648932987427e-01,4.468783440070829727e+00,9.708651568795474418e-01,6.076077164847591000e-02,4.533015748928800881e-02,9.340050441456701491e-02,1.793427555843384535e+00,3.846994423401877555e-02,9.149641841129586145e-03,4.532266249494917854e-03,1.038698566693765923e-02 -1.924600000000000080e+02,1.263004470097147447e+00,2.165770851954261778e-01,2.133973887771768163e-01,1.976162741206354267e-01,4.473144671400993033e+00,9.717431337464450536e-01,6.111760131474888724e-02,4.667767441070194701e-02,9.272157893061158673e-02,1.796676972601994438e+00,3.917936584599140959e-02,1.074863933445125742e-02,4.549374023532788691e-03,8.720617508116201844e-03 -1.930444999999999993e+02,1.266606852350623758e+00,2.184319321987167606e-01,2.141765579759083993e-01,1.973480202582555409e-01,4.480212238399501778e+00,9.795481301964819032e-01,6.066456009764188001e-02,4.616135423797429471e-02,9.307280049736579852e-02,1.804552180750899737e+00,3.861182275589775809e-02,9.672381378627484261e-03,5.204461642392448767e-03,9.620776392724683657e-03 -1.937610999999999990e+02,1.267398798723471831e+00,2.173235144229492266e-01,2.125417629542240561e-01,1.984935620722921845e-01,4.484222038526977094e+00,9.788646947324322056e-01,6.058903642111935356e-02,4.671846428232102888e-02,9.278344491387410797e-02,1.808072543740216531e+00,3.875484874587084572e-02,1.042743127974214007e-02,5.480692100047632187e-03,8.683792137985167636e-03 -1.944816999999999894e+02,1.267736435895835623e+00,2.185535520876523974e-01,2.120695018270909449e-01,1.981894279244197088e-01,4.489744337096310822e+00,9.779192744253958347e-01,6.134041122828196718e-02,4.667144759619903244e-02,9.287019877944317769e-02,1.811802619689680593e+00,3.882283666213146023e-02,9.702991183341620751e-03,5.475375639062241701e-03,9.451175481131363076e-03 -1.951537999999999897e+02,1.268560575538612234e+00,2.183788226660617893e-01,2.123113212164839392e-01,1.995900174774434821e-01,4.494595429478388304e+00,9.778793173811897166e-01,6.134156461005663141e-02,4.712695547141113744e-02,9.292774025763332613e-02,1.813600935906289013e+00,3.943381964403855355e-02,1.052839395042100279e-02,5.255121544002157308e-03,8.843071740874820785e-03 -1.957752999999999872e+02,1.272679911078250736e+00,2.181780764914445225e-01,2.119362994727536642e-01,1.998982289054119788e-01,4.497484467530810548e+00,9.706793342816093517e-01,6.112164998766529689e-02,4.746044642810229308e-02,9.292774220745977920e-02,1.812720678658517937e+00,3.978075957620211267e-02,1.078024438699231452e-02,5.007981697394255083e-03,9.121130263400615418e-03 -1.964170000000000016e+02,1.271075316529290955e+00,2.190287778565745969e-01,2.127138964700246992e-01,1.995817421168035732e-01,4.506819646045702399e+00,9.742571928127090608e-01,6.115374570161054985e-02,4.669665358940154609e-02,9.347126859314203173e-02,1.817492698570990273e+00,3.978710800350404586e-02,1.018263090340098750e-02,5.008439443858078710e-03,1.021678800027812917e-02 -1.970637999999999863e+02,1.266862205696151822e+00,2.176711299217944096e-01,2.133702669997502022e-01,2.008334138366995869e-01,4.508730568580156195e+00,9.761169839990526675e-01,6.071145778934486370e-02,4.739539731223840757e-02,9.313179606958757462e-02,1.822048793813295431e+00,4.026076850871625201e-02,1.094241920988737321e-02,4.775073299456165932e-03,9.550143867697095251e-03 -1.976512999999999920e+02,1.266565849714224701e+00,2.186527462233998631e-01,2.138535972038337896e-01,2.000460620592906802e-01,4.511098311158095342e+00,9.773608159558837549e-01,6.036845438265075331e-02,4.726302211420779081e-02,9.372245768635362184e-02,1.825851930059754213e+00,4.014620549526479176e-02,9.942173977518418970e-03,5.242208631568115451e-03,1.049441101504108680e-02 -1.983369000000000142e+02,1.269175341718395522e+00,2.187934091854725760e-01,2.138031685109861857e-01,2.013172720598080112e-01,4.518148420474537907e+00,9.804225333030318623e-01,6.089478038721228559e-02,4.769756964744742422e-02,9.373895776934929036e-02,1.829569338303540738e+00,4.110794019632588170e-02,1.070731649846232147e-02,5.223476277669183987e-03,9.705779038872579950e-03 -1.991706000000000074e+02,1.268153871790369314e+00,2.201696876950694493e-01,2.148234886024827373e-01,2.013569256756504444e-01,4.524362801104442333e+00,9.873431693606351534e-01,6.067958907363169008e-02,4.765290742643878835e-02,9.484851604402133596e-02,1.838110216341781067e+00,4.116252603943746508e-02,1.001978688955704536e-02,6.102766885363278271e-03,1.049015068172096457e-02 -1.997658999999999878e+02,1.264893598452143664e+00,2.200369982401343127e-01,2.154106084473554894e-01,2.020340446184450967e-01,4.529404636756318325e+00,9.892811745177376714e-01,6.131463692512174185e-02,4.797218863992445959e-02,9.439281552409632681e-02,1.842720333213994532e+00,4.194910797950340831e-02,1.078002209377543208e-02,5.548764198792337059e-03,9.581788598139726054e-03 -2.005405000000000086e+02,1.264044522487389521e+00,2.207531491925517342e-01,2.159944746384314940e-01,2.019883957312917089e-01,4.533931446711646274e+00,9.937840665584878330e-01,6.081015048503318754e-02,4.772182535819272792e-02,9.532731209473321865e-02,1.848675991500686955e+00,4.171879079345003349e-02,1.022214347575954932e-02,5.932751762367460824e-03,1.003837634656088579e-02 -2.012694999999999936e+02,1.260985648390815950e+00,2.207217642919758749e-01,2.170011783994476584e-01,2.020160604093493018e-01,4.539352921319212086e+00,9.970242648739993108e-01,6.189586556788731486e-02,4.806194845739665544e-02,9.505398789669440573e-02,1.853671340224668729e+00,4.280584214914062713e-02,1.106330083102644718e-02,5.350711350559776702e-03,9.427290025792234296e-03 -2.021248999999999967e+02,1.259541375993458612e+00,2.220827429764330452e-01,2.174483878361180289e-01,2.022122004415109475e-01,4.543932925712594439e+00,1.000165001906234252e+00,6.091758668428025325e-02,4.782877705309054178e-02,9.673608009457172752e-02,1.857691629311108317e+00,4.270763462469900906e-02,1.053780462883925628e-02,5.829257444785226894e-03,9.770015343287627441e-03 -2.028446000000000140e+02,1.263551136253045826e+00,2.232675126459469084e-01,2.189730498538808856e-01,2.022573275526720893e-01,4.550588591935044391e+00,1.007315299719985902e+00,6.248222442486746353e-02,4.806102079101806646e-02,9.602930013166853518e-02,1.863982000732047339e+00,4.448145778502521352e-02,1.043185507369157571e-02,5.185469429345737624e-03,1.023345827197955082e-02 -2.035724999999999909e+02,1.261496832632352350e+00,2.222608220062599615e-01,2.182795444867197399e-01,2.036206158405496902e-01,4.555407592356409019e+00,1.010974085587736271e+00,6.091459840675422788e-02,4.924589125537429113e-02,9.734070882951693926e-02,1.865728383113704147e+00,4.392765183946979735e-02,1.122243366033175843e-02,6.445075105377427900e-03,9.020925443231174803e-03 -2.042136000000000138e+02,1.260643053214212772e+00,2.234991000326826405e-01,2.203065542130326349e-01,2.021686244985571035e-01,4.552999371210238344e+00,1.012790659789499781e+00,6.272454110508034197e-02,4.835738910670088486e-02,9.649622031152284285e-02,1.868546734663898201e+00,4.492150908946646037e-02,1.004590473872880863e-02,5.930828482475197783e-03,9.730961007407286367e-03 -2.050720000000000027e+02,1.263677438891716243e+00,2.225671933674325531e-01,2.195927014021091250e-01,2.038601218341297705e-01,4.561515290986609905e+00,1.013580591685564691e+00,6.133467259396775673e-02,4.902301088446035793e-02,9.733689853269270054e-02,1.870807371036806943e+00,4.496833175295672502e-02,1.095299950487874097e-02,6.477802715375548248e-03,7.915280739258331866e-03 -2.057861000000000047e+02,1.269004000904200957e+00,2.248124229194804480e-01,2.204953621070686043e-01,2.033132516781086530e-01,4.566116207759073120e+00,1.015311939587625778e+00,6.226823643773725381e-02,4.875601581204169060e-02,9.716187264480036223e-02,1.875119469525140747e+00,4.539446779828917866e-02,9.842400380691465611e-03,6.363635373641762794e-03,9.350107257332353206e-03 -2.065697000000000116e+02,1.264728697966256421e+00,2.233036965843424315e-01,2.205673884851200306e-01,2.056413667073248575e-01,4.570201330272661622e+00,1.010643737082606686e+00,6.189430456793749286e-02,5.014930666525660441e-02,9.747271552777908576e-02,1.873634401431140128e+00,4.572456719764474153e-02,1.125294255638974866e-02,6.075008917193702729e-03,7.473144191016471011e-03 -2.073267999999999915e+02,1.264200192210174656e+00,2.246872713349289674e-01,2.211238040960532003e-01,2.055473555337884450e-01,4.575392974212396879e+00,1.007122896640263443e+00,6.159966437886346680e-02,4.974832381616749177e-02,9.814979523454343824e-02,1.873385469002040837e+00,4.582531404827015070e-02,1.038978586577087027e-02,6.187424741357557337e-03,8.171413853093195678e-03 -2.080735999999999990e+02,1.263357220563073202e+00,2.255741865052981465e-01,2.220998865892576668e-01,2.051777817714098839e-01,4.577427556552370547e+00,1.007800442928070472e+00,6.291772555124211519e-02,4.918618217255486813e-02,9.784475171895816448e-02,1.874392341774657300e+00,4.668714808174977832e-02,9.677907069916197313e-03,6.351428800620409487e-03,8.881323916938368979e-03 -2.089103000000000065e+02,1.261518758002778684e+00,2.255753177203312365e-01,2.218233754752140241e-01,2.050325958725434661e-01,4.578303152589770164e+00,1.010173174685682795e+00,6.257739421345209774e-02,4.848996299434608914e-02,9.904672849134374402e-02,1.880717463845342552e+00,4.714643539581676868e-02,8.872921631145336274e-03,6.278144812359090846e-03,9.815727079800584329e-03 -2.095712000000000046e+02,1.262371383905750655e+00,2.254775283066625113e-01,2.219122837860878494e-01,2.056488086484557221e-01,4.578774362678835530e+00,1.007126878468130426e+00,6.314529339106426942e-02,4.905000993310922042e-02,9.871099167540414721e-02,1.880483997193700407e+00,4.807434789802628866e-02,9.114795137532633040e-03,6.060163264694995444e-03,9.231961832546722868e-03 -2.102797999999999945e+02,1.265515816762464940e+00,2.254100988136431560e-01,2.216944575803342921e-01,2.076112943242152675e-01,4.588612062247549694e+00,1.008818384571749327e+00,6.260801690501303918e-02,4.948434959583715431e-02,9.985039861966281405e-02,1.882477527185500765e+00,4.797796963834703721e-02,9.552773742541098567e-03,6.648401988453248035e-03,8.667181644573841715e-03 -2.110185999999999922e+02,1.266610184816930440e+00,2.264487717780892806e-01,2.230937159525516189e-01,2.069833145342691305e-01,4.591434494596533078e+00,1.011156662508176263e+00,6.395404857710280944e-02,4.902239330447450555e-02,9.882876444617084977e-02,1.886096542552457178e+00,4.875714388687997503e-02,8.760849613657611945e-03,6.341549124309162067e-03,9.522781437166810692e-03 -2.119254999999999995e+02,1.265034033614803599e+00,2.254506826269615238e-01,2.225721847999005965e-01,2.075035541151867835e-01,4.595388436202421545e+00,1.013444825884789680e+00,6.353740178283662221e-02,4.957413010466885789e-02,9.977851751658374513e-02,1.889044528615700935e+00,4.799829064240819509e-02,9.192012308059048162e-03,6.662555049075154223e-03,8.653742517853328653e-03 -2.126860000000000070e+02,1.264255587631176514e+00,2.277807826263206492e-01,2.227945097029844779e-01,2.072463834590010934e-01,4.596214668912519841e+00,1.014766297794192473e+00,6.455250812552594530e-02,4.852323016374449766e-02,9.894514446081176251e-02,1.890960993621371156e+00,4.827441021385801140e-02,8.659553792430108032e-03,6.747040292547745732e-03,9.366084264540011639e-03 -2.134668000000000063e+02,1.271392538411198370e+00,2.257664353434865046e-01,2.229070692968326828e-01,2.091244960051863999e-01,4.598428854594600601e+00,1.017695991109184295e+00,6.470928746039354695e-02,4.913151474062102397e-02,9.956077944725545692e-02,1.893377053601897231e+00,4.818461873943997997e-02,9.320379869973090259e-03,6.974438717037491353e-03,8.454226990382625317e-03 -2.143554000000000030e+02,1.270425235007340170e+00,2.268266454728655734e-01,2.230900435320366526e-01,2.088488034518158065e-01,4.602426085518461996e+00,1.022887599804352288e+00,6.462952746448147323e-02,4.798898951570323979e-02,1.011335057408204174e-01,1.898823163908209155e+00,4.741141120723780383e-02,8.462972709173857688e-03,7.698893641646595287e-03,9.731853519484273685e-03 -2.151734999999999900e+02,1.269394388473895408e+00,2.251216428614541409e-01,2.237869196759114943e-01,2.097066506161227029e-01,4.603740636978145950e+00,1.024295705533485812e+00,6.552459486678884060e-02,4.864593362008002436e-02,1.003699856443645011e-01,1.900206461495874466e+00,4.874019110142119304e-02,9.793284566557682036e-03,6.352567083936576375e-03,8.690763021165406887e-03 -2.158659000000000106e+02,1.268885115205851566e+00,2.274452091233149509e-01,2.229598805898926894e-01,2.088089477445407849e-01,4.607903567727523964e+00,1.025571313321438360e+00,6.432775890176069267e-02,4.782632542349858629e-02,1.014915330037778618e-01,1.903469056368083390e+00,4.801928393732839140e-02,8.927735655142512300e-03,7.192333747108037301e-03,9.985064501596307984e-03 -2.167940000000000111e+02,1.272238765464798416e+00,2.268869189865030112e-01,2.244736921400528606e-01,2.095914183744604642e-01,4.609830508219509682e+00,1.024775590545424109e+00,6.493881064448865648e-02,4.813653268914601380e-02,1.005013148891933106e-01,1.906374004860710958e+00,4.885884037666880092e-02,9.593677680329801283e-03,6.395007532859710644e-03,8.917047938507872973e-03 -2.175517999999999859e+02,1.273908612057855105e+00,2.284584569132751541e-01,2.236186685737548419e-01,2.095650036765786262e-01,4.618350778513618415e+00,1.027555666720092242e+00,6.326642661607924378e-02,4.834676011743457846e-02,1.026251536327339037e-01,1.909326395753915051e+00,4.717054958059430786e-02,9.008329483338985838e-03,7.901158638588078389e-03,9.265313902790381362e-03 -2.184111000000000047e+02,1.269154867222321847e+00,2.285637766692737438e-01,2.255434861175510952e-01,2.091859734860602726e-01,4.615060389270262853e+00,1.028852075227470575e+00,6.469342413260679991e-02,4.901543533877309594e-02,1.009085319027433897e-01,1.909834391248402152e+00,4.867772547753323326e-02,9.499534741002006732e-03,6.681970781859614128e-03,9.074513634016678765e-03 -2.191068999999999960e+02,1.267782219674026933e+00,2.286431450137646759e-01,2.253064154811725284e-01,2.094073711133063731e-01,4.616614872126186597e+00,1.027798965698296874e+00,6.273681676652501094e-02,4.903191620363131498e-02,1.023552845945250311e-01,1.909027958251838797e+00,4.671584425475042157e-02,9.269412333608341784e-03,7.950340667619102547e-03,9.030830011753060438e-03 -2.198847000000000094e+02,1.271620827092181161e+00,2.294336518268850211e-01,2.262614444418751536e-01,2.080800511340391290e-01,4.618484970989326754e+00,1.028429582011562538e+00,6.451184536299139904e-02,4.850128724937008418e-02,1.007414935170861808e-01,1.909554893810847309e+00,4.834152791591615067e-02,9.255127442333727084e-03,6.610189732009226493e-03,9.215875721882954563e-03 -2.206964999999999861e+02,1.269308382109349376e+00,2.287208789202906656e-01,2.249710592168017997e-01,2.099946322061434500e-01,4.621697037664673324e+00,1.027521010523468004e+00,6.286808704487124866e-02,4.897176681958187450e-02,1.021535708701190592e-01,1.910654612175733735e+00,4.714928940580129235e-02,1.019825785328589730e-02,7.440481554840394640e-03,8.428265020255544526e-03 -2.216173000000000002e+02,1.270074067450015942e+00,2.304921308813770719e-01,2.257764553700773169e-01,2.085766783529859891e-01,4.618895843385868893e+00,1.027071101718436186e+00,6.391559635725699295e-02,4.827338209044648720e-02,1.006405488936534809e-01,1.910859969112631340e+00,4.820889587119409070e-02,1.006879476369634818e-02,6.612452219551943899e-03,9.020724056309825656e-03 -2.223962999999999965e+02,1.272810768920955349e+00,2.299132316594153791e-01,2.254139930775033440e-01,2.091529438884933978e-01,4.627972366710983998e+00,1.028804385068741389e+00,6.259810595115165854e-02,4.946722232530183228e-02,1.023547660937062648e-01,1.911863414526774330e+00,4.648902749532228540e-02,1.128651309144285825e-02,7.712204652624884971e-03,8.148281242800960167e-03 -2.232579000000000065e+02,1.270729739479324438e+00,2.312776792845583906e-01,2.274572806517082824e-01,2.073670592965579651e-01,4.631859957207890233e+00,1.029918800918231625e+00,6.388282329760847089e-02,4.843292064113799422e-02,1.011776899319410811e-01,1.911898513958826928e+00,4.774951983030276820e-02,1.014783758692824889e-02,6.853136940263820920e-03,9.235614021268934160e-03 -2.241889999999999930e+02,1.272054932960101858e+00,2.298590389607418349e-01,2.278205680340879002e-01,2.088810648708170625e-01,4.637400507965137031e+00,1.028151913083126701e+00,6.312268475954893598e-02,4.954501888526795239e-02,1.025135071192309899e-01,1.909968452838681996e+00,4.697667809905155256e-02,1.116914272822189767e-02,7.782174942070771428e-03,8.271390552303303778e-03 -2.250524000000000058e+02,1.273294656423884064e+00,2.315124502053014788e-01,2.292847931041904763e-01,2.073178113427558700e-01,4.639344261565359062e+00,1.027564504254290023e+00,6.436650598575593962e-02,4.853730044439814872e-02,1.011780266450236082e-01,1.909259754925613839e+00,4.811577004787649658e-02,9.756303200226718042e-03,6.999302722168643243e-03,9.776916971334462594e-03 -2.259285999999999888e+02,1.272112004012248221e+00,2.300531643033412732e-01,2.295361860648150454e-01,2.085548066243888277e-01,4.643755035635765083e+00,1.024929802417712477e+00,6.316452607800292218e-02,5.048471534689314560e-02,1.024670921609570490e-01,1.907065212420901767e+00,4.769007231387320522e-02,1.087580163637574121e-02,7.612685094500817873e-03,8.507886778766758640e-03 -2.266486999999999910e+02,1.266333784694248399e+00,2.327189674906249839e-01,2.308995749380551021e-01,2.065861321059688227e-01,4.647171022916585237e+00,1.025434666964127217e+00,6.399473738758493235e-02,4.868580530786181804e-02,1.011128167745016515e-01,1.909645444891279187e+00,4.783960080348469146e-02,9.688614599749463541e-03,7.318423731993893566e-03,1.005096710084701569e-02 -2.275177999999999940e+02,1.268223664155869956e+00,2.322788953115882959e-01,2.308914847992013242e-01,2.087657331042876430e-01,4.650985326326415148e+00,1.020883984583703885e+00,6.328937753857881432e-02,5.028577339103788846e-02,1.012492319601286939e-01,1.906454127565958778e+00,4.681191676620746756e-02,1.074439042090671870e-02,7.525354618975924059e-03,8.483395350420391834e-03 -2.282667999999999893e+02,1.267661805665232233e+00,2.347655156915178509e-01,2.318379794894901424e-01,2.074281322804919503e-01,4.651624956623083840e+00,1.024048498745360192e+00,6.395553522952585057e-02,4.880021930256196738e-02,1.002726261197218888e-01,1.908286658257380530e+00,4.677123228291671375e-02,9.486370097008194058e-03,7.704035827726508565e-03,9.902995257203580856e-03 -2.290743999999999971e+02,1.266635056497993350e+00,2.338821876841617464e-01,2.331492212545533405e-01,2.080751954798559789e-01,4.653742482948265646e+00,1.024699910501268185e+00,6.493364257086989277e-02,4.908468996553486119e-02,9.956996977388499204e-02,1.907565138576643005e+00,4.698741805823958284e-02,1.000776580629793300e-02,7.292333507454853980e-03,9.231372131440040985e-03 -2.298616000000000099e+02,1.267281827804505268e+00,2.330525461291226286e-01,2.319671983339632870e-01,2.096717229502936819e-01,4.654629038987255107e+00,1.021164608524156137e+00,6.476173622817260611e-02,4.992959139531150808e-02,1.009720740829354313e-01,1.906057447715769237e+00,4.584714538539137046e-02,1.069892628124165246e-02,8.026855615798529631e-03,9.081884096842553211e-03 -2.308429999999999893e+02,1.268621734012098212e+00,2.315727192222290509e-01,2.315632393981638948e-01,2.105686293229105110e-01,4.656256410818088831e+00,1.017979339796123650e+00,6.431310029193060274e-02,5.034256550201607339e-02,1.000400176804720209e-01,1.902844949724324941e+00,4.666307643211092815e-02,1.131603373212794993e-02,7.162629069705092610e-03,8.643082690291806203e-03 -2.318371999999999957e+02,1.274607707547542823e+00,2.340419943669345693e-01,2.304000569243311314e-01,2.087986983148180653e-01,4.661011300976421801e+00,1.019960350256380543e+00,6.385607676907444075e-02,4.888826441859643601e-02,1.005421068238815524e-01,1.903545417435329234e+00,4.585738042232063993e-02,9.762091964117376730e-03,7.735647347886183411e-03,1.058286044837004891e-02 -2.326802000000000135e+02,1.277149291066909775e+00,2.327243216859961050e-01,2.302672743031447256e-01,2.102363125480118944e-01,4.660318450568896154e+00,1.017650296610788541e+00,6.376529266414840413e-02,5.003405998992419002e-02,1.001120852432651476e-01,1.902535608408091772e+00,4.623945470270038327e-02,1.081304205611721692e-02,7.114469009856697057e-03,9.334345283824402317e-03 -2.335286999999999864e+02,1.275230272869802839e+00,2.356090541084935874e-01,2.298464874851327000e-01,2.094339428135305603e-01,4.663913824622434312e+00,1.018932079043662675e+00,6.279157343054424245e-02,4.951584031151082255e-02,1.009396431126869664e-01,1.903298007705506389e+00,4.558751591570384121e-02,9.755810542605956870e-03,8.191051397945882384e-03,1.077075152447405301e-02 -2.344405999999999892e+02,1.273691580419725966e+00,2.354090668691676824e-01,2.309161542918669041e-01,2.102776433139084133e-01,4.665088937338699004e+00,1.017275240226056088e+00,6.347818894761345088e-02,5.105146555522702134e-02,1.005623302865941149e-01,1.902481232426587399e+00,4.634120579707096121e-02,1.083092169825637316e-02,7.065586482696084927e-03,9.531088596577363958e-03 -2.352116000000000042e+02,1.273413853549984376e+00,2.359694252485118882e-01,2.304737194843294312e-01,2.108457195829780140e-01,4.668925666017581300e+00,1.016057641954016821e+00,6.264117261994929520e-02,5.153874276856111603e-02,1.010820495542222863e-01,1.900952565353634105e+00,4.531808844525338220e-02,1.058194711070470362e-02,7.648854587947798156e-03,9.552294459662144521e-03 -2.361557999999999993e+02,1.272605470487916612e+00,2.374248049786072678e-01,2.292283360354259725e-01,2.098351148820614132e-01,4.669446870279589490e+00,1.013190876869655810e+00,6.237936149061817925e-02,5.134354591162221260e-02,1.013650893207692083e-01,1.901693510711286672e+00,4.383214361927081915e-02,1.040095215545908808e-02,8.406279159693906544e-03,1.012074755263412534e-02 -2.369559999999999889e+02,1.273211508279312287e+00,2.378490602314205504e-01,2.285389229412955747e-01,2.098621662889362804e-01,4.670844062703821464e+00,1.010016626321908806e+00,6.314289105354070619e-02,5.097504738359448506e-02,1.006880287042407202e-01,1.898586104235289840e+00,4.419315607828644410e-02,1.044491288805567131e-02,7.342933443632751467e-03,1.059637772953479773e-02 -2.377701999999999884e+02,1.275095744213340598e+00,2.383843069872420561e-01,2.275511460023371679e-01,2.101542479775475036e-01,4.672944193081590925e+00,1.008471312469879866e+00,6.257552446914407818e-02,5.145576324570319549e-02,1.014042498470360404e-01,1.897416997369770542e+00,4.365034476896587079e-02,1.074391926214976478e-02,7.510242306189303385e-03,1.066320711694228318e-02 -2.386604000000000099e+02,1.278080544508667593e+00,2.370771265865874167e-01,2.287645026044145824e-01,2.115498991568018072e-01,4.677779968196404070e+00,1.005778680625138310e+00,6.208029410595970743e-02,5.308402116251438596e-02,1.014343110142911369e-01,1.894012893298779643e+00,4.415924166568777065e-02,1.202726659218413680e-02,6.794810417254409929e-03,9.498017232533104842e-03 -2.394583000000000084e+02,1.282607882967861990e+00,2.387166494607617651e-01,2.277072030293270932e-01,2.101083006153468824e-01,4.676745842342461934e+00,1.004944973729892777e+00,6.166318884552934865e-02,5.230698843771172668e-02,1.017968129320986487e-01,1.895719217278915458e+00,4.322041407517207556e-02,1.077493191405795234e-02,7.181780843521515245e-03,1.121506332053161942e-02 -2.404133999999999958e+02,1.282233039206802871e+00,2.370365300114520846e-01,2.271617207254892079e-01,2.116974783226773238e-01,4.674896644364083365e+00,9.994786403351572091e-01,6.150822203310621350e-02,5.392206431907657638e-02,1.014353741767928530e-01,1.895315906949665452e+00,4.401249472860414846e-02,1.179321478255288339e-02,5.967359816402742489e-03,1.038946916367317064e-02 -2.414088999999999885e+02,1.281861509687263201e+00,2.388467085080212549e-01,2.259127959694589294e-01,2.101927539524939548e-01,4.678028252613231963e+00,9.957917303462739955e-01,6.103101588795731280e-02,5.412005916635398428e-02,1.021207192139274855e-01,1.896015684120179401e+00,4.281602196279943318e-02,1.122747630604346326e-02,6.931596077163641734e-03,1.118033065868855903e-02 -2.423293999999999926e+02,1.282775283441463632e+00,2.380798154892097007e-01,2.253840415014541354e-01,2.102401247041437160e-01,4.676300843114581163e+00,9.931711598986607825e-01,6.171109427437706380e-02,5.490463480836069166e-02,1.010832914853271591e-01,1.896195021953007265e+00,4.424267204725935987e-02,1.139049705292763393e-02,4.933604425638282720e-03,1.071592801175998838e-02 -2.432108000000000061e+02,1.282517223658476979e+00,2.380626495361536366e-01,2.236006918530648035e-01,2.115909347786385508e-01,4.677654273109718375e+00,9.889806490698787034e-01,6.047717456822689075e-02,5.600517641020830856e-02,1.024036061924343544e-01,1.893991993924843076e+00,4.142239620916221554e-02,1.244457435392673852e-02,6.712253912265733063e-03,1.037384317761552710e-02 -2.439204000000000008e+02,1.279424517251209092e+00,2.368633387277359614e-01,2.246776384314806418e-01,2.126722153147362904e-01,4.677268662580685188e+00,9.840323946400471034e-01,6.238329678469364814e-02,5.562208208308803969e-02,1.006986206773453768e-01,1.892896774199835930e+00,4.293784861069954717e-02,1.267163380850256857e-02,4.722895671107035787e-03,1.032384278891412821e-02 -2.448163999999999874e+02,1.271723383134599317e+00,2.376076980083353107e-01,2.237590742229405572e-01,2.124298745301782254e-01,4.679762229680774155e+00,9.799563815865024452e-01,6.154225585758935080e-02,5.619495109672630051e-02,1.026977447444046843e-01,1.895335971953455712e+00,4.117784235559221462e-02,1.275840708997766360e-02,6.208553582966999662e-03,1.076660823172165271e-02 -2.456833000000000027e+02,1.265694329853545241e+00,2.376569652556582146e-01,2.249442875988989787e-01,2.113886594377051842e-01,4.680650150461750592e+00,9.788564198174711795e-01,6.293527515501889935e-02,5.522292345274203151e-02,1.019256411409626556e-01,1.895828683685638616e+00,4.283191809682022899e-02,1.222479946042728804e-02,4.821286809503472215e-03,1.201836276188888997e-02 -2.468301999999999907e+02,1.265502477562376216e+00,2.357017725946361497e-01,2.242293213943077623e-01,2.128290534182142313e-01,4.683940098823061504e+00,9.745946806172089971e-01,6.103198584074712163e-02,5.688711555297210065e-02,1.022371315304410749e-01,1.893829758722463508e+00,4.183745918672256148e-02,1.280072256392422725e-02,5.534655488570645182e-03,1.179763315446713534e-02 -2.476612000000000080e+02,1.272433603733002849e+00,2.379494032100411827e-01,2.240597943198311404e-01,2.102600222098807425e-01,4.684489475485039911e+00,9.716034313009591639e-01,6.145414897053194658e-02,5.544086977627987745e-02,1.001531528523953163e-01,1.893884265439334191e+00,4.319458397094695645e-02,1.117412608992021661e-02,4.617686200445295097e-03,1.312937944407132490e-02 -2.484587999999999965e+02,1.271529979285904055e+00,2.376266327796811573e-01,2.237614111982128284e-01,2.107493009955742902e-01,4.685079879407552106e+00,9.671435265359732414e-01,6.061924156096618055e-02,5.738533213321068971e-02,1.007285441054760616e-01,1.887865285845858443e+00,4.241482981210109582e-02,1.234832985879093931e-02,5.694790178505604317e-03,1.200192761374948430e-02 -2.493426000000000045e+02,1.269651993641702559e+00,2.401595206036144514e-01,2.245159005648189043e-01,2.086876274299999945e-01,4.684114201055492366e+00,9.653873806048677286e-01,6.175943457834669192e-02,5.582506713500515194e-02,9.955975552330678657e-02,1.889422320482442963e+00,4.346125014888001237e-02,1.086201450331478711e-02,5.692861349108464808e-03,1.317827212603785159e-02 -2.502633999999999901e+02,1.258326677372042068e+00,2.396916590082961984e-01,2.250377427474352376e-01,2.110618740705449137e-01,4.686686148266375973e+00,9.591016316967246880e-01,6.141472757732463483e-02,5.734629701543996622e-02,1.006798969627479140e-01,1.885873499364242978e+00,4.261267527503143082e-02,1.239218432036341688e-02,5.974448274344679177e-03,1.153108468922314084e-02 -2.511202000000000112e+02,1.255504816006909774e+00,2.424997336981501439e-01,2.241788742798348777e-01,2.107102222933056046e-01,4.681988289157335004e+00,9.570137976967069138e-01,6.213993895021485692e-02,5.540420634956193247e-02,1.009639873815504352e-01,1.887022145159662490e+00,4.299026311015999302e-02,1.141546900873288001e-02,6.233600269652091186e-03,1.276781656555703304e-02 -2.519338999999999942e+02,1.253032068177675873e+00,2.415884007238285336e-01,2.249731286738750335e-01,2.136204214472183227e-01,4.685973208159229131e+00,9.508220492868756368e-01,6.221146873597215715e-02,5.667435568241210170e-02,1.010072454219099192e-01,1.882831834649020486e+00,4.350051361701793434e-02,1.281944861328847274e-02,5.842447722602978066e-03,1.159252725686844843e-02 -2.529918999999999869e+02,1.254310499572263815e+00,2.442523161586248881e-01,2.240438677205187912e-01,2.109870481976074130e-01,4.689417009318727736e+00,9.464931227538864178e-01,6.209405806027527841e-02,5.493788344583280803e-02,1.016755794043560368e-01,1.878766901889513452e+00,4.338461423387604543e-02,1.157585835021376214e-02,6.843376203028814220e-03,1.324277402192387820e-02 -2.538806999999999903e+02,1.251858497669119163e+00,2.437966883301918575e-01,2.255672004708181022e-01,2.129342524426981464e-01,4.690974272953625679e+00,9.415213360410381593e-01,6.181897140929439038e-02,5.693937475526879288e-02,1.011179944297680156e-01,1.874778588714309357e+00,4.446511642177937429e-02,1.276272971448864924e-02,5.944032952461292263e-03,1.220270511683922351e-02 -2.547883999999999958e+02,1.246828346602051329e+00,2.468818521373499775e-01,2.249092673630574968e-01,2.108332265880253353e-01,4.691452897800254540e+00,9.366173525524637000e-01,6.134878292710094216e-02,5.541750507031655004e-02,1.020445890534176780e-01,1.875183071902503551e+00,4.329388728825864230e-02,1.120507442186255420e-02,8.021350132922617365e-03,1.432748911490497323e-02 -2.555579999999999927e+02,1.244032335887856444e+00,2.459438837162904457e-01,2.261753309048023519e-01,2.122447169413176626e-01,4.690556311672254175e+00,9.323968687736854388e-01,6.182115487141207066e-02,5.692291122417385274e-02,1.006901955907713864e-01,1.874102506164826432e+00,4.451173559854638972e-02,1.214854725871725161e-02,6.601019422417780946e-03,1.282611504612003218e-02 -2.565149999999999864e+02,1.240965048695003681e+00,2.483803772736574988e-01,2.254024009008119833e-01,2.100566210659345900e-01,4.687843267090985755e+00,9.297591743285744670e-01,6.133974451703377850e-02,5.643542739663412466e-02,1.014589694844223872e-01,1.873527773546673547e+00,4.284315874177352379e-02,1.112932320623095592e-02,8.134684359706344237e-03,1.396702442329570554e-02 -2.573104000000000156e+02,1.244477781068644262e+00,2.476974100323625083e-01,2.259642178492806130e-01,2.116707427200072433e-01,4.685643719376985317e+00,9.240368139523500446e-01,6.277360193303642422e-02,5.759982924517354635e-02,1.001640169824376120e-01,1.872147504334920276e+00,4.404738811006100874e-02,1.224800939777248576e-02,6.546084504336815990e-03,1.268893931798305286e-02 -2.581977999999999724e+02,1.245846623434357703e+00,2.492836847681092483e-01,2.233895877888210646e-01,2.109402795340359626e-01,4.689431423893905659e+00,9.211104060258341608e-01,6.186022929088177968e-02,5.674023866340197064e-02,1.010200345968627345e-01,1.871336259403326041e+00,4.221454628780732521e-02,1.228520652375923727e-02,8.106599621088866892e-03,1.324356950127966726e-02 -2.590298000000000229e+02,1.247195066457103652e+00,2.484056186061826821e-01,2.244060875236486563e-01,2.116197589139173496e-01,4.689563581269974968e+00,9.162002362171084435e-01,6.388123598441768081e-02,5.682168662881759841e-02,1.000916654352855401e-01,1.870720961966644058e+00,4.280977202928490377e-02,1.272626968104577372e-02,6.284772763318957622e-03,1.267195580711620237e-02 -2.600948999999999955e+02,1.243385195307889157e+00,2.490423065407063596e-01,2.232602703637975861e-01,2.115411683815204835e-01,4.691672180362169264e+00,9.131020862638505875e-01,6.246914278661820641e-02,5.642429394451010938e-02,1.019703885827573514e-01,1.869646626309276805e+00,4.055597024521204186e-02,1.293221331541370700e-02,7.943570933124768918e-03,1.321321313845631729e-02 -2.609624999999999773e+02,1.242656390122856447e+00,2.474593530478155223e-01,2.248465397351197825e-01,2.121670779109571803e-01,4.693296369775286969e+00,9.084699138791754169e-01,6.414281688864298392e-02,5.649441341362788915e-02,1.005081219507682339e-01,1.869170184145812819e+00,4.269944405140477239e-02,1.259226608116243568e-02,5.615082249211353349e-03,1.358214471825022404e-02 -2.618097999999999956e+02,1.244867891093313528e+00,2.475622896416458663e-01,2.226087806740510988e-01,2.115128876163425709e-01,4.695752687177403573e+00,9.031050478527120617e-01,6.147503174218578448e-02,5.648003649950052857e-02,1.016159290589045971e-01,1.865784154033510722e+00,4.098931444577685879e-02,1.242730704417099874e-02,7.538112152723396020e-03,1.392602212736310241e-02 -2.627776000000000067e+02,1.251899860365588424e+00,2.474265785084721891e-01,2.245322966251019348e-01,2.105757575021441341e-01,4.694819047181778338e+00,8.988661201591718886e-01,6.301314242898917173e-02,5.714287908156975848e-02,9.923464911648993692e-02,1.865506602422215998e+00,4.288137134832119279e-02,1.184074935836377379e-02,5.785206509584486789e-03,1.420348552725518576e-02 -2.636725999999999885e+02,1.252109547030669567e+00,2.474546700820405842e-01,2.223162743630163751e-01,2.097926799395250508e-01,4.696829289818309938e+00,8.936749692475358664e-01,6.201745674948641596e-02,5.833580488269547726e-02,9.990696657751693688e-02,1.861005577192639260e+00,4.108288242332182316e-02,1.229310432870241859e-02,7.758310794158368440e-03,1.362943859859262058e-02 -2.645776000000000181e+02,1.249699370261918130e+00,2.472197812798649641e-01,2.226187053760298740e-01,2.084333174354785490e-01,4.696167333893468410e+00,8.891684118299671979e-01,6.348782598863529636e-02,5.753369292287267844e-02,9.798183131753979147e-02,1.856907441953776550e+00,4.202134163555260732e-02,1.138270551330880162e-02,6.570356766518393316e-03,1.384810659827515056e-02 -2.655095000000000027e+02,1.254086772497338798e+00,2.468960828119342310e-01,2.216009382257769222e-01,2.092246149934573751e-01,4.696245072581156421e+00,8.835442726538973446e-01,6.258204129475200550e-02,5.873036400439005100e-02,9.957019861271887429e-02,1.852313234496518080e+00,4.002758276652568226e-02,1.267362420440643761e-02,8.348056743269938185e-03,1.274864549675273039e-02 -2.664495999999999754e+02,1.252087891300461830e+00,2.475812639734602805e-01,2.211499702994585703e-01,2.081536803329581686e-01,4.696513741682621479e+00,8.774096334201368919e-01,6.395223479692897783e-02,5.622060668837414177e-02,9.853291237135668179e-02,1.850970978413932544e+00,4.092872339048731628e-02,1.150784599996093616e-02,7.068073164419281379e-03,1.407187399444212450e-02 -2.674519999999999982e+02,1.260914412737585089e+00,2.469750819012571097e-01,2.200876831652019971e-01,2.079193978863126957e-01,4.698362461778356369e+00,8.711731690273178952e-01,6.240559057001618393e-02,5.779568564838286071e-02,9.966423564421661441e-02,1.843330241338061004e+00,3.944026733042449440e-02,1.326358003559646725e-02,7.974748975418860519e-03,1.259698492759512428e-02 -2.683736999999999853e+02,1.260885317496003966e+00,2.477213085249574953e-01,2.206644646686638511e-01,2.053200153919916282e-01,4.700777651876013152e+00,8.647877230007492422e-01,6.252791012115763158e-02,5.598509265946841063e-02,9.934626884753741671e-02,1.840785683842863563e+00,4.102358022451148278e-02,1.194955524083173189e-02,6.843659730695060214e-03,1.437274593991039011e-02 -2.692973000000000070e+02,1.262893002840161705e+00,2.464556071309121910e-01,2.208059716440786135e-01,2.055084364363777838e-01,4.701197335652703480e+00,8.593236610838115297e-01,6.217188008662474785e-02,5.707521881123439611e-02,1.000152160660525702e-01,1.836601175711336076e+00,4.062910051591911431e-02,1.247853068492027484e-02,7.314165538195652183e-03,1.386357816997456360e-02 -2.701958999999999946e+02,1.262531728006032417e+00,2.468017989455563166e-01,2.199464803160521287e-01,2.048657601031456110e-01,4.703061015921170096e+00,8.552231360428987905e-01,6.157619883068037037e-02,5.788818217409474887e-02,1.003429817241391075e-01,1.832510797302677963e+00,3.987773384289953343e-02,1.286004612873274666e-02,8.401877722426495665e-03,1.366434206902870929e-02 -2.710828999999999951e+02,1.263467866985855004e+00,2.466020343710443041e-01,2.207380678459162360e-01,2.047188829455181269e-01,4.701673839746342232e+00,8.476555486461920808e-01,6.173423397521211886e-02,5.911721744102671483e-02,1.002820402440076364e-01,1.827241548817231109e+00,4.019095378121885498e-02,1.309418363715279809e-02,8.272919009752938146e-03,1.307720131292868654e-02 -2.718962999999999965e+02,1.265569995894356703e+00,2.493090668399959853e-01,2.202508504489331109e-01,2.021416925452893254e-01,4.698184897393469228e+00,8.451424655389967455e-01,6.063810242965249342e-02,5.681251636445935199e-02,1.001659780221808849e-01,1.827678031491942523e+00,3.964844555293245421e-02,1.116427833584106473e-02,9.265535346690681462e-03,1.456387030230184981e-02 -2.728521000000000072e+02,1.269358217711161529e+00,2.476509960022766355e-01,2.204142265259610156e-01,2.044126369771036567e-01,4.695847993354603567e+00,8.376347677109829970e-01,6.194141062637303907e-02,5.944723202640977977e-02,9.891887544299547697e-02,1.825443912433671656e+00,3.961980609106358076e-02,1.315629001887105853e-02,9.120104734913980771e-03,1.269907930090539983e-02 -2.736755999999999744e+02,1.275116365013132080e+00,2.516223563144780462e-01,2.201439323501417356e-01,2.020714110756527404e-01,4.695257950319848383e+00,8.354758324312652196e-01,6.106092657987251260e-02,5.707752278954269370e-02,1.000043465073943150e-01,1.824058779668629837e+00,3.874898851334639127e-02,1.161182092464724779e-02,9.796162687485870935e-03,1.383433641664375338e-02 -2.745448000000000093e+02,1.273292061884233828e+00,2.504865641114245589e-01,2.216772279839968329e-01,2.041055503654233272e-01,4.696845645162897043e+00,8.294690191066362850e-01,6.263249715034516218e-02,5.942433436634300681e-02,9.957703782675252080e-02,1.820399480771340395e+00,3.918343047627004250e-02,1.388114132076277707e-02,8.712247807749862877e-03,1.232124210732143954e-02 -2.754580000000000268e+02,1.278685517654631898e+00,2.515351756282955820e-01,2.194281235357577464e-01,2.023820012652805811e-01,4.698111158487455974e+00,8.282937358779611792e-01,6.075359798244321652e-02,5.742746608578418177e-02,1.009584440290797330e-01,1.817840986552456073e+00,3.766919973134497113e-02,1.267628490916208536e-02,9.612574135389337360e-03,1.337564210020273509e-02 -2.762499000000000251e+02,1.280294381154313932e+00,2.503160558648080958e-01,2.201915666931727467e-01,2.029054745317056541e-01,4.694669767003611938e+00,8.234461232346514947e-01,6.174611329573714835e-02,5.894735329864810025e-02,1.000360455880815735e-01,1.815814639926121687e+00,3.877698830781212136e-02,1.349547400140755499e-02,8.697601074867333804e-03,1.294814405572694560e-02 -2.771567999999999756e+02,1.281627120612643278e+00,2.509253063080923996e-01,2.193412744772798018e-01,2.027149173520684522e-01,4.694660204990316110e+00,8.204165020653465534e-01,6.015513922394705171e-02,5.784915189219047571e-02,1.008486057177441775e-01,1.814084504280457200e+00,3.843931179186131641e-02,1.255697303893808098e-02,8.587232924622906216e-03,1.369947981309312807e-02 -2.781764000000000010e+02,1.280138915610988803e+00,2.516104884710906320e-01,2.210551237341353559e-01,2.028764862747443609e-01,4.693277196254568295e+00,8.155922983336242327e-01,6.115912953601403135e-02,5.929573963705725426e-02,9.948095694756878271e-02,1.814873822358342492e+00,4.010865412981273748e-02,1.282000902139652024e-02,7.514888823676429963e-03,1.360788914985590348e-02 -2.790921999999999912e+02,1.284540765008040264e+00,2.526084050148451055e-01,2.193131715969289242e-01,2.025452155726227277e-01,4.693197237552884538e+00,8.136436698723364946e-01,5.933869147355942675e-02,5.943166109720778023e-02,1.009570905310169103e-01,1.814048671663023748e+00,3.872187923743035387e-02,1.258728222481272918e-02,9.461347252270151109e-03,1.352542957059542188e-02 -2.800504000000000246e+02,1.281580644444580752e+00,2.522265430600534319e-01,2.208941609279727047e-01,2.042884850661446094e-01,4.689916562612467033e+00,8.086235348165179415e-01,6.234288183529351768e-02,5.990568147808593424e-02,9.925951458552667583e-02,1.813173043768286696e+00,4.085519390034611509e-02,1.229309733347548964e-02,7.608346108591200474e-03,1.377759366327790252e-02 -2.810536000000000172e+02,1.282634625359950986e+00,2.538715323463150431e-01,2.184884720347245179e-01,2.047830630572730626e-01,4.687390269368071571e+00,8.048702701189569542e-01,6.167064082459065844e-02,5.989763810823851842e-02,1.015015031801095313e-01,1.810027645254019379e+00,3.869418906264042446e-02,1.304092910049521603e-02,9.205852945591938563e-03,1.285478291411853644e-02 -2.820822000000000003e+02,1.283849113474697212e+00,2.541364216292948952e-01,2.192935379767031456e-01,2.045897282485107938e-01,4.682374242776830897e+00,8.020670706497978752e-01,6.335031335483690129e-02,5.931071423427988765e-02,1.002763580069704064e-01,1.809594564752991186e+00,3.987310663972229441e-02,1.240245219567862045e-02,7.421711375385900422e-03,1.372719034884502601e-02 -2.831265999999999963e+02,1.290854361002227169e+00,2.529503217850656016e-01,2.172440910940032499e-01,2.058014787781098087e-01,4.683741757741158196e+00,7.960144450112061065e-01,6.224698101420396423e-02,5.926012995557000673e-02,1.023226766528115839e-01,1.807078996268227655e+00,3.866066954419813961e-02,1.396757686902808625e-02,8.544671049323507295e-03,1.292314769395565277e-02 -2.839531999999999812e+02,1.291161637159993880e+00,2.537584415386660019e-01,2.200774489097041264e-01,2.039112766431332713e-01,4.684659088818433403e+00,7.935759013991079414e-01,6.374002374452289454e-02,5.781557308785769539e-02,1.011247145532771785e-01,1.806234917707747245e+00,4.024110067608362151e-02,1.252441963773563705e-02,7.276568251051288017e-03,1.490501968296539803e-02 -2.847089000000000283e+02,1.298926557996856523e+00,2.520465593463845355e-01,2.181098321938834128e-01,2.061363777552213394e-01,4.686813640939693215e+00,7.886362823516475107e-01,6.265767945880876266e-02,6.020649040110475497e-02,1.020922277416344143e-01,1.800393637432656790e+00,3.947486924704666361e-02,1.420125778345907031e-02,8.338880692549101303e-03,1.344475728979270535e-02 -2.855860999999999876e+02,1.299263482970697048e+00,2.551969211381730496e-01,2.188131166674563977e-01,2.030940669723663716e-01,4.685532160101288923e+00,7.831486634425146587e-01,6.357763371181759937e-02,5.855462231291144737e-02,1.012757516595440138e-01,1.801055546922769146e+00,4.049648097570714145e-02,1.222339449179003779e-02,7.391893360407408853e-03,1.519174966608182603e-02 -2.864911999999999921e+02,1.302245308172787164e+00,2.526952804808566544e-01,2.166026910418611395e-01,2.045597978456844268e-01,4.681841117351154047e+00,7.763220090765734493e-01,6.290617531411785146e-02,6.059047178248857385e-02,1.007461255810073175e-01,1.798743986661633487e+00,4.023121644760375981e-02,1.422447324621118996e-02,8.291494217199379957e-03,1.338128025882287520e-02 -2.874828999999999724e+02,1.304648592125539075e+00,2.554195403967082223e-01,2.163029806288562229e-01,2.021311233645000927e-01,4.675624527579141265e+00,7.736564101159342233e-01,6.316085824256838233e-02,5.883507786315334692e-02,1.003927272461922204e-01,1.798136707033955783e+00,3.966969965833075373e-02,1.219299980684417084e-02,8.479383271625354213e-03,1.530762510357778008e-02 -2.882311000000000263e+02,1.309790826668310260e+00,2.536292385567378016e-01,2.168638923278867203e-01,2.032802876295574102e-01,4.672381587545387127e+00,7.680502478206561179e-01,6.375193467697770622e-02,6.070065348173876024e-02,1.003550588301596325e-01,1.793698502934954586e+00,4.005551546430746734e-02,1.468183936327424610e-02,8.350996674392582864e-03,1.333632563966583029e-02 -2.892178000000000111e+02,1.312438881197652618e+00,2.568026870519560245e-01,2.166897028234073541e-01,2.010036473926924971e-01,4.671138537517019351e+00,7.650785797218548900e-01,6.305533589951219098e-02,5.900009026003972396e-02,1.021152288974870731e-01,1.794055870734522662e+00,3.858139947189703767e-02,1.313148116499926465e-02,9.434557568817288076e-03,1.514085820536396204e-02 -2.901657999999999902e+02,1.317531319981665394e+00,2.541290379531662147e-01,2.172558061154166442e-01,2.024412422268312972e-01,4.671182524471061193e+00,7.574906406368144829e-01,6.432652268847371957e-02,6.054702763417042777e-02,1.002700631218846894e-01,1.790104721060053361e+00,3.922798798547089127e-02,1.559853043508277470e-02,8.202429084904400147e-03,1.310880885997632583e-02 -2.910375000000000227e+02,1.323362155790422712e+00,2.556701313888344873e-01,2.152805854751401182e-01,2.000434633336459211e-01,4.670979839259270960e+00,7.546289145297557788e-01,6.283628027052003129e-02,5.906326447973922478e-02,1.016745353153437614e-01,1.786586453793379103e+00,3.742437511955881702e-02,1.378705145279994666e-02,9.401921101370502853e-03,1.506638934659549484e-02 -2.919691000000000258e+02,1.323499877255382318e+00,2.538991772612921305e-01,2.154227656254959489e-01,2.012426005917230254e-01,4.666169708043788944e+00,7.461227788441964215e-01,6.363055794422461942e-02,6.094945979768696953e-02,9.961377119819433967e-02,1.779654603130710333e+00,3.848602916249652117e-02,1.560788679801761170e-02,8.051580270782246473e-03,1.311718354970030365e-02 -2.929433000000000220e+02,1.329537226662675042e+00,2.568340911564906959e-01,2.130412282043867844e-01,1.990982523297918083e-01,4.668704928435134072e+00,7.417804473176394797e-01,6.116143958383912782e-02,5.984603447645651941e-02,1.008710595157241707e-01,1.777408495401311406e+00,3.675802619252401676e-02,1.398211459246208321e-02,9.935606350309239554e-03,1.449453074214716863e-02 -2.939254000000000246e+02,1.337699818898994142e+00,2.560477719928568874e-01,2.140454725543766146e-01,1.996602585450205636e-01,4.663592488819989335e+00,7.367246488701646445e-01,6.206701349857562944e-02,6.138759128340838533e-02,9.775948372850629120e-02,1.774488023717696317e+00,3.841490672838238085e-02,1.434787765172268817e-02,8.516043656683170565e-03,1.330297979656516749e-02 -2.948799000000000206e+02,1.341990897707213692e+00,2.590100280792263510e-01,2.110413825600513382e-01,1.993922422010381834e-01,4.662014767032000684e+00,7.303179189627775347e-01,5.989984115903562722e-02,6.164383224955219398e-02,9.898565066170164628e-02,1.773313613168184588e+00,3.692250703294237824e-02,1.344356864421697439e-02,1.083341507486078326e-02,1.366391447731762909e-02 -2.958509999999999991e+02,1.340285481867919515e+00,2.591700191706317602e-01,2.121453826334104842e-01,1.998406477673055626e-01,4.662710732242447698e+00,7.234905788075545185e-01,6.214942960843861108e-02,6.214861860302794971e-02,9.564322794269056183e-02,1.770292677095372191e+00,3.936509492501000934e-02,1.353933786849522911e-02,8.441980646500542307e-03,1.351235501727113264e-02 -2.966700000000000159e+02,1.342671246370042093e+00,2.602301529490493870e-01,2.090740549987201158e-01,2.004439745785072113e-01,4.661520337108568945e+00,7.178560320133009487e-01,5.985534743520828926e-02,6.237693989288723567e-02,9.806778287705703034e-02,1.766461665636848810e+00,3.676890378201379261e-02,1.340886443946798234e-02,1.050088123045668509e-02,1.323379504584458466e-02 -2.977160999999999831e+02,1.338548656076456123e+00,2.607327382260110071e-01,2.104571192663116097e-01,2.005910680082512998e-01,4.661941300689179890e+00,7.098532634406593544e-01,6.262176636014923914e-02,6.149407596791322400e-02,9.614068114868365433e-02,1.764821456206651540e+00,3.926898465144260109e-02,1.381103176235723082e-02,7.868312439544944414e-03,1.330161615426245919e-02 -2.986899999999999977e+02,1.342872001042441310e+00,2.595282811032693648e-01,2.082962755323365944e-01,2.021036852400238670e-01,4.659748656772626063e+00,7.046251237008194224e-01,6.081176923489001185e-02,6.203542233889425273e-02,9.826541446665480739e-02,1.756742165373150311e+00,3.736684641412368890e-02,1.433946039015886187e-02,9.195622226402244692e-03,1.359972580240764728e-02 -2.995040999999999940e+02,1.342117445963382893e+00,2.595562679975509934e-01,2.096672660205504135e-01,2.009370317203153233e-01,4.661034735711908183e+00,7.006985610270692888e-01,6.256714242717961727e-02,6.119756938359870863e-02,9.699230396217026207e-02,1.754084742167607125e+00,3.875097504888608269e-02,1.369056119629389473e-02,7.592414749880482816e-03,1.487769263746256676e-02 -3.003965000000000032e+02,1.345125114225765195e+00,2.586070864355834442e-01,2.080841991861552831e-01,2.017451165910864874e-01,4.663295388664115748e+00,6.937613825325796846e-01,6.173512189754526425e-02,6.237672940155621071e-02,9.840356167268310417e-02,1.750498237884492436e+00,3.782458267353903947e-02,1.454871776696860242e-02,8.729650773792400203e-03,1.360305276896761617e-02 -3.014012999999999920e+02,1.340543173501215213e+00,2.614936144821969899e-01,2.087111396574295452e-01,1.999997767315906116e-01,4.663354882165531734e+00,6.888243660563939663e-01,6.340789521304340814e-02,6.124109775343498929e-02,9.654662363262264679e-02,1.751112344843251956e+00,3.867594048180135469e-02,1.275134098297977213e-02,8.194025522670136952e-03,1.558444397807369486e-02 -3.022624999999999886e+02,1.337194103597109329e+00,2.604427164795136695e-01,2.076578792233878812e-01,2.023844133179948934e-01,4.664731860488624982e+00,6.840648731848724129e-01,6.314207038284541662e-02,6.285033607466528061e-02,9.696758411435771330e-02,1.746657994887684806e+00,3.800358487320311396e-02,1.453023099223768946e-02,8.683423278448246241e-03,1.358372711022390322e-02 -3.031761999999999944e+02,1.333165170797002919e+00,2.634848987244591267e-01,2.083992881898572846e-01,1.997833500398788487e-01,4.665312915725719378e+00,6.819038052705004294e-01,6.404611524689324265e-02,6.134970560716229704e-02,9.571179727462156284e-02,1.750266824007915334e+00,3.869487489898548738e-02,1.245825663572316944e-02,8.156076644026066802e-03,1.534964270636006954e-02 -3.041567000000000007e+02,1.331038407622654018e+00,2.614621257950321409e-01,2.078699258613472822e-01,2.017090170549237504e-01,4.661568777594748525e+00,6.749448072854340452e-01,6.385195032669471749e-02,6.283702461161529140e-02,9.661596025774027430e-02,1.749720650122765564e+00,3.853421447627437824e-02,1.487747094283914384e-02,8.029923634354991721e-03,1.301406249699242623e-02 -3.048878000000000270e+02,1.336183655977034146e+00,2.641150691173110854e-01,2.078213360775511276e-01,1.985243930442517346e-01,4.663263352850001375e+00,6.764257987156468976e-01,6.459050100309574050e-02,6.096716613027228227e-02,9.724334755174621203e-02,1.749723204200333448e+00,3.832681594062484903e-02,1.344043800199462568e-02,8.202683101504973373e-03,1.502557592479903531e-02 -3.058299999999999841e+02,1.337593712682964675e+00,2.634705621645375140e-01,2.094320371929012659e-01,1.997325734354654103e-01,4.659916736835066686e+00,6.716414923859156394e-01,6.552064458591039253e-02,6.297666774046208060e-02,9.711553951653836836e-02,1.746730892321484596e+00,3.866839494176552150e-02,1.514517697122846895e-02,7.285779315727557853e-03,1.334397210391428251e-02 -3.068915999999999826e+02,1.340354362090268037e+00,2.640452412075888766e-01,2.091800771230168388e-01,1.973943083887245709e-01,4.663314894984830872e+00,6.696201041005677146e-01,6.460477405449104038e-02,6.161541046497624047e-02,9.895301107355460035e-02,1.748628861467710793e+00,3.866070905500661875e-02,1.415233769319021451e-02,8.395705159746316704e-03,1.480330318007827550e-02 -3.077955000000000041e+02,1.338237986386499934e+00,2.620493056293738965e-01,2.107786285516851099e-01,1.988781772261044023e-01,4.661723057118434710e+00,6.632078283186367829e-01,6.591003040583669204e-02,6.296726134694924371e-02,9.751594467833288316e-02,1.745068390059803631e+00,3.943375501427603957e-02,1.540560917604030453e-02,6.948994088240262323e-03,1.349282542254837125e-02 -3.085778000000000247e+02,1.341389774535354462e+00,2.632162349572014781e-01,2.089798950169838299e-01,1.972246800199893291e-01,4.658347572923376312e+00,6.618913449095261692e-01,6.415948736777521422e-02,6.182732940963803214e-02,9.916064369490659725e-02,1.744771974202756981e+00,3.771027254475606966e-02,1.411714252793386248e-02,9.207746870755664781e-03,1.405342763071540380e-02 -3.094676999999999794e+02,1.334918213628314421e+00,2.610439758993469694e-01,2.103658699993606607e-01,1.980488372602065839e-01,4.654889514886376922e+00,6.586958821835693367e-01,6.604127558283748312e-02,6.343989880994124753e-02,9.693818136021227494e-02,1.741692328219966779e+00,3.948262565452545503e-02,1.516733320810692565e-02,7.379253108428546204e-03,1.269570305257619602e-02 -3.103706000000000245e+02,1.331276160649359053e+00,2.627174281897850516e-01,2.079889308343253473e-01,1.966904460608655536e-01,4.653667960394369807e+00,6.562807916187087809e-01,6.364972528985335387e-02,6.295251747261870756e-02,9.836493901333048795e-02,1.741079054654731673e+00,3.721532790243277378e-02,1.459378538884635590e-02,9.832722089269982368e-03,1.266125762358677465e-02 -3.113269000000000233e+02,1.328554483260149022e+00,2.626060644694987456e-01,2.100809707930281767e-01,1.959455326082901738e-01,4.649546242009948926e+00,6.520422121273565796e-01,6.508547041193155080e-02,6.341478624643095974e-02,9.734036593366594825e-02,1.739921202741934181e+00,3.893964279767886394e-02,1.476440016019949647e-02,8.104504724985212710e-03,1.213341653993235680e-02 -3.123410000000000082e+02,1.330170967480790001e+00,2.639336837097768229e-01,2.080059642998970393e-01,1.964738034554491530e-01,4.647367472262397214e+00,6.460830368663883494e-01,6.310839257768266486e-02,6.320403650964695474e-02,9.946976365006227061e-02,1.737534938874992774e+00,3.715316554535608856e-02,1.456320623437615952e-02,9.955881284080807248e-03,1.164937631458795586e-02 -3.133750999999999749e+02,1.331791349086477450e+00,2.625670359705926660e-01,2.095583843313033046e-01,1.961459987111364156e-01,4.647333493065567644e+00,6.422464348606116147e-01,6.432886615856703294e-02,6.293644365832783139e-02,9.745545264112076556e-02,1.736258190379376565e+00,3.926253603027853034e-02,1.356904760947751087e-02,7.629975253120466205e-03,1.285379655768823653e-02 -3.142318000000000211e+02,1.334678588896742291e+00,2.623625369255370154e-01,2.065395947279453082e-01,1.973071557352145955e-01,4.647926288995129163e+00,6.382227595826657218e-01,6.182207078577339754e-02,6.394263372145383983e-02,9.991087923746652666e-02,1.735258787721619012e+00,3.789207707592491536e-02,1.417785068426885564e-02,9.567584884343754981e-03,1.177295005716132159e-02 -3.152427000000000135e+02,1.340514955827168286e+00,2.637506987040695861e-01,2.072055122779076775e-01,1.967059247649549647e-01,4.646719216795243135e+00,6.350729508227423992e-01,6.365741255982665381e-02,6.295937165624289344e-02,9.781382140837824313e-02,1.733719634696659462e+00,4.005846137412896052e-02,1.240463542886183212e-02,7.756296294874096692e-03,1.307469719616744658e-02 -3.160944999999999823e+02,1.340358054784434927e+00,2.625860424429432571e-01,2.040945296559861788e-01,1.990676016069574672e-01,4.645831462111612353e+00,6.283126156908751536e-01,6.219501678678666934e-02,6.468271721154172926e-02,1.003462236205682062e-01,1.727676591787371763e+00,3.795843966099127914e-02,1.366396295181954157e-02,9.933402429011570223e-03,1.158346535797032117e-02 -3.169155000000000086e+02,1.331862014887115420e+00,2.643941530596959355e-01,2.053702382710453911e-01,1.973979747560670461e-01,4.646740957038605124e+00,6.259278845376772260e-01,6.393854798053358324e-02,6.338567643360346060e-02,9.913091550499761317e-02,1.727097069978655419e+00,3.906171900720080414e-02,1.166118912921221273e-02,8.969174785518991763e-03,1.324231278660563740e-02 -3.178136999999999830e+02,1.331511584376548374e+00,2.617394844144884658e-01,2.044572311077087479e-01,1.987780267008324719e-01,4.647354881324192277e+00,6.186793418981073600e-01,6.342223234657180797e-02,6.434443287070354400e-02,9.990071526575558525e-02,1.723877515397773674e+00,3.819884983486353247e-02,1.334347381295282464e-02,9.905372741071893916e-03,1.116371885312756468e-02 -3.187273999999999887e+02,1.329914482056681280e+00,2.624314775033720903e-01,2.050363272269343506e-01,1.973696624096795138e-01,4.647736347042863869e+00,6.166312198585435222e-01,6.354701645601587567e-02,6.247519939223752927e-02,9.969471609226918107e-02,1.723136264936714346e+00,3.841362837182359102e-02,1.147420560046946703e-02,9.347695134408404161e-03,1.333328699079557034e-02 -3.196356999999999857e+02,1.319506808620287464e+00,2.609081746200536123e-01,2.035015353632548263e-01,1.989655831800538066e-01,4.648885583149649392e+00,6.121716958983529633e-01,6.376743216126529168e-02,6.438313194605604917e-02,9.880262697257488624e-02,1.716213986389983681e+00,3.825161455278662526e-02,1.359066348699291410e-02,9.180198416996070143e-03,1.176439864515806122e-02 -3.205994000000000028e+02,1.322529311623641846e+00,2.621855280143207123e-01,2.036098339603357732e-01,1.968740713033768353e-01,4.651977780648484995e+00,6.114870292299774412e-01,6.327982950755638158e-02,6.222699565285533252e-02,9.960263489817677840e-02,1.715165353518375735e+00,3.771203226261536645e-02,1.108966025243336706e-02,9.132169735527079224e-03,1.445108421844790159e-02 -3.215462999999999738e+02,1.322032327733511536e+00,2.609714211790149507e-01,2.044216984977203222e-01,1.981373665644623749e-01,4.657637462071952505e+00,6.058427552987353248e-01,6.404707278067039988e-02,6.421586437989273977e-02,9.880758515927763608e-02,1.708945872657564813e+00,3.819728467886219364e-02,1.308082867707997636e-02,8.398676508414764166e-03,1.263118502875375249e-02 -3.224295999999999935e+02,1.323029965186349299e+00,2.642253422139901331e-01,2.034375872986949607e-01,1.965452809340842433e-01,4.655709228894552965e+00,6.039279827003886103e-01,6.284170065805483318e-02,6.203835259597926394e-02,9.955157092415356512e-02,1.709266753371038616e+00,3.732711122061738857e-02,1.061780295190109524e-02,9.392699126245573904e-03,1.461346285245894439e-02 -3.232876999999999725e+02,1.325334545909712114e+00,2.623173646284446825e-01,2.036815458937064338e-01,1.974059917608762538e-01,4.655193692431800478e+00,6.023641321212056532e-01,6.477022208205700238e-02,6.351084577108413731e-02,9.836624909041116749e-02,1.704750712971533577e+00,3.857283198932193180e-02,1.177592973227899187e-02,8.200971736678858148e-03,1.330694055478186255e-02 -3.242429999999999950e+02,1.321811458875270517e+00,2.633299588329049978e-01,2.025757347775057615e-01,1.963173641173061035e-01,4.656234144617171111e+00,5.997390833533515764e-01,6.301016630852816769e-02,6.268301375106716256e-02,9.910242128383997540e-02,1.705723211552760077e+00,3.688064459262127559e-02,1.036950989040674037e-02,9.910913938460375744e-03,1.370017777628391997e-02 -3.251587999999999852e+02,1.310493021035115113e+00,2.620022274608801993e-01,2.044203738762730704e-01,1.957557737746199455e-01,4.652020081979939548e+00,5.973555553975773424e-01,6.562296970223718828e-02,6.358103365175367394e-02,9.694630900573339427e-02,1.703664586305560613e+00,3.884338529134049450e-02,1.133494285311970051e-02,8.007848316922198256e-03,1.285775901246843933e-02 -3.259728999999999814e+02,1.307895432554374349e+00,2.626401958589328900e-01,2.018749186405431328e-01,1.961469379480481612e-01,4.651960407448574308e+00,5.947427726788967473e-01,6.372976910844177501e-02,6.331882941819906574e-02,9.926036325842113595e-02,1.701948077704690476e+00,3.688926810647349952e-02,1.134737104413929831e-02,1.004901773399369258e-02,1.269834540647192880e-02 -3.269879999999999995e+02,1.298815282299202289e+00,2.627552769734929350e-01,2.032914682115092853e-01,1.953297474609405338e-01,4.647503240049290163e+00,5.913855285311012677e-01,6.672216680078413287e-02,6.317315666418667208e-02,9.659135369780932900e-02,1.698212856968891016e+00,3.959429911490319753e-02,1.167805314778930237e-02,7.339529546681572425e-03,1.245833346034611044e-02 -3.279766999999999939e+02,1.297063323541722824e+00,2.622250847346691005e-01,2.013859281744215246e-01,1.946380429251232946e-01,4.648000031497927509e+00,5.858021237080908161e-01,6.431377930080406369e-02,6.400028321675950427e-02,9.872455370743818404e-02,1.696794659842344899e+00,3.763069661208137684e-02,1.215753717698316028e-02,9.165905703828608475e-03,1.206893717677153671e-02 -3.289191000000000145e+02,1.300141947967821121e+00,2.627080524280375196e-01,2.030342662121768504e-01,1.928794773355149705e-01,4.644009561935572350e+00,5.856327168920880677e-01,6.638195088682326273e-02,6.392359542322709198e-02,9.642387963058629552e-02,1.697771206626399021e+00,4.046259805095328566e-02,1.166745519165781481e-02,7.046849654495479509e-03,1.295554773042155439e-02 -3.297810999999999808e+02,1.303684943105794414e+00,2.616855358864178527e-01,2.013437297498770762e-01,1.934274742398851277e-01,4.648199047500511050e+00,5.830475569185076257e-01,6.423213802288765817e-02,6.546918417797398249e-02,9.787551589686116493e-02,1.695747014474442427e+00,3.836493766489723622e-02,1.253392114736377044e-02,8.468614557441647706e-03,1.193108495656131085e-02 -3.307101000000000113e+02,1.302511344882829158e+00,2.632907351919531180e-01,2.021831747619508568e-01,1.932316104611387642e-01,4.649139962725127084e+00,5.796197941983221025e-01,6.593952984666279216e-02,6.478340256661185848e-02,9.582221536524444805e-02,1.696479624079530568e+00,3.950030390288308824e-02,1.124287763281832386e-02,7.279138244182494638e-03,1.371716846895182362e-02 -3.316005999999999858e+02,1.297255307949649161e+00,2.629900482060711364e-01,2.012204965573240467e-01,1.946114002841718149e-01,4.645064994573182560e+00,5.770317096838029070e-01,6.641203030617084946e-02,6.467258584981769309e-02,9.614516246697214774e-02,1.693552872833217426e+00,3.946257322879778706e-02,1.221979747634267116e-02,7.275313070244038283e-03,1.278778785618786551e-02 -3.323865999999999872e+02,1.302032204107586022e+00,2.628723044915723950e-01,2.008019719673420633e-01,1.950819439520180554e-01,4.644140446496122010e+00,5.729416595913987553e-01,6.600784970611378588e-02,6.480711522755855380e-02,9.699790325688958936e-02,1.691195210766756496e+00,3.870129109441015902e-02,1.162408398441538981e-02,7.245395028684459282e-03,1.295966952495854196e-02 -3.332748000000000275e+02,1.297621240421931832e+00,2.621853765334363762e-01,1.996107475007863341e-01,1.960380108626362250e-01,4.642098146323779595e+00,5.687832374600199081e-01,6.644852912081138097e-02,6.611812865580231346e-02,9.682021598460174849e-02,1.689065796396123531e+00,3.909782931469932971e-02,1.331672853301905934e-02,7.253401832235412128e-03,1.136902005326889675e-02 -3.343528000000000020e+02,1.294776398791995131e+00,2.647609036034062058e-01,1.998595571582083286e-01,1.938567818530484432e-01,4.638076740860519465e+00,5.664066133371055134e-01,6.651791070253969262e-02,6.455793135828907792e-02,9.754165515909597739e-02,1.691781302240257689e+00,3.865058844933693533e-02,1.205891025017999385e-02,7.085600149810175608e-03,1.274867366488354609e-02 -3.352273999999999887e+02,1.297209508355516849e+00,2.652343487394047683e-01,1.996509537994251848e-01,1.928641085443362213e-01,4.642163922539128684e+00,5.646081477386448721e-01,6.697428296075746967e-02,6.483778104056708846e-02,9.714000578677216280e-02,1.692526775015936735e+00,3.898610841212829525e-02,1.256707801737821928e-02,7.249868926024211763e-03,1.266770524313609592e-02 -3.360344000000000051e+02,1.300267367270664165e+00,2.647907567546896046e-01,1.997773508612412929e-01,1.939797259018127273e-01,4.642584084981367099e+00,5.606827258073172615e-01,6.697219200375349735e-02,6.507830090531041556e-02,9.706224830463500153e-02,1.691397128630377278e+00,3.828314260060294849e-02,1.222263989620572811e-02,7.027372753352030543e-03,1.263444212484746837e-02 -3.369166999999999916e+02,1.303924491029909483e+00,2.646868684761722879e-01,1.993141006802275350e-01,1.948373730571361651e-01,4.645075510621460069e+00,5.581644725157872688e-01,6.815137923797566499e-02,6.558798552272643301e-02,9.642681276162659576e-02,1.688883961219804108e+00,3.881430303528871084e-02,1.312295314934594503e-02,6.269368480684905931e-03,1.224975303524228690e-02 -3.377205999999999904e+02,1.307297073493621564e+00,2.674724141183081882e-01,1.977959869984546037e-01,1.934325095995842458e-01,4.652722171561087805e+00,5.565995008815002310e-01,6.623049033725321444e-02,6.454597675069055629e-02,9.777390663977936214e-02,1.689945566429331025e+00,3.649408669559883744e-02,1.152263293047488257e-02,8.119113308052997025e-03,1.361384706574777712e-02 -3.385038999999999874e+02,1.305551462205478019e+00,2.663805458456227626e-01,1.983405159797514972e-01,1.957280245039566824e-01,4.653710707186487383e+00,5.520388305983279231e-01,6.655046793251417903e-02,6.548034724442441945e-02,9.717701383083381106e-02,1.689970398198685553e+00,3.684588743960082180e-02,1.243550718557481088e-02,6.809315847020450119e-03,1.273088197082208883e-02 -3.393587999999999738e+02,1.306440357216542170e+00,2.683214998024153752e-01,1.975802418773171254e-01,1.945129593592929140e-01,4.653415510031583935e+00,5.518628571723566134e-01,6.571971806735127375e-02,6.407455483439480903e-02,9.682684606774497049e-02,1.689049585259837505e+00,3.593391568862436269e-02,1.239136475714951169e-02,7.503040427822738057e-03,1.343981839084928964e-02 -3.403697999999999979e+02,1.295317229015214844e+00,2.670881653435867031e-01,1.992512981515404957e-01,1.960919943328381654e-01,4.657421943601368852e+00,5.493064574829389368e-01,6.602109014874957271e-02,6.486430129860369653e-02,9.629655730590638840e-02,1.685924714789254431e+00,3.619955285436005088e-02,1.255424876913990850e-02,6.245525230809729003e-03,1.344960794147817551e-02 -3.412751999999999839e+02,1.293158432118804546e+00,2.689681512504979999e-01,1.984367780592832253e-01,1.945255196058243985e-01,4.655370946938140797e+00,5.467042792345881974e-01,6.386052328385322108e-02,6.473941745749328680e-02,9.697955498751889558e-02,1.684669568010277452e+00,3.538140166045067314e-02,1.214297357937439009e-02,7.680682470380728599e-03,1.390288101686763811e-02 -3.421231999999999971e+02,1.286108226414666822e+00,2.687555365699448862e-01,1.995509856463210108e-01,1.941653521385840742e-01,4.659308780562810171e+00,5.429883181282236793e-01,6.383999440034396344e-02,6.498115065691002779e-02,9.642222362897465149e-02,1.681916147807352324e+00,3.558373831217498395e-02,1.171139832637783929e-02,6.725987752179640733e-03,1.373041775463576183e-02 -3.430000000000000000e+02,1.291661524134669614e+00,2.701092656234636014e-01,1.986800122996166817e-01,1.942533429043429571e-01,4.659493976077807353e+00,5.397105627974041475e-01,6.337233832056321514e-02,6.462573632988154182e-02,9.649873839621357641e-02,1.677464314459461869e+00,3.493966590360728097e-02,1.169350084568175629e-02,7.772655403105344085e-03,1.385004380707922922e-02 -3.439384000000000015e+02,1.290238706628294540e+00,2.714224503825088397e-01,1.999662874536162760e-01,1.928295102280428719e-01,4.660305344738890021e+00,5.371460905711742395e-01,6.424267852792586719e-02,6.399609005622788893e-02,9.565047693330749889e-02,1.676087550561829786e+00,3.635427780759991484e-02,1.041992271024561045e-02,6.415865800593043011e-03,1.449088045418119031e-02 -3.448516000000000190e+02,1.292875546004234488e+00,2.700731146989000520e-01,1.972439060411793343e-01,1.945966553768473939e-01,4.665670883828432203e+00,5.307510393247560909e-01,6.276676718895296547e-02,6.598315082323487346e-02,9.649087506785825052e-02,1.673893899124339502e+00,3.407713949593477176e-02,1.190050145598760267e-02,8.402593892717483137e-03,1.273664827518114322e-02 -3.458684000000000083e+02,1.284871503590295561e+00,2.726645837181901344e-01,1.976969474044218134e-01,1.928397729457405063e-01,4.665978936414997946e+00,5.301818721195754591e-01,6.392875532290118179e-02,6.473479979474927593e-02,9.659245683068920507e-02,1.674000965479376379e+00,3.449540002012864426e-02,1.142096783630226764e-02,7.512697971999347801e-03,1.355881943863133932e-02 -3.467389000000000010e+02,1.283786939015814310e+00,2.720230173554641917e-01,1.981863933283197210e-01,1.942689923085819947e-01,4.670129215177566628e+00,5.278012317862021963e-01,6.282099127438051100e-02,6.516692829940892717e-02,9.641218103141746543e-02,1.671650277497941151e+00,3.536131033367254095e-02,1.173716183072502639e-02,6.423671864336816251e-03,1.337062771570260433e-02 -3.473992999999999824e+02,1.279702747933941787e+00,2.731799935140321600e-01,1.980099167863026421e-01,1.940503074901341052e-01,4.670219641104524477e+00,5.266580503954811920e-01,6.348318981494728563e-02,6.446944766272283411e-02,9.568094096565159246e-02,1.670816759443593202e+00,3.552289933224048180e-02,1.093949350944161542e-02,6.223111225684474501e-03,1.443074461982773310e-02 -3.484193999999999960e+02,1.275560114932174249e+00,2.705717012274285183e-01,1.971482904926467328e-01,1.951235367771723128e-01,4.665728323104274544e+00,5.218615153482373259e-01,6.282531274662872534e-02,6.590480359401883204e-02,9.679205125169010326e-02,1.662704035099635158e+00,3.532152697420068432e-02,1.267229474893320079e-02,5.973276676872585345e-03,1.311898350590827433e-02 -3.493052000000000135e+02,1.269842538918634300e+00,2.731449984182091062e-01,1.982686242452698644e-01,1.920113204223757586e-01,4.667755603530750363e+00,5.220469669666594204e-01,6.267681234678487701e-02,6.447378762241567918e-02,9.691964279602428844e-02,1.663701086925390982e+00,3.565503838576725149e-02,1.062887449537015805e-02,5.804713176416120834e-03,1.541904007523421660e-02 -3.502409999999999854e+02,1.272263523233103211e+00,2.723177750444784051e-01,1.980734080827447618e-01,1.933031343095625854e-01,4.667665940831088989e+00,5.189529801991151770e-01,6.281126535616458895e-02,6.536846214158546775e-02,9.591456367579917486e-02,1.662102038062550857e+00,3.573307410377457582e-02,1.181201018450822593e-02,5.746822734116134590e-03,1.459900671906583236e-02 -3.511515999999999735e+02,1.269716848595701775e+00,2.726481686196947640e-01,1.979034064070405718e-01,1.916400569010678900e-01,4.667060083185826436e+00,5.164578140401521189e-01,6.332779540694150056e-02,6.586651532231974082e-02,9.585419100329251041e-02,1.659821979018503590e+00,3.492851465348142947e-02,1.223815522635060549e-02,6.721373761514590206e-03,1.401426363669280861e-02 -3.519202000000000226e+02,1.267274969976470267e+00,2.718684344914677475e-01,1.987268016006651650e-01,1.920346825312486405e-01,4.668127255625226013e+00,5.125804885441084258e-01,6.451295337577368783e-02,6.717460759344791310e-02,9.543210220918330045e-02,1.658105159927841576e+00,3.567777409551300960e-02,1.259779176681966040e-02,5.819985158749763077e-03,1.329568819319937312e-02 -3.528020000000000209e+02,1.272499515974371054e+00,2.729312355498824116e-01,1.979313591401976602e-01,1.915773726198056193e-01,4.668931413864136459e+00,5.118846202387351552e-01,6.334250820974351992e-02,6.547092960812825324e-02,9.698040372317989766e-02,1.659724752654554658e+00,3.428001069976360782e-02,1.122103044835331270e-02,6.311519803155793418e-03,1.382022524720965921e-02 -3.537158999999999764e+02,1.278087589381286859e+00,2.736534387891045306e-01,1.972898761001271317e-01,1.920432444355617552e-01,4.664706302244145952e+00,5.099657083418405179e-01,6.416574046982310986e-02,6.594282604226797684e-02,9.624360726164589430e-02,1.659380984557178973e+00,3.432136605336996715e-02,1.233718102843975317e-02,6.382273370345428742e-03,1.328634129138542286e-02 -3.547101000000000113e+02,1.284595787017867474e+00,2.746380569638007252e-01,1.965407845261102349e-01,1.923045429706172760e-01,4.664779286881461928e+00,5.077465629334340091e-01,6.381214863960930905e-02,6.545473042743943370e-02,9.771374409405997330e-02,1.657357069483046619e+00,3.253738434174269223e-02,1.171277190553353387e-02,7.107153082384670868e-03,1.378593137057250971e-02 -3.554916999999999803e+02,1.275619452008175614e+00,2.753134800060294540e-01,1.985817463310638464e-01,1.933335756519070081e-01,4.668780123242957103e+00,5.059601195436632670e-01,6.606377572948585186e-02,6.680046849232673667e-02,9.567496472657220641e-02,1.655856207114008827e+00,3.471166521286458972e-02,1.266454880331180366e-02,4.730695480266382258e-03,1.354909778266725345e-02 -3.563523999999999887e+02,1.271457667468981478e+00,2.755266320137764180e-01,1.970030472362575558e-01,1.938004668800475117e-01,4.668973904695494781e+00,5.038833919695950847e-01,6.227070658212055521e-02,6.693939865568193648e-02,9.768579788453136958e-02,1.654761360949035920e+00,3.226191243801296293e-02,1.251363650097414570e-02,6.760950322984409996e-03,1.342857387044709729e-02 -3.571544999999999845e+02,1.270212231500823519e+00,2.761798671103973257e-01,1.984951283566351032e-01,1.938469039772660607e-01,4.660409208577682705e+00,5.026711128974181708e-01,6.346387897011125656e-02,6.792047613152563112e-02,9.575291692896345519e-02,1.654893745363194002e+00,3.389356905532139169e-02,1.265993739502310755e-02,5.712541529420051001e-03,1.282375165362235198e-02 -3.580677000000000021e+02,1.263161122237588474e+00,2.776300739740085732e-01,1.973008552020316941e-01,1.946640253289189937e-01,4.655342960014973386e+00,5.005426986171968018e-01,6.177397859148475723e-02,6.705804672772006092e-02,9.757131007665886813e-02,1.651632755241383643e+00,3.299751460469296793e-02,1.158156731863493882e-02,6.677818930681422849e-03,1.306301186166450301e-02 -3.590566000000000031e+02,1.264379066928906337e+00,2.777984967397506000e-01,1.983790985693124065e-01,1.944279124372804979e-01,4.654254019331934167e+00,4.992628443095898927e-01,6.274448370022636667e-02,6.670865427861996655e-02,9.572414201194490158e-02,1.650064813693241650e+00,3.415177066632162084e-02,1.164535187001135980e-02,6.008477885681429154e-03,1.307767857257205457e-02 -3.599447000000000116e+02,1.268726558688167083e+00,2.762725761388413748e-01,1.955705330225945282e-01,1.963064041919336256e-01,4.655531820854373670e+00,4.968956444311795062e-01,6.144885629082380563e-02,6.767837791255817970e-02,9.751143304018196345e-02,1.646451697811668335e+00,3.204488596675199308e-02,1.247922221918514388e-02,7.866188586329814214e-03,1.195248188627838493e-02 -3.608140999999999963e+02,1.271103172539814974e+00,2.778831430857444662e-01,1.963788653775479509e-01,1.958493951466376282e-01,4.656571899196009667e+00,4.964226785247528584e-01,6.309446291462691980e-02,6.644221346783085735e-02,9.649608457019343000e-02,1.646266868292892482e+00,3.311747203070494749e-02,1.091990671990766305e-02,6.918701321053021165e-03,1.335011140195920681e-02 -3.617291999999999916e+02,1.277748395127852543e+00,2.787288115771481833e-01,1.948606163354212328e-01,1.964756611478351567e-01,4.656982850947067654e+00,4.924655211650486031e-01,6.245824989982440290e-02,6.785224423621677436e-02,9.716716115273263399e-02,1.641954273955178456e+00,3.288398947324261412e-02,1.176509629715039029e-02,7.475945509601199246e-03,1.276499149295898250e-02 -3.625013000000000147e+02,1.273653435838353776e+00,2.799945908918182180e-01,1.947002615855615293e-01,1.958381854278097856e-01,4.654370361565439929e+00,4.918437600452555403e-01,6.214235110077567098e-02,6.677719222634222185e-02,9.760449349615790693e-02,1.639735521134010554e+00,3.307535497366126398e-02,1.032962815383674238e-02,7.148367768756465693e-03,1.379362226423221094e-02 -3.635117000000000189e+02,1.276202478215586078e+00,2.784759210297625964e-01,1.938085544982933728e-01,1.969480836945641800e-01,4.656081726083625583e+00,4.884165486173290271e-01,6.260902492359518567e-02,6.778478115236910573e-02,9.857212922824203083e-02,1.640131735329307672e+00,3.280705733798665313e-02,1.128925191105678572e-02,7.306439203116243952e-03,1.330524430070406661e-02 -3.644495000000000005e+02,1.278842654376720844e+00,2.798465200761665050e-01,1.928200233600194657e-01,1.969867297357049130e-01,4.657286882220837754e+00,4.882071620602264073e-01,6.184444143566270036e-02,6.680646183681288042e-02,9.921001285347258447e-02,1.637592180913174156e+00,3.309373370571100370e-02,1.004801226651166890e-02,7.391887759748652642e-03,1.478135447412948222e-02 -3.651965000000000146e+02,1.277724393873682196e+00,2.781386308280381359e-01,1.939747224364948841e-01,1.988152848034311637e-01,4.657867221103284550e+00,4.841745526945326894e-01,6.229464538611775848e-02,6.889364417740122259e-02,9.807433129612488920e-02,1.633210071872126523e+00,3.352553408832274068e-02,1.160089243083597954e-02,7.164385431105674273e-03,1.328885832612737572e-02 -3.661080999999999790e+02,1.277844362735959027e+00,2.800417163140501708e-01,1.932184239214773669e-01,1.978184092724707688e-01,4.660438378583814156e+00,4.839763262353014017e-01,6.208587919582109205e-02,6.700883529550127893e-02,9.927668185266581846e-02,1.633043538797869010e+00,3.241992582689221664e-02,1.012799192608649507e-02,8.258740638760281305e-03,1.473523559995426613e-02 -3.669836000000000240e+02,1.271650744570971048e+00,2.790213852219032842e-01,1.938020573143296732e-01,2.000161776849938289e-01,4.658048188859612360e+00,4.805588090473884577e-01,6.323815726890233413e-02,6.792910933273499374e-02,9.800605753092830885e-02,1.630416947744053546e+00,3.396102428525274441e-02,1.191029546167027622e-02,6.433057552822741415e-03,1.332980916646582525e-02 -3.678242999999999938e+02,1.274805932192799141e+00,2.791139377276021794e-01,1.911602018657941604e-01,1.980687347223274164e-01,4.655656163253375723e+00,4.802089803725858586e-01,6.115613232634736773e-02,6.642457662953561714e-02,9.995524538779040902e-02,1.632611621070811703e+00,3.194200565033478156e-02,1.118583996883565357e-02,8.696245960843312917e-03,1.442463235877980421e-02 -3.687117000000000075e+02,1.277627139216688246e+00,2.783215386932112456e-01,1.924064672579065827e-01,1.985058840482603337e-01,4.663403940249287061e+00,4.767446906738684875e-01,6.254470309523563198e-02,6.717157811895722863e-02,9.818312090642436485e-02,1.632113356836266460e+00,3.315831372913056324e-02,1.162823648157168543e-02,7.001150428575325657e-03,1.424953444087606602e-02 -3.695498999999999796e+02,1.282662122197238741e+00,2.789081363354740106e-01,1.901183076760347701e-01,1.980539129742779625e-01,4.664929879459227102e+00,4.766303189959059106e-01,6.235312471416604163e-02,6.657427945711497097e-02,9.992002911011521604e-02,1.629767791990539116e+00,3.152376588653547917e-02,1.117160784976124061e-02,9.114972676207292249e-03,1.486530483627186705e-02 -3.704517999999999915e+02,1.281690226401855259e+00,2.788128686011622226e-01,1.918399754930599221e-01,1.975861153155501204e-01,4.670037739299770507e+00,4.736599870066278140e-01,6.338784443956221870e-02,6.755577636681948939e-02,9.816411964452953498e-02,1.632849820785724493e+00,3.301980171855871393e-02,1.093268804797941154e-02,7.762014176442150193e-03,1.475660319184858571e-02 -3.715511999999999944e+02,1.296012786247541015e+00,2.795837351685674377e-01,1.906582622112330261e-01,1.969835064204834563e-01,4.669597088735623736e+00,4.752483450451895908e-01,6.389852341347915243e-02,6.877488996258040999e-02,9.791096705137264378e-02,1.633890333533154049e+00,3.305846307481832835e-02,1.105423728512223980e-02,7.977953653322794603e-03,1.491680273061180180e-02 -3.723974999999999795e+02,1.297713098502536688e+00,2.806554873431487129e-01,1.912154904470345362e-01,1.962444734403246682e-01,4.670649294889241077e+00,4.731101605960570389e-01,6.398833006512266719e-02,6.935028767788417592e-02,9.744190708840164139e-02,1.632864544223096459e+00,3.324988430857980792e-02,1.160784378615156709e-02,8.103602963309364249e-03,1.447572212162767658e-02 -3.732719000000000165e+02,1.296483894804587589e+00,2.804197568098329985e-01,1.907559018169094622e-01,1.958714944364615684e-01,4.674598105746373911e+00,4.715913801055017229e-01,6.330400926268608952e-02,6.888997666355842209e-02,9.774350175010085295e-02,1.633939988628033912e+00,3.338357779029960115e-02,1.136959053445713019e-02,7.714359602917594816e-03,1.465994081620877222e-02 -3.741868999999999801e+02,1.295162147318711598e+00,2.808745212496695509e-01,1.906406682888904802e-01,1.953393636264242617e-01,4.677140064031633848e+00,4.715050280351814060e-01,6.299594097155358785e-02,6.862874154803738636e-02,9.701421435976370633e-02,1.636582041433101153e+00,3.335348993103959270e-02,1.196113725243963533e-02,7.904254306434085886e-03,1.473281231657280754e-02 -3.750908000000000015e+02,1.292344052813714894e+00,2.807146411191243640e-01,1.906880080796978794e-01,1.958625438344179792e-01,4.679281629517015872e+00,4.706867669440212287e-01,6.213255947308929383e-02,6.887672021815269274e-02,9.771824085778289815e-02,1.635854219715246582e+00,3.369543169947092354e-02,1.170947165857419425e-02,7.684293036480063788e-03,1.461829331333651394e-02 -3.759687000000000126e+02,1.292255551443487027e+00,2.815282237398012422e-01,1.920395489015302715e-01,1.952691839231925353e-01,4.676142513734532713e+00,4.707081040646969861e-01,6.270675284018772944e-02,6.902419999653708338e-02,9.702008773163700583e-02,1.634840936672736333e+00,3.469061964298800205e-02,1.196571891578254720e-02,7.940007461130247496e-03,1.451857353890084745e-02 -3.767203999999999837e+02,1.294780233911076106e+00,2.807971123642501454e-01,1.918255388743963508e-01,1.966824077277802840e-01,4.680695643995393951e+00,4.693556241919391026e-01,6.175547755382040926e-02,7.054761645353323229e-02,9.669404151702247485e-02,1.632721877849623526e+00,3.497921726371322482e-02,1.295117467599856201e-02,7.902016691867731063e-03,1.337643099986329451e-02 -3.775405000000000086e+02,1.291352867654490977e+00,2.832700334507046169e-01,1.908038265029090019e-01,1.947665454506570248e-01,4.682472529529665195e+00,4.710352312699143673e-01,6.259400880916216048e-02,6.836827280227161796e-02,9.645111655047707011e-02,1.637168726552760800e+00,3.485997329981849191e-02,1.066577895101697426e-02,8.151447695473473115e-03,1.554900357559084456e-02 -3.784125000000000227e+02,1.296141426678363295e+00,2.817244762350409881e-01,1.910331009772565924e-01,1.955904385415481728e-01,4.684009792454013166e+00,4.679877575520733357e-01,6.366073312257244932e-02,6.990049863572456168e-02,9.534237218293414862e-02,1.636232860702731218e+00,3.569755366424565146e-02,1.230019872722300234e-02,7.739483767864575869e-03,1.407757458169997533e-02 -3.793655999999999722e+02,1.296446672281653001e+00,2.828999287480669089e-01,1.899599540772798079e-01,1.954897586997956793e-01,4.688374730531361223e+00,4.668254566025762387e-01,6.245213141221378494e-02,6.892398931296495057e-02,9.613707126766940503e-02,1.636364341609767958e+00,3.539483679224005724e-02,1.140650350392879986e-02,7.994650636357153450e-03,1.518231561602872981e-02 -3.802389999999999759e+02,1.294592326837866070e+00,2.829121829272775446e-01,1.899491966568138679e-01,1.956351783932616106e-01,4.694571658799430836e+00,4.662276722037876908e-01,6.289653503688188985e-02,6.930026057934016159e-02,9.556005992709595831e-02,1.637848760701452466e+00,3.607974817371845111e-02,1.276348161018694971e-02,7.716313222000392713e-03,1.476254187467241491e-02 -3.809870000000000232e+02,1.290852101394854623e+00,2.843962414884376178e-01,1.900228954022432359e-01,1.952839181485450382e-01,4.697660448028676328e+00,4.677205218800921660e-01,6.165876383587040599e-02,6.848623437111717172e-02,9.626810206751898469e-02,1.636778498002393389e+00,3.564027700031283108e-02,1.155913085384562868e-02,7.784064502164435295e-03,1.595345229853165070e-02 -3.818020999999999958e+02,1.289781022132137300e+00,2.842422548972514118e-01,1.909014555607699004e-01,1.953520572622310381e-01,4.696541328385736236e+00,4.679721101932888261e-01,6.208819570537675581e-02,6.910999823588334645e-02,9.665635288840881967e-02,1.635374885004114764e+00,3.613898969428686048e-02,1.246117524270037857e-02,7.754450227556497488e-03,1.601223821532007929e-02 -3.829322999999999979e+02,1.289685979979154462e+00,2.844049332552158749e-01,1.910284782097639023e-01,1.937574948487109372e-01,4.701599958026099202e+00,4.679362415708823164e-01,6.072605559209459658e-02,6.900711617081969895e-02,9.843087543595191446e-02,1.637762935237430550e+00,3.574769409983577506e-02,1.217616094372436959e-02,7.617639132511219713e-03,1.688255059612397968e-02 -3.838564000000000078e+02,1.283979629514820697e+00,2.835317917573856317e-01,1.923356652280894530e-01,1.946543301934688386e-01,4.700881936903926750e+00,4.682721129955586536e-01,6.239218282666818272e-02,6.900436351391957268e-02,9.689802953132202468e-02,1.636155048051174621e+00,3.726825469344528796e-02,1.239565367515339800e-02,6.123733015606550034e-03,1.723380479455119407e-02 -3.847139999999999986e+02,1.280308457839579361e+00,2.850347610431396284e-01,1.897803262164864668e-01,1.947894577747217859e-01,4.704388976176542947e+00,4.657157185227865925e-01,5.968615451394460730e-02,6.875268043295218456e-02,9.890361163719811610e-02,1.632012098848002024e+00,3.484718014939175434e-02,1.325371394163897890e-02,8.185066338904468247e-03,1.629880444398212891e-02 -3.856297000000000139e+02,1.277186474502082891e+00,2.863665598532341150e-01,1.911863920283426443e-01,1.934568415931278151e-01,4.701225879401545349e+00,4.664741215369736516e-01,6.236776272413409317e-02,6.824377491132753437e-02,9.702163717292686118e-02,1.633444155830131805e+00,3.649429823714700483e-02,1.294940138263439566e-02,6.792586420719053109e-03,1.762210999334375486e-02 -3.866234999999999786e+02,1.275215244584585683e+00,2.870056460435277956e-01,1.900646402692632853e-01,1.953867011358504935e-01,4.706040354237378764e+00,4.659177909512018934e-01,6.159552130122429581e-02,6.880504358854239166e-02,9.820905010666095003e-02,1.635592202675840046e+00,3.508298929163664037e-02,1.408158109144017067e-02,7.853611453227965500e-03,1.694255369952102352e-02 -3.875246999999999957e+02,1.275431862608027878e+00,2.870673158177073914e-01,1.895959842118302707e-01,1.955928110492751171e-01,4.705139965787506817e+00,4.651296572030612086e-01,6.125829329957599434e-02,6.878864643904279708e-02,9.886969292402583709e-02,1.635872437849317462e+00,3.518510053287576822e-02,1.364390137636545264e-02,7.652054798384960721e-03,1.714349373490761663e-02 -3.884778000000000020e+02,1.274683318314319802e+00,2.861950663025873420e-01,1.899101133508699080e-01,1.947398881635475365e-01,4.707583581657716287e+00,4.651871792854196386e-01,6.216931229153427330e-02,6.898551415067445680e-02,9.854769792132719863e-02,1.636058384375547403e+00,3.489879817114073524e-02,1.412335734830092240e-02,8.010065494930704300e-03,1.754145056814424009e-02 -3.894469000000000278e+02,1.272433879014905234e+00,2.855016575551070357e-01,1.899325445804350143e-01,1.948053771589422500e-01,4.712593777060573252e+00,4.650575176848845693e-01,6.133880909040939633e-02,6.933176491297315946e-02,9.908081600386557664e-02,1.636182462020563166e+00,3.486871856551337218e-02,1.392902055633282732e-02,7.510528510545865823e-03,1.753389878661590351e-02 -3.902355999999999767e+02,1.275521507020306533e+00,2.867762377304988730e-01,1.898828970621975198e-01,1.941809773663887573e-01,4.714111374921646558e+00,4.661450026911331812e-01,6.082398245005984916e-02,6.980516406037103050e-02,9.877875511872843961e-02,1.633443550920287368e+00,3.502607836559250981e-02,1.446046347309007385e-02,7.881587633045403218e-03,1.777392071928721173e-02 -3.909666000000000281e+02,1.271068068161033127e+00,2.881931018011265055e-01,1.897523037411072422e-01,1.933590892261027316e-01,4.716209135405107666e+00,4.682759825888942462e-01,5.982142894593761584e-02,6.902672463908476885e-02,9.960050790153962552e-02,1.633723042481763699e+00,3.465239050689336575e-02,1.332745620355035854e-02,8.237753098884414982e-03,1.905227623147717070e-02 -3.918654999999999973e+02,1.272349025866317929e+00,2.864799544479893489e-01,1.899284947214677777e-01,1.960988694672672894e-01,4.718996431312975304e+00,4.685896531505173157e-01,6.077035839825081776e-02,7.171025941543865412e-02,9.900770501964206716e-02,1.632727160992282212e+00,3.534019745530360412e-02,1.536936956014299527e-02,7.996888020386505591e-03,1.670654856199353666e-02 -3.927844999999999800e+02,1.279381374542164718e+00,2.884911036303121068e-01,1.883976677009199241e-01,1.941649517302695693e-01,4.718951829382323382e+00,4.704816005016032032e-01,6.046774945942831603e-02,7.021333283159754413e-02,1.000930407863318827e-01,1.634060412014109120e+00,3.438435296843472821e-02,1.315774182266169975e-02,9.355400613665548759e-03,1.869521610999701211e-02 -3.935939000000000192e+02,1.279855791260620101e+00,2.870149436804665388e-01,1.893181521951741719e-01,1.960827702536833972e-01,4.719989770085316394e+00,4.690640339020478167e-01,6.149416416248637551e-02,7.146448347838774140e-02,9.954660626234626553e-02,1.631289128457761306e+00,3.524364277753422314e-02,1.403651263042328401e-02,8.327838103280721382e-03,1.768470050084514078e-02 -3.944388000000000147e+02,1.283773520626043885e+00,2.867202222022990910e-01,1.893118940547241780e-01,1.957962589316706858e-01,4.718587036531194379e+00,4.696478318884871883e-01,6.192328451044627757e-02,7.101649948323945916e-02,1.002336729409626787e-01,1.632037838983512179e+00,3.466001414095452177e-02,1.388588286537292826e-02,9.059244744880595723e-03,1.791834855520364755e-02 -3.953921000000000276e+02,1.279419980302637816e+00,2.864364829860152062e-01,1.893058528543272723e-01,1.971595851485263839e-01,4.719867702026939504e+00,4.700452730872503038e-01,6.220468831947278954e-02,7.086037034723367822e-02,1.004908620279957032e-01,1.630756307213335532e+00,3.565426288175993497e-02,1.342404576239221436e-02,8.108375572534798348e-03,1.792079434212148423e-02 -3.963104000000000156e+02,1.284957085550836098e+00,2.857604855093364149e-01,1.887435885717873851e-01,1.976541073002814342e-01,4.722724754108843292e+00,4.708197972450366975e-01,6.183909812404402018e-02,7.085896883940802360e-02,1.009160786348692884e-01,1.628350667831372833e+00,3.495202265862069196e-02,1.325645118987434090e-02,9.491890278841452755e-03,1.803540336247486109e-02 -3.971247999999999934e+02,1.290064273239319270e+00,2.861137433193915447e-01,1.903565343489096173e-01,1.977219296187873177e-01,4.725047564992273408e+00,4.706012556069063546e-01,6.272353843654079886e-02,7.066841030636290821e-02,1.002512243475880416e-01,1.632858879017446085e+00,3.642720452876613280e-02,1.270876037542140180e-02,8.307019837165030562e-03,1.796011026593344329e-02 -3.979755000000000109e+02,1.297705292282207434e+00,2.857927847325191228e-01,1.887608442132925057e-01,1.983472611029249155e-01,4.732445616378012865e+00,4.713135408678794658e-01,6.105343746140892702e-02,7.089959872702111809e-02,1.020975426547030968e-01,1.633033483589251933e+00,3.479979513415210751e-02,1.268831126197514370e-02,1.050394124169007348e-02,1.780018067763347589e-02 -3.990899000000000001e+02,1.293597317291492299e+00,2.861967319618716754e-01,1.899198736209987137e-01,1.964903216420913479e-01,4.734409030484756364e+00,4.710198889490123109e-01,6.241754187733811882e-02,7.045863942829486137e-02,1.002197464311674335e-01,1.634015104925850892e+00,3.624906206437009115e-02,1.275773750496003202e-02,9.858455382948966284e-03,1.768496163626900874e-02 -4.000634999999999764e+02,1.294888912843989548e+00,2.854493985962550107e-01,1.901275460031526809e-01,1.969337288268131758e-01,4.735493320002260198e+00,4.729750868357899263e-01,6.238331792597648362e-02,6.995489002403909584e-02,1.005675857458370320e-01,1.634353698074952899e+00,3.675264836426395121e-02,1.259845660836555331e-02,9.071029876602285102e-03,1.790771501551651976e-02 -4.008301999999999907e+02,1.294009164026852732e+00,2.856033402118667852e-01,1.902205930839006021e-01,1.967811458179062334e-01,4.740663912713447559e+00,4.723278229363426783e-01,6.281032092117475041e-02,7.018012427728939628e-02,1.005080655901773035e-01,1.631114225582126931e+00,3.655266736085967250e-02,1.345371830398839341e-02,9.326086177186169307e-03,1.771525871610335479e-02 -4.017678999999999974e+02,1.297790695142107209e+00,2.854500374827527720e-01,1.894204691172017285e-01,1.981102135264665443e-01,4.744216978743395430e+00,4.716588799051670833e-01,6.240778397476628991e-02,7.029142941424254554e-02,1.012529046104875263e-01,1.630587306542374826e+00,3.607202207630379881e-02,1.451824730342091141e-02,9.496054528170504161e-03,1.657466735884533665e-02 -4.025849000000000046e+02,1.295784567262045606e+00,2.874110011309176649e-01,1.892310200267380560e-01,1.965690122164262810e-01,4.748476762541221419e+00,4.731417072790575218e-01,6.311343182377535110e-02,6.812483045504405532e-02,1.011536237667257643e-01,1.631586184711283138e+00,3.664278431344950016e-02,1.270173201355445647e-02,9.077099701302743240e-03,1.851751187790705994e-02 -4.033928000000000225e+02,1.298891492901150579e+00,2.848457876798682897e-01,1.890167132098641845e-01,1.988095746106947059e-01,4.749947433833938248e+00,4.686806715031800463e-01,6.360356915360837471e-02,7.082350641268299329e-02,1.024567573815367005e-01,1.629352327742829454e+00,3.650134508274734818e-02,1.505600080542682240e-02,9.653364642865314149e-03,1.595984210095779954e-02 -4.041788999999999987e+02,1.299592239389948167e+00,2.869522392907997710e-01,1.900000226569336370e-01,1.965219536681990786e-01,4.748937793082847136e+00,4.685079642433913616e-01,6.362866725250235223e-02,6.834384327097178802e-02,1.027347399098909875e-01,1.632090827173549918e+00,3.682838831690675441e-02,1.267665898274442093e-02,9.476319483320488207e-03,1.821051679660035116e-02 -4.050305000000000177e+02,1.296887537410022162e+00,2.853481152258657838e-01,1.910408901480945554e-01,1.994409392314352436e-01,4.753336758884439739e+00,4.656741983917610517e-01,6.429281486213048180e-02,7.095605175017780097e-02,1.018018546721641548e-01,1.628892851235049788e+00,3.727875458463508762e-02,1.488812627838914660e-02,9.295856391426327026e-03,1.587904710686283138e-02 -4.059855999999999767e+02,1.296989767248082126e+00,2.880342600888844973e-01,1.910084049185394872e-01,1.987607557292574434e-01,4.759527460955137457e+00,4.657141451995613357e-01,6.421025806892058374e-02,6.968960836086407484e-02,1.016577262137595278e-01,1.630110628172381837e+00,3.701492923059889611e-02,1.386888962997185303e-02,9.533883724098912715e-03,1.649811214339389626e-02 -4.068211999999999762e+02,1.299648583705373506e+00,2.881232371081774990e-01,1.914491922156277004e-01,1.991258505565461079e-01,4.763953528099747814e+00,4.647004673065844305e-01,6.474244386202743229e-02,7.059329816056300611e-02,1.015378986010612161e-01,1.629221871200293714e+00,3.727437500552814587e-02,1.470178572935909589e-02,9.573323893043717003e-03,1.585883007153765512e-02 -4.078140999999999963e+02,1.298244399555510187e+00,2.890244198765897776e-01,1.906167326220193914e-01,1.985865565123389465e-01,4.769701361883138979e+00,4.632816324859367896e-01,6.353913677846137475e-02,7.083027271548084092e-02,1.026598291102001903e-01,1.627340528813282727e+00,3.681894434257851345e-02,1.440099820020357413e-02,1.001775568351528922e-02,1.595687623848722481e-02 -4.087755999999999972e+02,1.292415769449569485e+00,2.897354437693883678e-01,1.921397136179305298e-01,1.977095891805491501e-01,4.771687674639344401e+00,4.623683636299188437e-01,6.502377760317995525e-02,7.231046384799832971e-02,1.009321475716821737e-01,1.626059255297368722e+00,3.841190894736076777e-02,1.575247130399673456e-02,8.571485799699107497e-03,1.500643427457090673e-02 -4.097076000000000136e+02,1.289520510826309474e+00,2.899409871473994094e-01,1.901857495979383805e-01,1.977697360901563839e-01,4.778401601084882877e+00,4.618872004511546114e-01,6.222325526312326438e-02,7.214556041956837751e-02,1.034974423056822940e-01,1.623909305589895657e+00,3.614250585257013093e-02,1.555363897103155188e-02,1.069831577910465570e-02,1.526840612725395910e-02 -4.105339999999999918e+02,1.278092954179192553e+00,2.895393204032502554e-01,1.926213326924723357e-01,1.978375716695080500e-01,4.779726819865199872e+00,4.606764248127711014e-01,6.482245349633626585e-02,7.214245806697411334e-02,1.012317050868914714e-01,1.622397189248053317e+00,3.856310426613199227e-02,1.557653378006678899e-02,8.374388618385422700e-03,1.535450579917557040e-02 -4.114363000000000170e+02,1.280378105050989923e+00,2.895894613248163330e-01,1.900551862930413560e-01,1.984240372037322508e-01,4.782077028013943298e+00,4.594301563902283281e-01,6.280166774474846281e-02,7.211468529877249067e-02,1.032224079648386417e-01,1.619294790538453821e+00,3.666578938680167821e-02,1.571001771845928485e-02,1.071511763735841227e-02,1.480462070016640153e-02 -4.123170999999999822e+02,1.272268392257787983e+00,2.896445365525195936e-01,1.920030282281048328e-01,1.985607374773162292e-01,4.789693252601290752e+00,4.579938624072642517e-01,6.515526297316137638e-02,7.190364090974371569e-02,1.010838735950668477e-01,1.618826607617682267e+00,3.833554161596883225e-02,1.497232926605741865e-02,9.120416469305642204e-03,1.553161000998706798e-02 -4.132182000000000244e+02,1.268559205725627415e+00,2.892131353887272271e-01,1.901678828565580015e-01,2.001729364789495424e-01,4.800819984691766074e+00,4.537557658186156528e-01,6.381192925805104221e-02,7.352246696695943773e-02,1.027897075730019316e-01,1.616042907561414221e+00,3.628625906323694472e-02,1.596051435181093658e-02,1.064506117641384614e-02,1.363424009110666968e-02 -4.140776999999999930e+02,1.269141923102905523e+00,2.905113132406096366e-01,1.910193037447209252e-01,1.993547457729188399e-01,4.795833059879741178e+00,4.536846968314174333e-01,6.513180264846871181e-02,7.237691380331044699e-02,1.014741347952895639e-01,1.615440215415494762e+00,3.689887496331228922e-02,1.441955603572764311e-02,9.722160251034075995e-03,1.567825448510704045e-02 -4.149501999999999953e+02,1.265643382868228084e+00,2.881722855847732023e-01,1.899594644475378069e-01,2.012104653230750440e-01,4.795505708996641303e+00,4.504578597901054415e-01,6.382687735093184322e-02,7.488222716651848909e-02,1.024282962313565193e-01,1.612141605707315239e+00,3.610947559691621289e-02,1.641492498040808892e-02,1.018157298622929252e-02,1.347557618703411342e-02 -4.159300000000000068e+02,1.261131145633222594e+00,2.911827543824966336e-01,1.912732931193292518e-01,1.982606860579253505e-01,4.798240828538300917e+00,4.508408386869544593e-01,6.420153231503322733e-02,7.277159619973476434e-02,1.010841192989713200e-01,1.614706220564933847e+00,3.627964161099361817e-02,1.424481393244844685e-02,9.616546779984021937e-03,1.623331342868233884e-02 -4.167375000000000114e+02,1.263317942029961838e+00,2.900932889980041285e-01,1.905987852657378689e-01,1.995011179730402651e-01,4.806633161935874199e+00,4.472324335684902952e-01,6.266689622436177887e-02,7.451752426051670708e-02,1.014817755809725303e-01,1.613338996326096453e+00,3.587557248720563141e-02,1.640408464411889991e-02,9.540438622197860985e-03,1.441289045747667918e-02 -4.177001000000000204e+02,1.263660095511753179e+00,2.920989011228440901e-01,1.897531433798180789e-01,1.967959831746141919e-01,4.806812532324056697e+00,4.478541199119765448e-01,6.284570251058706203e-02,7.274305465890032463e-02,1.015751902238344329e-01,1.616318866321301506e+00,3.567565254213379833e-02,1.405450600460830118e-02,9.310096982081635109e-03,1.681238780893876128e-02 -4.186863999999999919e+02,1.257113729315224582e+00,2.894563930457682011e-01,1.889270941806255877e-01,1.973139600126065096e-01,4.809178305889567184e+00,4.449995514294020627e-01,6.257930779004122757e-02,7.384042065809234834e-02,1.019551861511227009e-01,1.614493377343992009e+00,3.508669930849245278e-02,1.492663425692000723e-02,9.244633309961258413e-03,1.541011414622658893e-02 -4.195514999999999759e+02,1.254602765468673997e+00,2.898838711598476503e-01,1.880570786114300064e-01,1.975569024015914055e-01,4.813415249346340907e+00,4.418772513777557975e-01,6.244640021129727048e-02,7.380209210596069824e-02,1.015037067028324302e-01,1.614579352579829319e+00,3.523481269978515767e-02,1.498441166980048200e-02,8.417049837312839955e-03,1.512994757402194579e-02 -4.202783999999999764e+02,1.253097126209393064e+00,2.894202998563888407e-01,1.883563566792932353e-01,1.982481223034724960e-01,4.815789964811797219e+00,4.395746291289321928e-01,6.340226659907476081e-02,7.427651888668182489e-02,1.002777747139647069e-01,1.614857869760388809e+00,3.572270433811428059e-02,1.557569719932889313e-02,7.557177786599450497e-03,1.457046575548169229e-02 -4.211465999999999781e+02,1.256173706331946915e+00,2.891355869248322663e-01,1.859523504388400639e-01,1.990282097000727612e-01,4.819581871060615974e+00,4.363611716771316207e-01,6.227978620259588122e-02,7.256832141527505553e-02,1.007776718446674047e-01,1.618077538090490375e+00,3.460922169522345770e-02,1.473765811859439889e-02,8.154039171850591128e-03,1.549736212279766850e-02 -4.220880000000000223e+02,1.256797274977042189e+00,2.898175269844343593e-01,1.851310445414280359e-01,1.986196206463985980e-01,4.822372984507381943e+00,4.327967006541804107e-01,6.277738736841648182e-02,7.248071150341620084e-02,9.970459970287059992e-02,1.616457155920319355e+00,3.457152245862674111e-02,1.454960257755187614e-02,8.228844486941534753e-03,1.592518213280355588e-02 -4.229365000000000236e+02,1.261878128153698375e+00,2.897062753952823755e-01,1.845170552854070722e-01,1.993307412093694719e-01,4.822453525987073775e+00,4.295644522988615321e-01,6.247126071510649553e-02,7.324347117647109218e-02,9.936477198984794423e-02,1.617485782823289142e+00,3.479019247763381895e-02,1.412492003370684202e-02,7.632348570289604339e-03,1.600825367824820766e-02 -4.238521999999999821e+02,1.266569908484022289e+00,2.909101473087445933e-01,1.844433095079713869e-01,1.985926378271870574e-01,4.826841875616612043e+00,4.262120167901031209e-01,6.265395265864037722e-02,7.446485482222348073e-02,9.939388674509244681e-02,1.616870177338755044e+00,3.452822646615506114e-02,1.427423001122449242e-02,7.618084617319123564e-03,1.634709701776475982e-02 -4.247676999999999907e+02,1.274790775274504906e+00,2.926252629933202010e-01,1.841588911089187541e-01,1.989169608373207443e-01,4.823412195383794732e+00,4.229135543535627040e-01,6.195922642130277658e-02,7.394562866948074797e-02,9.950905329724563098e-02,1.612303133848166148e+00,3.508091295119059039e-02,1.377373484012922589e-02,6.756336962379372313e-03,1.641730563684208610e-02 -4.256288999999999874e+02,1.279385475271975992e+00,2.934439790930071790e-01,1.839826630327426327e-01,1.988554377236905757e-01,4.824244687296642908e+00,4.194363988729734594e-01,6.235310485305017858e-02,7.380858100773496355e-02,9.870618523951152357e-02,1.611251724277494635e+00,3.579914618005142213e-02,1.323177572667844082e-02,6.320804875322660887e-03,1.670267299710202769e-02 -4.263392999999999802e+02,1.276622881043392832e+00,2.929336803191429084e-01,1.813956171307250509e-01,1.982440718980015837e-01,4.822646708632800205e+00,4.181667277662648452e-01,6.260848871308132002e-02,7.352920406942077547e-02,9.912119573565100761e-02,1.610331044092037089e+00,3.412102278989932735e-02,1.354906537917947157e-02,7.732200174018363792e-03,1.615389569621436539e-02 -4.273079000000000178e+02,1.274445302432826388e+00,2.951003669620131387e-01,1.832445281771963863e-01,1.971502603566422651e-01,4.830150157648558817e+00,4.157437952005558213e-01,6.426524535229360957e-02,7.181113980307295142e-02,9.788621251447934823e-02,1.612993663835643687e+00,3.517014280347456612e-02,1.219269380222758048e-02,6.288204464042268516e-03,1.669673849250569164e-02 -4.281240000000000236e+02,1.275495806646443020e+00,2.943189139919448194e-01,1.813826072464156391e-01,1.979069822231570852e-01,4.832155908588910087e+00,4.109261745193568682e-01,6.395705216888583622e-02,7.316702389357940262e-02,9.902473201638012368e-02,1.609665567750361959e+00,3.384218621394335935e-02,1.353784522070007601e-02,7.373890466754323691e-03,1.534312171100710165e-02 -4.288727999999999838e+02,1.270501891116254445e+00,2.946769687692486483e-01,1.806778351485247291e-01,1.986203591781654787e-01,4.831052714129403292e+00,4.090431307655455484e-01,6.438183433720345850e-02,7.226224800357478051e-02,9.847527920216372910e-02,1.608163027111446208e+00,3.453383939879241249e-02,1.294254776233558224e-02,6.155246658120006042e-03,1.548949331227138237e-02 -4.297606999999999857e+02,1.271725365303373545e+00,2.947074413629201528e-01,1.797898450592624875e-01,1.991089890510484017e-01,4.832236256798505991e+00,4.043359503886154727e-01,6.504046359160728374e-02,7.386897632481508047e-02,9.852865781269917744e-02,1.604093620066934456e+00,3.418793297956659871e-02,1.349704848166155546e-02,6.625148389946129181e-03,1.516617638183748173e-02 -4.306125999999999863e+02,1.268495443266808298e+00,2.953132157710712802e-01,1.793981452473644711e-01,1.985096509582881530e-01,4.833962008522611598e+00,4.001177236015598382e-01,6.498448309511234422e-02,7.362285674758028975e-02,9.838361863838808452e-02,1.601870836365117068e+00,3.467380480272518051e-02,1.296962492979433779e-02,6.456113527028670140e-03,1.545578581463319390e-02 -4.317101000000000113e+02,1.270262624447304090e+00,2.963422977999680130e-01,1.794011279866323250e-01,1.989135198637698720e-01,4.834908180940308497e+00,3.941714378940219810e-01,6.565338949697541171e-02,7.494028009440251159e-02,9.779969672157579064e-02,1.594493779002608136e+00,3.422380815728967574e-02,1.392532262382169261e-02,7.259394494052231160e-03,1.505468651756500242e-02 -4.328747999999999934e+02,1.269388003436428214e+00,2.972232164182328495e-01,1.793310350266197895e-01,1.990614991698737846e-01,4.837127834208483357e+00,3.887849620803476292e-01,6.606320186212760737e-02,7.461519349870626705e-02,9.772862007059819611e-02,1.591047861687492571e+00,3.396098251289800252e-02,1.378747295467747103e-02,7.546170293107418159e-03,1.472352530576614971e-02 -4.336641999999999939e+02,1.268166051019429474e+00,2.971819302107507887e-01,1.797335686797996435e-01,1.992633544928908429e-01,4.839848037559354665e+00,3.854667905873099265e-01,6.622727744946274586e-02,7.424664734415371836e-02,9.687069408999927911e-02,1.588077962790214182e+00,3.447510009792992269e-02,1.350906328189750705e-02,7.238138849240849382e-03,1.476749069232348444e-02 -4.344816999999999894e+02,1.269195669912194901e+00,2.990697474905109066e-01,1.792779089618193322e-01,1.983123284483016557e-01,4.841696117519910914e+00,3.823470622826086185e-01,6.595842649970490301e-02,7.386353562019051799e-02,9.780333916391369120e-02,1.583754915009711439e+00,3.304348149091096420e-02,1.318499512949619645e-02,8.476829001210875111e-03,1.492045423763088685e-02 -4.352880000000000109e+02,1.272996261395944906e+00,2.980261349533902537e-01,1.809509374055267295e-01,1.998670649993287141e-01,4.839607104435227569e+00,3.787191834864755968e-01,6.818859466679585979e-02,7.505144443992327330e-02,9.616846341353715855e-02,1.580475996064849564e+00,3.435788722598903666e-02,1.441873157978515452e-02,6.767815812006736098e-03,1.421779735656655830e-02 -4.361655000000000086e+02,1.270520436631980221e+00,2.980299238705619858e-01,1.788504838665572194e-01,1.983752905992387794e-01,4.841188214679004176e+00,3.767697522843878044e-01,6.575683656501953023e-02,7.409537771882143686e-02,9.859857526862197963e-02,1.581747347853815988e+00,3.221927823425659032e-02,1.451958752674895048e-02,8.673052853319974248e-03,1.406586354457621882e-02 -4.371413000000000011e+02,1.262171188723348214e+00,2.970450757653789742e-01,1.812538168234974767e-01,1.971054684846108573e-01,4.837607507407166274e+00,3.719722324382965795e-01,6.761714109574887277e-02,7.464504926300274956e-02,9.643119852409742787e-02,1.578642346386286199e+00,3.405887060737397554e-02,1.437503733330766642e-02,6.856400485852356952e-03,1.420955645753971611e-02 -4.380346999999999866e+02,1.264151905351921457e+00,2.959335897150072725e-01,1.792767016494027921e-01,1.967921788805584160e-01,4.838498866084719907e+00,3.673689828548987180e-01,6.747068126672516042e-02,7.568860494538998118e-02,9.732202304795364856e-02,1.578049859534151222e+00,3.274992824928391055e-02,1.366378594802533653e-02,8.240263382975343553e-03,1.375481589717793274e-02 -4.388528999999999769e+02,1.267590421911331422e+00,2.963615096428695028e-01,1.812517549604203138e-01,1.963664063663430048e-01,4.837682880968103838e+00,3.627274040437571401e-01,6.784845073360501466e-02,7.609424081489224445e-02,9.638541455091638455e-02,1.575525631539904214e+00,3.416446298596251957e-02,1.309016068354104667e-02,7.222250816650566119e-03,1.440295003800886806e-02 -4.396508999999999787e+02,1.270604894525609208e+00,2.966709294919790407e-01,1.788798027893065412e-01,1.968782171631645039e-01,4.836857327377921401e+00,3.586925616737586253e-01,6.620298284726919280e-02,7.651164940095325773e-02,9.722437483147126913e-02,1.574359928191380265e+00,3.296244947637019806e-02,1.310369961569139707e-02,8.705097969766151245e-03,1.360611688473531422e-02 -4.405421000000000049e+02,1.269551268923593046e+00,2.965147453759859331e-01,1.779823573495283029e-01,1.966166266202887258e-01,4.833597641665196676e+00,3.553149810738953640e-01,6.713041547762253758e-02,7.617246268146962707e-02,9.657872974297249113e-02,1.573593096255840873e+00,3.366089124423427004e-02,1.267880266383059062e-02,8.869520822352035955e-03,1.430782555867571304e-02 -4.415036000000000058e+02,1.275978857981305392e+00,2.967646843141206747e-01,1.783365551910473523e-01,1.969945007259690239e-01,4.832028812304879573e+00,3.527887257220501116e-01,6.703154610139978875e-02,7.622055344734551818e-02,9.736998222008096115e-02,1.568396959202319696e+00,3.393284525673045948e-02,1.293966949265690225e-02,8.824859554638547765e-03,1.422569360112047043e-02 -4.424725000000000250e+02,1.268902070877300226e+00,2.964750409723087010e-01,1.787065453847470342e-01,1.965559123558010268e-01,4.831840077631488484e+00,3.490520212241614573e-01,6.723819685587045791e-02,7.568724034083493257e-02,9.659807383403469505e-02,1.565196496131535442e+00,3.425391023681417790e-02,1.266088933833585395e-02,8.516209278280707784e-03,1.379145676069884474e-02 -4.433711000000000126e+02,1.278129014483006420e+00,2.979055902742276385e-01,1.787230847123572608e-01,1.961324622047523891e-01,4.833234232684485043e+00,3.463285894497396544e-01,6.755889298873124504e-02,7.518045754095081801e-02,9.626352875840921142e-02,1.564317519243053400e+00,3.351723393031741383e-02,1.217136521172451635e-02,9.035598661573798068e-03,1.449020592347199932e-02 -4.441739999999999782e+02,1.278176840307621243e+00,2.978916991553958726e-01,1.787615041708111308e-01,1.962511265828239815e-01,4.832621209057696099e+00,3.433032252306971177e-01,6.745801837811013502e-02,7.539722816826183172e-02,9.611050171507878881e-02,1.564506681395942511e+00,3.400785845329482027e-02,1.215830339282479577e-02,8.591787407783095520e-03,1.395755911420260009e-02 -4.449984999999999786e+02,1.280399642757756418e+00,2.980505602234415630e-01,1.785163162592429964e-01,1.962623338827425568e-01,4.831647537968929207e+00,3.401137927545490047e-01,6.778016329115360561e-02,7.580281730642643434e-02,9.582620009526768290e-02,1.562420464963292011e+00,3.439643343599121939e-02,1.206632186471296581e-02,8.536064366821707883e-03,1.381604981624784401e-02 -4.458949000000000069e+02,1.285849021156628469e+00,2.976419305592312159e-01,1.784726649815432664e-01,1.958612029813726063e-01,4.831843816706147265e+00,3.393092669818369433e-01,6.740162131066795848e-02,7.455007876305425052e-02,9.607777470256918806e-02,1.564928027254969045e+00,3.435384884075803891e-02,1.137651637241593287e-02,8.333162945586808368e-03,1.488085899391758393e-02 -4.467875999999999976e+02,1.286823496791013044e+00,2.977117802920471457e-01,1.786623730499270479e-01,1.961333746586007010e-01,4.829589123283464680e+00,3.359125468770940426e-01,6.842140321507790557e-02,7.553427648753990864e-02,9.578345184745747087e-02,1.563159989726636390e+00,3.505324599402075830e-02,1.172843102884298105e-02,7.850634472604048342e-03,1.418936174131797505e-02 -4.475912999999999897e+02,1.283310297598019067e+00,2.999057014072691318e-01,1.779326969332060693e-01,1.942695961907394131e-01,4.838049979999105688e+00,3.353903919732108552e-01,6.677278463199934344e-02,7.431961325178160216e-02,9.710957976180395468e-02,1.564202853857867836e+00,3.347859574403211358e-02,1.057198000881174466e-02,9.113669691915751714e-03,1.516417540972375688e-02 -4.484522999999999797e+02,1.282863230840361135e+00,2.992477298483455228e-01,1.788122316142695678e-01,1.957742124027633812e-01,4.838110168280469026e+00,3.337409403663703644e-01,6.692646197249826900e-02,7.415169253959250084e-02,9.588006467739645933e-02,1.561115088605351087e+00,3.520636171287444549e-02,1.138598421967548791e-02,7.065878549127602160e-03,1.475489484527245376e-02 -4.492989000000000033e+02,1.278676236252574094e+00,3.011683285699733315e-01,1.782143154937615437e-01,1.941960541783254446e-01,4.840958263538320594e+00,3.316030981973541181e-01,6.667702619635945682e-02,7.439053557303387798e-02,9.647877168025231764e-02,1.559724775142452557e+00,3.437638668363604544e-02,1.126166683585630435e-02,8.134876941660863087e-03,1.525374614195589007e-02 -4.501829000000000178e+02,1.282224197883452321e+00,3.019987739868315035e-01,1.788914269276721813e-01,1.941601027433815241e-01,4.836153456229418168e+00,3.308361186403014353e-01,6.738567614470025724e-02,7.359777122617730538e-02,9.569920871010059726e-02,1.561125340521607896e+00,3.567207435377645064e-02,1.106680629410786154e-02,6.526824959444232910e-03,1.513290418558113637e-02 -4.510552999999999884e+02,1.277623224821974546e+00,3.039116512024726546e-01,1.782751333416123796e-01,1.941166393309696758e-01,4.833334356430254886e+00,3.301975418433583664e-01,6.678153456109381381e-02,7.372015852457211582e-02,9.637213716520251494e-02,1.560552299519701425e+00,3.465797982935342469e-02,1.155186308964029074e-02,7.815133014082389917e-03,1.515694230787845848e-02 -4.520611000000000104e+02,1.278932924525234327e+00,3.033823777596920124e-01,1.779677878420883319e-01,1.947735529454995285e-01,4.833979003366317251e+00,3.283824966790234168e-01,6.787051312942804504e-02,7.318553155760862405e-02,9.590628990916721941e-02,1.560582661203242516e+00,3.473177661075804723e-02,1.229384106064088100e-02,6.946997612953229734e-03,1.506986895503892310e-02 -4.528659999999999854e+02,1.277903500443862139e+00,3.038792292629514114e-01,1.775409462256362925e-01,1.946544295219516940e-01,4.833918675050939306e+00,3.269953165292694974e-01,6.741781719735528977e-02,7.336667692923667938e-02,9.607506787585022578e-02,1.561014303025323846e+00,3.426102981955164717e-02,1.270839014372993070e-02,7.009914726603828222e-03,1.474995760232877817e-02 -4.538276000000000181e+02,1.274099367738708910e+00,3.046274862115651016e-01,1.781591904367936241e-01,1.934370839840569289e-01,4.834075074883868339e+00,3.265298135139278468e-01,6.728444383800477602e-02,7.237583012175879960e-02,9.603150674136828879e-02,1.562098166241643993e+00,3.429118291928731632e-02,1.127484612570689437e-02,6.715637625057932492e-03,1.636884067044930280e-02 -4.547148000000000252e+02,1.274147365641955520e+00,3.041145102881228079e-01,1.787226998909084430e-01,1.930965553126229028e-01,4.832506363015285800e+00,3.234688410750434784e-01,6.645651367585279912e-02,7.318146966546892895e-02,9.598348932231279274e-02,1.560781943375893821e+00,3.373320077630799496e-02,1.201336179576213692e-02,7.258288576281808624e-03,1.612070643155699701e-02 -4.555357000000000198e+02,1.277000308286185604e+00,3.051175480009351570e-01,1.785430886977434628e-01,1.923737003231013043e-01,4.827936982153016032e+00,3.240325213249304337e-01,6.641396802761492801e-02,7.214796279546040192e-02,9.640134263695243622e-02,1.562870186864060429e+00,3.363852023794915158e-02,1.130287693417476869e-02,7.171071927946359725e-03,1.729947376736803988e-02 -4.564189999999999827e+02,1.272796875922220128e+00,3.048461829903327258e-01,1.777741941081920629e-01,1.940391356369807752e-01,4.823890262098787574e+00,3.222551291783413707e-01,6.640031372693493139e-02,7.340843324906107248e-02,9.552628188938502851e-02,1.563097048765187846e+00,3.420813289051064660e-02,1.236365394222568859e-02,7.344902899435484800e-03,1.563977533068333647e-02 -4.573580999999999790e+02,1.267861286859013337e+00,3.061507227566201417e-01,1.770254661400376128e-01,1.935691950174053544e-01,4.820063321442352944e+00,3.219450332591168307e-01,6.688116092885747210e-02,7.289584891010267298e-02,9.504555812874326826e-02,1.562647225393141381e+00,3.375159020693442591e-02,1.223661305382478526e-02,7.611051034926291647e-03,1.612912113242870316e-02 -4.582445999999999913e+02,1.265126113931249074e+00,3.055049444891830279e-01,1.762264740916349437e-01,1.941801289443840228e-01,4.812515344812712925e+00,3.205594622928237269e-01,6.587603756821573675e-02,7.259429965871644352e-02,9.482785262766543766e-02,1.561653587963552248e+00,3.359326041968693777e-02,1.265980050853116046e-02,7.086183539882995319e-03,1.528470440175200284e-02 -4.590049999999999955e+02,1.264870137746268997e+00,3.067326932249711535e-01,1.757324428436550789e-01,1.938551973259582950e-01,4.808940092699010904e+00,3.196685079030994192e-01,6.598939097064432380e-02,7.241820907389039108e-02,9.452462940022587912e-02,1.561619753488060036e+00,3.318822301775883887e-02,1.235950587031373060e-02,7.721142199417607710e-03,1.554821087181354478e-02 -4.599859999999999900e+02,1.268617186626600724e+00,3.059220949361142194e-01,1.748068862702200632e-01,1.938572447410829291e-01,4.802586964676011760e+00,3.187302955630081924e-01,6.502849696670159885e-02,7.279569735455448942e-02,9.558594068174611214e-02,1.559627124374594942e+00,3.319992137578842151e-02,1.297772304871586818e-02,7.602591747407627665e-03,1.556943123732988654e-02 -4.608908000000000129e+02,1.268140373008282307e+00,3.072976245300853559e-01,1.750930156837688378e-01,1.928518037415772324e-01,4.799544388724015676e+00,3.170824106385788932e-01,6.554197857762507351e-02,7.323394453262213610e-02,9.508969145445300697e-02,1.560340923450525441e+00,3.307821889183937270e-02,1.293291134464054359e-02,7.810578503134657513e-03,1.583349978314949058e-02 -4.617131999999999721e+02,1.270752678265855140e+00,3.068147731781980525e-01,1.733476220139642532e-01,1.933153252793374244e-01,4.801482733390927571e+00,3.162012285508356557e-01,6.363367593092011942e-02,7.311508606418573586e-02,9.653632640519402286e-02,1.558912137906776074e+00,3.228302794079095095e-02,1.269354808408326707e-02,8.677460572432616620e-03,1.573555647392240603e-02 -4.626143000000000143e+02,1.268620347127681347e+00,3.068519069386159703e-01,1.734972360520743717e-01,1.941256679851798284e-01,4.800387678215282783e+00,3.152784971371723755e-01,6.480358177158218602e-02,7.362052029149861176e-02,9.544350864008635527e-02,1.556399120652671719e+00,3.286143493508808522e-02,1.298319480899215797e-02,8.388094518065325467e-03,1.589149144247051226e-02 -4.633706999999999994e+02,1.268251084525981565e+00,3.070404937215361341e-01,1.734300576365087054e-01,1.938840823026673765e-01,4.799143156006253186e+00,3.146932479678451466e-01,6.458334262215609245e-02,7.365605997251212234e-02,9.517993398239291136e-02,1.555311252550778178e+00,3.337051867049545262e-02,1.294739801906552579e-02,7.960744284370602220e-03,1.599243092329356158e-02 -4.642264999999999873e+02,1.269817038257186059e+00,3.075770032306553992e-01,1.720649408518687973e-01,1.948106774171703137e-01,4.799582846736327291e+00,3.130473835284335871e-01,6.312796456695379810e-02,7.354617678264506464e-02,9.553687907893565479e-02,1.557439234525753946e+00,3.278877470783733705e-02,1.308927776686021754e-02,8.352438683292717769e-03,1.529856963135142744e-02 -4.650919999999999845e+02,1.266390041327983829e+00,3.095031561600464776e-01,1.724289715406976953e-01,1.933815025602335369e-01,4.797256604377809097e+00,3.127295666910993033e-01,6.374666265118630881e-02,7.327487461890275222e-02,9.445782213314196651e-02,1.556794522486035115e+00,3.291431296685830288e-02,1.283798207811962661e-02,8.479534294444437958e-03,1.572166943401485939e-02 -4.660493999999999915e+02,1.273504817870116712e+00,3.093137039416598011e-01,1.714369703160216751e-01,1.945148116185640430e-01,4.794946774598682460e+00,3.111030694770395844e-01,6.224259105549689863e-02,7.438923188138729659e-02,9.483368734725641791e-02,1.555145305953726353e+00,3.211846788035402356e-02,1.425655174468118402e-02,9.004990966873984565e-03,1.473621918771780837e-02 -4.669275000000000091e+02,1.275744479453475355e+00,3.112795758171238436e-01,1.717477732308459459e-01,1.926720153133467117e-01,4.791071251394765085e+00,3.109747931109270169e-01,6.270009336085033413e-02,7.363260108581783092e-02,9.431585966894057149e-02,1.555149864178748009e+00,3.246055472058215208e-02,1.319255119615167504e-02,8.601210130039657620e-03,1.657975083360613278e-02 -4.678186000000000035e+02,1.279497762648323711e+00,3.094409527378573221e-01,1.720962708592158885e-01,1.941272415623506997e-01,4.793524202915559584e+00,3.095469225222492460e-01,6.130354497381290679e-02,7.434843889117162541e-02,9.483080108922338491e-02,1.556165895295187784e+00,3.235723649207279673e-02,1.339663645633459854e-02,8.744476683955056812e-03,1.583320515355071678e-02 -4.686942000000000235e+02,1.284517731867267143e+00,3.106642683256489734e-01,1.730536849506347785e-01,1.937432765367652077e-01,4.789665589197955597e+00,3.092710840504198089e-01,6.184563690943950531e-02,7.357608903834053637e-02,9.409819779416953023e-02,1.559503230611974711e+00,3.293277759776443159e-02,1.275800872326104951e-02,8.920496357573406629e-03,1.692071845108938932e-02 -4.695271000000000186e+02,1.285668223372705254e+00,3.089756093763160183e-01,1.739034600842971345e-01,1.943005860107949179e-01,4.783222530867363709e+00,3.075259660370958104e-01,6.103875968687116904e-02,7.458466961328008571e-02,9.439396941296823718e-02,1.559625754672821829e+00,3.268123717712997922e-02,1.322618505697398250e-02,8.930416582955538057e-03,1.611207129486955450e-02 -4.704809999999999945e+02,1.289219699411808140e+00,3.105142307354112341e-01,1.742965539346290615e-01,1.938208289404980966e-01,4.783036836668340896e+00,3.073715366704292684e-01,6.105167454814602879e-02,7.361544672234296427e-02,9.539545737123350522e-02,1.558156835441425248e+00,3.275231174172686666e-02,1.247892846310083570e-02,9.683352195187455713e-03,1.670926785930189340e-02 -4.714513999999999783e+02,1.280547761407759833e+00,3.088119320896883235e-01,1.734660432433816069e-01,1.953719742312042540e-01,4.782904466337924099e+00,3.066470675311689376e-01,6.187460864079843970e-02,7.431964521441164484e-02,9.517556815637873147e-02,1.558251120265483181e+00,3.286494483715066139e-02,1.373424926657385026e-02,9.845046306301730166e-03,1.576576681103332087e-02 -4.722105999999999995e+02,1.278741676554273621e+00,3.099543291976353809e-01,1.734621868913963916e-01,1.945895502498426743e-01,4.783139254975049326e+00,3.070084562738315537e-01,6.129018219630816278e-02,7.364916540569366177e-02,9.555458826908402870e-02,1.560969090822354577e+00,3.226037438156172110e-02,1.316938693106653457e-02,1.084030142434710964e-02,1.623875588884551857e-02 -4.731646999999999821e+02,1.278717944536321038e+00,3.103001824752821824e-01,1.743421879970912247e-01,1.958308511650622696e-01,4.779449576810302247e+00,3.059481361656470333e-01,6.238842466161108324e-02,7.489442166439397308e-02,9.480865380765723938e-02,1.560625177300029698e+00,3.371777788235458262e-02,1.341403547328122794e-02,1.035937038498641050e-02,1.634479650888899516e-02 -4.740643000000000029e+02,1.280003265551023839e+00,3.106528886601891970e-01,1.740825370850752618e-01,1.961289551163007405e-01,4.778945447015319203e+00,3.066127294029605821e-01,6.250835931216514041e-02,7.497259755144161653e-02,9.551429099667106681e-02,1.562195755976130584e+00,3.412406923519539781e-02,1.312924327455305962e-02,1.062380514493811712e-02,1.646208619353169145e-02 -4.749639999999999986e+02,1.279501669787980855e+00,3.120056108071415091e-01,1.745113595919896010e-01,1.950396897363813331e-01,4.775754408094522674e+00,3.059595436981566996e-01,6.301687293445593085e-02,7.547819416206086318e-02,9.504396507057011334e-02,1.563406896666002854e+00,3.416760012478428643e-02,1.374106703198767210e-02,1.111242056212768947e-02,1.649063000044307184e-02 -4.758244000000000256e+02,1.282032112603048057e+00,3.117232415414299407e-01,1.747532363908633202e-01,1.959004467614991196e-01,4.771623744021312952e+00,3.055640885986106170e-01,6.239571819383193940e-02,7.476266409609502728e-02,9.493922615913390206e-02,1.563976328026513318e+00,3.411124187848774136e-02,1.329766938715130214e-02,1.088044622730312272e-02,1.662804806249609801e-02 -4.767139999999999986e+02,1.283173131966991454e+00,3.103880054040658587e-01,1.748184549627779250e-01,1.963035294832117805e-01,4.770093143828782800e+00,3.061000198056153532e-01,6.352111692193208869e-02,7.478098265531155087e-02,9.463294760947180140e-02,1.560997407172312501e+00,3.406624839933997118e-02,1.425074558519950907e-02,1.085233903094859342e-02,1.655887870085751001e-02 -4.775260999999999854e+02,1.286433351876046460e+00,3.097927651601738441e-01,1.738141149883968284e-01,1.968249887018816979e-01,4.768064851573257101e+00,3.068428746048397215e-01,6.245902463006335059e-02,7.443025962238722371e-02,9.562227225337813219e-02,1.561881574715275223e+00,3.416385349719265607e-02,1.379915688906439841e-02,1.047516129127996909e-02,1.722191765488217952e-02 -4.783362999999999943e+02,1.284083845144226244e+00,3.101097262349068462e-01,1.732919876403842818e-01,1.968323819918510187e-01,4.767219810545286762e+00,3.078773096627333006e-01,6.271496645039732754e-02,7.412287772245157447e-02,9.552567751411958352e-02,1.561972937201528078e+00,3.441346641534497042e-02,1.371172853811733483e-02,1.033549415731215004e-02,1.746733968769567658e-02 -4.792973000000000070e+02,1.285878020483459672e+00,3.093071669430775272e-01,1.731493741952467857e-01,1.984883373830173270e-01,4.770829005073153439e+00,3.075370340475921394e-01,6.320927191985031834e-02,7.530539477982467478e-02,9.595755993128085581e-02,1.562235701061464699e+00,3.419502275480626463e-02,1.595716153060899867e-02,1.092556071524443395e-02,1.604269166944485847e-02 -4.800242999999999824e+02,1.284984104016387185e+00,3.109558253057833621e-01,1.732903720397994674e-01,1.981027081163851955e-01,4.768997893561857104e+00,3.092748836179368688e-01,6.351067220127412649e-02,7.394653855419075494e-02,9.593393644637132622e-02,1.562178924246942602e+00,3.464117466278342217e-02,1.435651601270554120e-02,1.009613139402779081e-02,1.793813064855642736e-02 -4.809486999999999739e+02,1.283466268851047420e+00,3.120995271408945060e-01,1.733421335385515460e-01,1.968539100407728504e-01,4.765999853995918301e+00,3.086442583464160672e-01,6.469020342918836708e-02,7.401821063558450264e-02,9.508524253743895482e-02,1.563683633242550775e+00,3.505852163950728267e-02,1.316855708028329131e-02,1.036593489595083462e-02,1.862491370983385131e-02 -4.818043999999999869e+02,1.284574756382867111e+00,3.108085472622917345e-01,1.731980370778742617e-01,1.979614029493706739e-01,4.769168102755258154e+00,3.080107971450546933e-01,6.569486962895684790e-02,7.514449166625988830e-02,9.402969425080415222e-02,1.564273673074991766e+00,3.569363049832041668e-02,1.491884660884836011e-02,9.468439867996003567e-03,1.680887448462314859e-02 -4.827567000000000235e+02,1.280360974087400461e+00,3.132684436045755638e-01,1.718894002238544882e-01,1.965187601176967280e-01,4.772864814004675438e+00,3.098888597672531109e-01,6.504199940362574706e-02,7.360387883782378016e-02,9.543603570961865790e-02,1.568009979736697090e+00,3.454163414124553078e-02,1.406658018652821862e-02,1.025302712195680366e-02,1.806010907459362769e-02 -4.836037000000000035e+02,1.276624389171770346e+00,3.124872120209030157e-01,1.728042663671708890e-01,1.964866471214252175e-01,4.775541812605034409e+00,3.100039706578255339e-01,6.624543306998284531e-02,7.381545117303386916e-02,9.382622799742945663e-02,1.569371106798686188e+00,3.612695582108917114e-02,1.502939639302107444e-02,8.433051429474064387e-03,1.755689320141862186e-02 -4.845110999999999990e+02,1.274520327650074947e+00,3.138332440227656339e-01,1.719757869738177403e-01,1.951404885723647675e-01,4.777227587847216128e+00,3.117011412613420740e-01,6.431168370283026070e-02,7.272276631940408076e-02,9.480893160227263361e-02,1.569554114539002398e+00,3.450480716652266910e-02,1.408452542887166092e-02,9.974764358732512992e-03,1.900932889274826315e-02 -4.854785999999999717e+02,1.274069336400637464e+00,3.141484799065805689e-01,1.728862097281233523e-01,1.947371582874754536e-01,4.774111728746166072e+00,3.131590010806034607e-01,6.547344188318193758e-02,7.345353652388908472e-02,9.417675179331486124e-02,1.569988686424886648e+00,3.627469423425627726e-02,1.453673373222491919e-02,8.782042899527497948e-03,1.903436091711576544e-02 -4.863435999999999808e+02,1.275354283981637860e+00,3.127137084003998591e-01,1.727304504768055748e-01,1.950240184656162334e-01,4.775457275632691179e+00,3.133882473499204901e-01,6.494775174963672570e-02,7.336335580636893505e-02,9.380781861083263562e-02,1.571821892313571833e+00,3.630696358885687758e-02,1.442072603161069499e-02,8.745354231177393523e-03,1.844670520951648129e-02 -4.871865999999999985e+02,1.273317547855776333e+00,3.134608760773910374e-01,1.725778273700958321e-01,1.947533108425857085e-01,4.776183910916752318e+00,3.147921660209868078e-01,6.490962615429193838e-02,7.252553883531301371e-02,9.267630596557785427e-02,1.571089376288016259e+00,3.590267807995922711e-02,1.434766264716491602e-02,8.903302618547520586e-03,1.853199389223565002e-02 -4.879361000000000104e+02,1.273468764163847355e+00,3.137469137652524886e-01,1.714894800639993333e-01,1.950090377767290106e-01,4.776310132124694796e+00,3.145069561306157446e-01,6.372247775999230479e-02,7.322376957956552856e-02,9.364666636150098533e-02,1.571647101556021386e+00,3.506346307498356407e-02,1.480797320748073603e-02,9.938247706263440839e-03,1.754114328620368091e-02 -4.887606000000000108e+02,1.270899761537975792e+00,3.135831572694069425e-01,1.720731049699350812e-01,1.955221730262779456e-01,4.775871182840101703e+00,3.156591267173068927e-01,6.421722898963871939e-02,7.296341202021126848e-02,9.289573075487608800e-02,1.573108151766309692e+00,3.570833975537483773e-02,1.465643603360523503e-02,9.291030059666194330e-03,1.746187950361793861e-02 -4.896453999999999951e+02,1.272429803254412795e+00,3.156816985015026833e-01,1.714681539009630107e-01,1.947748834459125944e-01,4.773657598808548563e+00,3.178104089318235514e-01,6.545502958421149653e-02,7.250679849664930232e-02,9.289493929792072557e-02,1.574299696448211883e+00,3.584697717408641404e-02,1.405897975794095922e-02,9.650902681474199385e-03,1.789717665790187262e-02 -4.905314000000000192e+02,1.273054469030777014e+00,3.164348982145520628e-01,1.712680238173778513e-01,1.963416820825444609e-01,4.773433071301650621e+00,3.171136029425544178e-01,6.551020368632742841e-02,7.365845897162226485e-02,9.414077775284807048e-02,1.576797522975507571e+00,3.574931974036626992e-02,1.469229392510709720e-02,9.868169495594936169e-03,1.677255787732034875e-02 -4.914954000000000178e+02,1.273931392227315662e+00,3.167125805463519850e-01,1.717392924617200944e-01,1.970226467961919692e-01,4.774701175664317176e+00,3.176739523790932940e-01,6.594626623180518954e-02,7.405954356794919313e-02,9.526001750804050094e-02,1.574099105516286512e+00,3.611839646906930129e-02,1.505160889274012592e-02,9.938804286099126029e-03,1.635420911864460258e-02 -4.922228000000000065e+02,1.271057443842358303e+00,3.172942827011423494e-01,1.719137517785015445e-01,1.967584600358802671e-01,4.772441418742980446e+00,3.188164133949588641e-01,6.587110813060954861e-02,7.360275571462485122e-02,9.523690210144997170e-02,1.575087210401904692e+00,3.652211859571742603e-02,1.401390778069400156e-02,9.853388209677765852e-03,1.653684721592185713e-02 -4.930926999999999794e+02,1.275891848362978420e+00,3.186919112417390676e-01,1.721469734283703479e-01,1.941561333456476024e-01,4.772369465386351095e+00,3.205602283327685376e-01,6.556624272969036049e-02,7.335422505548935823e-02,9.560305504955990408e-02,1.576610113025665338e+00,3.697002405625619825e-02,1.369635465564275623e-02,1.044379798610700627e-02,1.678170383150015196e-02 -4.939979000000000156e+02,1.274867685342866874e+00,3.178574437128179886e-01,1.722062572753184917e-01,1.946179077165722249e-01,4.770471493680457087e+00,3.210923337952627521e-01,6.496145415073314999e-02,7.475274234875317614e-02,9.652848791704632392e-02,1.579379001089643797e+00,3.758037660048746398e-02,1.401275362733722663e-02,9.768015471628102575e-03,1.633963315513742298e-02 -4.948910000000000196e+02,1.281748464956775191e+00,3.201085219316763819e-01,1.710815865017820681e-01,1.929162921265762665e-01,4.772440577414353235e+00,3.225713084581380286e-01,6.541530474277598706e-02,7.482859630238400395e-02,9.721355839153578149e-02,1.575839853133059743e+00,3.712680115746732484e-02,1.434457390722812531e-02,1.115812387553227758e-02,1.602485476559807956e-02 -4.958435000000000059e+02,1.281752611762112082e+00,3.205467777227066217e-01,1.719108516837038192e-01,1.951443163141535209e-01,4.766819904020879406e+00,3.225658461637296304e-01,6.667874442139098967e-02,7.556385401035947691e-02,9.617168882375870531e-02,1.574201517209013135e+00,3.840079624225815891e-02,1.453986797681167467e-02,9.813481199783979925e-03,1.563345559113166194e-02 -4.966542000000000030e+02,1.288843623811586347e+00,3.217957435710447345e-01,1.704836506142918817e-01,1.945517542444505366e-01,4.767877199066331784e+00,3.240174060029860081e-01,6.467824849064401915e-02,7.490580955940831509e-02,9.861684335215264996e-02,1.573972132684791747e+00,3.614219325857124382e-02,1.452194920588847915e-02,1.215503973896174018e-02,1.590921432286748760e-02 -4.975842000000000098e+02,1.285861050970438013e+00,3.219572408403419961e-01,1.733815834848685677e-01,1.964117127039659016e-01,4.770026838111981249e+00,3.240871564856517839e-01,6.723813165836817207e-02,7.564716287468914446e-02,9.763797315000039001e-02,1.573162292898281134e+00,3.818832771640048168e-02,1.486533436574400194e-02,9.808624258817288943e-03,1.557686105240247559e-02 -4.984490000000000123e+02,1.293766771179336139e+00,3.230118034306819763e-01,1.709592260072660963e-01,1.960817580519930436e-01,4.772946839431389421e+00,3.248091873027360577e-01,6.624446230401699609e-02,7.579321685477713455e-02,9.955504641254397935e-02,1.572686018999755131e+00,3.693248333432305741e-02,1.495640318522931458e-02,1.131444636550307803e-02,1.575819103754346612e-02 -4.993206999999999880e+02,1.298058450174597755e+00,3.248812250649029121e-01,1.724910153469217666e-01,1.959376023395357214e-01,4.772213332029896726e+00,3.240939197086878942e-01,6.765808628492857302e-02,7.614986649255955919e-02,9.769837817962359616e-02,1.575296321696975532e+00,3.769361088818577732e-02,1.429287165734681453e-02,1.022702358417364177e-02,1.651299064402256267e-02 -5.002278999999999769e+02,1.304004919665154860e+00,3.260102258170181622e-01,1.711673867779964220e-01,1.960515875372093597e-01,4.777367973600333606e+00,3.253890453979738639e-01,6.697499420624056232e-02,7.759125868523590597e-02,9.952421907523492650e-02,1.577826002768527580e+00,3.638492809138076101e-02,1.457973572575145538e-02,1.147780781863722011e-02,1.618242290383942183e-02 -5.011515999999999735e+02,1.300124042670236069e+00,3.262677676847512420e-01,1.719565674084331808e-01,1.966802281802216279e-01,4.780770130601945667e+00,3.268461167768780817e-01,6.815395962594990309e-02,7.770066131236957885e-02,9.891998483975462941e-02,1.578399146774714712e+00,3.680407237787353125e-02,1.550970568817400252e-02,1.059345142719650759e-02,1.583298729771875912e-02 -5.020203999999999951e+02,1.304916215688263437e+00,3.270391898161282285e-01,1.730352233333221634e-01,1.970838783772701497e-01,4.781518972874023277e+00,3.285285052820402507e-01,6.710149287070499291e-02,7.784047492641422983e-02,9.961555223885171229e-02,1.580998879332659035e+00,3.614113605313334920e-02,1.523292987604413229e-02,1.068992294948732658e-02,1.653166912212084005e-02 -5.029361999999999853e+02,1.301367363853320969e+00,3.259595705434579771e-01,1.734166025518714127e-01,1.967317034849066504e-01,4.780306193976948670e+00,3.298361862861679539e-01,6.786045530006223903e-02,7.853011126990827595e-02,9.896672913392481896e-02,1.578801711354590243e+00,3.684939018603961003e-02,1.578595988706898989e-02,1.002278401188611001e-02,1.637178069614281251e-02 -5.036804000000000201e+02,1.303685845297305690e+00,3.261418850882511489e-01,1.729188311497131258e-01,1.967256423425686462e-01,4.778486315097262072e+00,3.306788980987416249e-01,6.763545488681463325e-02,7.904429764301211525e-02,9.986025392176893500e-02,1.580318904018471304e+00,3.642811063446527164e-02,1.530396294322440565e-02,1.047088516944879623e-02,1.666920692872780885e-02 -5.046469999999999914e+02,1.304456902394592888e+00,3.263928134768454559e-01,1.732779482466227650e-01,1.964385254874311260e-01,4.779413976438797285e+00,3.318799372703848949e-01,6.839737933007597470e-02,7.909604210676784986e-02,9.832477998111750772e-02,1.581784061733213287e+00,3.693008580117468354e-02,1.563539922273782246e-02,1.025313740211876434e-02,1.643952108497626075e-02 -5.055659999999999741e+02,1.303323936803514549e+00,3.272699472030682344e-01,1.725661482579501638e-01,1.982984304123888430e-01,4.783469058894391779e+00,3.337302602206493329e-01,6.790723493493773522e-02,7.981501897495837938e-02,9.957882383514135571e-02,1.581661609157790416e+00,3.572389111483981194e-02,1.572520890403117377e-02,1.092234357589463856e-02,1.605010550419971871e-02 -5.064107999999999947e+02,1.309607161614738891e+00,3.286974798821105104e-01,1.728634029607796219e-01,1.982051770080742181e-01,4.785621789735632348e+00,3.364046008740234628e-01,6.949232798361558439e-02,7.871609135200557938e-02,9.829645043970026974e-02,1.584440570202364951e+00,3.622981046171142028e-02,1.582299639479192721e-02,1.028918492999147949e-02,1.609260890238736752e-02 -5.071807999999999765e+02,1.314229312486089318e+00,3.290938575889345574e-01,1.717527003245039596e-01,1.987356615836254892e-01,4.789699055602831379e+00,3.377555720990563781e-01,6.782676613770785568e-02,7.933538274411305879e-02,1.000749035556474098e-01,1.588230478476777785e+00,3.478537526099956256e-02,1.547131099735092608e-02,1.113374704814457106e-02,1.629001809487370944e-02 -5.080149000000000115e+02,1.313972308661605748e+00,3.283587550051363380e-01,1.719014466613577596e-01,2.004995902947605546e-01,4.791369011707396375e+00,3.390496444497039796e-01,6.749389894842960924e-02,8.026632804376748753e-02,1.001253917554302264e-01,1.591309303905644290e+00,3.479204137344144021e-02,1.587330953699699065e-02,1.054054628308453978e-02,1.599759943759690439e-02 -5.089180999999999813e+02,1.321256122921341758e+00,3.297382346284654098e-01,1.723529115413230950e-01,2.004735273994352196e-01,4.797005868282811392e+00,3.421430140715899793e-01,6.693523519878923078e-02,8.029514462571440969e-02,1.007363449326696692e-01,1.590099721727056270e+00,3.512750459693680938e-02,1.522367437537815171e-02,1.081778072157739412e-02,1.653577395421008955e-02 -5.097991999999999848e+02,1.323965591007466802e+00,3.293160881840987986e-01,1.739346193253338280e-01,2.012628110415846938e-01,4.799779284552285752e+00,3.450490750598274037e-01,6.847655776880044731e-02,8.038229887671835550e-02,9.941044158950909648e-02,1.593130015489194751e+00,3.751759143183502898e-02,1.474513211377245780e-02,8.708942115970619291e-03,1.655065911316696420e-02 -5.105244000000000142e+02,1.331732035815753612e+00,3.298562910672582227e-01,1.727166797378244523e-01,2.009317501253405358e-01,4.801161240467191504e+00,3.472665091881235178e-01,6.789546613896427218e-02,8.052424618933234912e-02,9.997940679830605304e-02,1.595562570831023042e+00,3.718666071451626198e-02,1.462934203571725211e-02,9.359031405840434470e-03,1.639722823757645831e-02 -5.114764999999999873e+02,1.338443632778759884e+00,3.300229913711513752e-01,1.738144705907903320e-01,2.025484611482157304e-01,4.807144942838276869e+00,3.501965180220500962e-01,6.731841834768154120e-02,8.145476059602280161e-02,1.013136419612665762e-01,1.598339750280684868e+00,3.660024967211296387e-02,1.435427592040439126e-02,1.003700625718559336e-02,1.587294468199365594e-02 -5.123890999999999849e+02,1.346438409003405390e+00,3.330953313394776072e-01,1.732724648285255964e-01,2.016082120527759314e-01,4.812435361775344589e+00,3.546645935582042330e-01,6.754143293647654755e-02,8.068516725387051003e-02,1.013599670390203378e-01,1.600171744627525650e+00,3.739748323968328236e-02,1.317173687974837470e-02,9.609224988371994902e-03,1.598487131922260440e-02 -5.132685999999999922e+02,1.339318256947527930e+00,3.321075572109726259e-01,1.745776327893330815e-01,2.032714184773504462e-01,4.818687827017466674e+00,3.548021332829058849e-01,6.734965225383104936e-02,8.187439822579503645e-02,1.019592608961567004e-01,1.598216684066276594e+00,3.702528399833654449e-02,1.359407206695933956e-02,9.884302443529738302e-03,1.521472634776685484e-02 -5.141137999999999693e+02,1.341632354141127692e+00,3.329168262637736131e-01,1.748582253807440812e-01,2.021717653949499649e-01,4.821884282697666002e+00,3.584629461951462925e-01,6.728155333868193755e-02,7.959432624983286964e-02,1.023884272817701668e-01,1.601125742958503961e+00,3.718374229087709204e-02,1.251159127903911372e-02,9.722545542722201353e-03,1.582435080218619339e-02 -5.150354999999999563e+02,1.349071242865948594e+00,3.329287297564463843e-01,1.742936969885667264e-01,2.043572752869703690e-01,4.826138995575013801e+00,3.600269931614041852e-01,6.798913911970397295e-02,8.227775343784936302e-02,1.034606245822765613e-01,1.599323493405130137e+00,3.718972680760952720e-02,1.386410936323662080e-02,1.004025035012727496e-02,1.433699313554538494e-02 -5.158962000000000216e+02,1.353421945688715322e+00,3.362970713376860488e-01,1.745859323711431710e-01,2.031824113356820172e-01,4.833357870206904217e+00,3.659928362544107028e-01,6.772350126615502008e-02,8.049592200772093253e-02,1.034982503812409416e-01,1.602181431301068715e+00,3.704209338417675801e-02,1.239134432764199545e-02,9.927277029133541042e-03,1.640203677159779438e-02 -5.167566000000000486e+02,1.354471724379219477e+00,3.368547917672917169e-01,1.760397668450862096e-01,2.057957833489268973e-01,4.835425126586045508e+00,3.684622744114880444e-01,6.755142818903051016e-02,8.150996718854958134e-02,1.035832226383413962e-01,1.603880857128056059e+00,3.725243183298550254e-02,1.279341505672598744e-02,9.222981597973273216e-03,1.652090821652785896e-02 -5.178687999999999647e+02,1.359461085592446494e+00,3.394662162012136997e-01,1.772304059711939939e-01,2.060461715750566691e-01,4.843567340551959255e+00,3.731328350239948577e-01,6.802312515433805995e-02,8.183401228953013362e-02,1.045297189719046338e-01,1.606928050377195216e+00,3.778679713095606241e-02,1.226192640350056567e-02,8.933541063412625549e-03,1.771470180812598216e-02 -5.187729000000000497e+02,1.365984619017838853e+00,3.395803374533485353e-01,1.777344785346607892e-01,2.065376365498888256e-01,4.848430332726103131e+00,3.761516045913055883e-01,6.787681567301286079e-02,8.183179804514248423e-02,1.047064571123658139e-01,1.609415064152214248e+00,3.725201939876821022e-02,1.265237729424986690e-02,9.344343886256323284e-03,1.733671092470134845e-02 -5.196105999999999767e+02,1.363014854105354834e+00,3.417905469887048131e-01,1.790232688206114808e-01,2.069201742199362204e-01,4.850459547531322357e+00,3.789283094041016042e-01,6.814967569195179431e-02,8.191969295428533360e-02,1.052612355009649031e-01,1.612008272555305766e+00,3.699448028541919842e-02,1.181527454960404344e-02,9.195373136077100718e-03,1.808250278501866148e-02 -5.204552999999999656e+02,1.368766048981351346e+00,3.426956605053136928e-01,1.791691020083772679e-01,2.072728526378085634e-01,4.850100924673677483e+00,3.827159146849175020e-01,6.868769187522257014e-02,8.154320126453967754e-02,1.055208776246546187e-01,1.611478706892477408e+00,3.714940283116752173e-02,1.236783443788874726e-02,9.296112662157934858e-03,1.787296834969415160e-02 -5.213198999999999614e+02,1.376116145511864675e+00,3.435433671173549475e-01,1.797916388781490848e-01,2.072900670912656562e-01,4.853382856108761523e+00,3.862558032674356934e-01,6.873632997513956511e-02,8.177821304774141042e-02,1.058179468099454956e-01,1.612909909930996921e+00,3.636790004171445989e-02,1.181245668852927422e-02,9.345422101511013935e-03,1.907724165025603824e-02 -5.221820999999999913e+02,1.371573910825334197e+00,3.430939989382389976e-01,1.799705406104083749e-01,2.079377530309669542e-01,4.858656167525217562e+00,3.905371083108297725e-01,6.876958046047346174e-02,8.183576486271720851e-02,1.056782444579474900e-01,1.616785131009510934e+00,3.670684249193795212e-02,1.274615784095878279e-02,8.291550371998766822e-03,1.830605860143957875e-02 -5.230607999999999720e+02,1.373145062569498975e+00,3.445008946754426482e-01,1.794680268917809018e-01,2.086896500593882486e-01,4.860236444521698118e+00,3.934861607151054486e-01,6.809286086335550325e-02,8.271886917085932711e-02,1.067758483611683795e-01,1.617774058860230069e+00,3.504002776129726271e-02,1.317072970968102830e-02,9.100055920198968362e-03,1.857869952937307723e-02 -5.238610999999999649e+02,1.373391747939304741e+00,3.461816150204227727e-01,1.805196888032697400e-01,2.072830204809533450e-01,4.863780040672210703e+00,3.991694554319780153e-01,6.956136604817499125e-02,8.204617345540311801e-02,1.058681602750093376e-01,1.618921261265228395e+00,3.668255977727610806e-02,1.212966268891836619e-02,7.472776667324515509e-03,2.059805739774034361e-02 -5.247237000000000080e+02,1.375391734403776045e+00,3.454724328483541607e-01,1.798835269492589373e-01,2.077574988982964221e-01,4.865257585476497226e+00,4.020894024066774541e-01,6.796023036506004811e-02,8.362477841520760125e-02,1.066035688711498564e-01,1.620467428049342962e+00,3.639258502609138413e-02,1.389345600209146436e-02,7.164563136467211324e-03,1.941863810768486298e-02 -5.256657999999999902e+02,1.377526931603332283e+00,3.469755841873159441e-01,1.802205404738338457e-01,2.087355497990323050e-01,4.870583556628906408e+00,4.064345054809490598e-01,6.786820738428836486e-02,8.462033576521074685e-02,1.068770999981649983e-01,1.623456649460454315e+00,3.596129315517791747e-02,1.439199554597686559e-02,8.509934860609941198e-03,1.930245560128449056e-02 -5.265235000000000127e+02,1.386526881683460388e+00,3.512868720874514628e-01,1.793262660382616835e-01,2.075122409990509120e-01,4.870764806718921314e+00,4.125790226366747859e-01,6.826176281574078408e-02,8.303288828290167345e-02,1.074881623022468369e-01,1.628187748407247781e+00,3.572296967082055907e-02,1.283698574376497363e-02,8.939995592690180848e-03,2.132011665720372207e-02 -5.273982999999999493e+02,1.389739828306065128e+00,3.524082909788568418e-01,1.790613176006633223e-01,2.080137310606168799e-01,4.873889447727441926e+00,4.163300108730392246e-01,6.790880853352529445e-02,8.457061512810284953e-02,1.077570413116842735e-01,1.630471800616959843e+00,3.544772827778872037e-02,1.343796979864542163e-02,9.255800595870222747e-03,2.121802809096565157e-02 -5.283141000000000531e+02,1.390568036224993254e+00,3.526767655025807024e-01,1.801705136507955052e-01,2.087776396954428293e-01,4.877933403364506759e+00,4.219677624143578498e-01,6.871623699248452510e-02,8.357652629757131302e-02,1.075260137513697478e-01,1.637237823162256634e+00,3.588528655581084414e-02,1.303439765446859355e-02,9.710583528551586241e-03,2.167876054744631575e-02 -5.290013999999999896e+02,1.386290780267709133e+00,3.521422820484576555e-01,1.814587667683207062e-01,2.107312927800397973e-01,4.881260536944648010e+00,4.242542291178192926e-01,6.929257404329422498e-02,8.500528298245359216e-02,1.070571332177228524e-01,1.637428292908500005e+00,3.744945425412180007e-02,1.421135946751479057e-02,8.414850351050953692e-03,2.047951130721972074e-02 -5.301446999999999434e+02,1.392910799499143204e+00,3.538832831490928976e-01,1.814449549688843533e-01,2.099236124746309828e-01,4.889510968959299042e+00,4.303664108789271303e-01,6.844460294699611369e-02,8.548350373978667871e-02,1.092515480779476800e-01,1.640187815588451947e+00,3.637536245624102549e-02,1.408737028873879166e-02,9.938326496597427173e-03,2.094091753828801472e-02 -5.310502999999999929e+02,1.391929929579838854e+00,3.555187079913396109e-01,1.823074963422621764e-01,2.098031748531316854e-01,4.899075468568500291e+00,4.372304994949858248e-01,6.789576520668749726e-02,8.520031884004569678e-02,1.089563384614923303e-01,1.646988162228366637e+00,3.735301984204986159e-02,1.367105769998683967e-02,9.388082562529848074e-03,2.122618881430553273e-02 -5.317677999999999656e+02,1.395709935570444760e+00,3.574028772680692967e-01,1.824965999772243663e-01,2.107097857814526076e-01,4.906344870982292328e+00,4.411622677016229233e-01,6.789042700942504727e-02,8.678860513030572932e-02,1.094745681703095386e-01,1.647579861987893857e+00,3.707786648213663022e-02,1.409080207244915034e-02,9.757248441514709825e-03,2.166982478275659985e-02 -5.326235000000000355e+02,1.402475221243651093e+00,3.592208810051505941e-01,1.840823349358701178e-01,2.113590719719653510e-01,4.911240940900651886e+00,4.461449967684893991e-01,6.850851051481865461e-02,8.706944785394099551e-02,1.084850109899083148e-01,1.650740646762994590e+00,3.853963580675023870e-02,1.337043873604612521e-02,9.210578443980543817e-03,2.193925811361424616e-02 -5.334937999999999647e+02,1.408789932878756090e+00,3.592716770675028481e-01,1.834093860644359086e-01,2.124732180967977557e-01,4.921995738329671077e+00,4.515563571533771636e-01,6.713179667037380560e-02,8.829868692736508873e-02,1.106070258856997612e-01,1.652878110180529880e+00,3.730214053218314230e-02,1.403158511222063476e-02,1.102932711426996004e-02,2.134851381623526639e-02 -5.344166999999999916e+02,1.405239318464100773e+00,3.615984034315714579e-01,1.835714171187262655e-01,2.129442909265682471e-01,4.932948525617596225e+00,4.586711926862987454e-01,6.780908519208145302e-02,8.775487581306028184e-02,1.103660115764622252e-01,1.658859004718929109e+00,3.833918292283150508e-02,1.351584056698512670e-02,1.066024027952935938e-02,2.150839779273128194e-02 -5.350661999999999807e+02,1.409387080132849412e+00,3.632126497983311220e-01,1.845163950349847370e-01,2.137297309861118655e-01,4.939523771199726632e+00,4.628159624227810021e-01,6.841913330527654713e-02,8.784033250665095049e-02,1.103559347188701190e-01,1.661290536117447703e+00,3.875124812800029295e-02,1.323457616746487320e-02,1.083335431295454065e-02,2.169236953988201710e-02 -5.358316999999999553e+02,1.418635931885224633e+00,3.636671639585846161e-01,1.844381705498866486e-01,2.150355060005960661e-01,4.946082162064966425e+00,4.662306357685039870e-01,6.954170953180047188e-02,8.960967195464725199e-02,1.118968859772562219e-01,1.663714374373243876e+00,3.929213769428965136e-02,1.435766093262763610e-02,1.083341960719859387e-02,2.119815481724598993e-02 -5.367866000000000213e+02,1.425355953943975074e+00,3.667488559266914860e-01,1.842859131633878822e-01,2.156598403414007326e-01,4.954990180971066138e+00,4.731700316100084791e-01,6.945221679428309480e-02,8.833199691616995530e-02,1.128584171771847555e-01,1.669931646914426082e+00,3.920706158386161322e-02,1.420961226974259972e-02,1.086442306435395078e-02,2.216295219461889010e-02 -5.377817999999999756e+02,1.433195553142932788e+00,3.674554711957175313e-01,1.860962365887537384e-01,2.181802998049824360e-01,4.958540750335193259e+00,4.790285109902931993e-01,7.125026117710320239e-02,9.033860040783242562e-02,1.134341868648575669e-01,1.672693442108243111e+00,3.980965194441432597e-02,1.472273659368944498e-02,1.034395568742541016e-02,2.231167170518451315e-02 -5.386359999999999673e+02,1.437690011217548580e+00,3.699399847509103889e-01,1.854655303299722613e-01,2.180492398690048184e-01,4.961718710185841985e+00,4.875225654091774885e-01,7.034360680855911152e-02,9.005013760983526794e-02,1.149142614122268258e-01,1.676398379396380367e+00,4.012242820065713145e-02,1.407533048503786799e-02,1.035104422590407691e-02,2.291243833523765039e-02 -5.395910999999999831e+02,1.440082754763594597e+00,3.714562303790968079e-01,1.865060403702775982e-01,2.173023016775236793e-01,4.973037892983656505e+00,4.925786993051266549e-01,6.968326225765907045e-02,8.960065112724541203e-02,1.150222568226738629e-01,1.678593601402303515e+00,3.948737226405085038e-02,1.381420452813716948e-02,1.072241001163162788e-02,2.363366328964822127e-02 -5.404669000000000096e+02,1.446046810408577077e+00,3.717848291825183171e-01,1.874061192264181996e-01,2.185568433015914469e-01,4.981648565668560735e+00,4.984934231792497172e-01,6.967495990073473144e-02,9.064170097420652661e-02,1.154618691273261999e-01,1.681567594780997155e+00,4.002296741755954901e-02,1.455469010493788684e-02,1.014977823159995789e-02,2.328427404900379472e-02 -5.413605999999999767e+02,1.448977215332831747e+00,3.742142305390259160e-01,1.879491947031715626e-01,2.191364624068021794e-01,4.988529103716878410e+00,5.056742703498615654e-01,7.006833548816154833e-02,9.067893251419600897e-02,1.170111102722155016e-01,1.683531273477836931e+00,3.938856047213459832e-02,1.508090423167438021e-02,1.074527787799425295e-02,2.385925426684980255e-02 -5.422471000000000458e+02,1.452146454822428989e+00,3.760134459233728244e-01,1.894858572545017883e-01,2.195970255753366407e-01,4.996522749744189973e+00,5.102504886016632213e-01,7.090448626761458595e-02,9.151502478982798117e-02,1.176689287581468152e-01,1.687605004445749568e+00,3.980346812708893123e-02,1.513436213162869248e-02,1.033935000282593109e-02,2.431558595050929694e-02 -5.431149000000000342e+02,1.457353606560652715e+00,3.780840781269175777e-01,1.884462511696255449e-01,2.208071142406605181e-01,5.001133193282420564e+00,5.157029690371306430e-01,7.103972754351511876e-02,9.138274705589330416e-02,1.183530791261392379e-01,1.691950308855589613e+00,4.004441044944090367e-02,1.559855316608388387e-02,1.007526784638110295e-02,2.329947741482359808e-02 -5.440146999999999480e+02,1.467844336363934410e+00,3.816687233813389479e-01,1.890535844092049444e-01,2.204822974039379047e-01,5.009299887548952057e+00,5.221343935786606494e-01,7.133180095363343687e-02,9.093792745092016405e-02,1.193565808275395823e-01,1.691961655932917807e+00,3.948007852832061126e-02,1.555187655897324883e-02,1.087849366861745604e-02,2.387459247961293274e-02 -5.449538999999999760e+02,1.475779594953750884e+00,3.816367338965593881e-01,1.890665519294128794e-01,2.224057866838511088e-01,5.016225222333356548e+00,5.273670508845063054e-01,7.109371219199639436e-02,9.117522753874396368e-02,1.204983248800132190e-01,1.698258216487252392e+00,4.087823084618388836e-02,1.623736868689451551e-02,1.008910707954807640e-02,2.312447946054286413e-02 -5.457287999999999784e+02,1.479782427914003051e+00,3.836091733453146357e-01,1.900090542287156126e-01,2.220770510158092959e-01,5.025631883640690134e+00,5.340005036141688421e-01,7.128182684482796405e-02,9.164416150525905858e-02,1.223963988298493177e-01,1.702006139958002207e+00,4.044770984633266897e-02,1.582610100101200512e-02,1.104558953419532141e-02,2.429391512570833189e-02 -5.465635999999999513e+02,1.487109816181325428e+00,3.847333654349243126e-01,1.903938103537302640e-01,2.234718146247147152e-01,5.036431704526433073e+00,5.385173857816614174e-01,7.053497448731391173e-02,9.335083311999559097e-02,1.241132341071544687e-01,1.704199406548232876e+00,4.100972360150445528e-02,1.658381515529937233e-02,1.122640000611627165e-02,2.306021311966960363e-02 -5.474669999999999845e+02,1.489238950229458958e+00,3.871589419643723939e-01,1.910981279641793540e-01,2.217418207620019122e-01,5.042193767498901025e+00,5.450294427263808750e-01,7.048895836104768220e-02,9.401989678787034399e-02,1.254825925881674076e-01,1.708791808695005354e+00,4.117143302131331950e-02,1.601826404912148893e-02,1.147064435591654830e-02,2.464403917998518601e-02 -5.483025999999999840e+02,1.493397685974595657e+00,3.894345432544064067e-01,1.920697307123593323e-01,2.215463212678216443e-01,5.052531923023685145e+00,5.507682437676417742e-01,7.023520744511688174e-02,9.432697293874139910e-02,1.264938363681211708e-01,1.712508746305259066e+00,4.146459457887832767e-02,1.550424445641451765e-02,1.212395259482496046e-02,2.483229493043061231e-02 -5.492060000000000173e+02,1.504622417384289257e+00,3.892899555601052608e-01,1.931826933503748844e-01,2.241071443223813242e-01,5.060769871484625426e+00,5.564161810989731727e-01,7.033852295772806407e-02,9.592597303050098834e-02,1.262743355554304392e-01,1.715411473437791656e+00,4.207358457916815508e-02,1.645034270558906608e-02,1.145993596130545633e-02,2.326039159332038420e-02 -5.499297000000000253e+02,1.512421447710845079e+00,3.928738421886299736e-01,1.934680189238179582e-01,2.242235914636661054e-01,5.063130395007644502e+00,5.624021073462333042e-01,7.003643693350591892e-02,9.544150731537288934e-02,1.278354028698769351e-01,1.719853646628058730e+00,4.143177297174438500e-02,1.593496443402736551e-02,1.274747220026772876e-02,2.377095272948818311e-02 -5.508550999999999931e+02,1.521087744134907105e+00,3.939578036104464664e-01,1.946761141346388113e-01,2.258302875664826015e-01,5.069792006919390026e+00,5.697472522457553978e-01,7.072224440411287172e-02,9.588759279233949329e-02,1.285210372316192284e-01,1.723300350773175671e+00,4.218529148602159773e-02,1.664216015491909451e-02,1.187358417818458987e-02,2.299847232275642472e-02 -5.517335000000000491e+02,1.530104035684566099e+00,3.956364186162504293e-01,1.949108474238238076e-01,2.274671651740003409e-01,5.085639789495335350e+00,5.759578485718641616e-01,6.996109579609177676e-02,9.662290420294350479e-02,1.307490374838704561e-01,1.725486577651159648e+00,4.136556742847871670e-02,1.678993262871243675e-02,1.340621422514737260e-02,2.339924196820670696e-02 -5.526572999999999638e+02,1.532124406408287065e+00,3.985423744027201121e-01,1.964778648744480716e-01,2.284550950641177636e-01,5.089759974354658212e+00,5.841391831864073403e-01,7.042766299278159503e-02,9.656168311694413031e-02,1.312649575847842920e-01,1.730629308887895901e+00,4.311986928209876613e-02,1.639913241267393698e-02,1.226073213567341336e-02,2.377334808586511680e-02 -5.535125000000000455e+02,1.542122772669888953e+00,3.988797328858652014e-01,1.974738925584597626e-01,2.299425209726903008e-01,5.098855405884618719e+00,5.899264208209391569e-01,7.004299898554006143e-02,9.795203917697686835e-02,1.336935295014526348e-01,1.731626165727324640e+00,4.297336092849209088e-02,1.678149868449355098e-02,1.369099236246584805e-02,2.394918839574625147e-02 -5.544343999999999824e+02,1.553656873239642522e+00,4.008893640000124048e-01,1.985308992920608029e-01,2.300007228915630364e-01,5.108056865937709468e+00,5.956360662707762543e-01,7.017213370696248620e-02,9.809247023485878625e-02,1.342655481498513936e-01,1.737617552656594455e+00,4.471083010104837108e-02,1.588931493489556535e-02,1.296828034577968136e-02,2.432497667183677881e-02 -5.553676000000000386e+02,1.566675507999433670e+00,4.046657416859531509e-01,1.971317401101795874e-01,2.307052629296048596e-01,5.120672593893127456e+00,6.005853959797535779e-01,7.002211285900428184e-02,9.963676344208560742e-02,1.359029369700566203e-01,1.738421022158605389e+00,4.445261732898753149e-02,1.623408358810475571e-02,1.371749969890562193e-02,2.365626472691079174e-02 -5.562070999999999685e+02,1.576633716884411118e+00,4.067937522487511393e-01,1.988612563013870127e-01,2.325593685773000852e-01,5.124944445268594606e+00,6.036927242594316567e-01,7.108907591910446078e-02,1.018881279426898656e-01,1.359039075906720573e-01,1.739287708149843681e+00,4.475809944010650243e-02,1.707727181082119294e-02,1.390749195594204179e-02,2.370303219301242437e-02 -5.572129999999999654e+02,1.583500969930483615e+00,4.093363765532262999e-01,1.984061113435033052e-01,2.347068643922634035e-01,5.133405192686857355e+00,6.109168086914915641e-01,7.059042589021352621e-02,1.023567980130434124e-01,1.381933531567309248e-01,1.746532533071563087e+00,4.443399713346529722e-02,1.685214051898886040e-02,1.357683580258266243e-02,2.434663352859287033e-02 -5.580638000000000147e+02,1.588748386198550300e+00,4.122653041856982892e-01,2.006022004224238819e-01,2.348290704637331361e-01,5.140585765277182695e+00,6.169837314339989831e-01,7.209559519015516782e-02,1.034869501944252757e-01,1.391984293205239531e-01,1.746415776631515371e+00,4.459993310647214493e-02,1.765541579694662744e-02,1.286608772952188562e-02,2.454868866173888498e-02 -5.589235999999999649e+02,1.598866445725467766e+00,4.149143253859082225e-01,1.999691786669681726e-01,2.361048021884873949e-01,5.150145690465261161e+00,6.228635040784431531e-01,7.096200000410939068e-02,1.029938889350410364e-01,1.416570473101408378e-01,1.750962074470338470e+00,4.416601482690733771e-02,1.799963549312291050e-02,1.268811663848132265e-02,2.467056777766429843e-02 -5.597827999999999520e+02,1.607164124527197480e+00,4.172933156115443687e-01,2.013984732927321941e-01,2.370294287369717479e-01,5.159155156135154741e+00,6.302795927432138789e-01,7.322530817891531596e-02,1.035961808056263256e-01,1.416618177715249782e-01,1.756776388858416249e+00,4.480919452613227327e-02,1.851630365599338246e-02,1.220533760454517447e-02,2.528710499009095142e-02 -5.607333999999999605e+02,1.621723868191998541e+00,4.196855594161499337e-01,2.016032516895147064e-01,2.393800392935631072e-01,5.175497435254425405e+00,6.355459161781569222e-01,7.248861247925939000e-02,1.041317488862916474e-01,1.445425034677791931e-01,1.759754742390876148e+00,4.490635347799640242e-02,1.868425326956928145e-02,1.216541475858459037e-02,2.466652431423510539e-02 -5.615693999999999733e+02,1.630159137339023623e+00,4.243523713992443103e-01,2.039609248825010601e-01,2.384742055580789666e-01,5.185696919107296132e+00,6.410587783488579383e-01,7.403770507601631357e-02,1.043685104843442568e-01,1.460629601580367698e-01,1.761048221327448315e+00,4.558011967804365128e-02,1.819865861188457723e-02,1.231397017781710179e-02,2.589065114139599277e-02 -5.622064000000000306e+02,1.637435762070396983e+00,4.262797036354342151e-01,2.047763399746399537e-01,2.389716447994131854e-01,5.196265229139078734e+00,6.444344340741903210e-01,7.468602580441779937e-02,1.053056040441896490e-01,1.472151470499214465e-01,1.763315652226753016e+00,4.590688660553060574e-02,1.849810824217701377e-02,1.196127396412322019e-02,2.583718816921629080e-02 -5.631313999999999851e+02,1.639577204082167228e+00,4.289150944971944490e-01,2.041173450637803477e-01,2.397724914358546622e-01,5.215411773229587489e+00,6.500745916891710330e-01,7.361734075179653114e-02,1.070295199205886227e-01,1.494785787236843078e-01,1.764839534336295035e+00,4.494641341913641064e-02,1.854353673621544213e-02,1.287471860694455739e-02,2.500529329831924219e-02 -5.640021000000000413e+02,1.644859709313905238e+00,4.326928040721833568e-01,2.061363294301673532e-01,2.403928199492244011e-01,5.230020599365681200e+00,6.559190819755573720e-01,7.565115781951214924e-02,1.069790953104700071e-01,1.498164140878238682e-01,1.770082692463279539e+00,4.565558513950714742e-02,1.804387141459247446e-02,1.256461459015401072e-02,2.552100102982388097e-02 -5.647772999999999683e+02,1.658238194204541216e+00,4.324850923813758907e-01,2.058894165196639148e-01,2.416669515051679262e-01,5.241338049185333858e+00,6.597533778155080242e-01,7.430856136552804747e-02,1.085280102111678691e-01,1.517981265212844377e-01,1.772911199409771488e+00,4.522074491482658276e-02,1.878743955367490753e-02,1.292020292276979676e-02,2.446368191661935088e-02 -5.656799999999999500e+02,1.672493818161660428e+00,4.365452871574213578e-01,2.069493494388829902e-01,2.424583482740032547e-01,5.260542229466161679e+00,6.656200623015378071e-01,7.510615658432306940e-02,1.086202788683833798e-01,1.527914887579295833e-01,1.777205597399759807e+00,4.561445491255175511e-02,1.819159160264124941e-02,1.240593844950027558e-02,2.538483908618236265e-02 -5.664918000000000120e+02,1.676185170059650620e+00,4.371798738040651999e-01,2.070243395800998032e-01,2.446095902277513057e-01,5.274193539557423982e+00,6.675014041454905289e-01,7.483636043335505084e-02,1.101977227043264285e-01,1.541347061608686619e-01,1.779154676310910066e+00,4.531712270437796009e-02,1.881747870002445019e-02,1.203528940943675296e-02,2.465421073345194780e-02 -5.674344999999999573e+02,1.683066388470702890e+00,4.416621705539124365e-01,2.089326729108625935e-01,2.440592387881688752e-01,5.290855667497342374e+00,6.721898441745124408e-01,7.492835771823047608e-02,1.106752269775658770e-01,1.554761085429428036e-01,1.782858901808731522e+00,4.489253537617030054e-02,1.811607800984177397e-02,1.234755659795708227e-02,2.567468876239409337e-02 -5.684926000000000386e+02,1.691236749317854393e+00,4.469062780881938313e-01,2.109876707121018935e-01,2.443691221422544524e-01,5.301864712367174270e+00,6.760688168702544409e-01,7.467699063830410267e-02,1.104710516029743239e-01,1.566385545958948189e-01,1.786192893404620285e+00,4.469765077751960969e-02,1.734039030764011891e-02,1.213049445735459031e-02,2.557635299843009913e-02 -5.693749000000000251e+02,1.699429241509355482e+00,4.485593753092327329e-01,2.125437091021683544e-01,2.463048684914633246e-01,5.320284948856237150e+00,6.810740220608269002e-01,7.477995697932010577e-02,1.113408016305238446e-01,1.583406080057030429e-01,1.789857281077788631e+00,4.536311636496596911e-02,1.763310886750607542e-02,1.117891596344849914e-02,2.494106570590387539e-02 -5.702981999999999516e+02,1.709465773510363107e+00,4.522262096801825670e-01,2.125676368374020409e-01,2.468393499906570421e-01,5.334204764543963861e+00,6.827586702473454894e-01,7.414873847436426191e-02,1.120091551644198102e-01,1.599724832667552277e-01,1.791299319779636301e+00,4.405910715061572835e-02,1.792086444407209322e-02,1.291599168262985708e-02,2.462005672872013412e-02 -5.712217000000000553e+02,1.719509132850396860e+00,4.542489570828083245e-01,2.132598539895851908e-01,2.486469818293903788e-01,5.350782351814589610e+00,6.853456746910558950e-01,7.486344255794137592e-02,1.120828531503095804e-01,1.597302650624199405e-01,1.794055675665212179e+00,4.494329597022891920e-02,1.710725992606586254e-02,1.188084298582689491e-02,2.465092369791682669e-02 -5.720848999999999478e+02,1.728445591100542522e+00,4.573575599295787164e-01,2.132562918167763832e-01,2.496603157915850968e-01,5.369118920497568226e+00,6.862888807376222866e-01,7.481780483591699005e-02,1.127796408984237941e-01,1.617789297608015486e-01,1.793376240452398296e+00,4.402162621465677272e-02,1.783677800863185670e-02,1.304781498316585908e-02,2.433209355231549798e-02 -5.729316999999999780e+02,1.738410262786548088e+00,4.600027032202207433e-01,2.150850711676455251e-01,2.506952127465797986e-01,5.386360584896872084e+00,6.860138267611617380e-01,7.471665930031559655e-02,1.124141679432651697e-01,1.628674615229108447e-01,1.792375507454646577e+00,4.493232523613079066e-02,1.664330442849762393e-02,1.197322708242937184e-02,2.505462060389949952e-02 -5.738884000000000469e+02,1.756993743450839141e+00,4.630119172736617550e-01,2.156377403479005361e-01,2.529528771221103423e-01,5.397130195833592659e+00,6.879468712448058021e-01,7.459099524797435654e-02,1.140517148039518758e-01,1.641510454862344925e-01,1.790493389656757861e+00,4.450341585369575748e-02,1.788646915861736436e-02,1.265334780975418613e-02,2.461354683999122939e-02 -5.747119999999999891e+02,1.762298798896082097e+00,4.664305394446457420e-01,2.157048187950512674e-01,2.547437669566120499e-01,5.411608734004270005e+00,6.886487305387172242e-01,7.436657493713882960e-02,1.129983880728691742e-01,1.649841281307490304e-01,1.794478175888937210e+00,4.476617342816924250e-02,1.624539220490725522e-02,1.204243309921088079e-02,2.560544224101279909e-02 -5.754512999999999465e+02,1.774192477139766133e+00,4.692452238238402629e-01,2.166252149034591512e-01,2.560695816673549396e-01,5.423346278456246949e+00,6.881774482609231969e-01,7.481543960413605809e-02,1.129392558415726611e-01,1.658999289109771569e-01,1.794338470329937207e+00,4.522837808547092164e-02,1.604227607244823606e-02,1.156610986310707689e-02,2.604338874556128003e-02 -5.762997000000000298e+02,1.784162269312289162e+00,4.706808690094594905e-01,2.175699794377623231e-01,2.572286883479416586e-01,5.436926862414017236e+00,6.864463998014662671e-01,7.508733135930986680e-02,1.143911052292083258e-01,1.677015440121710776e-01,1.794985140239825805e+00,4.511902017300196965e-02,1.734237421711838298e-02,1.218196462249612755e-02,2.504629284444957749e-02 -5.770784999999999627e+02,1.790857377824105257e+00,4.732371171654177200e-01,2.181535688823196817e-01,2.572730236064111886e-01,5.450872644809418688e+00,6.850907611872253389e-01,7.557701040339792620e-02,1.136474951258235333e-01,1.684553521277627475e-01,1.795505546698809907e+00,4.526710868821162692e-02,1.541068536217560236e-02,1.162063644382546612e-02,2.680091884435664706e-02 -5.779272999999999456e+02,1.792535100103813228e+00,4.768634528534518857e-01,2.194004544113070665e-01,2.597638738316684348e-01,5.465423413538156083e+00,6.825828814539047773e-01,7.713969036302092963e-02,1.138019405117557115e-01,1.683293272818843223e-01,1.792092303823052513e+00,4.462928940959892676e-02,1.698414786762858508e-02,1.145136065622784360e-02,2.535814716228548815e-02 -5.786758999999999560e+02,1.795625556037445669e+00,4.797437120815486455e-01,2.207129146277436726e-01,2.590900987321098081e-01,5.473016868435531812e+00,6.809264423850274195e-01,7.692659073473440134e-02,1.123937848348861013e-01,1.696104610730591045e-01,1.795316860331582332e+00,4.379659203010961843e-02,1.581386827556235941e-02,1.150179763501252284e-02,2.652510650494310784e-02 -5.797413000000000238e+02,1.804745573503984346e+00,4.826656434158147491e-01,2.218145622504701375e-01,2.608410213654945853e-01,5.485797792605530354e+00,6.768753087704812987e-01,7.779971870518026522e-02,1.128148414057276033e-01,1.696949157015515408e-01,1.794407339611512997e+00,4.392521128354015536e-02,1.715930927768741232e-02,1.120613302715578463e-02,2.568142319249923367e-02 -5.806739999999999782e+02,1.805586293006605114e+00,4.855224415454975073e-01,2.219122087447595315e-01,2.606476614089926480e-01,5.497487384184326586e+00,6.754325071770430622e-01,7.655364200225778237e-02,1.115118528496429340e-01,1.710323203712901252e-01,1.790321396760131023e+00,4.268382218310809439e-02,1.599362364708584172e-02,1.175947108729530344e-02,2.667558231342509467e-02 -5.817068000000000438e+02,1.808950865175308786e+00,4.871459248187809399e-01,2.224325643257180074e-01,2.604859221889965215e-01,5.511285652402822421e+00,6.700638463772561337e-01,7.643857837785557330e-02,1.121195839128380084e-01,1.713750133434867318e-01,1.792125505993042545e+00,4.304226035617175761e-02,1.570556469253873988e-02,1.226196485501378219e-02,2.777194918547501445e-02 -5.826957999999999629e+02,1.824001489444960544e+00,4.895998217788285478e-01,2.234964673465338336e-01,2.630730156927749142e-01,5.521577836074257561e+00,6.654343644516957923e-01,7.783285449226602648e-02,1.122096321633205135e-01,1.705858433861310863e-01,1.790981810895454718e+00,4.369434773666318328e-02,1.658770942165215673e-02,1.174022718322759520e-02,2.797067704558833454e-02 -5.837272000000000389e+02,1.834085261884577323e+00,4.903865188530514008e-01,2.239001511445032899e-01,2.649012866949401745e-01,5.535012519425356103e+00,6.592930124603841868e-01,7.745679519080556075e-02,1.130493531728460205e-01,1.721403629207642616e-01,1.790351497385736179e+00,4.301695489188028798e-02,1.651653796062009516e-02,1.218382883857793697e-02,2.748990299906560464e-02 -5.845815999999999804e+02,1.842405911138071950e+00,4.926896074249718094e-01,2.243537957778437286e-01,2.639456634393556045e-01,5.539701591680816328e+00,6.534843805192647181e-01,7.763838639017255072e-02,1.122242889843893393e-01,1.717284737783757453e-01,1.788272867189409698e+00,4.325313094415264570e-02,1.660463465228040336e-02,1.231342440838367400e-02,2.804784903872632740e-02 -5.854787000000000035e+02,1.843154105673574961e+00,4.942786901194348159e-01,2.241879084897582253e-01,2.658909726471385127e-01,5.548824640823758259e+00,6.477006895276113951e-01,7.688141665083236820e-02,1.130613308234464653e-01,1.716805418981414422e-01,1.789345323144984068e+00,4.259260532103159580e-02,1.711388943590885781e-02,1.249597518831824239e-02,2.776042064175254787e-02 -5.863541000000000167e+02,1.846308805513617646e+00,4.974187673273922083e-01,2.245299438983749396e-01,2.660692614957566038e-01,5.558388834669124812e+00,6.434454808131562231e-01,7.706377451867617301e-02,1.122365788543957521e-01,1.718128862547486091e-01,1.788022479116402552e+00,4.213602169734922964e-02,1.679773594743377840e-02,1.281935358054903107e-02,2.857870151691205285e-02 -5.870949000000000524e+02,1.843133433300208512e+00,4.981530027456507193e-01,2.250807595435361241e-01,2.671532026234623158e-01,5.568177635347446142e+00,6.374515160066511754e-01,7.711006456858726654e-02,1.127862240699147034e-01,1.724065270696865382e-01,1.788287508009198890e+00,4.210886076641018327e-02,1.693835522171394103e-02,1.256036326644016654e-02,2.843544457797372166e-02 -5.878674999999999500e+02,1.847509954352323458e+00,4.987280682729307024e-01,2.246815694162018762e-01,2.675701341403006195e-01,5.575557817218023793e+00,6.320336155005881196e-01,7.606287379401616144e-02,1.134572735537467819e-01,1.729602835681270934e-01,1.785999072292255851e+00,4.101628614375240484e-02,1.816695375673832435e-02,1.355098690198609790e-02,2.804629620068693763e-02 -5.885457999999999856e+02,1.851940208061352067e+00,5.007889778792474766e-01,2.250683423305611386e-01,2.674944154029765264e-01,5.585021088611664908e+00,6.291545938410667560e-01,7.630558381747043484e-02,1.118137086454596973e-01,1.716262886827852607e-01,1.787727529780479774e+00,4.195226584364170064e-02,1.675422169447293719e-02,1.333629278311556504e-02,2.942891229034461098e-02 -5.893511999999999489e+02,1.851217799007544684e+00,4.991376321057673371e-01,2.254881468485142870e-01,2.697038528782147448e-01,5.591787991497933596e+00,6.217789276705518731e-01,7.590194103108738322e-02,1.129172870252902472e-01,1.701022975011744487e-01,1.786063513493929999e+00,4.106729726772531675e-02,1.689212593099922999e-02,1.346236856803001425e-02,2.909975529558584892e-02 -5.902033000000000129e+02,1.859276599912553785e+00,5.006057515273543146e-01,2.246924288150896065e-01,2.684948704885545823e-01,5.592038968153920209e+00,6.162816854631314456e-01,7.551481552558839128e-02,1.114761640105099844e-01,1.688634313979611168e-01,1.786618570917249738e+00,4.101800681295064699e-02,1.671642553205510140e-02,1.420091737070117155e-02,2.926607046522955446e-02 -5.912140000000000555e+02,1.852502684117872889e+00,4.989756332414089224e-01,2.254275697843087234e-01,2.690540699224238663e-01,5.588756202776047566e+00,6.061633453262214033e-01,7.529653103811130566e-02,1.126276891073434705e-01,1.673937265635569993e-01,1.784633851601165722e+00,4.141096112530363860e-02,1.714337837675672382e-02,1.403511132630280711e-02,2.939177185271829584e-02 -5.921276000000000295e+02,1.857068035567163600e+00,4.987220987933702054e-01,2.233044376849382673e-01,2.691367846250194429e-01,5.585082535407219773e+00,5.994205562967493961e-01,7.441678996201077367e-02,1.114359060392575151e-01,1.666679914321671507e-01,1.782937700771293210e+00,4.136193172452858058e-02,1.725420354982287741e-02,1.519770157904160035e-02,2.921233009979798401e-02 -5.930588999999999942e+02,1.856037518777487794e+00,4.974420327343345161e-01,2.245220297693325540e-01,2.675680545188364734e-01,5.584468534026092001e+00,5.930800998525409540e-01,7.433097624788109758e-02,1.106132196005956136e-01,1.665340312588547977e-01,1.777355965441516084e+00,4.113926493624424363e-02,1.697662242338210392e-02,1.549700003212434174e-02,3.005689781685208506e-02 -5.940481999999999516e+02,1.853707490023595028e+00,4.947814163147475908e-01,2.266169473604135731e-01,2.684796389982315734e-01,5.581970114745287148e+00,5.822697005576973339e-01,7.622566519631021609e-02,1.113438851987349487e-01,1.636623072813627733e-01,1.776638768843343597e+00,4.190964652712213245e-02,1.775903126403645393e-02,1.452640023070902314e-02,2.931970797964050801e-02 -5.949364000000000487e+02,1.850465922897443605e+00,4.945700648567279423e-01,2.254290084917286163e-01,2.687230344309813335e-01,5.590524092175987114e+00,5.765506931257524670e-01,7.521655824641337862e-02,1.099909236086984432e-01,1.631061981471514377e-01,1.771566872512350344e+00,4.101330034628744570e-02,1.808553994896620887e-02,1.527955133418557043e-02,2.886533009236644243e-02 -5.958700999999999794e+02,1.844896198736512893e+00,4.952088747976132188e-01,2.258991492205602025e-01,2.673943162423272346e-01,5.593363986665797150e+00,5.697561637898242992e-01,7.452526338863155186e-02,1.094682013710664981e-01,1.617445746549144303e-01,1.771822311114666038e+00,4.156780814819410752e-02,1.714150010769564456e-02,1.499637454585037166e-02,2.990568930881258233e-02 -5.969226999999999634e+02,1.837243852827056045e+00,4.931361443975879055e-01,2.258114059672525764e-01,2.674429214702652158e-01,5.597507590180417658e+00,5.620968281380580578e-01,7.439859072165139198e-02,1.085639834746350285e-01,1.590683914049662029e-01,1.767796236695635459e+00,4.227176078087548083e-02,1.852627135253624713e-02,1.467901084418476998e-02,2.939875739312206027e-02 -5.977346000000000004e+02,1.823057386284951065e+00,4.930730799659883701e-01,2.261623873508210314e-01,2.668471053161519668e-01,5.602197444908131096e+00,5.587120729129519958e-01,7.468161987129554036e-02,1.076824891209335888e-01,1.584206061196196114e-01,1.769669289681534696e+00,4.145120239589822342e-02,1.742268996742103379e-02,1.511199130975804383e-02,3.011649568407863409e-02 -5.984510000000000218e+02,1.815205481093885354e+00,4.900047867897399101e-01,2.262906075802075812e-01,2.672679560463217530e-01,5.601075429060863975e+00,5.534623067048825007e-01,7.481754722219158271e-02,1.076657724116715231e-01,1.561114354324553144e-01,1.765280881003675306e+00,4.214020104440530101e-02,1.858602556119104410e-02,1.434822519754866410e-02,2.868645701109767687e-02 -5.992355999999999767e+02,1.812386501635381286e+00,4.873334990187261351e-01,2.255722288230864736e-01,2.657903751025195715e-01,5.599802794948749884e+00,5.478837490522541209e-01,7.361303773237419523e-02,1.061623926990358235e-01,1.549635657942258771e-01,1.765333069631994212e+00,4.117488468967056559e-02,1.833497520774254874e-02,1.523331198206684389e-02,2.922304782782956384e-02 -6.000544999999999618e+02,1.802056401548489895e+00,4.855321192273498454e-01,2.256265319889526055e-01,2.647146793521997221e-01,5.599724098327866884e+00,5.424712667988291770e-01,7.352075928874518551e-02,1.046417593007094027e-01,1.528589515978433511e-01,1.762946297621756919e+00,4.114722198449572571e-02,1.866208466646224196e-02,1.484204956145823706e-02,2.928815862157978234e-02 -6.009433000000000220e+02,1.792906831175517191e+00,4.813259354765759834e-01,2.253275696931249517e-01,2.656716903099440863e-01,5.598924417913189622e+00,5.354195215995964929e-01,7.380854359367555739e-02,1.045826802473309169e-01,1.497927594243080307e-01,1.759807114931959404e+00,4.231285794131470213e-02,2.064036907927868647e-02,1.366147432144831919e-02,2.784317926159957102e-02 -6.017169000000000096e+02,1.789381440686335090e+00,4.806159688787365880e-01,2.254990508947777861e-01,2.634798307569211628e-01,5.592467120310606887e+00,5.306715608339063195e-01,7.280927506158779705e-02,1.036356179116029175e-01,1.502054088765251150e-01,1.757646956983636821e+00,4.173684987665354784e-02,2.026005996190571867e-02,1.465508261530029666e-02,2.893324564787710940e-02 -6.025321999999999889e+02,1.772478807220249308e+00,4.777596764621641068e-01,2.257124938392146840e-01,2.622010023178427129e-01,5.584709054125365668e+00,5.248716045319463674e-01,7.363883715696900589e-02,1.029081769331050555e-01,1.467134100542253350e-01,1.755985397173339235e+00,4.346129138517393353e-02,2.071082571009724704e-02,1.323135869295594125e-02,2.839807146481015954e-02 -6.034101000000000568e+02,1.766046102248069793e+00,4.758323531159409647e-01,2.247855239935589444e-01,2.615080147259372101e-01,5.583440118798066010e+00,5.187452916544961212e-01,7.309873669613448088e-02,1.030387601479078041e-01,1.461209539906267452e-01,1.751458988223470792e+00,4.206366363318525536e-02,2.046675197684236225e-02,1.449523454778615592e-02,2.814702251930443350e-02 -6.043533999999999651e+02,1.755640767389939683e+00,4.722758695814275320e-01,2.249263414785834803e-01,2.600629823888557790e-01,5.578627431490316368e+00,5.143610917402403615e-01,7.385569495824113873e-02,1.010984140211620974e-01,1.415778380447876295e-01,1.751992522570488653e+00,4.342266365351532542e-02,1.986721364701080073e-02,1.326441883475748540e-02,2.751827630303516070e-02 -6.052445000000000164e+02,1.742448726947744220e+00,4.695647320948350689e-01,2.238818033868893442e-01,2.589339672050151586e-01,5.573465877865235285e+00,5.091842624183997579e-01,7.273776222441291628e-02,1.006962158127443496e-01,1.411021247237598253e-01,1.747957367233505366e+00,4.167201853201110695e-02,2.048173352593092925e-02,1.478172589407050763e-02,2.643691675276371722e-02 -6.062140000000000555e+02,1.733721650583304630e+00,4.667248018985712399e-01,2.220915309496845902e-01,2.575222839717418166e-01,5.558087497796334375e+00,5.059262024997246421e-01,7.160198726870975472e-02,9.872074886488113599e-02,1.386806305037648901e-01,1.747042396331973890e+00,4.133956543421786478e-02,2.044248264955152161e-02,1.471979785069556929e-02,2.596061244907965637e-02 -6.071620000000000346e+02,1.724168333297436462e+00,4.633327250834189392e-01,2.208930374872083435e-01,2.563362413496150793e-01,5.560703349975117504e+00,5.040594155281286071e-01,7.155909294259327202e-02,9.745928645021484371e-02,1.359298929074861384e-01,1.748862466753331457e+00,4.274975119743418955e-02,2.008405730117523991e-02,1.354960393698936838e-02,2.614848311694434324e-02 -6.082331000000000358e+02,1.715544899297164250e+00,4.597574873772574122e-01,2.214089717196606744e-01,2.556411451234050780e-01,5.545603755337451091e+00,4.987275263871260300e-01,7.239137172021264943e-02,9.792591853712528938e-02,1.332378682478090326e-01,1.747259346655281265e+00,4.274462723685679144e-02,2.090848085201782447e-02,1.320596154840647518e-02,2.511978098985601093e-02 -6.092349000000000387e+02,1.698046245482403904e+00,4.561528729283599315e-01,2.196090904762469931e-01,2.537762088568120689e-01,5.538740966096643348e+00,4.975364623395059915e-01,7.181809140517650403e-02,9.630173795135815729e-02,1.320927975445909119e-01,1.744809493153466118e+00,4.224435819700922412e-02,1.994000924083749737e-02,1.387209682874792488e-02,2.510442992532788131e-02 -6.100493000000000166e+02,1.688474614581252808e+00,4.536777240133182953e-01,2.197930384218178546e-01,2.525946191284992315e-01,5.531517166688899145e+00,4.939012824946487079e-01,7.289640035558611619e-02,9.715643452181829676e-02,1.297327515424882005e-01,1.745189677694696240e+00,4.291142975530330694e-02,2.057529702577678282e-02,1.368637853893397982e-02,2.336073051625064956e-02 -6.108680000000000518e+02,1.684360778599685915e+00,4.530374166677766379e-01,2.179666626111629313e-01,2.514004744248652390e-01,5.530840059917016660e+00,4.918256559914593318e-01,7.131410037039237482e-02,9.579096445678703109e-02,1.291195944832472797e-01,1.746101471907607117e+00,4.200341632457642305e-02,2.012867582332000804e-02,1.468419903079176692e-02,2.311602568207099528e-02 -6.116413000000000011e+02,1.680918702959319333e+00,4.503824710361519212e-01,2.185579788175824323e-01,2.500250818485760806e-01,5.527785648566269749e+00,4.898051910533264275e-01,7.265339872338905103e-02,9.572086118544767541e-02,1.264447587568957587e-01,1.745681147997437677e+00,4.301575153394421314e-02,1.988140915491903860e-02,1.405783715409847368e-02,2.282061985849193064e-02 -6.123129000000000133e+02,1.669402713079910505e+00,4.485063289361130856e-01,2.177333625179280752e-01,2.498046546870014151e-01,5.519528615794726534e+00,4.878607749332441457e-01,7.275352138662663504e-02,9.657407769255871299e-02,1.247591816666473452e-01,1.744412147359117871e+00,4.313453782418005811e-02,2.052186448089485249e-02,1.414247227854750766e-02,2.110110658319930277e-02 -6.131309999999999718e+02,1.664232179371895270e+00,4.474755692794434303e-01,2.140945305736765558e-01,2.482417314911093964e-01,5.523974720343400868e+00,4.899358071356001432e-01,7.081326037848412192e-02,9.541808415361929807e-02,1.251355498101502928e-01,1.745854438792930452e+00,4.175161831158730186e-02,1.960757799500290055e-02,1.497169404874712506e-02,2.157166876886279505e-02 -6.139112000000000080e+02,1.654981927422985777e+00,4.455620287434607363e-01,2.141028639508482101e-01,2.466309162297806723e-01,5.523080332023620365e+00,4.884767221737061904e-01,7.221712367909030594e-02,9.447724351418114452e-02,1.228100888652479128e-01,1.745281972001984983e+00,4.281432083407091249e-02,1.937841744121776566e-02,1.359239310269111378e-02,2.213221287571975893e-02 -6.146488000000000511e+02,1.637500159624612373e+00,4.413635845039713956e-01,2.119711096349905510e-01,2.467079771952879197e-01,5.521319193800263037e+00,4.869490925345013599e-01,7.118042428450055414e-02,9.437472711807043391e-02,1.228073225535796648e-01,1.744790126893740467e+00,4.207499446486809291e-02,1.954177453219586511e-02,1.387855724239836844e-02,2.083868267303752575e-02 -6.155641000000000531e+02,1.633186160636999951e+00,4.414933332139694411e-01,2.120793060829365695e-01,2.454800518704197132e-01,5.518744870789873858e+00,4.885292824215180518e-01,7.230662263668312384e-02,9.355493859852700989e-02,1.206896809117397051e-01,1.746553154523005524e+00,4.285899889853800326e-02,1.851097974341175262e-02,1.305832621082825273e-02,2.144126173276653113e-02 -6.164937999999999647e+02,1.611745040748973068e+00,4.372651875101178920e-01,2.102526077042816688e-01,2.457800382422927754e-01,5.512630670206253747e+00,4.876433516562776460e-01,7.112895126972046400e-02,9.346103570588615295e-02,1.207873458940231515e-01,1.745759300796557056e+00,4.266355052722499430e-02,1.914769532401348895e-02,1.307261413764319868e-02,1.997309008917937112e-02 -6.175878999999999905e+02,1.597352819388838441e+00,4.385723212319042608e-01,2.093778548065176048e-01,2.420797900940034886e-01,5.506760430290563946e+00,4.875417923596727654e-01,7.228832766863463322e-02,9.131430401275536513e-02,1.199492386037341873e-01,1.745311990138662006e+00,4.275913214170679044e-02,1.791263886084343282e-02,1.306913189942432441e-02,2.086804396954292096e-02 -6.186051999999999680e+02,1.587871262345572632e+00,4.354660814122617296e-01,2.082715447432731404e-01,2.399098408500570656e-01,5.492728044727921421e+00,4.889242687225518469e-01,7.303127130311048987e-02,9.013243829708106336e-02,1.183024669613277347e-01,1.749598987679565010e+00,4.274790796564276185e-02,1.756745720631924801e-02,1.261159252723520474e-02,2.057406570100117627e-02 -6.195828000000000202e+02,1.580177214823040188e+00,4.317767659313482831e-01,2.074592520721059152e-01,2.403447445709666619e-01,5.491498040135159187e+00,4.886160905811159361e-01,7.308275034820840843e-02,9.086068562543836435e-02,1.174585225697827862e-01,1.750099862948871543e+00,4.278346461514107024e-02,1.808192606187382021e-02,1.220762834755417803e-02,1.916404945789457193e-02 -6.205326000000000022e+02,1.570922063984270700e+00,4.333900902174627756e-01,2.054840097996841752e-01,2.387585186596483666e-01,5.489338629995958563e+00,4.886491636288931018e-01,7.258025151743965897e-02,8.949014761185503097e-02,1.174101690036501999e-01,1.750980360535879354e+00,4.116657008964025311e-02,1.809319480669074887e-02,1.320672387040400242e-02,1.929278211581085534e-02 -6.215650000000000546e+02,1.554918918620729507e+00,4.301724534223401175e-01,2.050917107392334349e-01,2.377592346336354634e-01,5.481395607338664711e+00,4.896611107077813996e-01,7.271571410595181750e-02,8.891056960084164906e-02,1.162583499549186827e-01,1.754761399176394399e+00,4.280740625067411959e-02,1.812693483037187969e-02,1.124688372280724380e-02,1.883711136320370683e-02 -6.225230999999999995e+02,1.547168409022242841e+00,4.290561585165220126e-01,2.038139180751724067e-01,2.369732886033879549e-01,5.482816700198180904e+00,4.910442360408691642e-01,7.140484547929168424e-02,8.884418228002588513e-02,1.161561365606674778e-01,1.757016259989445217e+00,4.159931390004178997e-02,1.873253294206481123e-02,1.220632450596431662e-02,1.890437343606921061e-02 -6.232315999999999576e+02,1.539178847088287228e+00,4.282612422212501713e-01,2.046760262838347999e-01,2.361895130616802341e-01,5.485358329856565796e+00,4.930136832867165753e-01,7.173280718974432701e-02,8.876986163719151335e-02,1.154655458669468504e-01,1.758470869384032520e+00,4.249773223916916698e-02,1.777420780377388099e-02,1.028221882792357267e-02,1.961325751285883379e-02 -6.239160000000000537e+02,1.529882460911252018e+00,4.254809079411737693e-01,2.047162699330382640e-01,2.358960174944139121e-01,5.477425462444914572e+00,4.930477989037016506e-01,7.221683778220178151e-02,8.934393910320742593e-02,1.144874570949805381e-01,1.757988954538657778e+00,4.325095004199204507e-02,1.849600372503290568e-02,9.360614183172466518e-03,1.895586272670726768e-02 -6.246268999999999778e+02,1.524689647873096909e+00,4.266842148122374501e-01,2.017884040952216407e-01,2.331468121892490419e-01,5.484476728838135529e+00,4.958916728505106120e-01,7.036066193383752609e-02,8.859918926120678717e-02,1.156110906599392418e-01,1.760805521857794043e+00,4.171524879522721385e-02,1.749681641833754353e-02,1.140517106798705910e-02,1.972842733333457499e-02 -6.254524000000000115e+02,1.522306835436158856e+00,4.276711587183739116e-01,2.034122276113270178e-01,2.323784680399476610e-01,5.486935923467865628e+00,4.966385441332613615e-01,7.137108718857321232e-02,8.878740506647650466e-02,1.137366368992993593e-01,1.760895141043017365e+00,4.261446149769763936e-02,1.710096848039942274e-02,1.010069344502662059e-02,1.972030060683602204e-02 -6.261594000000000051e+02,1.516878773165728500e+00,4.269439242835449955e-01,2.025783433763902464e-01,2.320642785883496595e-01,5.483771326123006773e+00,4.962080469024883200e-01,7.147237439465903286e-02,8.897651738739945082e-02,1.137796918079382325e-01,1.763651840116343239e+00,4.194109431904879948e-02,1.804717956516114358e-02,1.070325119937187708e-02,1.844977348839643705e-02 -6.269854000000000269e+02,1.512071285890306260e+00,4.274246565793498598e-01,2.016351482275877127e-01,2.307144099189373243e-01,5.482558684402249582e+00,4.985797766334549852e-01,7.039458656631220057e-02,8.890265595972610124e-02,1.140202134045938398e-01,1.766768528331378096e+00,4.090544353459818483e-02,1.768233164615887199e-02,1.156199167435960698e-02,1.810734253807524952e-02 -6.279582000000000335e+02,1.505866029421432550e+00,4.249328048728577834e-01,2.015503525272502872e-01,2.320553438037005201e-01,5.476780429883852719e+00,5.021505024557200159e-01,7.194041306760351473e-02,8.851093120391453906e-02,1.124441368147518217e-01,1.769277669247691698e+00,4.166612066862196428e-02,1.794664555908731529e-02,9.661413395985890551e-03,1.789783069795669590e-02 -6.288529999999999518e+02,1.493102626329430471e+00,4.237710504441051240e-01,2.003063384972872396e-01,2.294982261580413296e-01,5.468139040133360496e+00,5.052807866061159725e-01,7.104057047653108969e-02,8.667667654933229604e-02,1.129371517871284869e-01,1.772266359984626227e+00,4.107439330511747366e-02,1.675167895761150993e-02,9.655822678535708192e-03,1.887145572156698203e-02 -6.300326000000000022e+02,1.495793104496172532e+00,4.238890664986164625e-01,1.997395326503597079e-01,2.274251112353034010e-01,5.465835647805731057e+00,5.083420575375852124e-01,7.165352947462477751e-02,8.591535697153528106e-02,1.118317604381018904e-01,1.773101806962892324e+00,4.161542662284243438e-02,1.621024326360301360e-02,9.568636573993441474e-03,1.889589995629585226e-02 -6.311046000000000049e+02,1.492635367862463092e+00,4.217666147435705781e-01,1.986519210864693408e-01,2.284292296424006996e-01,5.464631657878372906e+00,5.110619065166527308e-01,7.097664474509118859e-02,8.669775595979496707e-02,1.111350557823771457e-01,1.774551986880326337e+00,4.187588288927079905e-02,1.708349259367877154e-02,9.181914439787986632e-03,1.771821440539045334e-02 -6.321775999999999840e+02,1.480944559892052759e+00,4.215653470729885943e-01,1.977227941782506715e-01,2.288967621493189775e-01,5.467491140286091067e+00,5.134677931689652919e-01,6.974035379383333733e-02,8.717716477997983215e-02,1.121017572100957288e-01,1.776391543672554363e+00,4.067806526113681986e-02,1.653453712180263935e-02,1.012119946503986512e-02,1.742762078324274280e-02 -6.331476999999999862e+02,1.475231548395704362e+00,4.225464174390233252e-01,1.982773744845102160e-01,2.274849614855620761e-01,5.470085389197979708e+00,5.170567459436083979e-01,7.087952375406070260e-02,8.624088041416239081e-02,1.110210211461765684e-01,1.779542431096580168e+00,4.179408441865719442e-02,1.628999498631517051e-02,9.715817100902260361e-03,1.726809214070268439e-02 -6.340652000000000044e+02,1.476413287766812132e+00,4.232966339312604909e-01,1.968564769288136951e-01,2.282249727775018666e-01,5.480272084677793032e+00,5.220568385888992857e-01,6.925697487503500172e-02,8.640769350453103570e-02,1.122432834431804638e-01,1.781615652591263199e+00,4.022100429980779435e-02,1.566456787318526445e-02,1.121484029461949916e-02,1.766178890659392264e-02 -6.349516999999999598e+02,1.472843863971778688e+00,4.231829796300823343e-01,1.979761803509580420e-01,2.285490708734121967e-01,5.480588359822753830e+00,5.271591419532448697e-01,7.031811051651981614e-02,8.529092721116893205e-02,1.107774072677509547e-01,1.782921111567794981e+00,4.178532756142677718e-02,1.562090001007430951e-02,9.781795498388479171e-03,1.755884051889999853e-02 -6.356493000000000393e+02,1.473214464335317331e+00,4.235844650026396319e-01,1.972595694737009908e-01,2.281771146481028634e-01,5.478599285504259342e+00,5.300185995589399290e-01,6.988682604421736499e-02,8.607331335981760478e-02,1.122242235483106865e-01,1.785118089791968732e+00,4.131092726329479992e-02,1.575402144576140695e-02,9.677651478890325620e-03,1.701007873968688952e-02 -6.363067999999999529e+02,1.471517564655298926e+00,4.238164168810523713e-01,1.958015877853458153e-01,2.278435099216947479e-01,5.475104920979598333e+00,5.329798791366706645e-01,6.914555938098779220e-02,8.490901412154178152e-02,1.127745526994837766e-01,1.786399368734378434e+00,4.042717695056383120e-02,1.557606282691097188e-02,1.084125428999865859e-02,1.715184998334789990e-02 -6.370315000000000509e+02,1.472339575211893958e+00,4.241667877482875326e-01,1.962394916924307398e-01,2.273232066995936052e-01,5.475184327894893066e+00,5.394633251231435445e-01,7.040038390704833615e-02,8.402307557551902395e-02,1.113478852825279253e-01,1.789773683444755292e+00,4.256652518225956250e-02,1.528918887324227927e-02,9.567734248631776239e-03,1.764859853648919480e-02 -6.377912000000000035e+02,1.472683114533153814e+00,4.228102740563439710e-01,1.961526459119494192e-01,2.284836983273728361e-01,5.476586503434468511e+00,5.428330026307666145e-01,7.019599112486124559e-02,8.481109446108266170e-02,1.117480389395482110e-01,1.790408239631314125e+00,4.260900350231344724e-02,1.588862343847147196e-02,9.786223144208516800e-03,1.677387940515909226e-02 -6.384917000000000371e+02,1.470601144536333837e+00,4.224023151652998020e-01,1.951199279486203197e-01,2.284233347732989305e-01,5.476500783641562897e+00,5.476557494079181687e-01,6.954481502054908615e-02,8.458721392729857957e-02,1.124578707625820961e-01,1.793071274238637658e+00,4.243591872031637902e-02,1.602237063881230966e-02,1.047245775296157949e-02,1.657570030913000855e-02 -6.393210000000000264e+02,1.468318159825083846e+00,4.227105443048800870e-01,1.966590838296660426e-01,2.266752385613131082e-01,5.477520553047058982e+00,5.511797093426840100e-01,7.079856327902954438e-02,8.249156198478491131e-02,1.111150758985456066e-01,1.796089225752437013e+00,4.355468078974056301e-02,1.473855181689130017e-02,9.574485344403083076e-03,1.798080503631889482e-02 -6.402439000000000533e+02,1.463267043255592537e+00,4.234906770304593948e-01,1.955269389363354371e-01,2.267914460867572202e-01,5.479766526443563990e+00,5.512469167340872112e-01,7.061902595345501132e-02,8.183180989492111479e-02,1.109560199402123692e-01,1.801038059081668363e+00,4.287759286871498099e-02,1.574236188472247222e-02,1.069719643608629811e-02,1.773195470299632204e-02 -6.412476000000000340e+02,1.461775108560867897e+00,4.224722428736655266e-01,1.974161626703493377e-01,2.271406559439040074e-01,5.474560336444254105e+00,5.540756108143130021e-01,7.168663099197011834e-02,8.204759492635708973e-02,1.103132236151784518e-01,1.805579411214703889e+00,4.354369328232796099e-02,1.596979773569334737e-02,1.032345637838714796e-02,1.791250292762277055e-02 -6.423528000000000020e+02,1.459797520695719886e+00,4.225772584815843946e-01,1.970069782871510244e-01,2.272750588128649163e-01,5.472164244103347563e+00,5.590906493701646163e-01,7.105058148330425927e-02,8.161398520829715730e-02,1.102503979992352501e-01,1.807372953986488673e+00,4.351351421954954835e-02,1.642323874252787225e-02,1.036940380530396166e-02,1.789261425193588995e-02 -6.434555000000000291e+02,1.454908257051329423e+00,4.227640289285214403e-01,1.962369036889790030e-01,2.274419067702919683e-01,5.470578414821142488e+00,5.652844331291366764e-01,7.038972121679566707e-02,8.091059045840065522e-02,1.110206502495022785e-01,1.815590144812291973e+00,4.333869035883589071e-02,1.643007880601309728e-02,1.096516333116180283e-02,1.814942819031556409e-02 -6.445492000000000417e+02,1.449996907156668291e+00,4.257169356471002253e-01,1.980378406507360134e-01,2.263220360197562564e-01,5.477389867029790693e+00,5.738158983523149459e-01,7.060516316003721815e-02,8.018669869994821120e-02,1.114080016345424529e-01,1.821766342578535092e+00,4.321361952156069219e-02,1.578092981163131681e-02,1.131400387339547009e-02,1.929907957965644461e-02 -6.455650000000000546e+02,1.453679154954007569e+00,4.259231797102677741e-01,1.989974527473537536e-01,2.265201406785465887e-01,5.484297709721941416e+00,5.816414758984220779e-01,7.116429286553294098e-02,8.026218206738700012e-02,1.108995891121414279e-01,1.827549268039900365e+00,4.439089694732403779e-02,1.578505154657264958e-02,1.034428941411669883e-02,2.054847523991212843e-02 -6.464217999999999620e+02,1.450853299504315075e+00,4.252342435197652981e-01,2.001842021717183395e-01,2.254109675223177622e-01,5.480007793930437465e+00,5.846462766617588347e-01,7.291922383812762809e-02,7.982461298248344495e-02,1.092225877208846951e-01,1.831887436625016408e+00,4.580913993741247969e-02,1.596997952056740389e-02,9.451619726952908973e-03,2.051061345992427620e-02 -6.471177999999999884e+02,1.453103367646607857e+00,4.242580722716614017e-01,1.998330367435822985e-01,2.272412575898716813e-01,5.483622838272641076e+00,5.875278925791294071e-01,7.210004682111673113e-02,8.044738754847194362e-02,1.105418752172238894e-01,1.834884351324254315e+00,4.484595231042737273e-02,1.717692134550902194e-02,1.016020069368217538e-02,1.929795853077304058e-02 -6.479645000000000437e+02,1.450197147682091181e+00,4.250394407801765806e-01,2.002135201791587216e-01,2.264378179116966483e-01,5.487716318415210459e+00,5.916055805523265931e-01,7.166668969196116068e-02,8.006695076577058368e-02,1.120504645798848925e-01,1.839547920266909609e+00,4.392564513681072869e-02,1.657764700519406137e-02,1.090318155308560299e-02,2.041342704660134566e-02 -6.485707999999999629e+02,1.447279902977057997e+00,4.243770364573223874e-01,2.012738243866852850e-01,2.266820884619686616e-01,5.488721311395819313e+00,5.940990672490218394e-01,7.255965906438957558e-02,7.929000307403220871e-02,1.109119574372505745e-01,1.842242850226537554e+00,4.466249559266266544e-02,1.657197033137056824e-02,1.047359274319517586e-02,2.057241830848793862e-02 -6.492790999999999713e+02,1.449114041680570342e+00,4.230306735319436795e-01,2.013202726508449558e-01,2.285695786522849438e-01,5.494610869050355006e+00,5.956207187428388394e-01,7.144416002726911019e-02,8.106043572042942458e-02,1.118421352738567798e-01,1.843288058779374072e+00,4.439971718652607757e-02,1.806295535388657836e-02,1.047149189739267350e-02,1.918282314899746877e-02 -6.499396000000000413e+02,1.447880679536007742e+00,4.238845414547495194e-01,2.012749824098502560e-01,2.283424686579574314e-01,5.498700639485503139e+00,5.992561484402836314e-01,7.065443087813630396e-02,8.096975900091328560e-02,1.137321186673765361e-01,1.847728196744492291e+00,4.305900851043617528e-02,1.698484950882318822e-02,1.145069235213806713e-02,2.068164735837990653e-02 -6.506292999999999438e+02,1.445725890828816418e+00,4.244797832780172753e-01,2.022081749354439351e-01,2.284377752043518228e-01,5.499393416776826804e+00,6.030341143570652207e-01,7.086157163317996499e-02,8.053507509177448842e-02,1.140432355596926461e-01,1.852090711389671185e+00,4.319366879197528153e-02,1.674489464032018204e-02,1.098747501226324252e-02,2.138813431454104907e-02 -6.514070000000000391e+02,1.440954265503726850e+00,4.224139345602951900e-01,2.023184861539572554e-01,2.299817309666113418e-01,5.502110810534372121e+00,6.068629076086931029e-01,7.048960408477328299e-02,8.186403686999210727e-02,1.130212829590359069e-01,1.852087460346272474e+00,4.459563191180884734e-02,1.821630286398590037e-02,9.506430832412149368e-03,1.963308172156297271e-02 -6.522886999999999489e+02,1.440462008763742752e+00,4.240042487821698014e-01,2.018815954063546969e-01,2.288282725813403085e-01,5.501567783439859305e+00,6.137996084122905316e-01,6.935481791245273753e-02,8.201691542998934548e-02,1.141180860366536320e-01,1.855532671094101360e+00,4.359342237387860142e-02,1.722189017667888344e-02,1.132940480369096226e-02,2.041710628153313445e-02 -6.534832999999999856e+02,1.442347669971069557e+00,4.248891247926859238e-01,2.025577117965426943e-01,2.287237217919480536e-01,5.492538423724887764e+00,6.206632620750376361e-01,7.011334053810688860e-02,8.192264436247419235e-02,1.137015821866010912e-01,1.857321934567928823e+00,4.488230472262975945e-02,1.739316984598172910e-02,1.148834137551285606e-02,1.967549355002009073e-02 -6.546536999999999580e+02,1.437659306492161004e+00,4.243253692570205238e-01,2.033158228789037070e-01,2.281731318183068402e-01,5.495325705595092813e+00,6.268795671939448866e-01,6.920075224557489801e-02,8.161854260844830788e-02,1.140732483166944783e-01,1.859449420132069042e+00,4.524034670369564415e-02,1.718965528375407392e-02,1.172511075388915636e-02,1.933582375823789112e-02 -6.558320999999999685e+02,1.433144020435193067e+00,4.241608907418042418e-01,2.049169437275426831e-01,2.288756420927028079e-01,5.498813375045927820e+00,6.347675257149512085e-01,7.014102639410563222e-02,8.092223619864624684e-02,1.149047176121936048e-01,1.866779556388338701e+00,4.664181592363597639e-02,1.670980034203112946e-02,1.120584077323893979e-02,1.941404352420357526e-02 -6.568370999999999640e+02,1.429247901624273176e+00,4.253542851916657375e-01,2.064064207885286661e-01,2.292688843654748232e-01,5.504512373136149606e+00,6.439381235113001978e-01,7.049153821394826824e-02,8.130202181610413081e-02,1.148840919835476260e-01,1.870075281677078261e+00,4.720754732970272594e-02,1.629479909571207585e-02,1.114828184686936230e-02,1.956408229782834185e-02 -6.578138999999999896e+02,1.433390257952231295e+00,4.239238399628873499e-01,2.062522987808477481e-01,2.310037687106365201e-01,5.511060402068975961e+00,6.492705912319411965e-01,7.068500955394077523e-02,8.244364530619921472e-02,1.161656832536067940e-01,1.873447383382649933e+00,4.747358159657349974e-02,1.752086655776466384e-02,1.122345814443115319e-02,1.873220358495314430e-02 -6.587287000000000035e+02,1.430465942784212796e+00,4.242164212094973186e-01,2.050282512970621751e-01,2.311292753483060736e-01,5.509620299144201816e+00,6.538033757372962995e-01,6.923460544043397169e-02,8.283714460151586634e-02,1.175333726334771012e-01,1.873202032501770198e+00,4.709449175499591522e-02,1.810007904781030241e-02,1.230254331140662183e-02,1.762852467144356700e-02 -6.594758000000000493e+02,1.423494816911517802e+00,4.272254809621933713e-01,2.059152789342668932e-01,2.288520680395450535e-01,5.516481837241409281e+00,6.596486324092243336e-01,6.988308543218582636e-02,8.156564629306561898e-02,1.177765008851609507e-01,1.875844987818115150e+00,4.792228982486712585e-02,1.582464192025184735e-02,1.233448432495565239e-02,1.958763257408374647e-02 -6.602241000000000213e+02,1.420704438412912829e+00,4.282012717259554568e-01,2.059559344062105168e-01,2.286769635439010739e-01,5.516686122522992619e+00,6.655982794574528683e-01,7.021838580788594686e-02,8.121102976670402374e-02,1.182908601506058588e-01,1.878317872217703854e+00,4.837516586110207628e-02,1.549028236659560909e-02,1.291450965209739454e-02,1.936574510066244037e-02 -6.607123000000000275e+02,1.424481564461856919e+00,4.261150797282339808e-01,2.057329408128518722e-01,2.307984472417111965e-01,5.521790566308843573e+00,6.666258991504836473e-01,7.084950577612170175e-02,8.298543193445970245e-02,1.174513041359212806e-01,1.878973595644438888e+00,4.846329242422331429e-02,1.789094619321088264e-02,1.239042886674518451e-02,1.707763441341247912e-02 -6.612966999999999871e+02,1.419514381162796823e+00,4.266355695709632689e-01,2.049561450781965388e-01,2.307671016529910524e-01,5.533839181555074482e+00,6.712828692789374330e-01,6.998610763745760632e-02,8.138373583041380588e-02,1.187446371116676613e-01,1.880799173729021501e+00,4.723588256077164427e-02,1.705214707661664719e-02,1.316383749051214247e-02,1.761410429517164256e-02 -6.621029999999999518e+02,1.415019901441796346e+00,4.279439574056482787e-01,2.052417914364879359e-01,2.302164886056571325e-01,5.538831661715070354e+00,6.782692789275470702e-01,7.058242230128587702e-02,8.025787268296585841e-02,1.192291059457351032e-01,1.884058582206828980e+00,4.731965508831975642e-02,1.632994503628953931e-02,1.360080504624677777e-02,1.802121692869501635e-02 -6.628986999999999625e+02,1.413285254949933734e+00,4.283969776660110362e-01,2.067170081350937494e-01,2.306852482699660034e-01,5.540959350728541288e+00,6.839035347594899505e-01,7.162613583504934267e-02,8.163018727494548987e-02,1.172063532909210504e-01,1.886914695993491931e+00,4.933980237806352698e-02,1.815549447536768390e-02,1.130572064583308667e-02,1.638475459042530724e-02 -6.637344000000000506e+02,1.416666354193278909e+00,4.293874516106459538e-01,2.046856354057211558e-01,2.309032328429171388e-01,5.547842171139490297e+00,6.895958772013770499e-01,6.924908824955788855e-02,8.094966375750065057e-02,1.201640336374847351e-01,1.891427213502888005e+00,4.722420662442605721e-02,1.775585400480001602e-02,1.239153500750897474e-02,1.687738858632066574e-02 -6.647219000000000051e+02,1.411108360934135053e+00,4.294467449507777257e-01,2.065199664418669867e-01,2.300320174091500525e-01,5.546320244037355351e+00,6.964767840062879856e-01,7.142210934668455358e-02,8.119443914375704119e-02,1.190789291482241552e-01,1.898769764058922060e+00,4.921159657731716264e-02,1.719710515429789810e-02,1.075113254230120052e-02,1.814700521769063019e-02 -6.659779999999999518e+02,1.403818402014976874e+00,4.279450835730380098e-01,2.065328077137542073e-01,2.302497307769388879e-01,5.535892259351644640e+00,7.036748841532327603e-01,7.003353772045031733e-02,8.145198665177298680e-02,1.216062950153543598e-01,1.897484015546689662e+00,4.744285703090111300e-02,1.738113745916768094e-02,1.194424335552352057e-02,1.734990728577102959e-02 -6.672623999999999569e+02,1.395384825753996250e+00,4.290627046648222698e-01,2.060087951114945581e-01,2.299008194278116535e-01,5.536801429990008572e+00,7.146436118098993262e-01,7.159574464569745667e-02,8.021112947172406860e-02,1.220548359458873827e-01,1.901882835238408287e+00,4.757144915748554026e-02,1.684593526827159182e-02,1.170916269387844988e-02,1.760308120391808340e-02 -6.682585000000000264e+02,1.397281631325295148e+00,4.297309152631232365e-01,2.070322046403177685e-01,2.316471515815829996e-01,5.536993393321226087e+00,7.211683510606712311e-01,7.341682567939564197e-02,7.997479743290197840e-02,1.217687067729847222e-01,1.905511953397486469e+00,4.775033348530882682e-02,1.658107967883191286e-02,1.059452900184026936e-02,1.776735334321952187e-02 -6.693346999999999980e+02,1.395125025812331998e+00,4.313116607319316120e-01,2.088807883686126243e-01,2.330430353251644049e-01,5.549571465964326045e+00,7.269295187384936519e-01,7.374434528354667506e-02,8.157075709494368554e-02,1.213612129876356915e-01,1.911234149477532673e+00,4.764326010129479871e-02,1.692175892960651185e-02,1.004780009752920256e-02,1.756822010392999900e-02 -6.702890999999999622e+02,1.395099874756921210e+00,4.297997370212540136e-01,2.090875014035632473e-01,2.345647456688003951e-01,5.546480507222941725e+00,7.308621979263945079e-01,7.436886936239411883e-02,8.283713303593902288e-02,1.221864691791495761e-01,1.910126016176622477e+00,4.690247767294621062e-02,1.858263637097584686e-02,9.879888129122771367e-03,1.600766167285330721e-02 -6.712136000000000422e+02,1.389834442135907011e+00,4.317801185506969230e-01,2.094024715962179428e-01,2.327443210881856572e-01,5.548220514453487517e+00,7.396529342961537523e-01,7.390608826794681230e-02,8.138579297430784121e-02,1.220406581303617732e-01,1.916823787246397792e+00,4.677670323409548192e-02,1.668104138722600882e-02,1.042125492765474948e-02,1.760183788549544992e-02 -6.718111000000000104e+02,1.390060006721052677e+00,4.300566676494433915e-01,2.117709074744966724e-01,2.352673534349933315e-01,5.546684906876325982e+00,7.414956261044105545e-01,7.423219876256575978e-02,8.262323307268779060e-02,1.209044225448783760e-01,1.920337532181215501e+00,4.741618323995810957e-02,1.787079741902486418e-02,8.927093163297549622e-03,1.660586845625566799e-02 -6.723750000000000000e+02,1.387934974534342114e+00,4.307570681482426611e-01,2.130292681334351457e-01,2.356885840966498891e-01,5.542819067658295573e+00,7.453658999270222907e-01,7.468677604070977916e-02,8.277294871420692868e-02,1.208570020219081609e-01,1.922962746088089148e+00,4.760842379062707463e-02,1.732062264847544775e-02,8.913321709161269729e-03,1.692521845053496232e-02 -6.729592000000000098e+02,1.394266829024662258e+00,4.321336621989642079e-01,2.118097804843853682e-01,2.363176239471593276e-01,5.548578454347582678e+00,7.510707790617505708e-01,7.323279888422455641e-02,8.273106109104963468e-02,1.218088280004008261e-01,1.927073089498359204e+00,4.676398567790902849e-02,1.710392283401818148e-02,1.014438674671241936e-02,1.661656252746568363e-02 -6.735978999999999814e+02,1.392333563562798027e+00,4.333111704412623832e-01,2.124122691541339147e-01,2.363216089364646999e-01,5.545242335266354239e+00,7.561585551349097045e-01,7.299428219690079489e-02,8.241008657610054966e-02,1.222729611269483263e-01,1.930317636065483455e+00,4.666373581238916768e-02,1.609586897331187483e-02,1.044219537162943690e-02,1.727285253485494332e-02 -6.744171000000000049e+02,1.391912358389828519e+00,4.356921832978252196e-01,2.148916316882121258e-01,2.372101541064247643e-01,5.544054848191653839e+00,7.615583794730520495e-01,7.476267935511782259e-02,8.365292897854294252e-02,1.212298498211220876e-01,1.937165159102353762e+00,4.778094137096802752e-02,1.584849797070853050e-02,8.518461233794072385e-03,1.750264734442082137e-02 -6.751925999999999704e+02,1.388739454830870468e+00,4.358745881674304101e-01,2.138801305812748077e-01,2.384545721524754525e-01,5.549771069341987051e+00,7.647571108007205076e-01,7.334543085036306087e-02,8.330679781760126634e-02,1.231203286497608573e-01,1.941066954758349450e+00,4.650012115653301414e-02,1.704666479165407866e-02,1.001052546617836603e-02,1.580028502354613451e-02 -6.761689999999999827e+02,1.382639708052313621e+00,4.390074927334122190e-01,2.154208936194804691e-01,2.384714907134839468e-01,5.552947108280932298e+00,7.710102745278728520e-01,7.453034612145054139e-02,8.204077372227286391e-02,1.228764883077239356e-01,1.942350630782625265e+00,4.710746808520904771e-02,1.526671117399250321e-02,9.456869368974218926e-03,1.760875785424236006e-02 -6.773286000000000513e+02,1.380891045354444513e+00,4.377669169833205975e-01,2.161187538852306078e-01,2.378028534299688468e-01,5.543380467039931148e+00,7.785923217007080233e-01,7.437759812693076067e-02,8.182108788859032700e-02,1.226074166232672125e-01,1.943236184132908662e+00,4.643575144267611532e-02,1.526845678203422874e-02,1.011046008349977821e-02,1.737587178643065777e-02 -6.783997000000000526e+02,1.375050780672061546e+00,4.371303529922706543e-01,2.168839542952339661e-01,2.381505539214503475e-01,5.536054439879620759e+00,7.849240666299630576e-01,7.486489335544005419e-02,8.174144752806297709e-02,1.213717254580594374e-01,1.950560974784866897e+00,4.720067958816766968e-02,1.521800951363497245e-02,1.043572317157767659e-02,1.750528902056777691e-02 -6.796763999999999442e+02,1.375446441350749671e+00,4.387295634069156569e-01,2.171492050277434027e-01,2.400145944230138995e-01,5.540779771097823492e+00,7.952512754309117859e-01,7.569543672892936614e-02,8.205918514725174528e-02,1.217640640208459413e-01,1.956900941165021113e+00,4.677943506190106182e-02,1.475641870193639127e-02,1.139687461316818418e-02,1.724144493990465571e-02 -6.809673000000000229e+02,1.379268299897858929e+00,4.393442961865534069e-01,2.193797854793719249e-01,2.402077904741248826e-01,5.549999395205461816e+00,8.058398782702025365e-01,7.536515862154183343e-02,8.266861867743527381e-02,1.220257193073695234e-01,1.966856225218079457e+00,4.774671066274621678e-02,1.457671749471356470e-02,1.120993039845391559e-02,1.708852615216782667e-02 -6.820040999999999940e+02,1.380304490230919168e+00,4.403712215781044881e-01,2.196005271035284534e-01,2.404997384747271649e-01,5.551424903008777889e+00,8.113486169796333414e-01,7.398243114409365495e-02,8.377228489877541762e-02,1.238041914640309882e-01,1.973110515059006698e+00,4.667068098454091318e-02,1.509871303144477706e-02,1.217767546948067547e-02,1.653665360333972378e-02 -6.828567000000000462e+02,1.382505249778120948e+00,4.412445850714113438e-01,2.184197069035923588e-01,2.392781089475618517e-01,5.549739458777268375e+00,8.181511907551182183e-01,7.359312911241408517e-02,8.245751866170661359e-02,1.245255583938477129e-01,1.976578640166176015e+00,4.598769556384463275e-02,1.445373663312897461e-02,1.321372732581360676e-02,1.701403137204138272e-02 -6.834559000000000424e+02,1.377023027431301339e+00,4.417780034145218915e-01,2.204556882162473086e-01,2.411159579741947168e-01,5.557048430302152120e+00,8.215151776348417201e-01,7.454919431910878025e-02,8.255908837347353257e-02,1.237936322574104131e-01,1.977979785992708628e+00,4.768504267052629808e-02,1.468411283153803204e-02,1.109978321016602543e-02,1.653647868766792289e-02 -6.840593000000000075e+02,1.375550925866181329e+00,4.420399224295497032e-01,2.204899636331332513e-01,2.406603108191246454e-01,5.556487841751667212e+00,8.264635988345458983e-01,7.484729405329387797e-02,8.232561699141133227e-02,1.241573859585899942e-01,1.980210390631801154e+00,4.774808534162811036e-02,1.456075235269363444e-02,1.144093988976008225e-02,1.660051431912427239e-02 -6.844732999999999947e+02,1.375120511704550186e+00,4.438144662446744659e-01,2.179608584653574543e-01,2.407048944930340606e-01,5.565190170577723805e+00,8.281536207685458173e-01,7.341275929466729855e-02,8.247394751098155452e-02,1.257680139825377297e-01,1.981364495903115586e+00,4.614274114945086241e-02,1.545169040240201852e-02,1.323591204024632262e-02,1.644209691019454800e-02 -6.851445999999999685e+02,1.372963677545770977e+00,4.443386945507042940e-01,2.184716056630416348e-01,2.407907524303129487e-01,5.567679133684544368e+00,8.325972257419231859e-01,7.360428905232475894e-02,8.258937224152904100e-02,1.262613180275011238e-01,1.984048370508464387e+00,4.618144784268515129e-02,1.559247023665313869e-02,1.360088021673755421e-02,1.651237120612809861e-02 -6.857771000000000186e+02,1.368157069292921246e+00,4.446631484298750325e-01,2.204773428785228306e-01,2.407693959454028088e-01,5.572455306872043046e+00,8.356455849486383869e-01,7.505665334796904342e-02,8.147718612746099320e-02,1.247508130132428117e-01,1.986298242789984014e+00,4.781542207275416012e-02,1.457796548458159536e-02,1.157280575895830443e-02,1.845472348048410316e-02 -6.865914999999999964e+02,1.369737960961070478e+00,4.453765265526717365e-01,2.200671671106352312e-01,2.420468844083907278e-01,5.574669629419009453e+00,8.386387220295419276e-01,7.500918637846246129e-02,8.306030696658492363e-02,1.250374006469391341e-01,1.987935983802491036e+00,4.738385424361552661e-02,1.640810584374136072e-02,1.232120608797937500e-02,1.741585520570766710e-02 -6.875606000000000222e+02,1.370675419152486807e+00,4.463984235664500977e-01,2.206521255243792390e-01,2.409921551289168073e-01,5.573625720561352637e+00,8.468647263939335090e-01,7.459827282342869348e-02,8.130983343734807245e-02,1.254080503809794911e-01,1.993240215138152083e+00,4.769533519843968672e-02,1.489055431647162697e-02,1.240968008298398706e-02,1.872443190356620768e-02 -6.888088000000000193e+02,1.368572468401294540e+00,4.448385502630164412e-01,2.214883243906611843e-01,2.428978146277967487e-01,5.558192942543561443e+00,8.532181481412890456e-01,7.635357190079471168e-02,8.098065163348491802e-02,1.251237349270931110e-01,1.993629136987038475e+00,4.786368377867651625e-02,1.507040752419794294e-02,1.244632435509546164e-02,1.888489201163882220e-02 -6.900868000000000393e+02,1.363780252039193064e+00,4.426938902756150096e-01,2.222821490888508833e-01,2.423793205833806308e-01,5.538102266990205358e+00,8.616019251451838556e-01,7.683785594927169948e-02,8.005697344805887128e-02,1.247087146248588435e-01,1.998660886899574995e+00,4.910056298307902134e-02,1.574464063127367641e-02,1.235943044883544562e-02,1.875577376289742915e-02 -6.914003000000000156e+02,1.360089262318825210e+00,4.450818071652675179e-01,2.222453422843595483e-01,2.438959680741197567e-01,5.548263115387604749e+00,8.726070978898348152e-01,7.635617663832396096e-02,8.008327980984419892e-02,1.271594413535542256e-01,2.005750392716064923e+00,4.831212969433051896e-02,1.578633186731115412e-02,1.364128812012688208e-02,1.881717871074250342e-02 -6.924365000000000236e+02,1.358973669422042008e+00,4.465324914093444231e-01,2.236650097744502519e-01,2.446982755441771129e-01,5.559361837308598453e+00,8.798273304938213357e-01,7.727572169211605058e-02,8.046380550344006677e-02,1.279118761985237329e-01,2.010896076473426941e+00,4.874231166255260650e-02,1.649519529130616391e-02,1.313468794742755907e-02,1.948644878947139447e-02 -6.934423000000000457e+02,1.358691937563393903e+00,4.464204132258844382e-01,2.236305742296092469e-01,2.436400962268338577e-01,5.568157126507585986e+00,8.858298153840733491e-01,7.685193356163738665e-02,8.132958557272604305e-02,1.272158477091579198e-01,2.015264325613703278e+00,4.925722552392787501e-02,1.784522372777225252e-02,1.256502007683288347e-02,1.853763285191858956e-02 -6.943549000000000433e+02,1.355787312369571396e+00,4.488236610791244141e-01,2.245000932157038553e-01,2.432563619419655931e-01,5.577935410235031810e+00,8.914956662022630596e-01,7.718165397561727037e-02,7.983983967162239237e-02,1.271007980599314635e-01,2.019206387429342442e+00,4.879071313370036966e-02,1.740168281547357920e-02,1.309094731839877124e-02,1.980854874649665837e-02 -6.951436999999999671e+02,1.349997062470404519e+00,4.478660291768645774e-01,2.257598967877461615e-01,2.439792485744692874e-01,5.577145385503899710e+00,8.965832193678933137e-01,7.857514705552137713e-02,7.950493201457331516e-02,1.254758160906933318e-01,2.021140300189764538e+00,5.044020981814503757e-02,1.776164738139775212e-02,1.197933593276084840e-02,1.964985616419552550e-02 -6.957028000000000247e+02,1.350006108333771326e+00,4.475886500142476909e-01,2.261650767852735888e-01,2.435687078016534057e-01,5.575942848036572030e+00,9.007087601773964280e-01,7.891743828769226532e-02,7.924670452200932580e-02,1.254586989310833844e-01,2.024034897214107787e+00,5.031537770678135013e-02,1.785333607833411440e-02,1.227544612981218419e-02,1.970088122808670572e-02 -6.960229000000000497e+02,1.355423476964650265e+00,4.474514544793648518e-01,2.251446382719289874e-01,2.446301362980300431e-01,5.579499817992420674e+00,9.004172690379279587e-01,7.729719718397853878e-02,8.006510002028069395e-02,1.269819931206238595e-01,2.025163747523798463e+00,4.939280272108093062e-02,1.939456392585026112e-02,1.313711397242826179e-02,1.859277313776874774e-02 -6.965309999999999491e+02,1.355475106729705503e+00,4.474251493307675465e-01,2.257647435680153469e-01,2.444357774891697810e-01,5.581958193490700992e+00,9.045562688750452551e-01,7.749710686736360765e-02,7.993523795474966054e-02,1.270228135350541521e-01,2.027994055260396777e+00,4.962230690212554585e-02,1.969154905012715506e-02,1.311688025931940019e-02,1.827613863154115004e-02 -6.969963999999999942e+02,1.355522397602873408e+00,4.474010548293756995e-01,2.263327360986169268e-01,2.442577523176610033e-01,5.584209970615084728e+00,9.083474330635796790e-01,7.768021642581163233e-02,7.981628931216322442e-02,1.270602034600214203e-01,2.030586507967764298e+00,4.983252387881953460e-02,1.996357596773878917e-02,1.309834695862885368e-02,1.798611363803914731e-02 -6.976871999999999616e+02,1.358668070694717178e+00,4.498089293564652147e-01,2.263148735070769635e-01,2.420368287340342039e-01,5.584031338122551702e+00,9.175774721176503945e-01,7.886967161019854677e-02,7.861295533028228588e-02,1.266203610088346143e-01,2.033113309055529339e+00,5.037953589373372204e-02,1.882633783901083158e-02,1.314734783096582760e-02,1.954307310971747924e-02 -6.987069999999999936e+02,1.355025226329697796e+00,4.495815392034125946e-01,2.257541324857445519e-01,2.445860702889440241e-01,5.589570715380844490e+00,9.218404932863419887e-01,7.761455892885074648e-02,7.998293880958255719e-02,1.278011904215057282e-01,2.037450831077645574e+00,5.065466054306833055e-02,2.104382511815350298e-02,1.263360300675475667e-02,1.741786602309286502e-02 -7.000016000000000531e+02,1.350518372604006423e+00,4.518667872064984214e-01,2.272662477115000024e-01,2.450954057960909593e-01,5.582321153815612114e+00,9.297298342226163470e-01,7.723283462533431232e-02,7.926523173372945763e-02,1.262644168041530124e-01,2.039736184641019356e+00,5.211619126327460272e-02,1.945285694632176154e-02,1.172318962228929839e-02,1.883011106484305808e-02 -7.013523000000000138e+02,1.350482884598247058e+00,4.513501261902430617e-01,2.250418675062952345e-01,2.435687260039432478e-01,5.550826665889744937e+00,9.335992340141525681e-01,7.617196420865668394e-02,7.961238439428561242e-02,1.277710178812097863e-01,2.040163910449391604e+00,5.146334946312519643e-02,1.981316685903870833e-02,1.414501907890636234e-02,1.754036041242159477e-02 -7.027246999999999844e+02,1.346660083449731093e+00,4.521809986257724345e-01,2.251194635018030077e-01,2.427351516710747337e-01,5.561346629995777668e+00,9.455267056210612253e-01,7.537087052605120907e-02,7.932347079006893398e-02,1.285525194632973212e-01,2.044929833248022799e+00,5.288492916139950206e-02,1.891430102021771781e-02,1.400393867732389885e-02,1.793692257502055298e-02 -7.040104000000000042e+02,1.348309511828176710e+00,4.547833301757003843e-01,2.275923981140458574e-01,2.423085706798507044e-01,5.584305513293868373e+00,9.558409181811020616e-01,7.740421647267203831e-02,7.921785189617858158e-02,1.270973725220485573e-01,2.055470549953759551e+00,5.403839031994284170e-02,1.889880094203943983e-02,1.263755643749581159e-02,1.827779594346481268e-02 -7.051559999999999491e+02,1.354553585617940037e+00,4.534737000663864315e-01,2.255400678038475548e-01,2.426362584604213890e-01,5.584623773097767696e+00,9.637258729719624384e-01,7.505982135868802252e-02,7.891552445648047920e-02,1.292865058164339442e-01,2.058130853735657073e+00,5.366462271903171821e-02,1.948679969103761511e-02,1.413341657251684924e-02,1.654261398495566332e-02 -7.060839999999999463e+02,1.348623943162141625e+00,4.565462447298049842e-01,2.288996246178429672e-01,2.433315576811547198e-01,5.579463447983452618e+00,9.689960483723369933e-01,7.639941743239336835e-02,7.741482129252377775e-02,1.290017434812252839e-01,2.063543814033045543e+00,5.587276637830629333e-02,1.783788261691832133e-02,1.256377602345857408e-02,1.839781296384263021e-02 -7.067544000000000324e+02,1.345237076264523601e+00,4.563362118139548951e-01,2.289952990817916145e-01,2.433147203798659841e-01,5.574593858232438137e+00,9.738152492701113161e-01,7.611211397034400861e-02,7.751315785929216440e-02,1.296932373514062542e-01,2.066605769005708026e+00,5.659197606663779467e-02,1.716437622668798291e-02,1.250847287442234668e-02,1.857386142398817497e-02 -7.072024999999999864e+02,1.343287383827566739e+00,4.558708459916610556e-01,2.282126480573870575e-01,2.435133413903622368e-01,5.567747374322152609e+00,9.766932915483232946e-01,7.526180285343031517e-02,7.808597126482497153e-02,1.305779196593463420e-01,2.067555300974025734e+00,5.684333407902819602e-02,1.716116524241129149e-02,1.268498563531100798e-02,1.830965560876918197e-02 -7.075295999999999594e+02,1.344423760796086498e+00,4.549360483142947387e-01,2.279441756301530120e-01,2.456912116248906597e-01,5.584137291682337967e+00,9.779528558667349714e-01,7.496299537110218125e-02,7.896957253889570760e-02,1.313087191860047298e-01,2.073000259137760537e+00,5.630355450508295334e-02,1.897477845167117039e-02,1.264533783493426711e-02,1.670385983588008882e-02 -7.079188000000000329e+02,1.342836964518320908e+00,4.548128665501526835e-01,2.283496869332571899e-01,2.459964698072806821e-01,5.586626706202003412e+00,9.807087285250357667e-01,7.508479195666023509e-02,7.894033817123807806e-02,1.315805281592739573e-01,2.076062320662174443e+00,5.666240866872274129e-02,1.877561772290492481e-02,1.250742302129248529e-02,1.666857299340994414e-02 -7.083943000000000438e+02,1.340284339990785556e+00,4.548851124023601811e-01,2.287595188915562128e-01,2.460618941392495040e-01,5.586731624767216076e+00,9.842352139486543194e-01,7.540639578761586248e-02,7.873435905944858870e-02,1.316169221280941715e-01,2.079049597071364275e+00,5.716960352995636985e-02,1.822170031813374891e-02,1.230985688645663823e-02,1.693911388736246693e-02 -7.091683000000000447e+02,1.331401880856355469e+00,4.573074196475863662e-01,2.285327604729559536e-01,2.432934149248008049e-01,5.592568876537339584e+00,9.923064154332994491e-01,7.543259452155293143e-02,7.726358949370223939e-02,1.320569425815295572e-01,2.083090799849505625e+00,5.606742866772849998e-02,1.633392473813199963e-02,1.292519817062791170e-02,1.877517043579326333e-02 -7.101644999999999754e+02,1.326017998248066654e+00,4.566460730757498920e-01,2.283269199430874030e-01,2.469377542503672085e-01,5.591317897144243432e+00,9.978345649050668342e-01,7.680907844579698551e-02,7.881823285535992374e-02,1.317046940578209813e-01,2.086068229950647002e+00,5.672824284609920276e-02,1.857246479668746633e-02,1.162424195490238676e-02,1.598486899751686008e-02 -7.112949999999999591e+02,1.318426455684245546e+00,4.565264468041558832e-01,2.286122240308579578e-01,2.450268558397743213e-01,5.577785223167008866e+00,1.005888639853390387e+00,7.775547600616450339e-02,7.770936886380441777e-02,1.304818914820508879e-01,2.091309130213723666e+00,5.625464884644278823e-02,1.819480792176370043e-02,1.203155393273069862e-02,1.686934559140024215e-02 -7.127739000000000260e+02,1.318560900386551271e+00,4.543035972339422024e-01,2.287227610765438235e-01,2.450909031492422840e-01,5.551746557247875913e+00,1.013814687912075740e+00,7.706723874056672918e-02,7.835906083955376800e-02,1.316670977517951091e-01,2.091363639537228813e+00,5.602763671803895340e-02,1.828469933557400062e-02,1.141724119986403663e-02,1.681107325970419841e-02 -7.142333999999999605e+02,1.316973171278748689e+00,4.554243971871873020e-01,2.287015814764726263e-01,2.459429201259633324e-01,5.566194123068669342e+00,1.025399772307020285e+00,7.636966119590624102e-02,7.862548592537660364e-02,1.332698450558370551e-01,2.103985291519984813e+00,5.460814425330215438e-02,1.874274307046869259e-02,1.248238067761192616e-02,1.633903356318658351e-02 -7.155303999999999860e+02,1.311883293107633186e+00,4.588929181738753416e-01,2.321689870044567616e-01,2.451563617195092470e-01,5.588450981463340739e+00,1.039678723823680428e+00,7.826701232629884597e-02,7.778475199934725692e-02,1.336158198771191241e-01,2.117682563256377826e+00,5.655561153455412882e-02,1.733871462773850514e-02,1.060900276542964260e-02,1.832347180610716109e-02 -7.166022000000000389e+02,1.311527269397434026e+00,4.578515688357223667e-01,2.316335195691699989e-01,2.467550604215145715e-01,5.587549441799422034e+00,1.043068570544063878e+00,7.772717478125090729e-02,8.045675761798409820e-02,1.347858386201739589e-01,2.119296913500511526e+00,5.454024914909311184e-02,1.953634022533617259e-02,1.227159308573749774e-02,1.575288244519565395e-02 -7.175114999999999554e+02,1.311580827613438638e+00,4.610221589414352228e-01,2.328254256719373694e-01,2.462142061179621033e-01,5.589354184572600026e+00,1.051780331215219633e+00,7.878479099556784382e-02,7.813334664429447129e-02,1.338755350650686071e-01,2.130069103827875399e+00,5.473041438384601554e-02,1.771791998606050966e-02,1.129068731800178527e-02,1.729548754722853854e-02 -7.181369999999999436e+02,1.313827474523497019e+00,4.607993980758152142e-01,2.328947606712220564e-01,2.462173484687578129e-01,5.585740061676192525e+00,1.056922490730037190e+00,7.909534371461984792e-02,7.832393476707438795e-02,1.338455260477292297e-01,2.132783610563447674e+00,5.458720564230323813e-02,1.788681125777213943e-02,1.149220796947475476e-02,1.698032660673748362e-02 -7.186028000000000020e+02,1.312660136791028886e+00,4.586038012116084861e-01,2.314937833405588119e-01,2.481234246502476704e-01,5.594403645886293575e+00,1.060221508042356042e+00,7.954897279358164042e-02,8.078172546635520312e-02,1.352404411925421379e-01,2.132263650047736547e+00,5.390218098379651046e-02,2.045575208232263548e-02,1.162808409974014356e-02,1.490499073470234748e-02 -7.189153999999999769e+02,1.313934075952592817e+00,4.587897075494211108e-01,2.318629925884062581e-01,2.482363682587060971e-01,5.595369073788113212e+00,1.062962637193106019e+00,7.986123080588403145e-02,8.105303009601849684e-02,1.354615471874564547e-01,2.134320374193297454e+00,5.403555155873102089e-02,2.044966086335853542e-02,1.156643481812399954e-02,1.487984267687441492e-02 -7.191815000000000282e+02,1.315018513607398187e+00,4.589479598734516608e-01,2.321772810748178317e-01,2.483325112344283436e-01,5.596190891973251702e+00,1.065296016806076551e+00,8.012703968967704871e-02,8.128397751109661673e-02,1.356497631351427091e-01,2.136071155687647050e+00,5.414908294065706729e-02,2.044447572782959188e-02,1.151395601505916799e-02,1.485843545298441010e-02 -7.196648000000000138e+02,1.316988106687320581e+00,4.592353832037934236e-01,2.327481026662595598e-01,2.485071294237052308e-01,5.597683506512437290e+00,1.069533981356802776e+00,8.060981095437869115e-02,8.170343217365660937e-02,1.359916074324623581e-01,2.139250985436684793e+00,5.435528255315180690e-02,2.043505830580352733e-02,1.141864220250290995e-02,1.481955491444237466e-02 -7.202904999999999518e+02,1.320051848139207173e+00,4.590285686073510840e-01,2.325526521358447507e-01,2.471510836971647640e-01,5.603073151601984492e+00,1.074738533331784929e+00,7.883125815070574083e-02,7.990854847847284059e-02,1.366613581348744555e-01,2.145854481076781894e+00,5.334847443416514817e-02,1.913794277710423319e-02,1.215510035220233875e-02,1.601218956189182085e-02 -7.213409000000000333e+02,1.319604105608162659e+00,4.589033886058395129e-01,2.352212954690966473e-01,2.492939242387655907e-01,5.603915687685591784e+00,1.080404883377129366e+00,8.000352474871273711e-02,8.253168716210734779e-02,1.358066478643371044e-01,2.150455065859688375e+00,5.483665351019043066e-02,2.004019729115352755e-02,1.035283064834505162e-02,1.497144389454699298e-02 -7.226969000000000278e+02,1.325631770877596205e+00,4.609736463388495187e-01,2.342353182444782689e-01,2.487751742104223895e-01,5.617836553092860008e+00,1.092321472031455798e+00,7.736208270879332827e-02,8.191541482982589439e-02,1.378899698295036336e-01,2.159637809614617598e+00,5.427367721602829875e-02,1.815439786340677930e-02,1.245155726157019804e-02,1.578426627058404641e-02 -7.240614000000000487e+02,1.314357880658878486e+00,4.599675433051322315e-01,2.336636771913514765e-01,2.500975452207626071e-01,5.575290244071151591e+00,1.099315719994445217e+00,7.890816870415345852e-02,8.278022752412081409e-02,1.352302793476999887e-01,2.154362905622585700e+00,5.517342713637028717e-02,1.933285398963262292e-02,1.149929931011123285e-02,1.452902285732757259e-02 -7.255458999999999605e+02,1.311552702853925112e+00,4.626455991954421809e-01,2.352130604366351740e-01,2.503585205261630309e-01,5.580053757732913233e+00,1.112562039341270292e+00,7.861033976615605656e-02,8.380710420028056329e-02,1.354902148314842958e-01,2.162412853810219637e+00,5.587864540617200337e-02,1.908546765594381495e-02,1.050960981439606756e-02,1.436638571661444375e-02 -7.269772000000000389e+02,1.312813336202358183e+00,4.661255348795742548e-01,2.382189467431043151e-01,2.518449492262172518e-01,5.621212248255321065e+00,1.131712444394175066e+00,7.927081962502691148e-02,8.312380685038273098e-02,1.383208908981367058e-01,2.182316404856678105e+00,5.640441015372685274e-02,1.795701323947415662e-02,1.069231359821232186e-02,1.586692752883317459e-02 -7.282740999999999758e+02,1.313614899721812890e+00,4.654097765121832930e-01,2.387346710669487615e-01,2.538600081350761428e-01,5.614344058468459409e+00,1.139752862340278838e+00,7.766649175236362002e-02,8.460289317761475469e-02,1.389013647299235377e-01,2.183742259691280552e+00,5.589076180485058609e-02,1.925683371744396633e-02,1.088455757810363744e-02,1.457654356771315163e-02 -7.293378000000000156e+02,1.313315197583496463e+00,4.679148147296291471e-01,2.387098743596237083e-01,2.532836050196695665e-01,5.614891831989461402e+00,1.152274302916862503e+00,7.789634342997947547e-02,8.241687634926270212e-02,1.390035123228432756e-01,2.190048594643605462e+00,5.623857035109251085e-02,1.679026147568413174e-02,1.121772407917046022e-02,1.704443502328806259e-02 -7.299293000000000120e+02,1.307750187765511107e+00,4.674731981154265359e-01,2.390507862153914420e-01,2.540688179738005426e-01,5.609735414237205120e+00,1.155472799494632774e+00,7.736934983930054965e-02,8.377303551513060054e-02,1.394355772684311157e-01,2.187973186904923040e+00,5.615640634019763988e-02,1.719269614483631692e-02,1.134936994151236611e-02,1.673785229437840805e-02 -7.302646999999999480e+02,1.305712918158023150e+00,4.662415085034029016e-01,2.401843478003176102e-01,2.561789610768203662e-01,5.615814535933495222e+00,1.161271250059611404e+00,7.832482361184572861e-02,8.414204573025485523e-02,1.384046748362629531e-01,2.190206527640697232e+00,5.741818845664536930e-02,1.808207201451106361e-02,1.063782145635923382e-02,1.555818937395420098e-02 -7.304641000000000304e+02,1.305112415004634041e+00,4.665006788822665951e-01,2.405143572359440540e-01,2.564634193944952401e-01,5.615664614325177162e+00,1.163744487918020099e+00,7.838783820188796603e-02,8.395937232466144096e-02,1.382599227483122251e-01,2.191181134310003387e+00,5.761617886292791368e-02,1.793390179069720425e-02,1.061047725444951018e-02,1.564648029924869954e-02 -7.307332999999999856e+02,1.304301705632055608e+00,4.668505718912439595e-01,2.409598865241615595e-01,2.568474523890691419e-01,5.615462212635312866e+00,1.167083483060867621e+00,7.847291105865505934e-02,8.371275406595668489e-02,1.380645001701962249e-01,2.192496902190530506e+00,5.788347584071751317e-02,1.773386455774494941e-02,1.057356121054732478e-02,1.576567747622603655e-02 -7.311399999999999864e+02,1.303257378371058817e+00,4.675442333395967154e-01,2.415801605364915616e-01,2.569985931746361363e-01,5.612578539617683937e+00,1.171579368935976362e+00,7.830146491156841915e-02,8.299497314382678348e-02,1.375471153978398975e-01,2.194498516451951708e+00,5.820015002090594969e-02,1.709883730750583197e-02,1.059369207061183760e-02,1.617931398386526776e-02 -7.315712999999999511e+02,1.301717183876522910e+00,4.678841186435245270e-01,2.423645939455369991e-01,2.581875646575417793e-01,5.615701242918840208e+00,1.177662475182550850e+00,7.883886711433851779e-02,8.306142664075372162e-02,1.375310565704040699e-01,2.196588143372149915e+00,5.874493328351404475e-02,1.722336665492754659e-02,1.043305497344559907e-02,1.605798993088602966e-02 -7.326069999999999709e+02,1.298655318510973711e+00,4.728201223375730899e-01,2.447544365166587355e-01,2.598136288485197731e-01,5.640824768892237273e+00,1.191150417200619316e+00,7.789835414912224532e-02,8.222160983719717375e-02,1.393858438566536462e-01,2.210515686681199021e+00,5.751230726318080910e-02,1.624435050757577770e-02,1.348078694755805440e-02,1.724053837006961354e-02 -7.337989999999999782e+02,1.305442589724590707e+00,4.734075433876878680e-01,2.438161587036672406e-01,2.626444439774047179e-01,5.653407345888513902e+00,1.197056527170309970e+00,7.838016404329654907e-02,8.250077940523015130e-02,1.390667112247716553e-01,2.214454429957982473e+00,5.685066092414300942e-02,1.739088300407379967e-02,1.279735985604169013e-02,1.600442998309241707e-02 -7.352998999999999796e+02,1.297695143208416280e+00,4.725733316060709011e-01,2.469293972291274342e-01,2.606829277545290591e-01,5.603211669555981267e+00,1.206734910627123902e+00,7.917014251550448523e-02,8.227025546660679534e-02,1.393236248667812927e-01,2.214926435034302976e+00,5.710437119885394819e-02,1.795123375776133678e-02,1.103907256543208704e-02,1.710123827610779412e-02 -7.369642999999999802e+02,1.300465400561597651e+00,4.773775038694019202e-01,2.496996523547487801e-01,2.614326729887855860e-01,5.605719403227568343e+00,1.228684231598492715e+00,7.945959001455042692e-02,8.084909172596765892e-02,1.418922278445020058e-01,2.233966223923418148e+00,5.709632240319854890e-02,1.777813365001027629e-02,1.075164832248101665e-02,1.840607991853543401e-02 -7.385788000000000011e+02,1.304579363483168830e+00,4.770183824866343070e-01,2.521111132183393999e-01,2.675544793635907248e-01,5.651524548772780321e+00,1.247976180223597353e+00,8.046406505952793942e-02,8.167478636469022168e-02,1.422446640427338926e-01,2.247430946270378982e+00,5.795932295755867880e-02,1.893339395729098928e-02,1.174211707737465860e-02,1.710067952181801298e-02 -7.398731000000000222e+02,1.301969902290321723e+00,4.820934856092571330e-01,2.532208033252300594e-01,2.658716117399293477e-01,5.642231076353946051e+00,1.261187781736865077e+00,8.110809576228267259e-02,7.961544761619315791e-02,1.426669395690167708e-01,2.258845340987816641e+00,5.663668934875032424e-02,1.737312325763529230e-02,1.236212423039800834e-02,1.905983607659118492e-02 -7.406556000000000495e+02,1.302808588881854135e+00,4.836163926614096553e-01,2.537816065856218217e-01,2.656533439462049340e-01,5.633188097527558114e+00,1.268144015489934162e+00,8.066931367025026445e-02,7.986277861491844487e-02,1.436794230030994379e-01,2.264112876911943850e+00,5.621962117188877839e-02,1.809712371455884927e-02,1.203067783626315945e-02,1.906654521150015144e-02 -7.415258999999999787e+02,1.300118220049401918e+00,4.829523782792795039e-01,2.556058986399377675e-01,2.669058421465332342e-01,5.633853346827200070e+00,1.275333177259916795e+00,8.174223763180683833e-02,8.207852960486627936e-02,1.436693016826355862e-01,2.269837008909657783e+00,5.730394728275051142e-02,2.036191205815801597e-02,1.100208634483614001e-02,1.756410941343233834e-02 -7.418633999999999560e+02,1.300515172155258581e+00,4.835819761720248078e-01,2.558776350036228164e-01,2.666092222059861516e-01,5.632493418885906600e+00,1.278633138540371306e+00,8.183340302556853241e-02,8.224225300913140524e-02,1.441343062280882048e-01,2.272548026172803048e+00,5.714514128669406778e-02,2.053451932670569136e-02,1.094743584758496591e-02,1.775949168280560597e-02 -7.420481999999999516e+02,1.300732525486109736e+00,4.839267159959634856e-01,2.560264257592050896e-01,2.664468063096511186e-01,5.631748782786496044e+00,1.280440050672602581e+00,8.188332114339717804e-02,8.233190066871126644e-02,1.443889220503096205e-01,2.274032458736445328e+00,5.705818618129782083e-02,2.062903139552829668e-02,1.091751166420121266e-02,1.786647432985805084e-02 -7.421296999999999571e+02,1.300828382068709210e+00,4.840787522278411359e-01,2.560920450588800579e-01,2.663751780869707542e-01,5.631420385372524429e+00,1.281236930211438363e+00,8.190533589774258438e-02,8.237143683892644841e-02,1.445012120368411868e-01,2.274687119201471930e+00,5.701983747410199754e-02,2.067071285445165607e-02,1.090431458116129793e-02,1.791365552972151720e-02 -7.423464000000000169e+02,1.301592402734911502e+00,4.851058527976515600e-01,2.561133681341785095e-01,2.658791653577963765e-01,5.629838561151560228e+00,1.282316356553878656e+00,8.162287106686705318e-02,8.218165731837345778e-02,1.451348867518271746e-01,2.276385596398763589e+00,5.645139113246716578e-02,2.043019413359725700e-02,1.122340951445388590e-02,1.842822230964744068e-02 -7.429111000000000331e+02,1.301757004741233903e+00,4.859879614360207434e-01,2.574188076189031227e-01,2.646408332941426744e-01,5.639480060401705686e+00,1.290402818708434651e+00,7.993652439706186441e-02,8.173889497653080705e-02,1.463341768159091005e-01,2.284650531133260998e+00,5.659139566481724559e-02,1.939072574191744169e-02,1.237565547776667968e-02,1.901329052672384723e-02 -7.437853000000000065e+02,1.301912617909623648e+00,4.867452345268836744e-01,2.586940035811576832e-01,2.639368225861633555e-01,5.642119859324807862e+00,1.301413067394721068e+00,7.979874357255953288e-02,8.222478869462157558e-02,1.472950479196676321e-01,2.293370877868731839e+00,5.695658694056227045e-02,1.970229076810889324e-02,1.232869148187315522e-02,1.913467278048500142e-02 -7.452245000000000346e+02,1.302729854487745031e+00,4.862278118283189232e-01,2.628929567214195462e-01,2.648550262450968251e-01,5.658438003505865233e+00,1.315239096565038679e+00,8.162248591427770372e-02,8.369862744416400879e-02,1.443223019485088410e-01,2.299794651390456579e+00,6.127075990799013550e-02,1.965487113075493203e-02,1.131021986466712592e-02,1.968445072505298210e-02 -7.467373000000000047e+02,1.294529580301359228e+00,4.876086560260959324e-01,2.587735130112419069e-01,2.649680532798842636e-01,5.602923215780579724e+00,1.325523479299818064e+00,8.043671838808358343e-02,7.982942919626112577e-02,1.460014347439554938e-01,2.291660619786995756e+00,5.881170157263637677e-02,1.877745400488034511e-02,1.347539468427347287e-02,1.883686239700912979e-02 -7.482971000000000004e+02,1.296381140290974177e+00,4.863855475030171016e-01,2.597485621922484000e-01,2.657256950819284480e-01,5.598734160224257295e+00,1.341962899804350684e+00,7.987179436306128533e-02,7.939903652557928071e-02,1.478068454446611057e-01,2.301481142081064135e+00,5.955674856227505254e-02,1.859792451519248768e-02,1.388449588058379702e-02,1.875787284473286881e-02 -7.499092000000000553e+02,1.298423851299743248e+00,4.899351200481447677e-01,2.612566037329196456e-01,2.678088250946374371e-01,5.641772385744447504e+00,1.364719190868404652e+00,7.985807775648254281e-02,8.009057068971769944e-02,1.478488073573097916e-01,2.323254479907761905e+00,6.098341333880585857e-02,1.907342836136230457e-02,1.376388087335778110e-02,1.799287881525069022e-02 -7.512250999999999976e+02,1.293741875382028006e+00,4.904968595126165676e-01,2.624927612679469613e-01,2.672222387035939617e-01,5.642455893891019869e+00,1.376934191461706369e+00,7.920956619734716153e-02,7.925043597436920439e-02,1.483918630778123804e-01,2.330707475708924115e+00,6.192904586515064758e-02,1.748090845161420770e-02,1.453529302960304692e-02,1.886821802564372930e-02 -7.522743000000000393e+02,1.291289471307614622e+00,4.889520029054887917e-01,2.625640639703692436e-01,2.678823695828983498e-01,5.626911909439977322e+00,1.385005166795599152e+00,8.025276476717779772e-02,7.964347624652745594e-02,1.486264251399574965e-01,2.329655673930672855e+00,6.251408135280456246e-02,1.829902652138115648e-02,1.490108681916546551e-02,1.797425342170289042e-02 -7.529964999999999691e+02,1.289872818179236713e+00,4.896418419152640533e-01,2.633701890993053185e-01,2.699788643662428544e-01,5.636059817740067146e+00,1.394669873342029298e+00,7.991601631237543746e-02,7.995487491818276116e-02,1.492858085536894475e-01,2.334941361207189647e+00,6.293061473075492462e-02,1.884310791098649240e-02,1.372995545398658646e-02,1.759536458304375092e-02 -7.533713999999999942e+02,1.289714044346798927e+00,4.902416143324562769e-01,2.631654961607985399e-01,2.704552339397542360e-01,5.635169846522572357e+00,1.399206793119854630e+00,7.965592551840683377e-02,7.950327001548784800e-02,1.496711503527989873e-01,2.337276292385654042e+00,6.282845269394979337e-02,1.879122064532548486e-02,1.359838518732947588e-02,1.761317157387098584e-02 -7.534484999999999673e+02,1.289681391739487815e+00,4.903649604337246837e-01,2.631234000670165107e-01,2.705532016487905977e-01,5.634986819633084565e+00,1.400139832636711823e+00,7.960243658745191908e-02,7.941039528089788302e-02,1.497503977593376279e-01,2.337756482286585946e+00,6.280744257648468443e-02,1.878054977794095526e-02,1.357132712502151506e-02,1.761683366774343187e-02 -7.535996999999999844e+02,1.289617357054332780e+00,4.906068531770680918e-01,2.630408458597553456e-01,2.707453250937490452e-01,5.634627887522961842e+00,1.401969606630863119e+00,7.949754000690234523e-02,7.922825961462032218e-02,1.499058090157403544e-01,2.338698177656508559e+00,6.276623985585269572e-02,1.875962325201951941e-02,1.351826384329696262e-02,1.762401536156332424e-02 -7.536871999999999616e+02,1.289580299944868225e+00,4.907468374035400815e-01,2.629930714342569309e-01,2.708565076429148011e-01,5.634420172181455300e+00,1.403028503618219069e+00,7.943683596723238871e-02,7.912285702996890713e-02,1.499957460854177693e-01,2.339243140254842590e+00,6.274239568882031270e-02,1.874751299396314186e-02,1.348755592563227745e-02,1.762817143437575909e-02 -7.540733999999999924e+02,1.289401152361557834e+00,4.913591736820806521e-01,2.627847776901378052e-01,2.713589419764363964e-01,5.633585753896823256e+00,1.407710245670514837e+00,7.918544395852111784e-02,7.867263640576255268e-02,1.503927469651604731e-01,2.341672784228105986e+00,6.263925886235824358e-02,1.871007511639466436e-02,1.333964158445599679e-02,1.763912504290049421e-02 -7.549487000000000307e+02,1.296343616946163513e+00,4.948386147132484147e-01,2.604933936740361222e-01,2.697256900076586139e-01,5.654242238308309076e+00,1.416308801375209647e+00,7.828590066747539988e-02,7.754051041320275672e-02,1.503806110629461457e-01,2.347267578046261960e+00,6.041483862424845697e-02,1.796525718754654610e-02,1.499718728640908605e-02,1.897118073590162157e-02 -7.561117000000000417e+02,1.295336958141136030e+00,4.965498267721213388e-01,2.623675601612877606e-01,2.713892503110220122e-01,5.658746029325347315e+00,1.429667842877277550e+00,8.021037500211770921e-02,7.798217110955091291e-02,1.488292800258666781e-01,2.356839332871707882e+00,6.240549155773594814e-02,1.888379741322496197e-02,1.125663263875087416e-02,1.917044029516379311e-02 -7.576475000000000364e+02,1.296262965916370913e+00,4.987648984221985105e-01,2.643789897986513759e-01,2.709226993582232734e-01,5.659460247214975759e+00,1.435602990921034383e+00,7.923604641026765760e-02,7.840877476576353644e-02,1.488889182948349155e-01,2.364949571093841740e+00,6.171324516697807017e-02,1.969228683753504461e-02,1.038770681045964039e-02,1.965004942979814428e-02 -7.594292000000000371e+02,1.295425678906847011e+00,4.969763357050088204e-01,2.630241453735394641e-01,2.702950132146165751e-01,5.614467704128919046e+00,1.438611871737524250e+00,7.823766891971210835e-02,7.739129194943344947e-02,1.506121647175196476e-01,2.373099019374209195e+00,6.119915861310351590e-02,1.803240861648183757e-02,1.340002101523810052e-02,1.899289163374701106e-02 -7.610774000000000115e+02,1.302247401321524389e+00,5.010235445639997787e-01,2.643762677902382063e-01,2.733574187792527366e-01,5.668061166057711375e+00,1.459452150248934377e+00,7.913771291074542247e-02,8.083764809995502842e-02,1.505731917101785500e-01,2.391389534523171712e+00,6.180227014987058065e-02,2.035473825559833139e-02,1.201131497866454734e-02,1.795390541267140316e-02 -7.624795000000000300e+02,1.298150630285263896e+00,5.039880459025889436e-01,2.662160452514082953e-01,2.713885225915422250e-01,5.662731371279734915e+00,1.467236199264287722e+00,7.906727227718682305e-02,7.800748470925497613e-02,1.513629547153184096e-01,2.398420608796255404e+00,6.155395193329782355e-02,1.788301898123242223e-02,1.251388423982588427e-02,2.080060993809679237e-02 -7.636680000000000064e+02,1.296604781227678860e+00,5.014119057099797327e-01,2.668431279700781422e-01,2.726574067258186185e-01,5.646037201579364506e+00,1.470043912107446449e+00,7.884941789080468499e-02,7.877360364776575530e-02,1.512667585937071957e-01,2.401626026899958521e+00,6.241027931787641869e-02,1.866795858880465619e-02,1.198503022754837666e-02,1.972682990281543480e-02 -7.644188000000000329e+02,1.296759475208080659e+00,5.009871293911101198e-01,2.678737008882957626e-01,2.734972596350245255e-01,5.655145754328612107e+00,1.476672755030508988e+00,7.981520794866309165e-02,8.008812265769979510e-02,1.515397441006034462e-01,2.407196700862158867e+00,6.407097154956531426e-02,1.956774113312259589e-02,1.170731866678892397e-02,1.853263799672727474e-02 -7.648016999999999825e+02,1.298002000990946314e+00,5.015233603317563738e-01,2.673898846511566507e-01,2.725095657990329601e-01,5.648634273579126841e+00,1.477484771948103237e+00,7.987392950373328748e-02,7.952707345273535289e-02,1.514891536728089072e-01,2.409085346071647482e+00,6.377673618483825635e-02,1.916384385857661243e-02,1.237138362676110104e-02,1.886177231902841367e-02 -7.649154999999999518e+02,1.297562595081869219e+00,5.013710723863431529e-01,2.676400530327358585e-01,2.726847481353961156e-01,5.648871389543572263e+00,1.478252174717020750e+00,7.996126041883611091e-02,7.964462428650964654e-02,1.516338110749940737e-01,2.410022147071393395e+00,6.401153756133948214e-02,1.920721763428884232e-02,1.233816890561006963e-02,1.873463965685506771e-02 -7.649950999999999794e+02,1.297255242618226667e+00,5.012645511169679935e-01,2.678150390008702253e-01,2.728072834075799813e-01,5.649037245701480359e+00,1.478788952049233885e+00,8.002234601498880995e-02,7.972684789255923832e-02,1.517349949872432990e-01,2.410677413851532780e+00,6.417577472803137617e-02,1.923755640886443130e-02,1.231493611295961244e-02,1.864571382285684642e-02 -7.650054999999999836e+02,1.297215086014936958e+00,5.012506337651903010e-01,2.678379014891694165e-01,2.728232930411315094e-01,5.649058915350251731e+00,1.478859083760980297e+00,8.003032704765200567e-02,7.973759067525920674e-02,1.517482149958787607e-01,2.410763026596676628e+00,6.419723285031264659e-02,1.924152026885922462e-02,1.231190067271381583e-02,1.863409537218363443e-02 -7.654452999999999747e+02,1.297567100335273782e+00,5.035156274438019608e-01,2.676857181001432995e-01,2.712806050250218259e-01,5.663766381240590952e+00,1.485835563610114818e+00,7.920124758536287168e-02,7.890561457895720054e-02,1.534822420731820625e-01,2.414029146246975177e+00,6.271884413148343107e-02,1.777399644814936508e-02,1.371562449477431445e-02,1.973294947518616782e-02 -7.662161999999999580e+02,1.295438354619388832e+00,5.036641014124377813e-01,2.689176295901598568e-01,2.715493441707089728e-01,5.671076033287900664e+00,1.492692733502555491e+00,7.931039326351044250e-02,7.916997777450388019e-02,1.549480925707269474e-01,2.420228663244202050e+00,6.332275715142821060e-02,1.739159157411618306e-02,1.412422679469332865e-02,1.952936067112887031e-02 -7.673735000000000355e+02,1.298552076482855089e+00,5.034833125718063407e-01,2.725050672278870323e-01,2.720826923134164188e-01,5.686920025652511868e+00,1.503214434113205655e+00,8.239124569035449763e-02,8.044534400119529582e-02,1.541147362483514804e-01,2.424781384257504335e+00,6.610447370502237074e-02,1.786254926797897769e-02,1.249029633360082547e-02,1.814018349129620233e-02 -7.690570999999999913e+02,1.293807061665314340e+00,5.045622528502359261e-01,2.732495166562104449e-01,2.747513960301546931e-01,5.684939099464004997e+00,1.503854713822933675e+00,8.221232874920914035e-02,8.043089829149510650e-02,1.526516939799294481e-01,2.428304767344756421e+00,6.529819266524550248e-02,1.763983825529819027e-02,1.280492348276424108e-02,1.772436281426473248e-02 -7.706806000000000267e+02,1.285373072931145888e+00,5.047896802122140425e-01,2.695751189925162938e-01,2.737490809010167947e-01,5.642719837902957281e+00,1.497179973111918194e+00,8.100267478900285978e-02,7.941243658452294685e-02,1.544960527874151002e-01,2.427839469980157983e+00,6.523547610030261401e-02,1.751981110942199549e-02,1.304895611475448414e-02,1.857214464173935486e-02 -7.723019000000000460e+02,1.284254983724044674e+00,5.072656186668346168e-01,2.720678054759384512e-01,2.753286270270819402e-01,5.686388539407943199e+00,1.511482320173825222e+00,8.206601696448043159e-02,8.089268982877720338e-02,1.567625463546622466e-01,2.442197533702411771e+00,6.520303050248624221e-02,1.784586529191420357e-02,1.171438024760276808e-02,1.893362521412900179e-02 -7.737468999999999824e+02,1.277571393952773970e+00,5.115405653024572841e-01,2.725746254410500446e-01,2.743995860543564924e-01,5.699340189892316388e+00,1.517148402520340333e+00,8.184550195109452364e-02,7.972592026919798902e-02,1.575483590865899286e-01,2.446736931520092639e+00,6.619093999022079844e-02,1.648963968151664905e-02,1.200448065466747094e-02,1.975729843824164389e-02 -7.748807000000000471e+02,1.281619920543174640e+00,5.096905882543746324e-01,2.717305662212924355e-01,2.777727409756715060e-01,5.691715063603741243e+00,1.514729012261919916e+00,8.365292577679378505e-02,8.256418278967186941e-02,1.565382940104612652e-01,2.444210443408842526e+00,6.687889611825703629e-02,1.872698089820402229e-02,1.136426596858847171e-02,1.697037089608149918e-02 -7.756788999999999987e+02,1.278957129994704012e+00,5.104284796903407750e-01,2.709665851112929014e-01,2.789623243793563079e-01,5.683684284431574696e+00,1.510650494647405306e+00,8.392831528750138714e-02,8.249044944327101059e-02,1.568746216146575390e-01,2.444597290449466165e+00,6.670209598053933320e-02,1.881056770400369588e-02,1.106966847980428437e-02,1.713824935836821828e-02 -7.761373999999999569e+02,1.277301336191353442e+00,5.111917990995353822e-01,2.705400303284873909e-01,2.789392033459752174e-01,5.676844652903347388e+00,1.508630449249592331e+00,8.372874135390262484e-02,8.183280173564855264e-02,1.571843443616029734e-01,2.444695671088453537e+00,6.603586899733560056e-02,1.823088633646263723e-02,1.125826884453451360e-02,1.772496015454472218e-02 -7.763500999999999976e+02,1.276646481395138366e+00,5.112413096199699414e-01,2.703311227560180052e-01,2.795623593517777561e-01,5.675669642390215763e+00,1.507403762202536690e+00,8.395717577861028236e-02,8.207981498340133353e-02,1.572234642256166715e-01,2.444852422932481950e+00,6.623347767178056067e-02,1.852519589683643275e-02,1.102469005309836270e-02,1.755721446338343039e-02 -7.763423000000000229e+02,1.276670495816437878e+00,5.112394940014490796e-01,2.703387836825118518e-01,2.795395073684903142e-01,5.675712731633292485e+00,1.507448746494812752e+00,8.394879877572969384e-02,8.207075666966157090e-02,1.572220296466824707e-01,2.444846674627905614e+00,6.622623109133540797e-02,1.851440316260544172e-02,1.103325570694513313e-02,1.756336592737517410e-02 -7.763700999999999794e+02,1.281648264182182029e+00,5.129539724711250637e-01,2.706646920597250983e-01,2.772361302162632546e-01,5.685941529304694875e+00,1.511546538576121534e+00,8.356865745769459508e-02,8.011369423750522301e-02,1.575405017227976823e-01,2.449986904242312136e+00,6.541061783437607247e-02,1.757843017844717970e-02,1.189550683434681400e-02,1.806794686031210073e-02 -7.767237999999999829e+02,1.281734683971922806e+00,5.134327916754345411e-01,2.703992914538397851e-01,2.777187792341283545e-01,5.686397707298067594e+00,1.510495131755761111e+00,8.385334757573736919e-02,8.006265729865973124e-02,1.576782958960503966e-01,2.451436037827776637e+00,6.554389472728616717e-02,1.784163791271731192e-02,1.171433264488991322e-02,1.791122182667087559e-02 -7.774704000000000406e+02,1.281917101317188168e+00,5.144434968434797861e-01,2.698390763213713850e-01,2.787375684813385712e-01,5.687360620755382179e+00,1.508275792394491610e+00,8.445427955801254605e-02,7.995492707942862542e-02,1.579691557483277331e-01,2.454494910134554786e+00,6.582521937599045136e-02,1.839722426953394052e-02,1.133190502303932368e-02,1.758040217692086182e-02 -7.785392000000000507e+02,1.284586719427898815e+00,5.111185577187961071e-01,2.712768815593409322e-01,2.785279241614995738e-01,5.701570439958726588e+00,1.505198100526396132e+00,8.587694241958210295e-02,8.059948351623963392e-02,1.575454962487199406e-01,2.452291252276442624e+00,6.664938941780529369e-02,2.022656201791916963e-02,9.396415639495780958e-03,1.683244777061367048e-02 -7.800212999999999965e+02,1.282720128077651012e+00,5.156661644218426543e-01,2.717809556235615820e-01,2.769268546924006369e-01,5.699182228169705766e+00,1.504303347350925302e+00,8.656495351628379353e-02,8.039149002833231861e-02,1.573182040446517715e-01,2.449694927126821575e+00,6.740513018196797601e-02,1.898933078968487176e-02,9.991663046679200022e-03,1.746134039782087921e-02 -7.817943999999999960e+02,1.278723614302537337e+00,5.174988981801301735e-01,2.707460008001608687e-01,2.758484531750210467e-01,5.671294615317910015e+00,1.491266915977029317e+00,8.610974696231196712e-02,8.004917519026495676e-02,1.552448388069692931e-01,2.439202822965167883e+00,6.681943394284395321e-02,1.790426465743663598e-02,9.824748082740218658e-03,1.773183537371834581e-02 -7.833636999999999944e+02,1.280415028951398693e+00,5.193925763576716648e-01,2.689269856152953775e-01,2.773664993387285338e-01,5.695417077098801073e+00,1.488080412193969693e+00,8.527895338617375032e-02,8.084263981494925477e-02,1.563220947602486643e-01,2.442723084848754667e+00,6.614369119403537556e-02,1.830780804340639834e-02,1.042205778406535277e-02,1.663439739861648226e-02 -7.848076999999999543e+02,1.292179705576492754e+00,5.227927809427367345e-01,2.698935477702361085e-01,2.768513154637093354e-01,5.717404798722575343e+00,1.490214088301554440e+00,8.724520796451179505e-02,7.891869395756756500e-02,1.564976291191165769e-01,2.447551132263108720e+00,6.630649410713829184e-02,1.740337657023460771e-02,1.029059165924281483e-02,1.787177378612697654e-02 -7.860824000000000069e+02,1.288356123879454085e+00,5.221487891168388185e-01,2.705232840044414777e-01,2.791817818201356438e-01,5.714855296432000742e+00,1.481737898468521664e+00,8.692240228237163580e-02,8.159717212433548195e-02,1.560911058629377290e-01,2.443195220681903645e+00,6.563443668296412015e-02,1.924494215990657509e-02,9.939957114786367176e-03,1.618248230124713638e-02 -7.869000999999999522e+02,1.284509192638288333e+00,5.232056489845258174e-01,2.704339123390472888e-01,2.792041723372899464e-01,5.710933643158724315e+00,1.476756859493665530e+00,8.648707971386854210e-02,8.126413636345314329e-02,1.551011579640743099e-01,2.443240584482815780e+00,6.567857038265163816e-02,1.877381453130799738e-02,9.898197584489260015e-03,1.648835869783987773e-02 -7.872525000000000546e+02,1.282965345345539188e+00,5.238856927707740141e-01,2.704409706900036126e-01,2.776161966548147397e-01,5.707319752351002862e+00,1.475576280354043313e+00,8.620143428571047650e-02,8.006561734627704041e-02,1.544625347360097933e-01,2.444003975311871191e+00,6.573190896438990682e-02,1.810643118858526468e-02,9.979374369359861330e-03,1.701412879327240946e-02 -7.874701000000000022e+02,1.281896502988664643e+00,5.240780737968898650e-01,2.703991543463939995e-01,2.782543232950529521e-01,5.707037383839754341e+00,1.473868496653998328e+00,8.612438198568639347e-02,8.039444494084446724e-02,1.542829804717288367e-01,2.443721715049895771e+00,6.573007390909189895e-02,1.816479571607787502e-02,9.929019370026770375e-03,1.693964395990210647e-02 -7.875647000000000162e+02,1.281431831633148555e+00,5.241617100334273749e-01,2.703809749984827926e-01,2.785317441597889854e-01,5.706914626205727537e+00,1.473126050247636876e+00,8.609088406481196776e-02,8.053740031973277702e-02,1.542049205755846586e-01,2.443599004476445291e+00,6.572927613229415100e-02,1.819016926525435229e-02,9.907127904324075640e-03,1.690726222627692010e-02 -7.876725999999999885e+02,1.283960374371996060e+00,5.269048679445629269e-01,2.699723633433636638e-01,2.753362268259710310e-01,5.716886156202918734e+00,1.477909153878053328e+00,8.646733783024704301e-02,7.962053424820281222e-02,1.544198718683308380e-01,2.445524177071149108e+00,6.546527588969353051e-02,1.636794095756510803e-02,1.065828957317277448e-02,1.857872348397116014e-02 -7.878953000000000202e+02,1.283264869201704350e+00,5.274466402401507548e-01,2.698790443830924035e-01,2.755318643485664687e-01,5.717914241352431759e+00,1.476894666452390315e+00,8.644249099494052957e-02,7.981640461528227704e-02,1.542757047346903221e-01,2.445504293938419060e+00,6.542912920056870307e-02,1.618655079079245329e-02,1.070784871009772266e-02,1.872501866381881541e-02 -7.886690999999999576e+02,1.280848246387283229e+00,5.293290982658607202e-01,2.695547955664876483e-01,2.762116322649756928e-01,5.721486456389223818e+00,1.473369698468653954e+00,8.635615744684811690e-02,8.049698158001550308e-02,1.537747773525122152e-01,2.445435207417958168e+00,6.530353284652834489e-02,1.555628715788404115e-02,1.088004835155498284e-02,1.923334021822431517e-02 -7.897835999999999785e+02,1.282307158236171141e+00,5.316369586662981206e-01,2.686874440911966033e-01,2.776883723330241804e-01,5.729236164483203275e+00,1.467803223082141617e+00,8.705420074617134518e-02,8.222756180304896523e-02,1.542229799111409227e-01,2.445732749078529000e+00,6.630065426759768066e-02,1.679494222278010707e-02,1.086690287965152990e-02,1.674209819257141407e-02 -7.912100000000000364e+02,1.281622145565050941e+00,5.323641158338013879e-01,2.702912589475459093e-01,2.781426422835663326e-01,5.724866243592510173e+00,1.457908889759574667e+00,8.790350451284262290e-02,8.000702697944513109e-02,1.528964020208571917e-01,2.433697266766678524e+00,6.590750961789215712e-02,1.642904234498924337e-02,1.131638641661976419e-02,1.697610171488739272e-02 -7.928337999999999965e+02,1.276097703701399855e+00,5.323395035787591434e-01,2.673568772633484469e-01,2.766102107322329084e-01,5.695256697748448005e+00,1.429523981039259262e+00,8.640831710881424765e-02,7.980117533057573542e-02,1.520255270457029351e-01,2.419132226829363574e+00,6.437831275846250811e-02,1.715230320510999218e-02,1.207600461661378910e-02,1.769630714417439951e-02 -7.945865000000000009e+02,1.281866539956470596e+00,5.355010376705828801e-01,2.658929214260091767e-01,2.780985501122831272e-01,5.717095935709289201e+00,1.417361563045840711e+00,8.571436009543720314e-02,7.944733890690103273e-02,1.525442565287436492e-01,2.425836062144351324e+00,6.322366854357680532e-02,1.797964135152024800e-02,1.258923269105532983e-02,1.727153093824018715e-02 -7.961829999999999927e+02,1.277271872035368627e+00,5.389063735696342228e-01,2.672017866852517409e-01,2.762111837528524738e-01,5.730661682576293714e+00,1.408645984817418650e+00,8.749206276768670132e-02,7.769507296154409826e-02,1.513475323538665540e-01,2.427049436922639636e+00,6.430475764087384416e-02,1.607217051239007155e-02,1.232808252690488493e-02,1.874914894653323394e-02 -7.973229000000000042e+02,1.277394324574206763e+00,5.392856916608964601e-01,2.655499504854315074e-01,2.767297862919182450e-01,5.724570514398928722e+00,1.397294300979538662e+00,8.706071765426089126e-02,7.912234960136810269e-02,1.517715919430747129e-01,2.417281727150543347e+00,6.385061775510586513e-02,1.857955492626528482e-02,1.312985599079172228e-02,1.603069243845089281e-02 -7.980445999999999458e+02,1.278725570779976950e+00,5.399009455805334756e-01,2.649256988295265458e-01,2.761138927086407291e-01,5.720652063599022341e+00,1.388070746768862662e+00,8.710366144131537203e-02,7.887188923818966302e-02,1.516968330399123821e-01,2.412521864070311217e+00,6.350297343731986510e-02,1.899190851326748586e-02,1.297428295852984248e-02,1.609945449028920422e-02 -7.984439999999999600e+02,1.280634778051817690e+00,5.410490998714281297e-01,2.643448398125227694e-01,2.744594344885148418e-01,5.716585161306436902e+00,1.384159389237538562e+00,8.735476968979338785e-02,7.821463546103019082e-02,1.515777020853784074e-01,2.408539003923804600e+00,6.322021260708921009e-02,1.827327416188473386e-02,1.308378447031777192e-02,1.694677802764010810e-02 -7.986204999999999927e+02,1.280635842860521123e+00,5.409760297587503652e-01,2.642573205440695849e-01,2.746723802762619515e-01,5.716152272661575218e+00,1.381573448101798718e+00,8.730235034666461447e-02,7.829692827927725585e-02,1.515809401345201979e-01,2.407748199417796275e+00,6.316020371520875143e-02,1.863617675134499052e-02,1.299160149693806554e-02,1.673961248175537264e-02 -7.986548000000000229e+02,1.280636049789351194e+00,5.409618297311874491e-01,2.642403125502568728e-01,2.747137629420961513e-01,5.716068147559485446e+00,1.381070911099216758e+00,8.729216347148432975e-02,7.831292059466465894e-02,1.515815693984610690e-01,2.407594518995382238e+00,6.314854193055435827e-02,1.870670116391437432e-02,1.297368718539743115e-02,1.669935311504799902e-02 -7.988612000000000535e+02,1.281254532199738616e+00,5.439293418048014583e-01,2.643441937738161274e-01,2.722593554866982735e-01,5.725707693266880227e+00,1.386063794169789531e+00,8.832509836490570754e-02,7.735838592093585708e-02,1.508810812224637421e-01,2.409319542205688780e+00,6.458226189587057409e-02,1.739428076060467454e-02,1.238851222612191716e-02,1.855576020979211871e-02 -7.993044999999999618e+02,1.281419369960290933e+00,5.445479055479813812e-01,2.641785599078686486e-01,2.720839365265904086e-01,5.727285986092171655e+00,1.381675141680957175e+00,8.848092339714602739e-02,7.728901114094630098e-02,1.507041836818792668e-01,2.408029511908433395e+00,6.482665273194310185e-02,1.784945210632782331e-02,1.203156579015707273e-02,1.858681166184047995e-02 -7.999948000000000548e+02,1.281643222334486909e+00,5.454454362462701766e-01,2.639253576044159888e-01,2.718692846872503566e-01,5.729434212659986869e+00,1.374700757396229100e+00,8.871583657562465142e-02,7.718733465695848395e-02,1.504284622769145319e-01,2.405928046282666433e+00,6.520344855837612030e-02,1.859399422371589214e-02,1.147452094573320203e-02,1.858924389474925221e-02 -8.011592000000000553e+02,1.285516639231088165e+00,5.434868969679964579e-01,2.638533098381623532e-01,2.739871164682328164e-01,5.742865664033552697e+00,1.366757157082372665e+00,8.902418903777492565e-02,8.003343526522321838e-02,1.508057881850718984e-01,2.401353496686970956e+00,6.556578364608101062e-02,2.036705418029233217e-02,1.175534277939760397e-02,1.746251252099256801e-02 -8.025937999999999874e+02,1.278690216883366482e+00,5.403060157126919893e-01,2.643758603109779837e-01,2.734757813518514102e-01,5.750211791786816740e+00,1.352410292477920883e+00,8.801716596210759636e-02,7.971810310591198601e-02,1.497893894988436281e-01,2.389831300050222485e+00,6.431526857934638519e-02,1.981194490593157775e-02,1.158321376405441194e-02,1.799252863742228925e-02 -8.042033000000000129e+02,1.279140260382798600e+00,5.435134811725275128e-01,2.582532927419677327e-01,2.725543469358010507e-01,5.707272550427211932e+00,1.326693905718897781e+00,8.686081419723012953e-02,7.758819275585186748e-02,1.466011880098221365e-01,2.387214617063246447e+00,6.378101824050225188e-02,2.035382793995628437e-02,1.216292324072312803e-02,1.760247475789189497e-02 -8.058482000000000198e+02,1.276399904375884464e+00,5.480102826375297109e-01,2.571365215470592380e-01,2.709451650730665406e-01,5.730826435731390944e+00,1.313500429573116079e+00,8.623828253885615358e-02,7.865513128967871470e-02,1.472394082145445093e-01,2.391993972460904061e+00,6.313709196356140363e-02,2.027531825490139217e-02,1.335023864658262116e-02,1.787803813927497931e-02 -8.074112999999999829e+02,1.275811218935670510e+00,5.508723387782449299e-01,2.592882338840061252e-01,2.696060629156491473e-01,5.742691976433391687e+00,1.309767077844977479e+00,8.805954055890274912e-02,7.863331443504412155e-02,1.453848671792579150e-01,2.384897584301834961e+00,6.630123672364732212e-02,1.964042555248379784e-02,1.125520011822789268e-02,1.965811104149648575e-02 -8.085399999999999636e+02,1.273038384263611711e+00,5.509154799886575304e-01,2.558265530597455539e-01,2.706185406501998569e-01,5.735589493491046298e+00,1.295744466979968479e+00,8.637524845005579988e-02,8.034470056673714833e-02,1.450274141077878554e-01,2.375261804339110050e+00,6.527334170259918578e-02,2.032883164633991768e-02,1.294008253716116830e-02,1.923340699984643631e-02 -8.093071999999999662e+02,1.272330759061826910e+00,5.505394844151276779e-01,2.533924639085525232e-01,2.718801205185505387e-01,5.742101895568977099e+00,1.288126066187928132e+00,8.486443971149548737e-02,8.079227050999276960e-02,1.454543557411063226e-01,2.375000780221816044e+00,6.499681356510807195e-02,2.096102439106753423e-02,1.388166975154370153e-02,1.811484302696866888e-02 -8.098090999999999440e+02,1.269194156191902234e+00,5.503881914648045548e-01,2.531460986907507760e-01,2.710266541436152643e-01,5.736232422404318854e+00,1.281316989484658109e+00,8.509991406166328431e-02,7.968152906569858640e-02,1.441101674943396915e-01,2.375172689540285376e+00,6.553072516581420759e-02,2.019070648485121744e-02,1.375175265677541780e-02,1.877745686577569906e-02 -8.100053000000000338e+02,1.268380737068697250e+00,5.504643483549469529e-01,2.526579354556637291e-01,2.713629392863095013e-01,5.735860972425474991e+00,1.278644799023645362e+00,8.475966078096441869e-02,7.986326896688367150e-02,1.441236393335803556e-01,2.374808161225372416e+00,6.542139487692427702e-02,2.034026417926471098e-02,1.399505666359379674e-02,1.851384784589904520e-02 -8.100830999999999449e+02,1.268058188609037185e+00,5.504945471625569686e-01,2.524643620627498031e-01,2.714962878291309334e-01,5.735713679824282707e+00,1.277585184253684503e+00,8.462473873591691564e-02,7.993533504390804012e-02,1.441289813778867945e-01,2.374663613300294962e+00,6.537804168387834070e-02,2.039956891231953229e-02,1.409153501084370319e-02,1.840931786757904476e-02 -8.103197999999999865e+02,1.267076861868657200e+00,5.505864245116737221e-01,2.518754311873925289e-01,2.719019896297207861e-01,5.735265554391089537e+00,1.274361394844298445e+00,8.421424968626656238e-02,8.015459006231029360e-02,1.441452341013743643e-01,2.374223838314872381e+00,6.524614321608918077e-02,2.057999860787340651e-02,1.438506232182157341e-02,1.809129414176480211e-02 -8.107046000000000276e+02,1.271628415793532030e+00,5.529252305247205346e-01,2.537156589791367267e-01,2.703592513046663148e-01,5.749820534514579862e+00,1.273459912170896047e+00,8.653725975255904812e-02,7.903991821406915197e-02,1.437091966231468232e-01,2.377393840861753649e+00,6.604790710801110298e-02,1.949394070243737342e-02,1.335617044814096932e-02,1.977514782091877032e-02 -8.115579999999999927e+02,1.270542010883233264e+00,5.542665485300171113e-01,2.527026988510941985e-01,2.708762737049025260e-01,5.754721929050099050e+00,1.263766534403780284e+00,8.627905275783373518e-02,7.920901569645372176e-02,1.435792186047845087e-01,2.377508884153133550e+00,6.603209633232554054e-02,1.955759413770785660e-02,1.379694987974001974e-02,1.955738197927447963e-02 -8.126020999999999503e+02,1.276956638992574167e+00,5.530577778059435623e-01,2.498113336414413688e-01,2.739622632893868870e-01,5.779707131651694141e+00,1.255543723651938670e+00,8.419990717662173552e-02,7.986616582495921490e-02,1.452880560531586984e-01,2.373304773270216828e+00,6.528350990207634763e-02,2.248309804601517081e-02,1.385358509559031503e-02,1.706546985924567439e-02 -8.140798999999999523e+02,1.280395311228682331e+00,5.524580277833923692e-01,2.500726718892459788e-01,2.706996969077308801e-01,5.750968621483984577e+00,1.240095511822655538e+00,8.535309387337855491e-02,7.834689575764083869e-02,1.436710017776527959e-01,2.361341174116276420e+00,6.586015878374901211e-02,2.128053808810365100e-02,1.295489732950023953e-02,1.832446086167094368e-02 -8.157902000000000271e+02,1.275035875447894540e+00,5.542376269357977003e-01,2.479891845199161393e-01,2.688008845921975865e-01,5.738253983331092378e+00,1.217335085361206382e+00,8.589888314729741958e-02,7.852822445617779756e-02,1.426974648304961124e-01,2.358850435497255482e+00,6.574297678516968779e-02,2.015960516749928932e-02,1.489973125696245071e-02,1.929968029680704383e-02 -8.173517000000000507e+02,1.271352967999872963e+00,5.553955396151343260e-01,2.498342477977330001e-01,2.693877943100149164e-01,5.776833192473166179e+00,1.205693390386631592e+00,8.630724930782013304e-02,8.081096766799461539e-02,1.442632609479611860e-01,2.358509833214094353e+00,6.697861817121453232e-02,2.065962334209808793e-02,1.490387378332805324e-02,1.912413397864257125e-02 -8.188021999999999707e+02,1.279280975107190965e+00,5.558340470073805939e-01,2.490328098750493879e-01,2.701274881270385730e-01,5.786909028953601819e+00,1.195605592594493061e+00,8.751814102842658816e-02,7.954038125909777823e-02,1.439133825411176293e-01,2.354941127304431614e+00,6.737104911820385178e-02,2.058454987576401052e-02,1.363472202133218097e-02,1.923938554574481513e-02 -8.196996000000000322e+02,1.284511270500833469e+00,5.549515643601877768e-01,2.463886343846363736e-01,2.702510561227617902e-01,5.786124606864092357e+00,1.184253413591141779e+00,8.674950906603418055e-02,7.980533825800337211e-02,1.447720382318219423e-01,2.351732576193841684e+00,6.568391963923847499e-02,2.186648806413848956e-02,1.421422207840006280e-02,1.803476146622418064e-02 -8.204764999999999873e+02,1.289817908603680729e+00,5.552537180525320970e-01,2.454069178129412165e-01,2.703125686311194098e-01,5.788688523973527289e+00,1.176806718346281144e+00,8.620827951022286273e-02,8.024792214556161762e-02,1.450314024445573668e-01,2.349245065580304548e+00,6.449255382611662757e-02,2.239736455324717324e-02,1.524977004659255897e-02,1.792179880139260773e-02 -8.208536000000000286e+02,1.289952660271573404e+00,5.555137114013103394e-01,2.453798661761593114e-01,2.700584679952339195e-01,5.786603553195467597e+00,1.172237204607126770e+00,8.639021414377046071e-02,8.031262463681859698e-02,1.448610179047498114e-01,2.347896628047331458e+00,6.430113612268190115e-02,2.236160859904957887e-02,1.536051651378964045e-02,1.807934067453664806e-02 -8.210638999999999896e+02,1.290027808178648039e+00,5.556587037143522201e-01,2.453647801002769580e-01,2.699167619126916495e-01,5.785440812928626109e+00,1.169688891853629897e+00,8.649167490599546371e-02,8.034870772860153165e-02,1.447659983642525794e-01,2.347144635437455662e+00,6.419438687040845970e-02,2.234166832546764792e-02,1.542227727234582457e-02,1.816719815510464686e-02 -8.212283999999999651e+02,1.289755055571201403e+00,5.560992821896362237e-01,2.462388775759796200e-01,2.691006333783885207e-01,5.781938212817711253e+00,1.167198328191485501e+00,8.734085653582834841e-02,7.983299255980635944e-02,1.441481514089180127e-01,2.346298381467442962e+00,6.449694286071472327e-02,2.189543774920582608e-02,1.494365643860418036e-02,1.884669700463215136e-02 -8.215094000000000278e+02,1.290001688478095598e+00,5.561487255904273841e-01,2.458279997600334443e-01,2.692223488119058761e-01,5.781528240169008903e+00,1.164012608951448868e+00,8.713690368559834365e-02,8.012110773523206664e-02,1.442609043320117745e-01,2.345407383252046341e+00,6.418403786425719293e-02,2.205872191276159189e-02,1.525858010935132736e-02,1.869471218655627265e-02 -8.221363000000000056e+02,1.285421629119196218e+00,5.575837297439579787e-01,2.469166151794094377e-01,2.683028408433429934e-01,5.786748505076542592e+00,1.156710296555790052e+00,8.825454728714107744e-02,7.976873376171461638e-02,1.435026171241909621e-01,2.343719217789792530e+00,6.547584982004911458e-02,2.081533187838738308e-02,1.399537034239531352e-02,1.957179997694905374e-02 -8.230412999999999784e+02,1.284275100363524214e+00,5.584767506981320739e-01,2.465322201830631998e-01,2.681361189401753053e-01,5.788782266934202170e+00,1.146495228309357017e+00,8.836959936964672302e-02,8.025338327152470308e-02,1.434289434302251920e-01,2.341350927666953297e+00,6.530569029752349153e-02,2.060367226006276642e-02,1.417472521268201002e-02,1.968614557691517053e-02 -8.242313000000000329e+02,1.289615501944917364e+00,5.594220320986520445e-01,2.429199570706778166e-01,2.669661182946049260e-01,5.797329336742647499e+00,1.128494930303029165e+00,8.705304398466384708e-02,8.060320027541435783e-02,1.425505170266407329e-01,2.333084690836460418e+00,6.476316470683514404e-02,1.985806830738545692e-02,1.514231188237666337e-02,1.854350443726465736e-02 -8.256378999999999451e+02,1.281399313771595772e+00,5.605915472902740504e-01,2.371599857139377043e-01,2.670055813598350425e-01,5.775483062662706502e+00,1.096176339724449278e+00,8.639894157117983253e-02,8.061314652453338558e-02,1.416846584991345581e-01,2.316814753598710475e+00,6.431084608547693593e-02,2.022824771192456225e-02,1.500043516312992570e-02,1.852590541914919675e-02 -8.270855999999999995e+02,1.278972860962611202e+00,5.620570872574790489e-01,2.347079670503346982e-01,2.669733207977783018e-01,5.774484631026442827e+00,1.068078946671480622e+00,8.653135050029042707e-02,8.210989696634390933e-02,1.410255811062769982e-01,2.310861835343180459e+00,6.417343533982461379e-02,1.996475364911141914e-02,1.487062309262543458e-02,1.894312120846192160e-02 -8.288920000000000528e+02,1.286304677529637175e+00,5.651904878422621126e-01,2.331231124917594322e-01,2.680651961510152059e-01,5.797931316066522456e+00,1.043844419255069766e+00,8.715157078901440701e-02,8.373236620898638627e-02,1.404464494555786036e-01,2.304300889049991419e+00,6.416356876501043416e-02,2.122162499847890516e-02,1.304523052936504279e-02,1.767453115629608051e-02 -8.301671999999999798e+02,1.283470178876116474e+00,5.689865421195896555e-01,2.304250600395776338e-01,2.673487095266194880e-01,5.807562220952773302e+00,1.026773738577851702e+00,8.641005658649503207e-02,8.365254567228797011e-02,1.404633914019596252e-01,2.296263903058244793e+00,6.390300167894003014e-02,2.004422754473481061e-02,1.347217666770772482e-02,1.803746730678150098e-02 -8.311058000000000447e+02,1.280855526428550828e+00,5.702107173119868033e-01,2.302068450197642946e-01,2.654459612707096294e-01,5.805224540806392497e+00,1.009821158530993301e+00,8.795618178654382446e-02,8.370715516464671824e-02,1.385075274929856715e-01,2.290219064570903740e+00,6.486085721554091243e-02,1.936509187930829379e-02,1.296664719474935161e-02,1.828989853715896896e-02 -8.315575000000000045e+02,1.282816299350877820e+00,5.697794434649690043e-01,2.286899608506772763e-01,2.647420921002414662e-01,5.804143848817232332e+00,9.997418508943844984e-01,8.702562907408473158e-02,8.421672847362426939e-02,1.385585158971047726e-01,2.285856252433954516e+00,6.423713605889069811e-02,1.953820033707875936e-02,1.402953136941553769e-02,1.801593133825168946e-02 -8.319239999999999782e+02,1.280579985175906543e+00,5.706133000707771519e-01,2.284096888842782613e-01,2.642084706186291765e-01,5.802738812499930177e+00,9.920680795029923615e-01,8.753319711307061546e-02,8.425922243673519829e-02,1.379702808721843255e-01,2.283443955802533232e+00,6.462328030092856501e-02,1.924829512324188752e-02,1.362117688056174725e-02,1.817402372518372999e-02 -8.320964000000000169e+02,1.283948227096746386e+00,5.700357951298146153e-01,2.265866963033456027e-01,2.658527457211186662e-01,5.812934918162463660e+00,9.934065625171228930e-01,8.632516617767022060e-02,8.381419705880856219e-02,1.389445541600675682e-01,2.285089763977891764e+00,6.297307278392813568e-02,1.968200464335234656e-02,1.501440964250255750e-02,1.740133181341388391e-02 -8.325027000000000044e+02,1.282382016846765893e+00,5.707599106034274561e-01,2.259266938480046782e-01,2.656526324686646068e-01,5.813619735252795628e+00,9.859214690219246791e-01,8.658903074901574959e-02,8.376526062314636201e-02,1.385508191206945572e-01,2.282989803309694032e+00,6.302279661006757183e-02,1.947836265568064773e-02,1.488914542579389266e-02,1.740163913344043578e-02 -8.328925000000000409e+02,1.278339552161920745e+00,5.715914816110594376e-01,2.255833272811202939e-01,2.651726208020610542e-01,5.811497177346193865e+00,9.774279179913527571e-01,8.717732438288225416e-02,8.365118785680251967e-02,1.378803238481803306e-01,2.280334729554847950e+00,6.358551101113407711e-02,1.893856980549708802e-02,1.426780147186201830e-02,1.757889090201852911e-02 -8.336607000000000198e+02,1.280211845139471061e+00,5.755884610490475950e-01,2.265583085408006125e-01,2.641420765339473342e-01,5.820469279779222127e+00,9.715437475209043328e-01,9.086688681412913304e-02,8.243913516258605245e-02,1.348049178857755326e-01,2.278677530584851674e+00,6.381415597763828718e-02,1.853131697412958162e-02,1.292996194217425898e-02,1.828068554418643687e-02 -8.346798999999999751e+02,1.282520885665360266e+00,5.746191775500670840e-01,2.243894634586565129e-01,2.656756495335321211e-01,5.827433360392480388e+00,9.598581944202972949e-01,8.916446886853779397e-02,8.256864060475010980e-02,1.356007059402105641e-01,2.273622861793169747e+00,6.161886462996779557e-02,1.976366366043249417e-02,1.388122777346195713e-02,1.650096747710147471e-02 -8.361092999999999620e+02,1.270306766777347773e+00,5.770328736299411565e-01,2.245135520967470044e-01,2.633863025719501705e-01,5.819318040608215448e+00,9.488363077788015687e-01,8.967934848629977029e-02,8.126749610306222005e-02,1.341068176013292534e-01,2.264935317405790904e+00,6.293626731262053076e-02,1.835168471463419215e-02,1.281817295754683617e-02,1.852214084816342088e-02 -8.375407000000000153e+02,1.271450124166462858e+00,5.763455367149873387e-01,2.247476860653684627e-01,2.630703421811922960e-01,5.815797055824984518e+00,9.351579911182730243e-01,8.885701278670188330e-02,8.262495723858526153e-02,1.330815005426040365e-01,2.264080178394495046e+00,6.253867731195647539e-02,1.945817854055179041e-02,1.263948386870378249e-02,1.658928083568939060e-02 -8.389290999999999485e+02,1.272493324148828098e+00,5.798177089608218537e-01,2.253746375383572920e-01,2.605706734520623069e-01,5.827333707293986365e+00,9.255226026469181022e-01,8.983380650913813659e-02,8.145935382363536648e-02,1.326095799031498101e-01,2.267052803901673741e+00,6.193381991385188412e-02,1.772225462025412215e-02,1.259078568842980639e-02,1.832902990043056013e-02 -8.403042000000000371e+02,1.273397587845060075e+00,5.841900087740874437e-01,2.277836442630900016e-01,2.617870046679626750e-01,5.848010036652339316e+00,9.209315203117478532e-01,9.100948056752378168e-02,8.291181339567486874e-02,1.314329757009894406e-01,2.264305595026848472e+00,6.247414178206467383e-02,1.877414438702032506e-02,1.198231194080634499e-02,1.619390445600404904e-02 -8.413197999999999865e+02,1.274608549226834198e+00,5.845298189186036719e-01,2.257424657384931865e-01,2.618916553222680466e-01,5.856505517055589749e+00,9.203157904583707527e-01,8.958702673331009336e-02,8.172310730097981368e-02,1.324976228188719518e-01,2.267785175702270450e+00,6.056901669134268085e-02,1.813321484930369154e-02,1.363345200692342440e-02,1.647303002789728132e-02 -8.420478000000000520e+02,1.278957774233611566e+00,5.846705068080972900e-01,2.271304344704409561e-01,2.630867441090777858e-01,5.853091802091347162e+00,9.193727817639798516e-01,9.128653023777744124e-02,8.209021702274543753e-02,1.302407827641689497e-01,2.267884344374117234e+00,6.200211004794391190e-02,1.850042687983788348e-02,1.150355135579267385e-02,1.607307157166398826e-02 -8.425499999999999545e+02,1.280248653002509673e+00,5.854455083254825887e-01,2.274717377274571573e-01,2.635326753970695379e-01,5.854769339387270399e+00,9.186535826975248398e-01,9.067729671218693888e-02,8.267746416023824541e-02,1.305821055523285201e-01,2.269592372807474057e+00,6.199871412106145591e-02,1.861646238234496153e-02,1.130258953745716388e-02,1.587632173457215190e-02 -8.428065000000000282e+02,1.280907972803829065e+00,5.858413424338246855e-01,2.276460592834601004e-01,2.637604360011514548e-01,5.855626146070672888e+00,9.182862498410018226e-01,9.036612905126673034e-02,8.297740221433413943e-02,1.307564370839154888e-01,2.270464752921285800e+00,6.199697964227740554e-02,1.867572782717388802e-02,1.119994774852234309e-02,1.577583122638004376e-02 -8.432000000000000455e+02,1.281801168997218410e+00,5.863572985948007910e-01,2.269975323132358280e-01,2.644773407646659469e-01,5.858387413826306123e+00,9.165520178584770639e-01,8.934826349715480065e-02,8.321203470005489322e-02,1.314228976987176223e-01,2.270796897101092338e+00,6.127688028504785223e-02,1.897666208946015287e-02,1.146422366122656911e-02,1.548363868651317365e-02 -8.436824000000000296e+02,1.283191631895051144e+00,5.880459020798234349e-01,2.261487648854374477e-01,2.643459247087022179e-01,5.866241675953512313e+00,9.195073652883865023e-01,8.778207627191758622e-02,8.307179446880641471e-02,1.330982276286674093e-01,2.275225247158560560e+00,5.963891900735033419e-02,1.847681428142866622e-02,1.308496096219392835e-02,1.644714875748704008e-02 -8.442477999999999838e+02,1.284762680851907257e+00,5.892299234805908892e-01,2.268206449685139514e-01,2.644576420112074722e-01,5.868844194128056024e+00,9.204375061814205061e-01,8.718951751082149038e-02,8.369327255541503252e-02,1.335796654223505575e-01,2.278551347877512345e+00,5.967037884250225160e-02,1.830673877624022783e-02,1.306520496282999669e-02,1.662330995636834841e-02 -8.451141999999999825e+02,1.273184513309370658e+00,5.893205753341507203e-01,2.290504710454115411e-01,2.646647107920309105e-01,5.876459448468327906e+00,9.229107201269113325e-01,8.956999223122374953e-02,8.379716839894302272e-02,1.316459220196328772e-01,2.281433034712341268e+00,6.309658292575726080e-02,1.818298926446537678e-02,9.865635814542195181e-03,1.629400896140664745e-02 -8.462997000000000298e+02,1.270412002909210969e+00,5.902612068833432701e-01,2.266938519005990138e-01,2.643358522442238456e-01,5.867251746943959567e+00,9.222968528902408814e-01,8.801995562674719276e-02,8.411115935708390889e-02,1.320711323179660224e-01,2.278749872745293281e+00,6.333449072158059412e-02,1.751910283192670281e-02,1.062574127962101489e-02,1.662751011168150939e-02 -8.477032000000000380e+02,1.266896116527066241e+00,5.932967136753908299e-01,2.242519991489064779e-01,2.654390100294109489e-01,5.854606503734937739e+00,9.186915276560584376e-01,8.787371193718113149e-02,8.368396335410877018e-02,1.321322287881891155e-01,2.278678425268096053e+00,6.195859652860025157e-02,1.839617527646500439e-02,1.137725047441184162e-02,1.647992042808402169e-02 -8.489811999999999443e+02,1.268986282104605401e+00,5.929013310897758293e-01,2.243279258262507736e-01,2.673504573604987833e-01,5.859076563700476470e+00,9.163293457387577945e-01,8.755480500350293349e-02,8.406836771710032852e-02,1.318883019357795505e-01,2.284308326731235628e+00,6.181075642818852078e-02,1.888208103970165364e-02,1.129207866132589388e-02,1.635752831636480553e-02 -8.502589000000000397e+02,1.271574851675922879e+00,5.964183822368529508e-01,2.257022584167955870e-01,2.685838793317845696e-01,5.875542445422190951e+00,9.235649977773664476e-01,8.896729678827154653e-02,8.432132666307978752e-02,1.328493697135891272e-01,2.297232923589509035e+00,6.205512947583158301e-02,1.853075858089225925e-02,1.012171563321456746e-02,1.714633576654023273e-02 -8.514076000000000022e+02,1.274739370772655089e+00,5.979961390525186937e-01,2.258859947184403416e-01,2.704265607194502041e-01,5.892923656761251294e+00,9.256360579836744318e-01,8.782058898646505352e-02,8.441801967552253760e-02,1.325911003694936752e-01,2.301132343183828866e+00,6.262223569548824864e-02,1.911770460324054011e-02,1.014001771682389308e-02,1.683409050289180753e-02 -8.523800999999999704e+02,1.270557198706704582e+00,6.015556796420740149e-01,2.254674671042845580e-01,2.677046652345467792e-01,5.899854856819761295e+00,9.291979605460813918e-01,8.774197853244575240e-02,8.218436157023095712e-02,1.327523071619446382e-01,2.309115689765655954e+00,6.207113303945749339e-02,1.712691913167942170e-02,1.078696914954196950e-02,1.890614941324644804e-02 -8.531230000000000473e+02,1.267314866261788797e+00,6.032674833746958232e-01,2.255085363449050584e-01,2.676217714956950489e-01,5.902118936137773275e+00,9.280532422748644095e-01,8.816306738533741250e-02,8.183323640244755115e-02,1.323122935351518370e-01,2.312175800840466255e+00,6.233722456995705041e-02,1.720197996395533835e-02,1.050809096549026878e-02,1.910962662503906673e-02 -8.535925999999999476e+02,1.271116423202428347e+00,6.037414154495392982e-01,2.264441431935671489e-01,2.689782469673093201e-01,5.906418380473409613e+00,9.294774079974200687e-01,8.922122119806563667e-02,8.419699992826304435e-02,1.321874220565258384e-01,2.312279496084300501e+00,6.352715544977835527e-02,1.899149807475003504e-02,9.756668524322553715e-03,1.753214087539763100e-02 -8.538855999999999540e+02,1.271446447664094759e+00,6.043241594099226788e-01,2.264190323075619404e-01,2.689356724569617052e-01,5.909339681343771744e+00,9.296413601405827398e-01,8.939084314203793458e-02,8.420384844310621619e-02,1.321635844294879736e-01,2.314159322373027461e+00,6.347992332042715069e-02,1.914575130563173078e-02,9.905829573711333325e-03,1.750636713417008661e-02 -8.542962999999999738e+02,1.271909045092102453e+00,6.051409953980781964e-01,2.263838342158133732e-01,2.688759954897269600e-01,5.913434487717346144e+00,9.298711729228248402e-01,8.962860332084138237e-02,8.421344805077206341e-02,1.321301710730905521e-01,2.316794287071937131e+00,6.341371773843215709e-02,1.936196905963549764e-02,1.011490958389543726e-02,1.747023991395796338e-02 -8.549347000000000207e+02,1.268581914769811192e+00,6.072790373654763929e-01,2.253810940773842697e-01,2.669250608797729685e-01,5.925735297423478265e+00,9.323000708611410836e-01,8.869681291630127085e-02,8.218752424680070279e-02,1.329900664223028217e-01,2.320640614656777956e+00,6.220065821199208256e-02,1.794011922776939105e-02,1.137766022337742544e-02,1.873578460472095919e-02 -8.555534000000000106e+02,1.270735785559969688e+00,6.090807868224226151e-01,2.259073329192414770e-01,2.667273782022933082e-01,5.935674959850524068e+00,9.337044127253941728e-01,8.896904872361433014e-02,8.206898742082921472e-02,1.329969158585682376e-01,2.325736221739027165e+00,6.222440801675009625e-02,1.807562002004889368e-02,1.141626629540880983e-02,1.869860481257856061e-02 -8.564965999999999440e+02,1.272840164214292802e+00,6.100119995946275964e-01,2.272200948495290973e-01,2.684528339602871294e-01,5.944173489192829507e+00,9.347518071777831672e-01,9.084481639144628695e-02,8.338191442272599452e-02,1.305246006903707512e-01,2.322062294694785756e+00,6.335535311831075322e-02,2.028539798218720325e-02,1.047420067390120169e-02,1.733888630453067625e-02 -8.577451999999999543e+02,1.280299116958432126e+00,6.094557935160416218e-01,2.261860778415109019e-01,2.677036480128364149e-01,5.931593636414447701e+00,9.326257707690157606e-01,8.896226588783212597e-02,8.229981184977949726e-02,1.324023052016171653e-01,2.323134177775950882e+00,6.187675916598529835e-02,1.963097563975052529e-02,1.155740510438663798e-02,1.804179588189691597e-02 -8.590395999999999503e+02,1.278591832326613664e+00,6.093178443354950735e-01,2.275538294059669675e-01,2.695085938301892692e-01,5.929593058243509240e+00,9.320037246256892560e-01,9.001861380184153494e-02,8.289794579345388659e-02,1.318285612975158005e-01,2.326510333154156118e+00,6.244944150890814616e-02,1.964267150086389246e-02,1.159721046997291838e-02,1.764763655287675259e-02 -8.603517000000000507e+02,1.278966435979912220e+00,6.119782997287674942e-01,2.290073237091093394e-01,2.692033738278327704e-01,5.943416128495642603e+00,9.368040862346291853e-01,9.042642243958656789e-02,8.234610052515123346e-02,1.316975631306739891e-01,2.333293234682969786e+00,6.216465058045514414e-02,1.962544813388489989e-02,1.246695735992608967e-02,1.799063974296338797e-02 -8.617558999999999969e+02,1.289256861793271369e+00,6.150807717524288121e-01,2.314522285192682771e-01,2.691199533720080583e-01,5.969827277518231057e+00,9.451117056681244133e-01,9.114887016623400562e-02,8.296179841563083857e-02,1.317458341716142844e-01,2.345836299295368299e+00,6.295957894781356590e-02,1.943524329022269792e-02,1.294508235781691163e-02,1.844324144800904564e-02 -8.627817999999999756e+02,1.287159496901325806e+00,6.173444193410024816e-01,2.308401757581205471e-01,2.702546393508868938e-01,5.982324169183462104e+00,9.490564295845236309e-01,9.031897747623633677e-02,8.354255975211832830e-02,1.323961327422784884e-01,2.348805878334354169e+00,6.275835502760941653e-02,2.073543669378630216e-02,1.353961718374541157e-02,1.703071585326626503e-02 -8.636213999999999942e+02,1.288772004668490956e+00,6.203683638591982463e-01,2.309489788825637435e-01,2.697864431289132003e-01,5.983855826787132237e+00,9.538525494438641061e-01,9.114537737784353388e-02,8.201032174673900110e-02,1.321180662116349658e-01,2.351060125258415123e+00,6.356647325482348010e-02,1.912233832821860074e-02,1.302300122376415237e-02,1.925647498201166208e-02 -8.641191999999999780e+02,1.290135571835943518e+00,6.203959104287722903e-01,2.310893689475500001e-01,2.703929872283976632e-01,5.983794850351130457e+00,9.548682485488428906e-01,9.122196734201568069e-02,8.179340999719830752e-02,1.320306931683103702e-01,2.352210789021697668e+00,6.371225131863431090e-02,1.916727508669954089e-02,1.310728977364211678e-02,1.951598195097270505e-02 -8.644842999999999620e+02,1.291135648920790802e+00,6.204161138288355470e-01,2.311923348228542840e-01,2.708378430956570604e-01,5.983750128581776018e+00,9.556131897767010663e-01,9.127814049573054755e-02,8.163432104629975150e-02,1.319666114123485279e-01,2.353054716984683381e+00,6.381916889817898508e-02,1.920023292221861161e-02,1.316910927858475078e-02,1.970631138923639725e-02 -8.649726000000000568e+02,1.296686909453423020e+00,6.175169512029829999e-01,2.312811586766909955e-01,2.732399974921111419e-01,5.984208794980844459e+00,9.557990100246456233e-01,9.099918681942198440e-02,8.319877445079632006e-02,1.326623255027426507e-01,2.349955659057332724e+00,6.383057126674684945e-02,2.089583433908043242e-02,1.293546065896089559e-02,1.786966198350670165e-02 -8.654279000000000224e+02,1.296946166567502168e+00,6.177811592776397687e-01,2.314125976162365872e-01,2.739488328857759836e-01,5.985271406068431332e+00,9.573314754271853300e-01,9.088010122963929849e-02,8.296033455121515354e-02,1.327897655824697154e-01,2.351644694106313160e+00,6.405814342268767447e-02,2.076766621776385269e-02,1.284188676077513414e-02,1.811141292505247247e-02 -8.660821999999999434e+02,1.294956060450719759e+00,6.212822068202825676e-01,2.312389235676866883e-01,2.720953153991444440e-01,5.993257923485113103e+00,9.599779162553341294e-01,9.036073013843730350e-02,8.025192870102160203e-02,1.332429325090779271e-01,2.354162700451460921e+00,6.311592710468275080e-02,1.927066916890952247e-02,1.359191547742537309e-02,2.026064103133418115e-02 -8.668402999999999565e+02,1.297306297584883916e+00,6.225929950750326292e-01,2.314386450035311460e-01,2.729791268624758294e-01,5.999799163431855042e+00,9.638881419288711783e-01,9.033346652995277726e-02,7.999628411072068346e-02,1.337890109271054895e-01,2.357971516234403708e+00,6.338418976154899798e-02,1.931577659802103525e-02,1.368052777912240336e-02,2.070779564861768840e-02 -8.679369000000000369e+02,1.298828910906747236e+00,6.231617809110956419e-01,2.320580879698272425e-01,2.725581394013010805e-01,5.998945231492594843e+00,9.647327307092772308e-01,9.035956546715162574e-02,8.131950683031191618e-02,1.330789755840606214e-01,2.358492600462211097e+00,6.336787173142675866e-02,2.012665933227447690e-02,1.403878944876657542e-02,1.971381492525176027e-02 -8.692435000000000400e+02,1.293035208542241854e+00,6.219639969688177672e-01,2.330275365156350975e-01,2.738896219811473021e-01,5.995973304026990469e+00,9.611066725679580092e-01,9.143148754420088453e-02,8.075794269885988586e-02,1.329000331823225745e-01,2.361558283713977247e+00,6.321854127525604328e-02,2.077018157703108825e-02,1.321659177926293172e-02,1.878748670368904361e-02 -8.706063000000000329e+02,1.289084474307289563e+00,6.221299779457305501e-01,2.333598621096604209e-01,2.752433589751087095e-01,6.001215735033981424e+00,9.634511731872621443e-01,9.170079563321399674e-02,8.171719338093635931e-02,1.334955044108322442e-01,2.367621103590056286e+00,6.413189247512990354e-02,2.221654500162906221e-02,1.253070572264078364e-02,1.880343003237436653e-02 -8.717609999999999673e+02,1.289263411232355550e+00,6.254841043718117888e-01,2.326938592021782215e-01,2.756619660471981148e-01,6.019273700147042661e+00,9.707108512853902527e-01,9.009685045667549519e-02,8.159255274071276764e-02,1.354763676174814413e-01,2.375787771975788942e+00,6.255472037077160208e-02,2.202473393084791731e-02,1.448859543817748730e-02,1.940014751607269453e-02 -8.729500000000000455e+02,1.290427332829238605e+00,6.254400095098106016e-01,2.338933542129040810e-01,2.767259824536544843e-01,6.035035929455975889e+00,9.793625186981096409e-01,9.037435481584116248e-02,8.165682655372900889e-02,1.350402885020797195e-01,2.384640956327480410e+00,6.398808838338848615e-02,2.264530697994560082e-02,1.224302758565398719e-02,1.946745658088452902e-02 -8.739849000000000387e+02,1.290854020000207214e+00,6.254195643753033274e-01,2.330360782919564944e-01,2.781670434915837209e-01,6.046741324049760280e+00,9.802693107405591189e-01,8.973690108051859959e-02,8.212366001136423010e-02,1.364559381549366457e-01,2.391465007565738432e+00,6.371513140234910666e-02,2.320282654817975090e-02,1.332698653763281227e-02,1.938208087217319076e-02 -8.746253000000000384e+02,1.289937740536458710e+00,6.252983178115644192e-01,2.333786788912843302e-01,2.781619674759920335e-01,6.049207418726341601e+00,9.819213138578268829e-01,8.969477615891004174e-02,8.253426317181916660e-02,1.364350583489326585e-01,2.395510065069045957e+00,6.369694372590251064e-02,2.318125598416408834e-02,1.352704358629558401e-02,1.944837298020522798e-02 -8.751222999999999956e+02,1.294565164545824043e+00,6.273099054903101823e-01,2.358067649118281706e-01,2.772525912081613142e-01,6.052404424470976707e+00,9.866544918746606996e-01,9.136482412906538064e-02,8.174149210771086693e-02,1.346325898082421924e-01,2.395562332180614540e+00,6.551597603618508625e-02,2.203350821537480853e-02,1.241602079490068677e-02,2.019993804896930145e-02 -8.755322999999999638e+02,1.293248647171667098e+00,6.270788333299222028e-01,2.360355447087871816e-01,2.775353742089102238e-01,6.055979245884689277e+00,9.880901250411491255e-01,9.132191151122516504e-02,8.194220596966728110e-02,1.345416735143011855e-01,2.398847914251608593e+00,6.582590297103962929e-02,2.199146535025675586e-02,1.237678660986428480e-02,2.002578131918714144e-02 -8.759827000000000226e+02,1.291802404670885807e+00,6.268249921078763442e-01,2.362868676857392547e-01,2.778460216809524597e-01,6.059906317993802638e+00,9.896672205977017356e-01,9.127477043055387540e-02,8.216269749021659630e-02,1.344417986392010822e-01,2.402457246360818921e+00,6.616636904776762584e-02,2.194527972477094968e-02,1.233368642220476763e-02,1.983446377993369758e-02 -8.765131000000000085e+02,1.283930772649852337e+00,6.280084609573653998e-01,2.354517073691688445e-01,2.780379652413745850e-01,6.067038130276096730e+00,9.886264609789616742e-01,9.050552321919266840e-02,8.323752194228861701e-02,1.358402101480302715e-01,2.403814126431669251e+00,6.474272760688992712e-02,2.320898939779447723e-02,1.396548361006644257e-02,1.803443039734596576e-02 -8.775175000000000409e+02,1.283033848386184061e+00,6.292637798754243672e-01,2.349757981226927028e-01,2.795737750128720611e-01,6.069567870587905922e+00,9.883664237794222984e-01,9.048010733708931885e-02,8.249997095577074613e-02,1.366286437502681195e-01,2.404733936762439406e+00,6.607932861979859407e-02,2.312524411892069587e-02,1.429638272597749671e-02,1.765778899308226291e-02 -8.785042999999999438e+02,1.281754427147099529e+00,6.298597460195558551e-01,2.358744137574092514e-01,2.755056278779334233e-01,6.062273544314077611e+00,9.871441353475629565e-01,9.112883570315453985e-02,8.127017881770369490e-02,1.362050784624393163e-01,2.406509885498649304e+00,6.626229840555342143e-02,2.113259900953345927e-02,1.431239096830336233e-02,1.955882250392869739e-02 -8.796224999999999454e+02,1.278262304843168273e+00,6.281831463941316418e-01,2.345849320386687586e-01,2.777006786913324143e-01,6.058698333382197099e+00,9.890006669967825736e-01,9.127870102600435520e-02,8.330947135576648177e-02,1.361765560917061468e-01,2.407176867122096109e+00,6.734804094394186702e-02,2.203712605522539780e-02,1.403470633183140359e-02,1.814975968729706790e-02 -8.808885999999999967e+02,1.273532846142580111e+00,6.302591533999925000e-01,2.338770884647767279e-01,2.769813180051483581e-01,6.064455459849810381e+00,9.934723816387378559e-01,9.147306898553114740e-02,8.181385510807830108e-02,1.373295576592715728e-01,2.414965806565668949e+00,6.757188637513189544e-02,2.028866080766855706e-02,1.502609420768491466e-02,1.946734265466132027e-02 -8.820805000000000291e+02,1.272585911851706886e+00,6.321176816590766689e-01,2.347320360381592030e-01,2.786955040640919368e-01,6.077065684258306177e+00,9.993710278868035424e-01,9.154773524286806408e-02,8.173698409453546143e-02,1.390058314195512512e-01,2.420510627679321569e+00,6.803534383389187035e-02,2.111588784662832285e-02,1.501410473482345243e-02,1.938984790367620503e-02 -8.831525000000000318e+02,1.273756188278002854e+00,6.324183945489354475e-01,2.356814719360635357e-01,2.799938102891760261e-01,6.088522580199342116e+00,1.006429112965300465e+00,9.122361146289656442e-02,8.308300572177233778e-02,1.387283370012651895e-01,2.431018884679308378e+00,6.999904535142936757e-02,2.101859222555632623e-02,1.367664677428526154e-02,1.940672354514113435e-02 -8.838433999999999742e+02,1.272629475760205908e+00,6.336914529832708975e-01,2.360618563165569062e-01,2.795049578244827027e-01,6.094836203416839737e+00,1.008951658490556680e+00,9.139106287498022230e-02,8.332510928123147698e-02,1.388608127657659230e-01,2.433213236104597499e+00,6.971753982512618464e-02,2.031858167652356162e-02,1.514526892954454196e-02,1.957905936679312647e-02 -8.844175999999999931e+02,1.272107844294414924e+00,6.341088410277297971e-01,2.353160421638178512e-01,2.790002041474027306e-01,6.091667818713173865e+00,1.006670914362633340e+00,9.168698184547152685e-02,8.325535884917241447e-02,1.385181618582098373e-01,2.431143636027185195e+00,6.950968108557011027e-02,2.030068871443803380e-02,1.522848063533610574e-02,1.947577841690290024e-02 -8.849382000000000517e+02,1.273276544118416842e+00,6.339822530560326186e-01,2.362087770812473231e-01,2.790294372508405063e-01,6.087746666932705608e+00,1.007413308789027129e+00,9.254843495289186150e-02,8.294345121601233439e-02,1.374232891706267945e-01,2.432343172349866300e+00,7.085611895395410587e-02,2.021246040551769041e-02,1.398755000947548774e-02,1.903607629862014150e-02 -8.851464999999999463e+02,1.273582449868068345e+00,6.336424245264508093e-01,2.361280953376700409e-01,2.793597156242014767e-01,6.086432969922115355e+00,1.006642236263317836e+00,9.261254896719650631e-02,8.322771803393616552e-02,1.375839224500335634e-01,2.431825621871582577e+00,7.081658703450427472e-02,2.049876324805849359e-02,1.388374276589925127e-02,1.882114780816941668e-02 -8.853289999999999509e+02,1.273367479342001785e+00,6.337769110474946732e-01,2.360614448944948762e-01,2.793957763160938579e-01,6.085495337767685697e+00,1.006330856739298785e+00,9.267947913499091639e-02,8.327180078307511168e-02,1.376629581531728930e-01,2.431745110855027203e+00,7.075888374884398146e-02,2.057649742240025281e-02,1.386915355190203314e-02,1.880530405898865609e-02 -8.855130000000000337e+02,1.273993164969349001e+00,6.358944023519249589e-01,2.347551474006583372e-01,2.797868974358924676e-01,6.087091341319455395e+00,1.004311840150298174e+00,9.195577660514486773e-02,8.321964464758424551e-02,1.389753273092380337e-01,2.430805324714000903e+00,6.958964959424865371e-02,2.058637790362283226e-02,1.585038820398887438e-02,1.849266342648100622e-02 -8.857224999999999682e+02,1.274096266629986429e+00,6.361994646870343662e-01,2.347330308498577212e-01,2.794200398459902868e-01,6.086779798128572949e+00,1.004657869933416103e+00,9.203405043512324912e-02,8.305351277932089549e-02,1.389164210182592396e-01,2.430776564272632001e+00,6.963077590514482607e-02,2.045385466069263303e-02,1.577335075403640818e-02,1.876955775595343101e-02 -8.862604000000000042e+02,1.273493753433910580e+00,6.363702297945253994e-01,2.347436672937154023e-01,2.792925704337156367e-01,6.083980872855262234e+00,1.004304363352615415e+00,9.234875437233569517e-02,8.310140752036042355e-02,1.389009210875256362e-01,2.430694298562401823e+00,6.967241682253569324e-02,2.059455319032826859e-02,1.540892486747058587e-02,1.889775691201170393e-02 -8.870098000000000411e+02,1.270625286938217524e+00,6.360339722792374140e-01,2.356516566763402487e-01,2.790179442543255228e-01,6.079925547138333997e+00,1.003116591058411000e+00,9.341293795605441763e-02,8.299286995836419045e-02,1.385122769921252328e-01,2.429025445867973421e+00,7.084319922890452981e-02,2.084905699829303627e-02,1.397537795009379247e-02,1.849037002198718888e-02 -8.878944000000000187e+02,1.268115103718406855e+00,6.371937648329174531e-01,2.343579849553257544e-01,2.790344491909346192e-01,6.076424281591870979e+00,1.001943649978557893e+00,9.335961060534725409e-02,8.369696916051200253e-02,1.392453255303747195e-01,2.430742410959614297e+00,6.991125275221261870e-02,2.111766866267049403e-02,1.470800012126710632e-02,1.840358035157406424e-02 -8.886319999999999482e+02,1.269151649223390521e+00,6.369254086811118043e-01,2.335732625554819974e-01,2.793169599338570230e-01,6.068695208770044758e+00,9.994957024454962369e-01,9.352466916685120424e-02,8.334659599135457730e-02,1.394966077734396959e-01,2.429391781908757597e+00,6.982494272094223742e-02,2.098482935268439556e-02,1.484936443911202830e-02,1.821459429474606151e-02 -8.894323000000000548e+02,1.270809310495786271e+00,6.365061170200329022e-01,2.336233227128057810e-01,2.794244818542496178e-01,6.060541122087622412e+00,9.988600207696420874e-01,9.429401970030915070e-02,8.307462383124636363e-02,1.388148185885691721e-01,2.428661648254347938e+00,7.061119937858899298e-02,2.067092398041150969e-02,1.409337822940680274e-02,1.839199541822872375e-02 -8.901000999999999976e+02,1.269976864257682747e+00,6.371557364399604850e-01,2.336455683977138875e-01,2.798218578940751544e-01,6.055944201365612400e+00,9.985583337167021067e-01,9.503903633327848155e-02,8.302772583090188563e-02,1.383093916454579131e-01,2.430113287376573616e+00,7.084154762305977515e-02,2.067319301183115354e-02,1.359558728224194435e-02,1.819648044455701719e-02 -8.905996000000000095e+02,1.271003108870496057e+00,6.372365882196440179e-01,2.327371681482335308e-01,2.801508778121986620e-01,6.051493982543811434e+00,9.981211059482160142e-01,9.504318245114468100e-02,8.376970856669972709e-02,1.386472746602830652e-01,2.430060686882351106e+00,6.962201090556502381e-02,2.139144537501462551e-02,1.419968816301270254e-02,1.760746495987247640e-02 -8.910099000000000160e+02,1.268761187273458546e+00,6.377400547220486438e-01,2.334059892671393466e-01,2.788716839983375051e-01,6.050329588452554752e+00,9.986396352055308956e-01,9.553805042280194559e-02,8.310880758698742377e-02,1.381086694656006864e-01,2.432712496778074218e+00,7.036508391936444062e-02,2.051708221488454664e-02,1.324398511697594261e-02,1.831461994967348295e-02 -8.911704999999999472e+02,1.269080910070914614e+00,6.375113507060321538e-01,2.330416124226103447e-01,2.789938823654041222e-01,6.048566378621167416e+00,9.975289178749298102e-01,9.537382920190640156e-02,8.337707756184510599e-02,1.382155686754567847e-01,2.431573323911800255e+00,7.015542750308076392e-02,2.080320773402208334e-02,1.356176467454527079e-02,1.815230662070682621e-02 -8.913089999999999691e+02,1.269300116798201428e+00,6.378653205281603622e-01,2.334520148537812534e-01,2.787760948943909800e-01,6.047881088872972377e+00,9.978355534047711473e-01,9.554460081997212528e-02,8.306552480323713128e-02,1.379377631052603470e-01,2.432131834678193716e+00,7.061059690265329702e-02,2.038457242077976184e-02,1.318642749847531714e-02,1.841003767878007791e-02 -8.913872999999999820e+02,1.269290268784176279e+00,6.379257079809727005e-01,2.334261045318790639e-01,2.787972919096667890e-01,6.047404212456758188e+00,9.976988965476758509e-01,9.558880979000955458e-02,8.305808368464383251e-02,1.379082270554869427e-01,2.432185337307388284e+00,7.062308140697430570e-02,2.039122527516014360e-02,1.316440187526290995e-02,1.838180852706144952e-02 -8.914258999999999560e+02,1.268182720190845103e+00,6.380406922575919682e-01,2.329091805380775204e-01,2.797641648123287972e-01,6.041224259918113404e+00,9.965764025324448383e-01,9.538062142064185345e-02,8.386572400989530940e-02,1.381083609727570827e-01,2.429892009480390414e+00,7.026884311690148599e-02,2.111627841764524005e-02,1.394384905191312085e-02,1.769152373336196904e-02 -8.916956999999999880e+02,1.268009977278226508e+00,6.386693029580488012e-01,2.328924053281495876e-01,2.795308171299394351e-01,6.038666947102040439e+00,9.960629294991818483e-01,9.547594710363094261e-02,8.347531993640894266e-02,1.380764124200306031e-01,2.430015430597243675e+00,7.033124747498925577e-02,2.082056513827007516e-02,1.390997008944680480e-02,1.785129101873450530e-02 -8.921180000000000518e+02,1.268501806591399550e+00,6.390036161905856549e-01,2.327343866821747209e-01,2.799146900008164796e-01,6.038451958777098838e+00,9.963464538334458886e-01,9.588964231513324998e-02,8.324800310768866451e-02,1.380672198602925782e-01,2.430534026049518292e+00,7.080062943931988984e-02,2.041998088117399912e-02,1.345074516653365498e-02,1.809138334932886005e-02 -8.926207000000000562e+02,1.266911557627445672e+00,6.405598830873688865e-01,2.337222977805714641e-01,2.809640853915211789e-01,6.042236256677815831e+00,9.965177946314827118e-01,9.631630001999397228e-02,8.362182958925237775e-02,1.384270632148290603e-01,2.434198140264150823e+00,7.041677169487087218e-02,2.148331094363298277e-02,1.334212668350462372e-02,1.738521618768894272e-02 -8.932879000000000360e+02,1.268217218973372029e+00,6.402166102261508396e-01,2.339741966057612421e-01,2.804789895093107721e-01,6.037486139920781980e+00,9.944547839252422250e-01,9.640004768545445968e-02,8.371978876435437478e-02,1.377651094436163626e-01,2.432842698611333621e+00,7.066236750022980573e-02,2.146865703871048137e-02,1.294960908324815918e-02,1.746696551682759557e-02 -8.940376999999999725e+02,1.267310382258138191e+00,6.407816440224508581e-01,2.328498167364002613e-01,2.797410993956968017e-01,6.024917838712221752e+00,9.920631678098175144e-01,9.651345804056349342e-02,8.340601953727988516e-02,1.375508787421082513e-01,2.432579266596701650e+00,7.036933414427781752e-02,2.041773673174129833e-02,1.328362382932107844e-02,1.785690182584670493e-02 -8.946196999999999662e+02,1.265997583328357212e+00,6.411531222961102117e-01,2.325358167538802978e-01,2.797121269318095238e-01,6.015678610157641160e+00,9.898020137652565609e-01,9.680787161789733419e-02,8.313181510234929350e-02,1.373478131026299454e-01,2.431196981243172406e+00,7.055142489950921858e-02,2.018686735792213360e-02,1.334335717083601214e-02,1.765812635391733609e-02 -8.950968000000000302e+02,1.265776993565226771e+00,6.410072067380642169e-01,2.324457152901762136e-01,2.796692376443624117e-01,6.007392448813991592e+00,9.874612222499297154e-01,9.725789064012496654e-02,8.317678824358010203e-02,1.367532200075452509e-01,2.429860555136347688e+00,7.100453301118392346e-02,2.018511948177864612e-02,1.317144638991196715e-02,1.726190290546197881e-02 -8.953432000000000244e+02,1.265055782870458501e+00,6.412515634208630910e-01,2.322804325858099928e-01,2.796606718152241933e-01,6.003618553111628842e+00,9.865981125939886631e-01,9.734219282195533118e-02,8.300854632882070927e-02,1.367500200373654995e-01,2.429314641875353509e+00,7.102288242103865779e-02,2.005112500340267001e-02,1.323943860261639349e-02,1.722284771188037356e-02 -8.955111000000000558e+02,1.264564341004989156e+00,6.414180710793124796e-01,2.321678069118526810e-01,2.796548349535671329e-01,6.001046974018986901e+00,9.860099790256744434e-01,9.739963736874640565e-02,8.289390421239173357e-02,1.367478395382048795e-01,2.428942649844018309e+00,7.103538593530250855e-02,1.995981951265862753e-02,1.328576933521816161e-02,1.719623502112407887e-02 -8.953121999999999616e+02,1.265146519605595987e+00,6.412208204940498257e-01,2.323012270818950453e-01,2.796617494966498474e-01,6.004093353301456659e+00,9.867067018770008247e-01,9.733158662213087231e-02,8.302971312816143090e-02,1.367504226310163606e-01,2.429383324144390954e+00,7.102057385080529084e-02,2.006798307495161193e-02,1.323088438754396745e-02,1.722776131172221170e-02 -8.952708999999999833e+02,1.265267404352730107e+00,6.411798629818762363e-01,2.323289307170018914e-01,2.796631852464201984e-01,6.004725909683386931e+00,9.868513708250135075e-01,9.731745642688094389e-02,8.305791276728302641e-02,1.367509589896544475e-01,2.429474826651205177e+00,7.101749823949443652e-02,2.009044237672485966e-02,1.321948796552818717e-02,1.723430749473731094e-02 -8.954148999999999887e+02,1.264845917583060420e+00,6.413226688354599636e-01,2.322323369287359052e-01,2.796581792423784019e-01,6.002520386220966842e+00,9.863469560910220757e-01,9.736672393574280493e-02,8.295958957034577086e-02,1.367490888772117386e-01,2.429155786433740971e+00,7.102822192057836603e-02,2.001213391533629427e-02,1.325922367425155790e-02,1.721148303095584864e-02 -8.955733999999999924e+02,1.264381989437278087e+00,6.414798544451336682e-01,2.321260166826237814e-01,2.796526691615406901e-01,6.000092778798787663e+00,9.857917495956214360e-01,9.742095240903875242e-02,8.285136577371687849e-02,1.367470304548355775e-01,2.428804620638823852e+00,7.104002541677145732e-02,1.992594022693289224e-02,1.330296054808943751e-02,1.718636027047418247e-02 -8.958460000000000036e+02,1.263703010132975368e+00,6.417220597830692874e-01,2.317810278023795800e-01,2.795218898818745412e-01,5.996896142736702018e+00,9.848564973090017105e-01,9.732748046656208851e-02,8.252570327644204173e-02,1.368706741838798258e-01,2.428001634898695471e+00,7.090578992003720993e-02,1.964212353660271804e-02,1.353718335998057784e-02,1.716663684982019933e-02 -8.962631000000000085e+02,1.262409986617272217e+00,6.421527763515315623e-01,2.315996438486093156e-01,2.795810121973546503e-01,5.989913874935137272e+00,9.833835302461753081e-01,9.758352232370776091e-02,8.232559324746918650e-02,1.367880654499032400e-01,2.427198320443285873e+00,7.103064408108555883e-02,1.949758523966027557e-02,1.355577634429902881e-02,1.708627164768208861e-02 -8.968424999999999727e+02,1.260714554047217328e+00,6.427545787216484285e-01,2.313250521798811965e-01,2.796511666990695311e-01,5.980269146856990403e+00,9.813710284733816458e-01,9.789132543865657066e-02,8.203898210682397663e-02,1.366924600821942670e-01,2.426163424645626066e+00,7.118326114943587801e-02,1.927969932352285864e-02,1.359666401643924716e-02,1.698900448369482924e-02 -8.973544000000000551e+02,1.259410678464227384e+00,6.432982713880557313e-01,2.312642291620748136e-01,2.797424997765226018e-01,5.972044578722609742e+00,9.799498895806215693e-01,9.810962446031440409e-02,8.180316038793328248e-02,1.365415819332568836e-01,2.425619934628423291e+00,7.133726435271767197e-02,1.901238307646546666e-02,1.362281288675806779e-02,1.699263158855417524e-02 -8.978215000000000146e+02,1.259279505450707548e+00,6.436677318272308046e-01,2.310723130004069259e-01,2.796469887368397966e-01,5.964234635183020217e+00,9.783750753358955166e-01,9.808575535493302411e-02,8.163558711417850944e-02,1.365803289108484253e-01,2.424995085248153437e+00,7.131351536634582267e-02,1.870259487883685345e-02,1.380936914917990643e-02,1.699045420941695458e-02 -8.980511000000000195e+02,1.258943977078142762e+00,6.439720683117489131e-01,2.311966828512329597e-01,2.793606245690953838e-01,5.959799731098456732e+00,9.776903896075266331e-01,9.837171240199071853e-02,8.150887675826584688e-02,1.362870227829454106e-01,2.424243225167198368e+00,7.160145146368374069e-02,1.845671567924744849e-02,1.374131590569495354e-02,1.710106427445454158e-02 -8.982355000000000018e+02,1.257326304312681664e+00,6.442596342517403762e-01,2.308719422744022198e-01,2.797323754483566072e-01,5.956902451411149713e+00,9.768226165175879494e-01,9.805158132509955715e-02,8.149845968018054609e-02,1.363717779404714503e-01,2.423055541869500118e+00,7.131704058935053880e-02,1.840773808266693568e-02,1.405289254456093540e-02,1.692312881467517016e-02 -8.983982999999999493e+02,1.255186200700246779e+00,6.442807287700709207e-01,2.306712147732140061e-01,2.794940972027586956e-01,5.952270824498679502e+00,9.749419452646286288e-01,9.822019656039829294e-02,8.122131739149329732e-02,1.364250994386312366e-01,2.421997914100632698e+00,7.124665000729664410e-02,1.840990888552163085e-02,1.396263686920423686e-02,1.691549888488413922e-02 -8.982911000000000286e+02,1.257179192850018001e+00,6.443214654812281506e-01,2.308514393367586126e-01,2.797364976247718182e-01,5.955960710328431773e+00,9.766346967874341978e-01,9.805363030313801742e-02,8.147816016151721019e-02,1.363584841727937258e-01,2.422909158726373580e+00,7.131948502398338663e-02,1.837180615728828403e-02,1.407525629917349974e-02,1.691914773711489239e-02 -8.982509000000000015e+02,1.257285557612591198e+00,6.442767601678214273e-01,2.308662634031843908e-01,2.797335172022558103e-01,5.956641609456584163e+00,9.767705668081569925e-01,9.805214884779366036e-02,8.149283715162991548e-02,1.363680958537405730e-01,2.423014996898202433e+00,7.131771764498626154e-02,1.839778571484618208e-02,1.405908682191764347e-02,1.692202614211350820e-02 -8.982922999999999547e+02,1.257176017782478450e+00,6.443227999681953033e-01,2.308509968273130819e-01,2.797365865926081385e-01,5.955940384981323277e+00,9.766306409659204490e-01,9.805367452568561348e-02,8.147772204240938398e-02,1.363581972569445633e-01,2.422905999377960917e+00,7.131953778156538415e-02,1.837103064810741149e-02,1.407573897013636444e-02,1.691906181457762670e-02 -8.983718000000000075e+02,1.256013235141860029e+00,6.446801658628461551e-01,2.309346708321368125e-01,2.794695092871548603e-01,5.953851291388030376e+00,9.759580175417239545e-01,9.852252778519399179e-02,8.115224644119067854e-02,1.358645657585654254e-01,2.422287691334434889e+00,7.151068567913083929e-02,1.821650530433094328e-02,1.393549878189603852e-02,1.722297604938938242e-02 -8.985057000000000471e+02,1.253904479309452924e+00,6.452451562933287921e-01,2.309974564140704623e-01,2.792325662071010739e-01,5.946594351129824929e+00,9.748692594288597135e-01,9.836139641348634610e-02,8.072755226178618404e-02,1.361911263770382297e-01,2.422550954874044038e+00,7.133113449562364372e-02,1.814595106923311274e-02,1.390729369273741023e-02,1.740910623694402748e-02 -8.988812000000000353e+02,1.252580995316760593e+00,6.445072136726439638e-01,2.310093821276996695e-01,2.800129275034027865e-01,5.934976146538538444e+00,9.713519737373799146e-01,9.833296716066095011e-02,8.103273501016161617e-02,1.364315475366371655e-01,2.419540176681604926e+00,7.129097806921971814e-02,1.855962525389795448e-02,1.373426654352166536e-02,1.707737073697238039e-02 -8.992589000000000397e+02,1.251206373869863331e+00,6.459619010940477191e-01,2.310826362296379832e-01,2.784083473171740097e-01,5.926183115086377740e+00,9.710971711189495537e-01,9.806330685005763825e-02,7.981563437409355810e-02,1.362688818040159178e-01,2.416750975140211644e+00,7.132598644343780825e-02,1.763087217067149659e-02,1.390473683223170109e-02,1.858556305133862718e-02 -8.995299999999999727e+02,1.250025018773428087e+00,6.463466168339336848e-01,2.310660576550237766e-01,2.782213760265311864e-01,5.919717920603687844e+00,9.698775414656042315e-01,9.806394966109470424e-02,7.952794588186606894e-02,1.362254552794791851e-01,2.415511743248862864e+00,7.133253427788935341e-02,1.743449768195326488e-02,1.393694212564899892e-02,1.882027539888908585e-02 -8.999246000000000549e+02,1.251814604693597399e+00,6.442989951689016559e-01,2.320662523544515521e-01,2.789274398539851041e-01,5.911273418800409019e+00,9.647912692824540670e-01,9.722746266120008141e-02,8.038776597413355152e-02,1.363633087173544700e-01,2.413937924649784961e+00,7.198596686747266160e-02,1.790275184433198774e-02,1.363945499820761950e-02,1.763338017134466473e-02 diff --git a/UnitTests/ExtractReferencePatternFromData/test_1_input.py b/UnitTests/ExtractReferencePatternFromData/test_1_input.py index 705cf3cf..dcd67815 100644 --- a/UnitTests/ExtractReferencePatternFromData/test_1_input.py +++ b/UnitTests/ExtractReferencePatternFromData/test_1_input.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = 'AcetaldehydeNISTRefMixed2.csv' #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = 'AcetaldehydeNISTRefMixed2.csv' #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data #Iterative Analysis #Options are True, False, or '' @@ -119,7 +119,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -136,8 +136,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -169,7 +169,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'yes' +applyRawSignalThresholds = 'yes' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/ExtractReferencePatternFromData/test_2_input.py b/UnitTests/ExtractReferencePatternFromData/test_2_input.py index 67e3fbb3..5c42bebb 100644 --- a/UnitTests/ExtractReferencePatternFromData/test_2_input.py +++ b/UnitTests/ExtractReferencePatternFromData/test_2_input.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = 'AcetaldehydeNISTRefMixed2.csv' #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = 'AcetaldehydeNISTRefMixed2.csv' #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data #Iterative Analysis #Options are True, False, or '' @@ -119,7 +119,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -136,8 +136,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -169,7 +169,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'yes' +applyRawSignalThresholds = 'yes' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/ExtractReferencePatternFromData/test_3_input.py b/UnitTests/ExtractReferencePatternFromData/test_3_input.py index 9a3743ee..53e5a370 100644 --- a/UnitTests/ExtractReferencePatternFromData/test_3_input.py +++ b/UnitTests/ExtractReferencePatternFromData/test_3_input.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = 'AcetaldehydeNISTRefMixed2.csv' #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = 'AcetaldehydeNISTRefMixed2.csv' #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data #Iterative Analysis #Options are True, False, or '' @@ -119,7 +119,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -136,8 +136,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -169,7 +169,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'yes' +applyRawSignalThresholds = 'yes' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/ExtractReferencePatternFromData/test_4_input.py b/UnitTests/ExtractReferencePatternFromData/test_4_input.py index 836a60c8..dece1333 100644 --- a/UnitTests/ExtractReferencePatternFromData/test_4_input.py +++ b/UnitTests/ExtractReferencePatternFromData/test_4_input.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = 'AcetaldehydeNISTRefMixed2.csv' #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = 'AcetaldehydeNISTRefMixed2.csv' #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data iterativeAnalysis = False iterationNumber = None @@ -108,7 +108,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -125,8 +125,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -158,7 +158,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'yes' +applyRawSignalThresholds = 'yes' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/ExtractReferencePatternFromData/test_5_input.py b/UnitTests/ExtractReferencePatternFromData/test_5_input.py index da82644a..049293cc 100644 --- a/UnitTests/ExtractReferencePatternFromData/test_5_input.py +++ b/UnitTests/ExtractReferencePatternFromData/test_5_input.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = 'AcetaldehydeNISTRefMixed2.csv' #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = 'AcetaldehydeNISTRefMixed2.csv' #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data iterativeAnalysis = False iterationNumber = None @@ -108,7 +108,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -125,8 +125,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -158,7 +158,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/ExtractReferencePatternFromData/test_6_input.py b/UnitTests/ExtractReferencePatternFromData/test_6_input.py index 7e70f0e0..c5d69746 100644 --- a/UnitTests/ExtractReferencePatternFromData/test_6_input.py +++ b/UnitTests/ExtractReferencePatternFromData/test_6_input.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = 'AcetaldehydeNISTRefMixed2.csv' #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = 'AcetaldehydeNISTRefMixed2.csv' #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data iterativeAnalysis = False iterationNumber = None @@ -108,7 +108,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -125,8 +125,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -158,7 +158,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'yes' +applyRawSignalThresholds = 'yes' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/FinalOptimizer/test_1_Input_Brute_Finisher.py b/UnitTests/FinalOptimizer/test_1_Input_Brute_Finisher.py index afb40a25..20b17a64 100644 --- a/UnitTests/FinalOptimizer/test_1_Input_Brute_Finisher.py +++ b/UnitTests/FinalOptimizer/test_1_Input_Brute_Finisher.py @@ -17,10 +17,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -35,7 +35,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -154,15 +154,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -181,11 +181,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -213,18 +213,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Negative Analyzer// UserChoices['negativeAnalyzerYorN'] = {} #initialize the negativeAnalyzerYorN container @@ -286,4 +286,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/IonizationFactors/test_1.py b/UnitTests/IonizationFactors/test_1.py index 2e1b0cc6..664965db 100644 --- a/UnitTests/IonizationFactors/test_1.py +++ b/UnitTests/IonizationFactors/test_1.py @@ -21,8 +21,8 @@ suffix = ut.returnDigitFromFilename(__file__) #This replaces the globals variables being pointed to in MSRESOLVE -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeNISTRefKnownFactors.csv'] #Overwrite with desired reference file -MSRESOLVE.G.collectedFileName = '2-CrotAcetExp#2Truncated.csv' +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeNISTRefKnownFactors.csv'] #Overwrite with desired reference file +MSRESOLVE.G.dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' MSRESOLVE.G.ionizationDataFileName = 'ProvidedIonizationDataExample.csv' MSRESOLVE.G.grapher = 'no' MSRESOLVE.G.exportAtEachStep = 'no' diff --git a/UnitTests/IonizationFactors/test_2.py b/UnitTests/IonizationFactors/test_2.py index 8b5a2c39..11223cac 100644 --- a/UnitTests/IonizationFactors/test_2.py +++ b/UnitTests/IonizationFactors/test_2.py @@ -23,8 +23,8 @@ ##First Test input - First reference file #This replaces the globals variables being pointed to in MSRESOLVE -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeNISTRefMatchingMolecule.csv'] #Overwrite with desired reference file -MSRESOLVE.G.collectedFileName = '2-CrotAcetExp#2Truncated.csv' +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeNISTRefMatchingMolecule.csv'] #Overwrite with desired reference file +MSRESOLVE.G.dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' MSRESOLVE.G.ionizationDataFileName = 'ProvidedIonizationDataExample.csv' MSRESOLVE.G.grapher = 'no' MSRESOLVE.G.exportAtEachStep = 'no' diff --git a/UnitTests/IonizationFactors/test_3.py b/UnitTests/IonizationFactors/test_3.py index 6dc09404..321e0e02 100644 --- a/UnitTests/IonizationFactors/test_3.py +++ b/UnitTests/IonizationFactors/test_3.py @@ -22,8 +22,8 @@ ##First Test input - First reference file #This replaces the globals variables being pointed to in MSRESOLVE -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeNISTRefKnownTypes.csv'] #Overwrite with desired reference file -MSRESOLVE.G.collectedFileName = '2-CrotAcetExp#2Truncated.csv' +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeNISTRefKnownTypes.csv'] #Overwrite with desired reference file +MSRESOLVE.G.dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' MSRESOLVE.G.ionizationDataFileName = 'ProvidedIonizationDataExample.csv' MSRESOLVE.G.grapher = 'no' MSRESOLVE.G.exportAtEachStep = 'no' diff --git a/UnitTests/IonizationFactors/test_4.py b/UnitTests/IonizationFactors/test_4.py index d26e52e2..fee703d2 100644 --- a/UnitTests/IonizationFactors/test_4.py +++ b/UnitTests/IonizationFactors/test_4.py @@ -22,8 +22,8 @@ ##First Test input - First reference file #This replaces the globals variables being pointed to in MSRESOLVE -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeNISTRefDefault.csv'] #Overwrite with desired reference file -MSRESOLVE.G.collectedFileName = '2-CrotAcetExp#2Truncated.csv' +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeNISTRefDefault.csv'] #Overwrite with desired reference file +MSRESOLVE.G.dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' MSRESOLVE.G.ionizationDataFileName = 'ProvidedIonizationDataExample.csv' MSRESOLVE.G.grapher = 'no' MSRESOLVE.G.exportAtEachStep = 'no' diff --git a/UnitTests/IterativeAnalysis/_iter_1/UserInput_iter_1.py b/UnitTests/IterativeAnalysis/_iter_1/UserInput_iter_1.py index 1b657bf1..5d9bd393 100644 --- a/UnitTests/IterativeAnalysis/_iter_1/UserInput_iter_1.py +++ b/UnitTests/IterativeAnalysis/_iter_1/UserInput_iter_1.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated.csv' referencePatternTimeRanges = [] @@ -119,4 +119,4 @@ timeSinceLastCheckpoint = '' iterationNumber = 1 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file diff --git a/UnitTests/IterativeAnalysis/_iter_2/UserInput_iter_2.py b/UnitTests/IterativeAnalysis/_iter_2/UserInput_iter_2.py index 4164fad2..4083f623 100644 --- a/UnitTests/IterativeAnalysis/_iter_2/UserInput_iter_2.py +++ b/UnitTests/IterativeAnalysis/_iter_2/UserInput_iter_2.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_1.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_1.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_1.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.2700946000000002 iterationNumber = 1 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['(E) 2-Butenal (Crotonaldehyde'] chosenMassFragments = [39] diff --git a/UnitTests/IterativeAnalysis/_iter_3/UserInput_iter_3.py b/UnitTests/IterativeAnalysis/_iter_3/UserInput_iter_3.py index 596e6efe..05df4af9 100644 --- a/UnitTests/IterativeAnalysis/_iter_3/UserInput_iter_3.py +++ b/UnitTests/IterativeAnalysis/_iter_3/UserInput_iter_3.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_2.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_2.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_2.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.28897450000000013 iterationNumber = 2 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['Ethanol'] chosenMassFragments = [31] diff --git a/UnitTests/IterativeAnalysis/_iter_4/UserInput_iter_4.py b/UnitTests/IterativeAnalysis/_iter_4/UserInput_iter_4.py index d040b401..88c70701 100644 --- a/UnitTests/IterativeAnalysis/_iter_4/UserInput_iter_4.py +++ b/UnitTests/IterativeAnalysis/_iter_4/UserInput_iter_4.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_3.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_3.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_3.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.33806340000000024 iterationNumber = 3 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['H2O'] chosenMassFragments = [18] diff --git a/UnitTests/IterativeAnalysis/_iter_5/UserInput_iter_5.py b/UnitTests/IterativeAnalysis/_iter_5/UserInput_iter_5.py index 7f483dd7..3bcd3005 100644 --- a/UnitTests/IterativeAnalysis/_iter_5/UserInput_iter_5.py +++ b/UnitTests/IterativeAnalysis/_iter_5/UserInput_iter_5.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_4.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_4.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_4.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.29744729999999997 iterationNumber = 4 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['Acetaldehyde'] chosenMassFragments = [41] diff --git a/UnitTests/IterativeAnalysis/_iter_6/UserInput_iter_6.py b/UnitTests/IterativeAnalysis/_iter_6/UserInput_iter_6.py index 54f38d0d..fe2bb624 100644 --- a/UnitTests/IterativeAnalysis/_iter_6/UserInput_iter_6.py +++ b/UnitTests/IterativeAnalysis/_iter_6/UserInput_iter_6.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_5.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_5.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_5.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.31938140000000015 iterationNumber = 5 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['Ethylene (Ethene)'] chosenMassFragments = [27] diff --git a/UnitTests/IterativeAnalysis/_iter_7/UserInput_iter_7.py b/UnitTests/IterativeAnalysis/_iter_7/UserInput_iter_7.py index 8ca12820..16c7e47d 100644 --- a/UnitTests/IterativeAnalysis/_iter_7/UserInput_iter_7.py +++ b/UnitTests/IterativeAnalysis/_iter_7/UserInput_iter_7.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_6.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_6.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_6.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.2832543999999997 iterationNumber = 6 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['CO', 'CO2', 'H2'] chosenMassFragments = [2, 28, 44] diff --git a/UnitTests/IterativeAnalysis/_iter_8/UserInput_iter_8.py b/UnitTests/IterativeAnalysis/_iter_8/UserInput_iter_8.py index 27484c82..4b3ccce0 100644 --- a/UnitTests/IterativeAnalysis/_iter_8/UserInput_iter_8.py +++ b/UnitTests/IterativeAnalysis/_iter_8/UserInput_iter_8.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_7.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_7.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_7.csv' referencePatternTimeRanges = [] @@ -119,4 +119,4 @@ timeSinceLastCheckpoint = 0.5683270000000009 iterationNumber = 7 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file diff --git a/UnitTests/IterativeAnalysis/test_1_initial_input_iterative.py b/UnitTests/IterativeAnalysis/test_1_initial_input_iterative.py index 0dd86e63..385fe0af 100644 --- a/UnitTests/IterativeAnalysis/test_1_initial_input_iterative.py +++ b/UnitTests/IterativeAnalysis/test_1_initial_input_iterative.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = 'AcetaldehydeNISTRefMixed2.tsv' #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = 'AcetaldehydeNISTRefMixed2.tsv' #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data ionizationDataFileName = '_ProvidedIonizationData.csv' @@ -121,7 +121,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -146,8 +146,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'yes' -referenceValueThreshold = [1.0] +applyReferenceMassFragmentsThresholds= 'yes' +referenceMassFragmentFilterThreshold = [1.0] referenceSignificantFragmentThresholds = [0.0] #//Data Threshold Filter// @@ -179,7 +179,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/IterativeAnalysis/test_1_initial_input_noniterative.py b/UnitTests/IterativeAnalysis/test_1_initial_input_noniterative.py index 00c23dd5..799c214d 100644 --- a/UnitTests/IterativeAnalysis/test_1_initial_input_noniterative.py +++ b/UnitTests/IterativeAnalysis/test_1_initial_input_noniterative.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.tsv'] #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.tsv'] #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data ionizationDataFileName = '_ProvidedIonizationData.csv' @@ -121,7 +121,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -146,8 +146,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'yes' -referenceValueThreshold = [1.0] +applyReferenceMassFragmentsThresholds= 'yes' +referenceMassFragmentFilterThreshold = [1.0] referenceSignificantFragmentThresholds = [0.0] @@ -180,7 +180,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/IterativeAnalysisConcentrationFinder/_iter_1/UserInput_iter_1.py b/UnitTests/IterativeAnalysisConcentrationFinder/_iter_1/UserInput_iter_1.py index bf08c75b..28da6e59 100644 --- a/UnitTests/IterativeAnalysisConcentrationFinder/_iter_1/UserInput_iter_1.py +++ b/UnitTests/IterativeAnalysisConcentrationFinder/_iter_1/UserInput_iter_1.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated.csv' referencePatternTimeRanges = [] @@ -119,4 +119,4 @@ timeSinceLastCheckpoint = '' iterationNumber = 1 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file diff --git a/UnitTests/IterativeAnalysisConcentrationFinder/_iter_2/UserInput_iter_2.py b/UnitTests/IterativeAnalysisConcentrationFinder/_iter_2/UserInput_iter_2.py index c734fc54..c82d5626 100644 --- a/UnitTests/IterativeAnalysisConcentrationFinder/_iter_2/UserInput_iter_2.py +++ b/UnitTests/IterativeAnalysisConcentrationFinder/_iter_2/UserInput_iter_2.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_1.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_1.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_1.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.25305359999999943 iterationNumber = 1 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['(E) 2-Butenal (Crotonaldehyde'] chosenMassFragments = [39] diff --git a/UnitTests/IterativeAnalysisConcentrationFinder/_iter_3/UserInput_iter_3.py b/UnitTests/IterativeAnalysisConcentrationFinder/_iter_3/UserInput_iter_3.py index 85279a35..11879fa0 100644 --- a/UnitTests/IterativeAnalysisConcentrationFinder/_iter_3/UserInput_iter_3.py +++ b/UnitTests/IterativeAnalysisConcentrationFinder/_iter_3/UserInput_iter_3.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_2.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_2.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_2.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.21749119999999955 iterationNumber = 2 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['Ethanol'] chosenMassFragments = [31] diff --git a/UnitTests/IterativeAnalysisConcentrationFinder/_iter_4/UserInput_iter_4.py b/UnitTests/IterativeAnalysisConcentrationFinder/_iter_4/UserInput_iter_4.py index 68bf88f3..3110dd8f 100644 --- a/UnitTests/IterativeAnalysisConcentrationFinder/_iter_4/UserInput_iter_4.py +++ b/UnitTests/IterativeAnalysisConcentrationFinder/_iter_4/UserInput_iter_4.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_3.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_3.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_3.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.19979480000000027 iterationNumber = 3 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['H2O'] chosenMassFragments = [18] diff --git a/UnitTests/IterativeAnalysisConcentrationFinder/_iter_5/UserInput_iter_5.py b/UnitTests/IterativeAnalysisConcentrationFinder/_iter_5/UserInput_iter_5.py index 0a4e7eff..a08a78c8 100644 --- a/UnitTests/IterativeAnalysisConcentrationFinder/_iter_5/UserInput_iter_5.py +++ b/UnitTests/IterativeAnalysisConcentrationFinder/_iter_5/UserInput_iter_5.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_4.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_4.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_4.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.23163160000000005 iterationNumber = 4 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['Acetaldehyde'] chosenMassFragments = [41] diff --git a/UnitTests/IterativeAnalysisConcentrationFinder/_iter_6/UserInput_iter_6.py b/UnitTests/IterativeAnalysisConcentrationFinder/_iter_6/UserInput_iter_6.py index f1192325..2140e558 100644 --- a/UnitTests/IterativeAnalysisConcentrationFinder/_iter_6/UserInput_iter_6.py +++ b/UnitTests/IterativeAnalysisConcentrationFinder/_iter_6/UserInput_iter_6.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_5.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_5.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_5.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.22055640000000043 iterationNumber = 5 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['Ethylene (Ethene)'] chosenMassFragments = [27] diff --git a/UnitTests/IterativeAnalysisConcentrationFinder/_iter_7/UserInput_iter_7.py b/UnitTests/IterativeAnalysisConcentrationFinder/_iter_7/UserInput_iter_7.py index a853d53a..3cd9012a 100644 --- a/UnitTests/IterativeAnalysisConcentrationFinder/_iter_7/UserInput_iter_7.py +++ b/UnitTests/IterativeAnalysisConcentrationFinder/_iter_7/UserInput_iter_7.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_6.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_6.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_6.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.22843590000000003 iterationNumber = 6 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['CO', 'CO2', 'H2'] chosenMassFragments = [2, 28, 44] diff --git a/UnitTests/IterativeAnalysisConcentrationFinder/_iter_8/UserInput_iter_8.py b/UnitTests/IterativeAnalysisConcentrationFinder/_iter_8/UserInput_iter_8.py index d812937b..9642500a 100644 --- a/UnitTests/IterativeAnalysisConcentrationFinder/_iter_8/UserInput_iter_8.py +++ b/UnitTests/IterativeAnalysisConcentrationFinder/_iter_8/UserInput_iter_8.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_7.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_7.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_7.csv' referencePatternTimeRanges = [] @@ -119,4 +119,4 @@ timeSinceLastCheckpoint = 0.4921106000000002 iterationNumber = 7 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file diff --git a/UnitTests/IterativeAnalysisConcentrationFinder/test_1_initial_input_iterative.py b/UnitTests/IterativeAnalysisConcentrationFinder/test_1_initial_input_iterative.py index 1dbc58bc..7aaa7c6d 100644 --- a/UnitTests/IterativeAnalysisConcentrationFinder/test_1_initial_input_iterative.py +++ b/UnitTests/IterativeAnalysisConcentrationFinder/test_1_initial_input_iterative.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data ionizationDataFileName = '_ProvidedIonizationData.csv' @@ -121,7 +121,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -146,8 +146,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -179,7 +179,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/IterativeAnalysisConcentrationFinder/test_1_initial_input_noniterative.py b/UnitTests/IterativeAnalysisConcentrationFinder/test_1_initial_input_noniterative.py index 456a8d31..0ccced1f 100644 --- a/UnitTests/IterativeAnalysisConcentrationFinder/test_1_initial_input_noniterative.py +++ b/UnitTests/IterativeAnalysisConcentrationFinder/test_1_initial_input_noniterative.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data ionizationDataFileName = '_ProvidedIonizationData.csv' @@ -121,7 +121,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -146,8 +146,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -179,7 +179,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_1/UserInput_iter_1.py b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_1/UserInput_iter_1.py index 4b5e7b70..f74aca86 100644 --- a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_1/UserInput_iter_1.py +++ b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_1/UserInput_iter_1.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.csv', 'AcetaldehydeNISTRefMixed2Edit.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.csv', 'AcetaldehydeNISTRefMixed2Edit.csv'] referenceFormsList = ['xyyy', 'xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated.csv' referencePatternTimeRanges = [[176, 200], [250, 400]] @@ -119,4 +119,4 @@ timeSinceLastCheckpoint = '' iterationNumber = 1 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file diff --git a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_2/UserInput_iter_2.py b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_2/UserInput_iter_2.py index a540c05d..26859b4d 100644 --- a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_2/UserInput_iter_2.py +++ b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_2/UserInput_iter_2.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_1.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_1.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_1.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_1.csv'] referenceFormsList = ['xyyy', 'xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_1.csv' referencePatternTimeRanges = [[176, 200], [250, 400]] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.21222889999999994 iterationNumber = 1 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['(E) 2-Butenal (Crotonaldehyde'] chosenMassFragments = [39] diff --git a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_3/UserInput_iter_3.py b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_3/UserInput_iter_3.py index e4145c3b..35e5f164 100644 --- a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_3/UserInput_iter_3.py +++ b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_3/UserInput_iter_3.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_2.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_2.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_2.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_2.csv'] referenceFormsList = ['xyyy', 'xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_2.csv' referencePatternTimeRanges = [[176, 200], [250, 400]] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.25337740000000064 iterationNumber = 2 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['Ethanol'] chosenMassFragments = [31] diff --git a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_4/UserInput_iter_4.py b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_4/UserInput_iter_4.py index c2bde4cb..8aeae600 100644 --- a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_4/UserInput_iter_4.py +++ b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_4/UserInput_iter_4.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_3.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_3.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_3.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_3.csv'] referenceFormsList = ['xyyy', 'xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_3.csv' referencePatternTimeRanges = [[176, 200], [250, 400]] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.21332720000000016 iterationNumber = 3 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['H2O'] chosenMassFragments = [18] diff --git a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_5/UserInput_iter_5.py b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_5/UserInput_iter_5.py index af18aa96..4f35f2c8 100644 --- a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_5/UserInput_iter_5.py +++ b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_5/UserInput_iter_5.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_4.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_4.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_4.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_4.csv'] referenceFormsList = ['xyyy', 'xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_4.csv' referencePatternTimeRanges = [[176, 200], [250, 400]] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.2195286000000003 iterationNumber = 4 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['Acetaldehyde'] chosenMassFragments = [41] diff --git a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_6/UserInput_iter_6.py b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_6/UserInput_iter_6.py index e9094529..d455b441 100644 --- a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_6/UserInput_iter_6.py +++ b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_6/UserInput_iter_6.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_5.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_5.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_5.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_5.csv'] referenceFormsList = ['xyyy', 'xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_5.csv' referencePatternTimeRanges = [[176, 200], [250, 400]] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.20479350000000007 iterationNumber = 5 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['Ethylene (Ethene)'] chosenMassFragments = [27] diff --git a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_7/UserInput_iter_7.py b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_7/UserInput_iter_7.py index c19aa1c6..7f49b586 100644 --- a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_7/UserInput_iter_7.py +++ b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_7/UserInput_iter_7.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_6.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_6.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_6.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_6.csv'] referenceFormsList = ['xyyy', 'xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_6.csv' referencePatternTimeRanges = [[176, 200], [250, 400]] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.3251596999999995 iterationNumber = 6 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['CO', 'CO2', 'H2'] chosenMassFragments = [2, 28, 44] diff --git a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_8/UserInput_iter_8.py b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_8/UserInput_iter_8.py index a3311c0b..caaec210 100644 --- a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_8/UserInput_iter_8.py +++ b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/_iter_8/UserInput_iter_8.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_7.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_7.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_7.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_7.csv'] referenceFormsList = ['xyyy', 'xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_7.csv' referencePatternTimeRanges = [[176, 200], [250, 400]] @@ -119,4 +119,4 @@ timeSinceLastCheckpoint = 0.6123443999999996 iterationNumber = 7 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file diff --git a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/test_1_initial_input_iterative.py b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/test_1_initial_input_iterative.py index 1f93f892..dc1a4771 100644 --- a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/test_1_initial_input_iterative.py +++ b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/test_1_initial_input_iterative.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.csv','AcetaldehydeNISTRefMixed2Edit.csv'] #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.csv','AcetaldehydeNISTRefMixed2Edit.csv'] #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [[176,200],[250,400]] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data ionizationDataFileName = '_ProvidedIonizationData.csv' @@ -121,7 +121,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -146,8 +146,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -179,7 +179,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/test_1_initial_input_noniterative.py b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/test_1_initial_input_noniterative.py index 4f6733df..65aeb212 100644 --- a/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/test_1_initial_input_noniterative.py +++ b/UnitTests/IterativeAnalysisInterpolatingMultipleReferencePatterns/test_1_initial_input_noniterative.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.csv','AcetaldehydeNISTRefMixed2Edit.csv'] #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.csv','AcetaldehydeNISTRefMixed2Edit.csv'] #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [[176,200],[250,400]] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data ionizationDataFileName = '_ProvidedIonizationData.csv' @@ -121,7 +121,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -146,8 +146,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -179,7 +179,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_1/UserInput_iter_1.py b/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_1/UserInput_iter_1.py index d7f07109..c421bfd6 100644 --- a/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_1/UserInput_iter_1.py +++ b/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_1/UserInput_iter_1.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.csv', 'AcetaldehydeNISTRefMixed2Edit.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.csv', 'AcetaldehydeNISTRefMixed2Edit.csv'] referenceFormsList = ['xyyy', 'xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated.csv' referencePatternTimeRanges = [[176, 250], [250, 400]] @@ -119,4 +119,4 @@ timeSinceLastCheckpoint = '' iterationNumber = 1 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file diff --git a/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_2/UserInput_iter_2.py b/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_2/UserInput_iter_2.py index 2c785bba..a215fd56 100644 --- a/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_2/UserInput_iter_2.py +++ b/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_2/UserInput_iter_2.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_1.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_1.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_1.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_1.csv'] referenceFormsList = ['xyyy', 'xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_1.csv' referencePatternTimeRanges = [[176, 250], [250, 400]] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.26504939999999966 iterationNumber = 1 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['(E) 2-Butenal (Crotonaldehyde'] chosenMassFragments = [39] diff --git a/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_3/UserInput_iter_3.py b/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_3/UserInput_iter_3.py index bee15bb0..3c0a0c65 100644 --- a/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_3/UserInput_iter_3.py +++ b/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_3/UserInput_iter_3.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_2.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_2.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_2.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_2.csv'] referenceFormsList = ['xyyy', 'xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_2.csv' referencePatternTimeRanges = [[176, 250], [250, 400]] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.22017280000000028 iterationNumber = 2 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['Ethanol'] chosenMassFragments = [31] diff --git a/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_4/UserInput_iter_4.py b/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_4/UserInput_iter_4.py index 5c5b31a5..6577cf45 100644 --- a/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_4/UserInput_iter_4.py +++ b/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_4/UserInput_iter_4.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_3.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_3.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_3.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_3.csv'] referenceFormsList = ['xyyy', 'xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_3.csv' referencePatternTimeRanges = [[176, 250], [250, 400]] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.2981669999999994 iterationNumber = 3 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['H2O'] chosenMassFragments = [18] diff --git a/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_5/UserInput_iter_5.py b/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_5/UserInput_iter_5.py index d10710a4..bfa8ca06 100644 --- a/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_5/UserInput_iter_5.py +++ b/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_5/UserInput_iter_5.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_4.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_4.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_4.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_4.csv'] referenceFormsList = ['xyyy', 'xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_4.csv' referencePatternTimeRanges = [[176, 250], [250, 400]] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.22669989999999984 iterationNumber = 4 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['Acetaldehyde'] chosenMassFragments = [41] diff --git a/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_6/UserInput_iter_6.py b/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_6/UserInput_iter_6.py index 884203c4..ac713187 100644 --- a/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_6/UserInput_iter_6.py +++ b/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_6/UserInput_iter_6.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_5.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_5.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_5.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_5.csv'] referenceFormsList = ['xyyy', 'xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_5.csv' referencePatternTimeRanges = [[176, 250], [250, 400]] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.2669712999999998 iterationNumber = 5 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['Ethylene (Ethene)'] chosenMassFragments = [27] diff --git a/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_7/UserInput_iter_7.py b/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_7/UserInput_iter_7.py index 3b5e7916..90ee8f90 100644 --- a/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_7/UserInput_iter_7.py +++ b/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_7/UserInput_iter_7.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_6.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_6.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_6.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_6.csv'] referenceFormsList = ['xyyy', 'xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_6.csv' referencePatternTimeRanges = [[176, 250], [250, 400]] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.24958249999999982 iterationNumber = 6 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['CO', 'CO2', 'H2'] chosenMassFragments = [2, 28, 44] diff --git a/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_8/UserInput_iter_8.py b/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_8/UserInput_iter_8.py index 347bc4c0..81f89bf3 100644 --- a/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_8/UserInput_iter_8.py +++ b/UnitTests/IterativeAnalysisMultipleReferencePatterns/_iter_8/UserInput_iter_8.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_7.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_7.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_7.csv', 'AcetaldehydeNISTRefMixed2Edit_unused_iter_7.csv'] referenceFormsList = ['xyyy', 'xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_7.csv' referencePatternTimeRanges = [[176, 250], [250, 400]] @@ -119,4 +119,4 @@ timeSinceLastCheckpoint = 0.5310279000000007 iterationNumber = 7 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file diff --git a/UnitTests/IterativeAnalysisMultipleReferencePatterns/test_1_initial_input_iterative.py b/UnitTests/IterativeAnalysisMultipleReferencePatterns/test_1_initial_input_iterative.py index e633eb5a..02fbd2c9 100644 --- a/UnitTests/IterativeAnalysisMultipleReferencePatterns/test_1_initial_input_iterative.py +++ b/UnitTests/IterativeAnalysisMultipleReferencePatterns/test_1_initial_input_iterative.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.csv','AcetaldehydeNISTRefMixed2Edit.csv'] #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.csv','AcetaldehydeNISTRefMixed2Edit.csv'] #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [[176,250],[250,400]] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data ionizationDataFileName = '_ProvidedIonizationData.csv' @@ -121,7 +121,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -146,8 +146,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -179,7 +179,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/IterativeAnalysisMultipleReferencePatterns/test_1_initial_input_noniterative.py b/UnitTests/IterativeAnalysisMultipleReferencePatterns/test_1_initial_input_noniterative.py index 4b53e814..c24ed1c7 100644 --- a/UnitTests/IterativeAnalysisMultipleReferencePatterns/test_1_initial_input_noniterative.py +++ b/UnitTests/IterativeAnalysisMultipleReferencePatterns/test_1_initial_input_noniterative.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.csv','AcetaldehydeNISTRefMixed2Edit.csv'] #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.csv','AcetaldehydeNISTRefMixed2Edit.csv'] #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [[176,250],[250,400]] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data ionizationDataFileName = '_ProvidedIonizationData.csv' @@ -121,7 +121,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -146,8 +146,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -179,7 +179,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/IterativeAnalysisScaleRawData/_iter_1/UserInput_iter_1.py b/UnitTests/IterativeAnalysisScaleRawData/_iter_1/UserInput_iter_1.py index 6d2c2658..0c90c735 100644 --- a/UnitTests/IterativeAnalysisScaleRawData/_iter_1/UserInput_iter_1.py +++ b/UnitTests/IterativeAnalysisScaleRawData/_iter_1/UserInput_iter_1.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated.csv' referencePatternTimeRanges = [] @@ -119,4 +119,4 @@ timeSinceLastCheckpoint = '' iterationNumber = 1 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file diff --git a/UnitTests/IterativeAnalysisScaleRawData/_iter_2/UserInput_iter_2.py b/UnitTests/IterativeAnalysisScaleRawData/_iter_2/UserInput_iter_2.py index e85db67c..94c0096a 100644 --- a/UnitTests/IterativeAnalysisScaleRawData/_iter_2/UserInput_iter_2.py +++ b/UnitTests/IterativeAnalysisScaleRawData/_iter_2/UserInput_iter_2.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_1.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_1.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_1.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.2758489000000002 iterationNumber = 1 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['H2O'] chosenMassFragments = [18] diff --git a/UnitTests/IterativeAnalysisScaleRawData/_iter_3/UserInput_iter_3.py b/UnitTests/IterativeAnalysisScaleRawData/_iter_3/UserInput_iter_3.py index 72c64f41..39387920 100644 --- a/UnitTests/IterativeAnalysisScaleRawData/_iter_3/UserInput_iter_3.py +++ b/UnitTests/IterativeAnalysisScaleRawData/_iter_3/UserInput_iter_3.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_2.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_2.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_2.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.21335589999999982 iterationNumber = 2 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['H2'] chosenMassFragments = [2] diff --git a/UnitTests/IterativeAnalysisScaleRawData/_iter_4/UserInput_iter_4.py b/UnitTests/IterativeAnalysisScaleRawData/_iter_4/UserInput_iter_4.py index 80aaaff3..a594a2d0 100644 --- a/UnitTests/IterativeAnalysisScaleRawData/_iter_4/UserInput_iter_4.py +++ b/UnitTests/IterativeAnalysisScaleRawData/_iter_4/UserInput_iter_4.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_3.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_3.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_3.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.26022700000000043 iterationNumber = 3 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['(E) 2-Butenal (Crotonaldehyde'] chosenMassFragments = [39] diff --git a/UnitTests/IterativeAnalysisScaleRawData/_iter_5/UserInput_iter_5.py b/UnitTests/IterativeAnalysisScaleRawData/_iter_5/UserInput_iter_5.py index 78541e4f..0f0fad3b 100644 --- a/UnitTests/IterativeAnalysisScaleRawData/_iter_5/UserInput_iter_5.py +++ b/UnitTests/IterativeAnalysisScaleRawData/_iter_5/UserInput_iter_5.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_4.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_4.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_4.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.2105448000000001 iterationNumber = 4 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['Ethanol'] chosenMassFragments = [31] diff --git a/UnitTests/IterativeAnalysisScaleRawData/_iter_6/UserInput_iter_6.py b/UnitTests/IterativeAnalysisScaleRawData/_iter_6/UserInput_iter_6.py index 2ce2eca3..a2628045 100644 --- a/UnitTests/IterativeAnalysisScaleRawData/_iter_6/UserInput_iter_6.py +++ b/UnitTests/IterativeAnalysisScaleRawData/_iter_6/UserInput_iter_6.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_5.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_5.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_5.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.25773820000000036 iterationNumber = 5 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['Acetaldehyde'] chosenMassFragments = [41] diff --git a/UnitTests/IterativeAnalysisScaleRawData/_iter_7/UserInput_iter_7.py b/UnitTests/IterativeAnalysisScaleRawData/_iter_7/UserInput_iter_7.py index 5acd1fbf..1a820cbf 100644 --- a/UnitTests/IterativeAnalysisScaleRawData/_iter_7/UserInput_iter_7.py +++ b/UnitTests/IterativeAnalysisScaleRawData/_iter_7/UserInput_iter_7.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_6.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_6.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_6.csv' referencePatternTimeRanges = [] @@ -119,6 +119,6 @@ timeSinceLastCheckpoint = 0.22400719999999996 iterationNumber = 6 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] chosenMoleculesNames = ['CO', 'CO2','Ethylene (Ethene)'] chosenMassFragments = [27, 28, 44] diff --git a/UnitTests/IterativeAnalysisScaleRawData/_iter_8/UserInput_iter_8.py b/UnitTests/IterativeAnalysisScaleRawData/_iter_8/UserInput_iter_8.py index 18fba89f..fe8a9718 100644 --- a/UnitTests/IterativeAnalysisScaleRawData/_iter_8/UserInput_iter_8.py +++ b/UnitTests/IterativeAnalysisScaleRawData/_iter_8/UserInput_iter_8.py @@ -1,4 +1,4 @@ -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_7.csv'] +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2_unused_iter_7.csv'] referenceFormsList = ['xyyy'] collectedFileName = '2-CrotAcetExp#2Truncated_remaining_iter_7.csv' referencePatternTimeRanges = [] @@ -119,4 +119,4 @@ timeSinceLastCheckpoint = 0.6084944999999999 iterationNumber = 7 -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','tuningCorrectPatternInternalVsExternal','referenceFileStandardTuningAndForm','createMixedTuningPattern','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations','referenceFileUncertainties','collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties','referenceCorrectionCoefficientsIonizationUncertainties','answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','implicitSLScorrection','implicitSLSRecursion','finalOptimization','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file diff --git a/UnitTests/IterativeAnalysisScaleRawData/test_1_initial_input_iterative.py b/UnitTests/IterativeAnalysisScaleRawData/test_1_initial_input_iterative.py index 7e8cc7c7..1dbe9f45 100644 --- a/UnitTests/IterativeAnalysisScaleRawData/test_1_initial_input_iterative.py +++ b/UnitTests/IterativeAnalysisScaleRawData/test_1_initial_input_iterative.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = 'AcetaldehydeNISTRefMixed2.csv' #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = 'AcetaldehydeNISTRefMixed2.csv' #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data ionizationDataFileName = '_ProvidedIonizationData.csv' @@ -121,7 +121,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -146,8 +146,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'yes' -referenceValueThreshold = [1.0] +applyReferenceMassFragmentsThresholds= 'yes' +referenceMassFragmentFilterThreshold = [1.0] referenceSignificantFragmentThresholds = [0.0] @@ -180,7 +180,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/IterativeAnalysisScaleRawData/test_1_initial_input_noniterative.py b/UnitTests/IterativeAnalysisScaleRawData/test_1_initial_input_noniterative.py index 892a4b1f..2314b4b4 100644 --- a/UnitTests/IterativeAnalysisScaleRawData/test_1_initial_input_noniterative.py +++ b/UnitTests/IterativeAnalysisScaleRawData/test_1_initial_input_noniterative.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information -referenceFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information +referencePatternsFormsList = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2Truncated.csv' #enter the file name with raw mass spectrometer data ionizationDataFileName = '_ProvidedIonizationData.csv' @@ -121,7 +121,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -146,8 +146,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'yes' -referenceValueThreshold = [1.0] +applyReferenceMassFragmentsThresholds= 'yes' +referenceMassFragmentFilterThreshold = [1.0] referenceSignificantFragmentThresholds = [0.0] @@ -180,7 +180,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/NegativeAnalyzer/test_1_Input.py b/UnitTests/NegativeAnalyzer/test_1_Input.py index 7e2fe360..a31c0cf3 100644 --- a/UnitTests/NegativeAnalyzer/test_1_Input.py +++ b/UnitTests/NegativeAnalyzer/test_1_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Negative Analyzer// UserChoices['negativeAnalyzerYorN'] = {} #initialize the negativeAnalyzerYorN container @@ -288,4 +288,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/ReferencePatternTimeChooser/test_1_inputA.py b/UnitTests/ReferencePatternTimeChooser/test_1_inputA.py index 7d3bcd96..b8d5b40d 100644 --- a/UnitTests/ReferencePatternTimeChooser/test_1_inputA.py +++ b/UnitTests/ReferencePatternTimeChooser/test_1_inputA.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information -referenceFormsList = ['xyyy'] #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.csv'] #enter the file name of the file containing reference information +referencePatternsFormsList = ['xyyy'] #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] -collectedFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data iterationNumber = None @@ -108,7 +108,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -133,8 +133,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -166,7 +166,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/ReferencePatternTimeChooser/test_1_inputB.py b/UnitTests/ReferencePatternTimeChooser/test_1_inputB.py index 039bab41..4e27e1f8 100644 --- a/UnitTests/ReferencePatternTimeChooser/test_1_inputB.py +++ b/UnitTests/ReferencePatternTimeChooser/test_1_inputB.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2Edit.csv'] #enter the file name of the file containing reference information -referenceFormsList = ['xyyy'] #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2Edit.csv'] #enter the file name of the file containing reference information +referencePatternsFormsList = ['xyyy'] #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] -collectedFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data iterationNumber = None @@ -108,7 +108,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -133,8 +133,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -166,7 +166,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/ReferencePatternTimeChooser/test_1_inputC.py b/UnitTests/ReferencePatternTimeChooser/test_1_inputC.py index 368ae134..1cf18fa2 100644 --- a/UnitTests/ReferencePatternTimeChooser/test_1_inputC.py +++ b/UnitTests/ReferencePatternTimeChooser/test_1_inputC.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.csv','AcetaldehydeNISTRefMixed2Edit.csv'] #enter the file name of the file containing reference information -referenceFormsList = ['xyyy'] #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.csv','AcetaldehydeNISTRefMixed2Edit.csv'] #enter the file name of the file containing reference information +referencePatternsFormsList = ['xyyy'] #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [[300,303],[306,309]] -collectedFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data iterationNumber = None @@ -108,7 +108,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -133,8 +133,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -166,7 +166,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/ReferencePatternTimeChooser/test_2_input.py b/UnitTests/ReferencePatternTimeChooser/test_2_input.py index 423d1877..e5b00c73 100644 --- a/UnitTests/ReferencePatternTimeChooser/test_2_input.py +++ b/UnitTests/ReferencePatternTimeChooser/test_2_input.py @@ -6,10 +6,10 @@ #USER INPUT FILE #//Input Files// -referenceFileNamesList = ['AcetaldehydeNISTRefMixed2.csv','AcetaldehydeNISTRefMixed2Edit.csv'] #enter the file name of the file containing reference information -referenceFormsList = ['xyyy'] #form is either 'xyyy' or 'xyxy' +referencePatternsFileNamesList = ['AcetaldehydeNISTRefMixed2.csv','AcetaldehydeNISTRefMixed2Edit.csv'] #enter the file name of the file containing reference information +referencePatternsFormsList = ['xyyy'] #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [[300,303],[306,309]] -collectedFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data iterationNumber = None @@ -108,7 +108,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -133,8 +133,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -166,7 +166,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [.0000001] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] diff --git a/UnitTests/TuningCorrector/test_1.py b/UnitTests/TuningCorrector/test_1.py index 971d5e68..3080d4cc 100644 --- a/UnitTests/TuningCorrector/test_1.py +++ b/UnitTests/TuningCorrector/test_1.py @@ -22,9 +22,9 @@ #We can use the default user input, which is already in MSRESOLVE.G. #Need to change the "direct variable" version rather than the dictionary version. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeMeasured.tsv'] +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeMeasured.tsv'] MSRESOLVE.G.tuningCorrectPatternInternalVsExternal = 'Internal' -MSRESOLVE.G.measuredReferenceYorN = 'yes' +MSRESOLVE.G.tuningCorrection = 'yes' MSRESOLVE.G.createMixedTuningPattern = False MSRESOLVE.G.referenceFileExistingTuningAndForm = ['ReferenceCollected.tsv','xyyy'] MSRESOLVE.G.referenceFileDesiredTuningAndForm =['ReferenceLiterature.tsv','xyyy'] @@ -40,9 +40,9 @@ MSRESOLVE.G.timeRangeFinish = 178 #start time (-int) MSRESOLVE.G.dataSmootherYorN = 'no' -#will use minimalReferenceValue (single value means it will be applied to all molecules) -MSRESOLVE.G.minimalReferenceValue= 'no' -MSRESOLVE.G.referenceValueThreshold = [6.0] +#will use applyReferenceMassFragmentsThresholds (single value means it will be applied to all molecules) +MSRESOLVE.G.applyReferenceMassFragmentsThresholds= 'no' +MSRESOLVE.G.referenceMassFragmentFilterThreshold = [6.0] MSRESOLVE.G.referenceSignificantFragmentThresholds = [0.0] #Now to get started with the test itself... diff --git a/UnitTests/TuningCorrector/test_10 Manual SLS/1/test_10.turnedOff b/UnitTests/TuningCorrector/test_10 Manual SLS/1/test_10.turnedOff index 6eaa01e9..20cf09ae 100644 --- a/UnitTests/TuningCorrector/test_10 Manual SLS/1/test_10.turnedOff +++ b/UnitTests/TuningCorrector/test_10 Manual SLS/1/test_10.turnedOff @@ -22,8 +22,8 @@ suffix = ut.returnDigitFromFilename(__file__) #We can use the default user input, which is already in MSRESOLVE.G. #Need to change the "direct variable" version rather than the dictionary version. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeMeasured.tsv'] -MSRESOLVE.G.measuredReferenceYorN = 'yes' +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeMeasured.tsv'] +MSRESOLVE.G.tuningCorrection = 'yes' MSRESOLVE.G.createMixedTuningPattern = True MSRESOLVE.G.referenceFileExistingTuning = ['ReferenceLiterature.tsv','xyyy'] MSRESOLVE.G.referenceFileDesiredTuning =[] @@ -39,9 +39,9 @@ MSRESOLVE.G.timeRangeStart = 176 #start time (-int) MSRESOLVE.G.timeRangeFinish = 178 #start time (-int) MSRESOLVE.G.dataSmootherYorN = 'no' -#will use minimalReferenceValue (single value means it will be applied to all molecules) -MSRESOLVE.G.minimalReferenceValue= 'yes' -MSRESOLVE.G.referenceValueThreshold = [4.0] +#will use applyReferenceMassFragmentsThresholds (single value means it will be applied to all molecules) +MSRESOLVE.G.applyReferenceMassFragmentsThresholds= 'yes' +MSRESOLVE.G.referenceMassFragmentFilterThreshold = [4.0] MSRESOLVE.G.referenceSignificantFragmentThresholds = [6.0] MSRESOLVE.G.answer = 'sls' diff --git a/UnitTests/TuningCorrector/test_10 Manual SLS/1/test_5.turnedOff b/UnitTests/TuningCorrector/test_10 Manual SLS/1/test_5.turnedOff index da04b764..866a2d6a 100644 --- a/UnitTests/TuningCorrector/test_10 Manual SLS/1/test_5.turnedOff +++ b/UnitTests/TuningCorrector/test_10 Manual SLS/1/test_5.turnedOff @@ -22,8 +22,8 @@ suffix = ut.returnDigitFromFilename(__file__) #We can use the default user input, which is already in MSRESOLVE.G. #Need to change the "direct variable" version rather than the dictionary version. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeMeasured.tsv'] -MSRESOLVE.G.measuredReferenceYorN = 'yes' +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeMeasured.tsv'] +MSRESOLVE.G.tuningCorrection = 'yes' MSRESOLVE.G.createMixedTuningPattern = True MSRESOLVE.G.referenceFileExistingTuning = ['ReferenceLiterature.tsv','xyyy'] MSRESOLVE.G.referenceFileDesiredTuning =[] @@ -39,9 +39,9 @@ MSRESOLVE.G.timeRangeStart = 176 #start time (-int) MSRESOLVE.G.timeRangeFinish = 178 #start time (-int) MSRESOLVE.G.dataSmootherYorN = 'no' -#will use minimalReferenceValue (single value means it will be applied to all molecules) -MSRESOLVE.G.minimalReferenceValue= 'no' -MSRESOLVE.G.referenceValueThreshold = [0.0] +#will use applyReferenceMassFragmentsThresholds (single value means it will be applied to all molecules) +MSRESOLVE.G.applyReferenceMassFragmentsThresholds= 'no' +MSRESOLVE.G.referenceMassFragmentFilterThreshold = [0.0] MSRESOLVE.G.referenceSignificantFragmentThresholds = [0.0] #Now to get started with the test itself... diff --git a/UnitTests/TuningCorrector/test_10 Manual SLS/4/test_10.turnedOff b/UnitTests/TuningCorrector/test_10 Manual SLS/4/test_10.turnedOff index 6eaa01e9..20cf09ae 100644 --- a/UnitTests/TuningCorrector/test_10 Manual SLS/4/test_10.turnedOff +++ b/UnitTests/TuningCorrector/test_10 Manual SLS/4/test_10.turnedOff @@ -22,8 +22,8 @@ suffix = ut.returnDigitFromFilename(__file__) #We can use the default user input, which is already in MSRESOLVE.G. #Need to change the "direct variable" version rather than the dictionary version. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeMeasured.tsv'] -MSRESOLVE.G.measuredReferenceYorN = 'yes' +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeMeasured.tsv'] +MSRESOLVE.G.tuningCorrection = 'yes' MSRESOLVE.G.createMixedTuningPattern = True MSRESOLVE.G.referenceFileExistingTuning = ['ReferenceLiterature.tsv','xyyy'] MSRESOLVE.G.referenceFileDesiredTuning =[] @@ -39,9 +39,9 @@ MSRESOLVE.G.timeRangeStart = 176 #start time (-int) MSRESOLVE.G.timeRangeFinish = 178 #start time (-int) MSRESOLVE.G.dataSmootherYorN = 'no' -#will use minimalReferenceValue (single value means it will be applied to all molecules) -MSRESOLVE.G.minimalReferenceValue= 'yes' -MSRESOLVE.G.referenceValueThreshold = [4.0] +#will use applyReferenceMassFragmentsThresholds (single value means it will be applied to all molecules) +MSRESOLVE.G.applyReferenceMassFragmentsThresholds= 'yes' +MSRESOLVE.G.referenceMassFragmentFilterThreshold = [4.0] MSRESOLVE.G.referenceSignificantFragmentThresholds = [6.0] MSRESOLVE.G.answer = 'sls' diff --git a/UnitTests/TuningCorrector/test_10.py b/UnitTests/TuningCorrector/test_10.py index 4f81a5f7..ecd3dfe0 100644 --- a/UnitTests/TuningCorrector/test_10.py +++ b/UnitTests/TuningCorrector/test_10.py @@ -22,8 +22,8 @@ #We can use the default user input, which is already in MSRESOLVE.G. #Need to change the "direct variable" version rather than the dictionary version. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeMeasured.tsv'] -MSRESOLVE.G.measuredReferenceYorN = 'yes' +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeMeasured.tsv'] +MSRESOLVE.G.tuningCorrection = 'yes' MSRESOLVE.G.createMixedTuningPattern = True MSRESOLVE.G.referenceFileExistingTuningAndForm = ['ReferenceLiterature.tsv','xyyy'] MSRESOLVE.G.referenceFileDesiredTuningAndForm =[] @@ -39,9 +39,9 @@ MSRESOLVE.G.timeRangeFinish = 178 #start time (-int) MSRESOLVE.G.dataSmootherYorN = 'no' -#will use minimalReferenceValue (single value means it will be applied to all molecules) -MSRESOLVE.G.minimalReferenceValue= 'yes' -MSRESOLVE.G.referenceValueThreshold = [4.0] +#will use applyReferenceMassFragmentsThresholds (single value means it will be applied to all molecules) +MSRESOLVE.G.applyReferenceMassFragmentsThresholds= 'yes' +MSRESOLVE.G.referenceMassFragmentFilterThreshold = [4.0] MSRESOLVE.G.referenceSignificantFragmentThresholds = [6.0] MSRESOLVE.G.answer = 'sls' diff --git a/UnitTests/TuningCorrector/test_11 Manual SLS Implicit/1/test_10.turnedOff b/UnitTests/TuningCorrector/test_11 Manual SLS Implicit/1/test_10.turnedOff index 6eaa01e9..20cf09ae 100644 --- a/UnitTests/TuningCorrector/test_11 Manual SLS Implicit/1/test_10.turnedOff +++ b/UnitTests/TuningCorrector/test_11 Manual SLS Implicit/1/test_10.turnedOff @@ -22,8 +22,8 @@ suffix = ut.returnDigitFromFilename(__file__) #We can use the default user input, which is already in MSRESOLVE.G. #Need to change the "direct variable" version rather than the dictionary version. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeMeasured.tsv'] -MSRESOLVE.G.measuredReferenceYorN = 'yes' +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeMeasured.tsv'] +MSRESOLVE.G.tuningCorrection = 'yes' MSRESOLVE.G.createMixedTuningPattern = True MSRESOLVE.G.referenceFileExistingTuning = ['ReferenceLiterature.tsv','xyyy'] MSRESOLVE.G.referenceFileDesiredTuning =[] @@ -39,9 +39,9 @@ MSRESOLVE.G.timeRangeStart = 176 #start time (-int) MSRESOLVE.G.timeRangeFinish = 178 #start time (-int) MSRESOLVE.G.dataSmootherYorN = 'no' -#will use minimalReferenceValue (single value means it will be applied to all molecules) -MSRESOLVE.G.minimalReferenceValue= 'yes' -MSRESOLVE.G.referenceValueThreshold = [4.0] +#will use applyReferenceMassFragmentsThresholds (single value means it will be applied to all molecules) +MSRESOLVE.G.applyReferenceMassFragmentsThresholds= 'yes' +MSRESOLVE.G.referenceMassFragmentFilterThreshold = [4.0] MSRESOLVE.G.referenceSignificantFragmentThresholds = [6.0] MSRESOLVE.G.answer = 'sls' diff --git a/UnitTests/TuningCorrector/test_11 Manual SLS Implicit/1/test_11.turnedOff b/UnitTests/TuningCorrector/test_11 Manual SLS Implicit/1/test_11.turnedOff index 72c7fc0c..b7878d47 100644 --- a/UnitTests/TuningCorrector/test_11 Manual SLS Implicit/1/test_11.turnedOff +++ b/UnitTests/TuningCorrector/test_11 Manual SLS Implicit/1/test_11.turnedOff @@ -22,8 +22,8 @@ suffix = ut.returnDigitFromFilename(__file__) #We can use the default user input, which is already in MSRESOLVE.G. #Need to change the "direct variable" version rather than the dictionary version. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeMeasured.tsv'] -MSRESOLVE.G.measuredReferenceYorN = 'yes' +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeMeasured.tsv'] +MSRESOLVE.G.tuningCorrection = 'yes' MSRESOLVE.G.createMixedTuningPattern = True MSRESOLVE.G.referenceFileExistingTuning = ['ReferenceLiterature.tsv','xyyy'] MSRESOLVE.G.referenceFileDesiredTuning =[] @@ -39,9 +39,9 @@ MSRESOLVE.G.timeRangeStart = 176 #start time (-int) MSRESOLVE.G.timeRangeFinish = 178 #start time (-int) MSRESOLVE.G.dataSmootherYorN = 'no' -#will use minimalReferenceValue (single value means it will be applied to all molecules) -MSRESOLVE.G.minimalReferenceValue= 'yes' -MSRESOLVE.G.referenceValueThreshold = [4.0] +#will use applyReferenceMassFragmentsThresholds (single value means it will be applied to all molecules) +MSRESOLVE.G.applyReferenceMassFragmentsThresholds= 'yes' +MSRESOLVE.G.referenceMassFragmentFilterThreshold = [4.0] MSRESOLVE.G.referenceSignificantFragmentThresholds = [6.0] MSRESOLVE.G.answer = 'sls' MSRESOLVE.G.implicitSLScorrection = True diff --git a/UnitTests/TuningCorrector/test_11 Manual SLS Implicit/4/test_11.turnedOff b/UnitTests/TuningCorrector/test_11 Manual SLS Implicit/4/test_11.turnedOff index 72c7fc0c..b7878d47 100644 --- a/UnitTests/TuningCorrector/test_11 Manual SLS Implicit/4/test_11.turnedOff +++ b/UnitTests/TuningCorrector/test_11 Manual SLS Implicit/4/test_11.turnedOff @@ -22,8 +22,8 @@ suffix = ut.returnDigitFromFilename(__file__) #We can use the default user input, which is already in MSRESOLVE.G. #Need to change the "direct variable" version rather than the dictionary version. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeMeasured.tsv'] -MSRESOLVE.G.measuredReferenceYorN = 'yes' +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeMeasured.tsv'] +MSRESOLVE.G.tuningCorrection = 'yes' MSRESOLVE.G.createMixedTuningPattern = True MSRESOLVE.G.referenceFileExistingTuning = ['ReferenceLiterature.tsv','xyyy'] MSRESOLVE.G.referenceFileDesiredTuning =[] @@ -39,9 +39,9 @@ MSRESOLVE.G.timeRangeStart = 176 #start time (-int) MSRESOLVE.G.timeRangeFinish = 178 #start time (-int) MSRESOLVE.G.dataSmootherYorN = 'no' -#will use minimalReferenceValue (single value means it will be applied to all molecules) -MSRESOLVE.G.minimalReferenceValue= 'yes' -MSRESOLVE.G.referenceValueThreshold = [4.0] +#will use applyReferenceMassFragmentsThresholds (single value means it will be applied to all molecules) +MSRESOLVE.G.applyReferenceMassFragmentsThresholds= 'yes' +MSRESOLVE.G.referenceMassFragmentFilterThreshold = [4.0] MSRESOLVE.G.referenceSignificantFragmentThresholds = [6.0] MSRESOLVE.G.answer = 'sls' MSRESOLVE.G.implicitSLScorrection = True diff --git a/UnitTests/TuningCorrector/test_11.py b/UnitTests/TuningCorrector/test_11.py index 80b4b777..311ad52b 100644 --- a/UnitTests/TuningCorrector/test_11.py +++ b/UnitTests/TuningCorrector/test_11.py @@ -22,8 +22,8 @@ #We can use the default user input, which is already in MSRESOLVE.G. #Need to change the "direct variable" version rather than the dictionary version. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeMeasured.tsv'] -MSRESOLVE.G.measuredReferenceYorN = 'yes' +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeMeasured.tsv'] +MSRESOLVE.G.tuningCorrection = 'yes' MSRESOLVE.G.createMixedTuningPattern = True MSRESOLVE.G.referenceFileExistingTuningAndForm = ['ReferenceLiterature.tsv','xyyy'] MSRESOLVE.G.referenceFileDesiredTuningAndForm =[] @@ -39,9 +39,9 @@ MSRESOLVE.G.timeRangeFinish = 178 #start time (-int) MSRESOLVE.G.dataSmootherYorN = 'no' -#will use minimalReferenceValue (single value means it will be applied to all molecules) -MSRESOLVE.G.minimalReferenceValue= 'yes' -MSRESOLVE.G.referenceValueThreshold = [4.0] +#will use applyReferenceMassFragmentsThresholds (single value means it will be applied to all molecules) +MSRESOLVE.G.applyReferenceMassFragmentsThresholds= 'yes' +MSRESOLVE.G.referenceMassFragmentFilterThreshold = [4.0] MSRESOLVE.G.referenceSignificantFragmentThresholds = [6.0] MSRESOLVE.G.answer = 'sls' MSRESOLVE.G.implicitSLScorrection = True diff --git a/UnitTests/TuningCorrector/test_2.py b/UnitTests/TuningCorrector/test_2.py index e54d0967..fdfa8f0e 100644 --- a/UnitTests/TuningCorrector/test_2.py +++ b/UnitTests/TuningCorrector/test_2.py @@ -22,9 +22,9 @@ #We can use the default user input, which is already in MSRESOLVE.G. #Need to change the "direct variable" version rather than the dictionary version. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeMeasured.tsv'] +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeMeasured.tsv'] MSRESOLVE.G.tuningCorrectPatternInternalVsExternal = 'Internal' -MSRESOLVE.G.measuredReferenceYorN = 'yes' +MSRESOLVE.G.tuningCorrection = 'yes' MSRESOLVE.G.createMixedTuningPattern = False MSRESOLVE.G.referenceFileExistingTuningAndForm = ['ReferenceCollected.tsv','xyyy'] MSRESOLVE.G.referenceFileDesiredTuningAndForm =['ReferenceLiterature.tsv','xyyy'] @@ -40,9 +40,9 @@ MSRESOLVE.G.timeRangeFinish = 178 #start time (-int) MSRESOLVE.G.dataSmootherYorN = 'no' -#will use minimalReferenceValue (single value means it will be applied to all molecules) -MSRESOLVE.G.minimalReferenceValue= 'yes' -MSRESOLVE.G.referenceValueThreshold = [6.0] +#will use applyReferenceMassFragmentsThresholds (single value means it will be applied to all molecules) +MSRESOLVE.G.applyReferenceMassFragmentsThresholds= 'yes' +MSRESOLVE.G.referenceMassFragmentFilterThreshold = [6.0] MSRESOLVE.G.referenceSignificantFragmentThresholds = [0.0] #Now to get started with the test itself... diff --git a/UnitTests/TuningCorrector/test_3.py b/UnitTests/TuningCorrector/test_3.py index 33fbe4e8..cb6bc7b4 100644 --- a/UnitTests/TuningCorrector/test_3.py +++ b/UnitTests/TuningCorrector/test_3.py @@ -22,11 +22,11 @@ #We can use the default user input, which is already in MSRESOLVE.G. #Need to change the "direct variable" version rather than the dictionary version. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeMeasured.tsv'] +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeMeasured.tsv'] MSRESOLVE.G.tuningCorrectPatternInternalVsExternal = 'Internal' -MSRESOLVE.G.measuredReferenceYorN = 'yes' +MSRESOLVE.G.tuningCorrection = 'yes' MSRESOLVE.G.createMixedTuningPattern = False -MSRESOLVE.G.referenceFileNamesList[0] = 'ReferenceLiterature.tsv' +MSRESOLVE.G.referencePatternsFileNamesList[0] = 'ReferenceLiterature.tsv' MSRESOLVE.G.referenceFileExistingTuningAndForm = ['ReferenceCollected.tsv','xyyy'] MSRESOLVE.G.referenceFileDesiredTuningAndForm =['ReferenceLiterature.tsv','xyyy'] @@ -42,9 +42,9 @@ MSRESOLVE.G.timeRangeFinish = 178 #start time (-int) MSRESOLVE.G.dataSmootherYorN = 'no' -#will use minimalReferenceValue (single value means it will be applied to all molecules) -MSRESOLVE.G.minimalReferenceValue= 'no' -MSRESOLVE.G.referenceValueThreshold = [6.0] +#will use applyReferenceMassFragmentsThresholds (single value means it will be applied to all molecules) +MSRESOLVE.G.applyReferenceMassFragmentsThresholds= 'no' +MSRESOLVE.G.referenceMassFragmentFilterThreshold = [6.0] MSRESOLVE.G.referenceSignificantFragmentThresholds = [0.0] #Now to get started with the test itself... diff --git a/UnitTests/TuningCorrector/test_4.py b/UnitTests/TuningCorrector/test_4.py index da9bb7b5..2af5182e 100644 --- a/UnitTests/TuningCorrector/test_4.py +++ b/UnitTests/TuningCorrector/test_4.py @@ -22,9 +22,9 @@ #We can use the default user input, which is already in MSRESOLVE.G. #Need to change the "direct variable" version rather than the dictionary version. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeMeasured.tsv'] +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeMeasured.tsv'] MSRESOLVE.G.tuningCorrectPatternInternalVsExternal = 'External' -MSRESOLVE.G.measuredReferenceYorN = 'yes' +MSRESOLVE.G.tuningCorrection = 'yes' MSRESOLVE.G.createMixedTuningPattern = True MSRESOLVE.G.referenceFileExistingTuningAndForm = ['ReferenceLiterature.tsv','xyyy'] MSRESOLVE.G.referenceFileDesiredTuningAndForm =['ReferenceCollected.tsv','xyyy'] @@ -40,9 +40,9 @@ MSRESOLVE.G.timeRangeFinish = 178 #start time (-int) MSRESOLVE.G.dataSmootherYorN = 'no' -#will use minimalReferenceValue (single value means it will be applied to all molecules) -MSRESOLVE.G.minimalReferenceValue= 'no' -MSRESOLVE.G.referenceValueThreshold = [0.0] +#will use applyReferenceMassFragmentsThresholds (single value means it will be applied to all molecules) +MSRESOLVE.G.applyReferenceMassFragmentsThresholds= 'no' +MSRESOLVE.G.referenceMassFragmentFilterThreshold = [0.0] MSRESOLVE.G.referenceSignificantFragmentThresholds = [0.0] #Now to get started with the test itself... diff --git a/UnitTests/TuningCorrector/test_5.py b/UnitTests/TuningCorrector/test_5.py index cfff0c20..5ebe24ec 100644 --- a/UnitTests/TuningCorrector/test_5.py +++ b/UnitTests/TuningCorrector/test_5.py @@ -22,8 +22,8 @@ #We can use the default user input, which is already in MSRESOLVE.G. #Need to change the "direct variable" version rather than the dictionary version. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeMeasured.tsv'] -MSRESOLVE.G.measuredReferenceYorN = 'yes' +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeMeasured.tsv'] +MSRESOLVE.G.tuningCorrection = 'yes' MSRESOLVE.G.createMixedTuningPattern = True MSRESOLVE.G.referenceFileExistingTuningAndForm = ['ReferenceLiterature.tsv','xyyy'] MSRESOLVE.G.referenceFileDesiredTuningAndForm =[] @@ -39,9 +39,9 @@ MSRESOLVE.G.timeRangeFinish = 178 #start time (-int) MSRESOLVE.G.dataSmootherYorN = 'no' -#will use minimalReferenceValue (single value means it will be applied to all molecules) -MSRESOLVE.G.minimalReferenceValue= 'no' -MSRESOLVE.G.referenceValueThreshold = [0.0] +#will use applyReferenceMassFragmentsThresholds (single value means it will be applied to all molecules) +MSRESOLVE.G.applyReferenceMassFragmentsThresholds= 'no' +MSRESOLVE.G.referenceMassFragmentFilterThreshold = [0.0] MSRESOLVE.G.referenceSignificantFragmentThresholds = [0.0] #Now to get started with the test itself... diff --git a/UnitTests/TuningCorrector/test_6.py b/UnitTests/TuningCorrector/test_6.py index d47645af..c12a6967 100644 --- a/UnitTests/TuningCorrector/test_6.py +++ b/UnitTests/TuningCorrector/test_6.py @@ -22,8 +22,8 @@ #We can use the default user input, which is already in MSRESOLVE.G. #Need to change the "direct variable" version rather than the dictionary version. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeMeasured.tsv'] -MSRESOLVE.G.measuredReferenceYorN = 'yes' +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeMeasured.tsv'] +MSRESOLVE.G.tuningCorrection = 'yes' MSRESOLVE.G.createMixedTuningPattern = True MSRESOLVE.G.referenceFileStandardTuningAndForm = ['ReferenceLiterature.tsv','xyyy'] MSRESOLVE.G.referenceFileExistingTuningAndForm = [] @@ -40,9 +40,9 @@ MSRESOLVE.G.timeRangeFinish = 178 #start time (-int) MSRESOLVE.G.dataSmootherYorN = 'no' -#will use minimalReferenceValue (single value means it will be applied to all molecules) -MSRESOLVE.G.minimalReferenceValue= 'no' -MSRESOLVE.G.referenceValueThreshold = [0.0] +#will use applyReferenceMassFragmentsThresholds (single value means it will be applied to all molecules) +MSRESOLVE.G.applyReferenceMassFragmentsThresholds= 'no' +MSRESOLVE.G.referenceMassFragmentFilterThreshold = [0.0] MSRESOLVE.G.referenceSignificantFragmentThresholds = [0.0] #Now to get started with the test itself... diff --git a/UnitTests/TuningCorrector/test_7.py b/UnitTests/TuningCorrector/test_7.py index a8bbf318..5f414b6e 100644 --- a/UnitTests/TuningCorrector/test_7.py +++ b/UnitTests/TuningCorrector/test_7.py @@ -23,9 +23,9 @@ #We can use the default user input, which is already in MSRESOLVE.G. #Need to change the "direct variable" version rather than the dictionary version. -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeMeasured.tsv'] +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeMeasured.tsv'] -MSRESOLVE.G.measuredReferenceYorN = 'yes' +MSRESOLVE.G.tuningCorrection = 'yes' MSRESOLVE.G.createMixedTuningPattern = True MSRESOLVE.G.referenceFileStandardTuningAndForm = [] MSRESOLVE.G.referenceFileExistingTuningAndForm = ['ReferenceLiterature.tsv','xyyy'] @@ -42,9 +42,9 @@ MSRESOLVE.G.timeRangeFinish = 178 #start time (-int) MSRESOLVE.G.dataSmootherYorN = 'no' -#will use minimalReferenceValue (single value means it will be applied to all molecules) -MSRESOLVE.G.minimalReferenceValue= 'yes' -MSRESOLVE.G.referenceValueThreshold = [6.0] +#will use applyReferenceMassFragmentsThresholds (single value means it will be applied to all molecules) +MSRESOLVE.G.applyReferenceMassFragmentsThresholds= 'yes' +MSRESOLVE.G.referenceMassFragmentFilterThreshold = [6.0] MSRESOLVE.G.referenceSignificantFragmentThresholds = [0.0] MSRESOLVE.G.specificMassFragments = 'yes' diff --git a/UnitTests/TuningCorrector/test_8.py b/UnitTests/TuningCorrector/test_8.py index 7c7e0149..6763e421 100644 --- a/UnitTests/TuningCorrector/test_8.py +++ b/UnitTests/TuningCorrector/test_8.py @@ -21,10 +21,10 @@ suffix = ut.returnDigitFromFilename(__file__) -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeMeasured.tsv'] +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeMeasured.tsv'] #We can use the default user input, which is already in MSRESOLVE.G. #Need to change the "direct variable" version rather than the dictionary version. -MSRESOLVE.G.measuredReferenceYorN = 'yes' +MSRESOLVE.G.tuningCorrection = 'yes' MSRESOLVE.G.createMixedTuningPattern = True MSRESOLVE.G.referenceFileStandardTuningAndForm = ['ReferenceLiterature.tsv','xyyy'] MSRESOLVE.G.referenceFileExistingTuningAndForm = [] @@ -41,9 +41,9 @@ MSRESOLVE.G.timeRangeFinish = 178 #start time (-int) MSRESOLVE.G.dataSmootherYorN = 'no' -#will use minimalReferenceValue (single value means it will be applied to all molecules) -MSRESOLVE.G.minimalReferenceValue= 'yes' -MSRESOLVE.G.referenceValueThreshold = [6.0] +#will use applyReferenceMassFragmentsThresholds (single value means it will be applied to all molecules) +MSRESOLVE.G.applyReferenceMassFragmentsThresholds= 'yes' +MSRESOLVE.G.referenceMassFragmentFilterThreshold = [6.0] MSRESOLVE.G.referenceSignificantFragmentThresholds = [0.0] MSRESOLVE.G.specificMassFragments = 'yes' diff --git a/UnitTests/TuningCorrector/test_9.py b/UnitTests/TuningCorrector/test_9.py index 3634d1fc..5dca01aa 100644 --- a/UnitTests/TuningCorrector/test_9.py +++ b/UnitTests/TuningCorrector/test_9.py @@ -21,11 +21,11 @@ suffix = ut.returnDigitFromFilename(__file__) -MSRESOLVE.G.referenceFileNamesList = ['AcetaldehydeMeasuredShortened.tsv'] +MSRESOLVE.G.referencePatternsFileNamesList = ['AcetaldehydeMeasuredShortened.tsv'] MSRESOLVE.G.tuningCorrectPatternInternalVsExternal = 'Internal' #We can use the default user input, which is already in MSRESOLVE.G. #Need to change the "direct variable" version rather than the dictionary version. -MSRESOLVE.G.measuredReferenceYorN = 'yes' +MSRESOLVE.G.tuningCorrection = 'yes' MSRESOLVE.G.createMixedTuningPattern = False MSRESOLVE.G.referenceFileStandardTuningAndForm = ['ReferenceLiterature.tsv','xyyy'] MSRESOLVE.G.referenceFileExistingTuningAndForm = [] @@ -42,9 +42,9 @@ MSRESOLVE.G.timeRangeFinish = 178 #start time (-int) MSRESOLVE.G.dataSmootherYorN = 'no' -#will use minimalReferenceValue (single value means it will be applied to all molecules) -MSRESOLVE.G.minimalReferenceValue= 'yes' -MSRESOLVE.G.referenceValueThreshold = [6.0] +#will use applyReferenceMassFragmentsThresholds (single value means it will be applied to all molecules) +MSRESOLVE.G.applyReferenceMassFragmentsThresholds= 'yes' +MSRESOLVE.G.referenceMassFragmentFilterThreshold = [6.0] MSRESOLVE.G.referenceSignificantFragmentThresholds = [0.0] MSRESOLVE.G.specificMassFragments = 'no' diff --git a/UnitTests/TuningCorrectorGasMixture/0-README.txt b/UnitTests/TuningCorrectorGasMixture/0-README.txt index 7b9fef02..da4e5d14 100644 --- a/UnitTests/TuningCorrectorGasMixture/0-README.txt +++ b/UnitTests/TuningCorrectorGasMixture/0-README.txt @@ -8,9 +8,9 @@ This is in the file TuningCorrectorGasMixtureHypotheticalReferenceMeasuredSignal Proc Doc type things: -- First added at line 5351 - if len(G.UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames']) > 0: + if len(G.UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames']) > 0: -- Now make a reference object from LiteratureReference.tsv so that simulated signals can be made. - -- GenerateReferenceDataList(referenceFileNamesList,referenceFormsList,AllMID_ObjectsDict={}): + -- GenerateReferenceDataList(referencePatternsFileNamesList,referencePatternsFormsList,AllMID_ObjectsDict={}): -- Need to be careful because "ReferenceInputPreProcessing" is being used. diff --git a/UnitTests/TuningCorrectorGasMixture/UserInputGasMixture.py b/UnitTests/TuningCorrectorGasMixture/UserInputGasMixture.py index 73050260..74f1daab 100644 --- a/UnitTests/TuningCorrectorGasMixture/UserInputGasMixture.py +++ b/UnitTests/TuningCorrectorGasMixture/UserInputGasMixture.py @@ -13,10 +13,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ExtractedReferencePattern.tsv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ExtractedReferencePattern.tsv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = 'Collected_Data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = 'Collected_Data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.tsv' #the name of the file containing the ionization data @@ -31,7 +31,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -150,20 +150,20 @@ #Note that 1 is the default and will make no alteration to the data #//Tuning Corrector - Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='yes' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] = ['LiteratureReference.tsv','xyyy'] #This is the pattern that will be changed. Typically this is NIST patterns. -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] =[] #normally to be left blank. #This is what the pattern will look more like after everything is done. Typically, this is a measured pattern. -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureSignals'] = [] #left blank to extract from the full dataset. -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames'] =['ethane', 'ethene', 'ethyne'] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureConcentrations'] =[10, 2, 1] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='yes' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] = ['LiteratureReference.tsv','xyyy'] #This is the pattern that will be changed. Typically this is NIST patterns. +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] =[] #normally to be left blank. #This is what the pattern will look more like after everything is done. Typically, this is a measured pattern. +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureSignals'] = [] #left blank to extract from the full dataset. +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames'] =['ethane', 'ethene', 'ethyne'] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureConcentrations'] =[10, 2, 1] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0. Used as.... Factor = A*X^2 + B*X + C, so A=0,B=0,C=1.0 means the final factor is 1.0 and independent of molecular weight. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. #//Reference Pattern Changer // (rpc) @@ -182,11 +182,11 @@ ] #Make sure every mass you listed was collected otherwise there will be an error. #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [6.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [6.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -214,18 +214,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -298,4 +298,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/TuningCorrectorGasMixture/UserInputGasMixture2.py b/UnitTests/TuningCorrectorGasMixture/UserInputGasMixture2.py index cd8c4735..64dadaa4 100644 --- a/UnitTests/TuningCorrectorGasMixture/UserInputGasMixture2.py +++ b/UnitTests/TuningCorrectorGasMixture/UserInputGasMixture2.py @@ -13,10 +13,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ExtractedReferencePattern.tsv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ExtractedReferencePattern.tsv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = 'Collected_Data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = 'Collected_Data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.tsv' #the name of the file containing the ionization data @@ -31,7 +31,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -150,22 +150,22 @@ #Note that 1 is the default and will make no alteration to the data #//Tuning Corrector - Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='yes' -UserChoices['measuredReferenceYorN']['referenceFileStandardTuningAndForm'] = ['LiteratureReference.tsv','xyyy'] #This is the pattern that will be changed. Typically this is NIST patterns. -UserChoices['measuredReferenceYorN']['createMixedTuningPattern'] = True #Users should normally never change this. If True, the external pattern gets changed, and a mixed reference pattern gets changded. If False, the *internal* pattern gets changed. -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] = [] -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] =[] #normally to be left blank. #This is what the pattern will look more like after everything is done. Typically, this is a measured pattern. -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureSignals'] = [] #left blank to extract from the full dataset. -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames'] =['ethane', 'ethene', 'ethyne'] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureConcentrations'] =[10, 2, 1] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='yes' +UserChoices['tuningCorrection']['referenceFileStandardTuningAndForm'] = ['LiteratureReference.tsv','xyyy'] #This is the pattern that will be changed. Typically this is NIST patterns. +UserChoices['tuningCorrection']['createMixedTuningPattern'] = True #Users should normally never change this. If True, the external pattern gets changed, and a mixed reference pattern gets changded. If False, the *internal* pattern gets changed. +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] = [] +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] =[] #normally to be left blank. #This is what the pattern will look more like after everything is done. Typically, this is a measured pattern. +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureSignals'] = [] #left blank to extract from the full dataset. +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames'] =['ethane', 'ethene', 'ethyne'] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureConcentrations'] =[10, 2, 1] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0. Used as.... Factor = A*X^2 + B*X + C, so A=0,B=0,C=1.0 means the final factor is 1.0 and independent of molecular weight. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. #//Reference Pattern Changer // (rpc) @@ -184,11 +184,11 @@ ] #Make sure every mass you listed was collected otherwise there will be an error. #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [6.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [6.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -216,18 +216,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -300,4 +300,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/TuningCorrectorGasMixture/UserInputGasMixture3.py b/UnitTests/TuningCorrectorGasMixture/UserInputGasMixture3.py index 71229e2e..9e60017a 100644 --- a/UnitTests/TuningCorrectorGasMixture/UserInputGasMixture3.py +++ b/UnitTests/TuningCorrectorGasMixture/UserInputGasMixture3.py @@ -13,10 +13,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ExtractedReferencePattern.tsv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ExtractedReferencePattern.tsv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = 'Collected_Data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = 'Collected_Data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.tsv' #the name of the file containing the ionization data @@ -31,7 +31,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -150,22 +150,22 @@ #Note that 1 is the default and will make no alteration to the data #//Tuning Corrector - Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='yes' -UserChoices['measuredReferenceYorN']['referenceFileStandardTuningAndForm'] = ['LiteratureReference.tsv','xyyy'] #This is the pattern that will be changed. Typically this is NIST patterns. -UserChoices['measuredReferenceYorN']['createMixedTuningPattern'] = True #Users should normally never change this. If True, the external pattern gets changed, and a mixed reference pattern gets changded. If False, the *internal* pattern gets changed. -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] = [] -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] =[] #normally to be left blank. #This is what the pattern will look more like after everything is done. Typically, this is a measured pattern. -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureSignals'] = [] #left blank to extract from the full dataset. -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames'] =['ethane', 'ethene', 'ethyne'] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureConcentrations'] =[10, 2, 1] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='yes' +UserChoices['tuningCorrection']['referenceFileStandardTuningAndForm'] = ['LiteratureReference.tsv','xyyy'] #This is the pattern that will be changed. Typically this is NIST patterns. +UserChoices['tuningCorrection']['createMixedTuningPattern'] = True #Users should normally never change this. If True, the external pattern gets changed, and a mixed reference pattern gets changded. If False, the *internal* pattern gets changed. +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] = [] +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] =[] #normally to be left blank. #This is what the pattern will look more like after everything is done. Typically, this is a measured pattern. +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureSignals'] = [] #left blank to extract from the full dataset. +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames'] =['ethane', 'ethene', 'ethyne'] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureConcentrations'] =[10, 2, 1] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0. Used as.... Factor = A*X^2 + B*X + C, so A=0,B=0,C=1.0 means the final factor is 1.0 and independent of molecular weight. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. #//Reference Pattern Changer // (rpc) @@ -184,11 +184,11 @@ ] #Make sure every mass you listed was collected otherwise there will be an error. #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [6.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [6.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -216,18 +216,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -300,4 +300,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/TuningCorrectorGasMixture/UserInputGasMixture4.py b/UnitTests/TuningCorrectorGasMixture/UserInputGasMixture4.py index 3f8f329b..75e2d1b4 100644 --- a/UnitTests/TuningCorrectorGasMixture/UserInputGasMixture4.py +++ b/UnitTests/TuningCorrectorGasMixture/UserInputGasMixture4.py @@ -13,10 +13,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ExtractedReferencePattern.tsv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ExtractedReferencePattern.tsv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = 'Collected_Data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = 'Collected_Data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.tsv' #the name of the file containing the ionization data @@ -31,7 +31,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -150,22 +150,22 @@ #Note that 1 is the default and will make no alteration to the data #//Tuning Corrector - Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='yes' -UserChoices['measuredReferenceYorN']['referenceFileStandardTuningAndForm'] = ['LiteratureReference.tsv','xyyy'] #This is the pattern that will be changed. Typically this is NIST patterns. -UserChoices['measuredReferenceYorN']['createMixedTuningPattern'] = True #Users should normally never change this. If True, the external pattern gets changed, and a mixed reference pattern gets changded. If False, the *internal* pattern gets changed. -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] = [] -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] =[] #normally to be left blank. #This is what the pattern will look more like after everything is done. Typically, this is a measured pattern. -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureSignals'] = [] #left blank to extract from the full dataset. -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames'] =['ethane', 'ethene', 'ethyne'] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureConcentrations'] =[10, 2, 1] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='yes' +UserChoices['tuningCorrection']['referenceFileStandardTuningAndForm'] = ['LiteratureReference.tsv','xyyy'] #This is the pattern that will be changed. Typically this is NIST patterns. +UserChoices['tuningCorrection']['createMixedTuningPattern'] = True #Users should normally never change this. If True, the external pattern gets changed, and a mixed reference pattern gets changded. If False, the *internal* pattern gets changed. +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] = [] +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] =[] #normally to be left blank. #This is what the pattern will look more like after everything is done. Typically, this is a measured pattern. +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureSignals'] = [] #left blank to extract from the full dataset. +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames'] =['ethane', 'ethene', 'ethyne'] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureConcentrations'] =[10, 2, 1] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0. Used as.... Factor = A*X^2 + B*X + C, so A=0,B=0,C=1.0 means the final factor is 1.0 and independent of molecular weight. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. #//Reference Pattern Changer // (rpc) @@ -184,11 +184,11 @@ ] #Make sure every mass you listed was collected otherwise there will be an error. #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [6.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [6.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -216,18 +216,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -300,4 +300,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/XYXYReferencePattern/test_1_inputXYXY.py b/UnitTests/XYXYReferencePattern/test_1_inputXYXY.py index 770c30e5..718ad7e0 100644 --- a/UnitTests/XYXYReferencePattern/test_1_inputXYXY.py +++ b/UnitTests/XYXYReferencePattern/test_1_inputXYXY.py @@ -13,10 +13,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['AcetaldehydeNISTRefMixed2XYXY.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyxy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['AcetaldehydeNISTRefMixed2XYXY.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyxy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -31,7 +31,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -150,23 +150,23 @@ #Note that 1 is the default and will make no alteration to the data #//Tuning Corrector - Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileStandardTuningAndForm'] = [] #optional: provides tuningCorrectionIntensity feature. Will automatically be used for ReferenceFileExistingTuning if that variable is blank and if createMixedTuningPattern=True. -UserChoices['measuredReferenceYorN']['createMixedTuningPattern'] = True #Users should normally never change this. If True, the external pattern gets changed, and a mixed reference pattern gets changded. If False, the *internal* pattern gets changed. -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] =[] #This is the pattern that will be changed. Should be blank by default. -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] =[] #This is what the pattern will look more like after everything is done. Should be blank by default. -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames'] =[] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureConcentrations'] =[] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureSignals'] = [] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum, tuningCorrectorGasMixtureSignals must be provided or will be used to extract from the data. Leaving this unchanged will take the average of all of the data. If a pair of times is provided, that will be used to extract from the measured data. Alternatively, a single filename with an MSRESOLVE reference file and molecule name "GaxMixture". - -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileStandardTuningAndForm'] = [] #optional: provides tuningCorrectionIntensity feature. Will automatically be used for ReferenceFileExistingTuning if that variable is blank and if createMixedTuningPattern=True. +UserChoices['tuningCorrection']['createMixedTuningPattern'] = True #Users should normally never change this. If True, the external pattern gets changed, and a mixed reference pattern gets changded. If False, the *internal* pattern gets changed. +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] =[] #This is the pattern that will be changed. Should be blank by default. +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] =[] #This is what the pattern will look more like after everything is done. Should be blank by default. +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames'] =[] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureConcentrations'] =[] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureSignals'] = [] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum, tuningCorrectorGasMixtureSignals must be provided or will be used to extract from the data. Leaving this unchanged will take the average of all of the data. If a pair of times is provided, that will be used to extract from the measured data. Alternatively, a single filename with an MSRESOLVE reference file and molecule name "GaxMixture". + +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0. Used as.... Factor = A*X^2 + B*X + C, so A=0,B=0,C=1.0 means the final factor is 1.0 and independent of molecular weight. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. #//Reference Pattern Changer // (rpc) @@ -185,11 +185,11 @@ ] #Make sure every mass you listed was collected otherwise there will be an error. #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'no' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [6.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'no' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [6.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -217,18 +217,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -301,4 +301,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName', 'referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN', 'referenceFileStandardTuningAndForm', 'createMixedTuningPattern', 'referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName', 'referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection', 'referenceFileStandardTuningAndForm', 'createMixedTuningPattern', 'referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/XYXYReferencePattern/test_1_inputXYYY.py b/UnitTests/XYXYReferencePattern/test_1_inputXYYY.py index 52610d7a..cd27d72c 100644 --- a/UnitTests/XYXYReferencePattern/test_1_inputXYYY.py +++ b/UnitTests/XYXYReferencePattern/test_1_inputXYYY.py @@ -13,10 +13,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['AcetaldehydeNISTRefMixed2XYYY.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['AcetaldehydeNISTRefMixed2XYYY.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -31,7 +31,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -150,23 +150,23 @@ #Note that 1 is the default and will make no alteration to the data #//Tuning Corrector - Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileStandardTuningAndForm'] = [] #optional: provides tuningCorrectionIntensity feature. Will automatically be used for ReferenceFileExistingTuning if that variable is blank and if createMixedTuningPattern=True. -UserChoices['measuredReferenceYorN']['createMixedTuningPattern'] = True #Users should normally never change this. If True, the external pattern gets changed, and a mixed reference pattern gets changded. If False, the *internal* pattern gets changed. -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] =[] #This is the pattern that will be changed. Should be blank by default. -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] =[] #This is what the pattern will look more like after everything is done. Should be blank by default. -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames'] =[] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureConcentrations'] =[] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureSignals'] = [] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum, tuningCorrectorGasMixtureSignals must be provided or will be used to extract from the data. Leaving this unchanged will take the average of all of the data. If a pair of times is provided, that will be used to extract from the measured data. Alternatively, a single filename with an MSRESOLVE reference file and molecule name "GaxMixture". - -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileStandardTuningAndForm'] = [] #optional: provides tuningCorrectionIntensity feature. Will automatically be used for ReferenceFileExistingTuning if that variable is blank and if createMixedTuningPattern=True. +UserChoices['tuningCorrection']['createMixedTuningPattern'] = True #Users should normally never change this. If True, the external pattern gets changed, and a mixed reference pattern gets changded. If False, the *internal* pattern gets changed. +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] =[] #This is the pattern that will be changed. Should be blank by default. +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] =[] #This is what the pattern will look more like after everything is done. Should be blank by default. +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames'] =[] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureConcentrations'] =[] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureSignals'] = [] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum, tuningCorrectorGasMixtureSignals must be provided or will be used to extract from the data. Leaving this unchanged will take the average of all of the data. If a pair of times is provided, that will be used to extract from the measured data. Alternatively, a single filename with an MSRESOLVE reference file and molecule name "GaxMixture". + +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0. Used as.... Factor = A*X^2 + B*X + C, so A=0,B=0,C=1.0 means the final factor is 1.0 and independent of molecular weight. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. #//Reference Pattern Changer // (rpc) @@ -185,11 +185,11 @@ ] #Make sure every mass you listed was collected otherwise there will be an error. #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'no' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [6.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'no' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [6.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -217,18 +217,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -301,4 +301,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName', 'referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN', 'referenceFileStandardTuningAndForm', 'createMixedTuningPattern', 'referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName', 'referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection', 'referenceFileStandardTuningAndForm', 'createMixedTuningPattern', 'referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/excludeMoleculesIfSignificantFragmentNotObserved/test_1.py b/UnitTests/excludeMoleculesIfSignificantFragmentNotObserved/test_1.py index e4601d02..87d0c9c3 100644 --- a/UnitTests/excludeMoleculesIfSignificantFragmentNotObserved/test_1.py +++ b/UnitTests/excludeMoleculesIfSignificantFragmentNotObserved/test_1.py @@ -17,7 +17,7 @@ import test_1_input MSRESOLVE.G = test_1_input -#this input file uses the rawSignalThresholdMethod,which excludes molecules if they have significant mass fragments +#this input file uses the applyRawSignalThresholds,which excludes molecules if they have significant mass fragments # that are not present above a particular signal threshold. # in this case, we set the signal threshold to be 0.02, and the significance to be at 1% for standardized reference patterns. # the mass 70 signal is always below 0.02 and a significant for both crotyl alcohol and 2-butenal (crotonaldehyde) diff --git a/UnitTests/excludeMoleculesIfSignificantFragmentNotObserved/test_1_input.py b/UnitTests/excludeMoleculesIfSignificantFragmentNotObserved/test_1_input.py index e01da608..1155d6f8 100644 --- a/UnitTests/excludeMoleculesIfSignificantFragmentNotObserved/test_1_input.py +++ b/UnitTests/excludeMoleculesIfSignificantFragmentNotObserved/test_1_input.py @@ -9,7 +9,7 @@ referenceFileNameList = 'AcetaldehydeNISTRefMixed2.csv' #enter the file name of the file containing reference information form = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2ExclusionTest.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2ExclusionTest.csv' #enter the file name with raw mass spectrometer data #Iterative Analysis #Options are True, False, or '' @@ -119,7 +119,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -144,8 +144,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -177,7 +177,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'yes' +applyRawSignalThresholds = 'yes' rawSignalThresholdValue = [.02] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] @@ -238,7 +238,7 @@ iterationSuffix= '' unusedMolecules ='' oldReferenceFileName = '' -oldCollectedFileName ='' +oldDataToAnalyzeFileName ='' nextRefFileName = '' nextExpFileName = '' iterationNumber = None diff --git a/UnitTests/excludeMoleculesIfSignificantFragmentNotObserved/test_2.py b/UnitTests/excludeMoleculesIfSignificantFragmentNotObserved/test_2.py index 768e2c26..e007af2c 100644 --- a/UnitTests/excludeMoleculesIfSignificantFragmentNotObserved/test_2.py +++ b/UnitTests/excludeMoleculesIfSignificantFragmentNotObserved/test_2.py @@ -17,7 +17,7 @@ import test_2_input MSRESOLVE.G = test_2_input -#this input file uses the rawSignalThresholdMethod,which excludes molecules if they have significant mass fragments +#this input file uses the applyRawSignalThresholds,which excludes molecules if they have significant mass fragments # that are not present above a particular signal threshold. # in this case, we set the signal threshold to be 0.02, and the significance to be at 1% for standardized reference patterns. # the mass 70 signal is always below 0.02 and a significant for both crotyl alcohol and 2-butenal (crotonaldehyde) diff --git a/UnitTests/excludeMoleculesIfSignificantFragmentNotObserved/test_2_input.py b/UnitTests/excludeMoleculesIfSignificantFragmentNotObserved/test_2_input.py index a5c3ef77..340890c4 100644 --- a/UnitTests/excludeMoleculesIfSignificantFragmentNotObserved/test_2_input.py +++ b/UnitTests/excludeMoleculesIfSignificantFragmentNotObserved/test_2_input.py @@ -9,7 +9,7 @@ referenceFileNameList = 'AcetaldehydeNISTRefMixed2.csv' #enter the file name of the file containing reference information form = 'xyyy' #form is either 'xyyy' or 'xyxy' referencePatternTimeRanges = [] #Leave empty if not using reference pattern time chooser [] -collectedFileName = '2-CrotAcetExp#2ExclusionTest.csv' #enter the file name with raw mass spectrometer data +dataToAnalyzeFileName = '2-CrotAcetExp#2ExclusionTest.csv' #enter the file name with raw mass spectrometer data #Iterative Analysis #Options are True, False, or '' @@ -119,7 +119,7 @@ #//Reference Correction Coefficients// #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -measuredReferenceYorN='no' +tuningCorrection='no' referenceFileExistingTuningAndForm='AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm ='AcetaldehydeOnlyNISTRef.csv' referenceCorrectionCoefficients = {'A': 0.0, 'B': 0.0, 'C': 1.0} @@ -144,8 +144,8 @@ #//Reference Mass Fragmentation Threshold// # if you want to exclude tiny fragmentation peaks -minimalReferenceValue= 'no' -referenceValueThreshold = [6.0] +applyReferenceMassFragmentsThresholds= 'no' +referenceMassFragmentFilterThreshold = [6.0] #//Data Threshold Filter// @@ -177,7 +177,7 @@ #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -rawSignalThresholdMethod = 'yes' +applyRawSignalThresholds = 'yes' rawSignalThresholdValue = [.02] sensitivityThresholdValue = [1] #this is the number in the Reference given, the relative intensity of the signal of the mass fragment rawSignalThresholdDivider = [] @@ -239,7 +239,7 @@ iterationSuffix= '' unusedMolecules ='' oldReferenceFileName = '' -oldCollectedFileName ='' +oldDataToAnalyzeFileName ='' nextRefFileName = '' nextExpFileName = '' iterationNumber = None diff --git a/UnitTests/implicitSLScorrection/test_1_Input.py b/UnitTests/implicitSLScorrection/test_1_Input.py index d67212fd..37f10514 100644 --- a/UnitTests/implicitSLScorrection/test_1_Input.py +++ b/UnitTests/implicitSLScorrection/test_1_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -296,4 +296,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/implicitSLScorrection/test_2_Input.py b/UnitTests/implicitSLScorrection/test_2_Input.py index 7e3c591c..7ee4cca3 100644 --- a/UnitTests/implicitSLScorrection/test_2_Input.py +++ b/UnitTests/implicitSLScorrection/test_2_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -296,4 +296,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/referenceSignificantFragmentThreshold/test_1_UserInput.py b/UnitTests/referenceSignificantFragmentThreshold/test_1_UserInput.py index 51ad1e9d..f56c274d 100644 --- a/UnitTests/referenceSignificantFragmentThreshold/test_1_UserInput.py +++ b/UnitTests/referenceSignificantFragmentThreshold/test_1_UserInput.py @@ -1,6 +1,6 @@ -referenceFileNamesList = ['reference_measured_EthyleneExtracted.csv'] -referenceFormsList = 'xyyy' -collectedFileName = 'Ethylene.csv' +referencePatternsFileNamesList = ['reference_measured_EthyleneExtracted.csv'] +referencePatternsFormsList = 'xyyy' +dataToAnalyzeFileName = 'Ethylene.csv' referencePatternTimeRanges = [] ionizationDataFileName = '181017ProvidedIonizationData.csv' iterativeAnalysis = False @@ -8,7 +8,7 @@ iterationSuffix = '' unusedMolecules = '' oldReferenceFileName = [] -oldCollectedFileName = '' +oldDataToAnalyzeFileName = '' nextRefFileName = [] nextExpFileName = '' preProcessing = 'yes' @@ -48,7 +48,7 @@ maxPermutations = 100001 scaleRawDataOption = 'manual' scaleRawDataFactor = 1 -measuredReferenceYorN = 'no' +tuningCorrection = 'no' referenceFileStandardTuningAndForm =[] referenceFileExistingTuningAndForm = 'AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm = 'AcetaldehydeOnlyNISTRef.csv' @@ -57,8 +57,8 @@ rpcMoleculesToChange = ['Ethylene'] rpcMoleculesToChangeMF = [[2, 4, 14, 15, 16, 18, 25, 26, 27, 28, 29, 30, 32, 44]] rpcTimeRanges = [[6745.0, 8000]] -minimalReferenceValue = 'yes' -referenceValueThreshold = [1.0] +applyReferenceMassFragmentsThresholds = 'yes' +referenceMassFragmentFilterThreshold = [1.0] referenceSignificantFragmentThresholds = [3.0] lowerBoundThresholdChooser = 'no' massesToLowerBoundThresholdFilter = [] @@ -70,7 +70,7 @@ dataSmootherPointRadius = 7.0 dataSmootherHeadersToConfineTo = [] polynomialOrder = 1 -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [1e-07] sensitivityThresholdValue = [0.05] rawSignalThresholdDivider = [] @@ -111,4 +111,4 @@ timeSinceLastCheckpoint = '' iterationNumber = None -# __var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','answer','uniqueOrCommon','slsFinish','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file +# __var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldDataToAnalyzeFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','answer','uniqueOrCommon','slsFinish','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file diff --git a/UnitTests/referenceSignificantFragmentThreshold/test_2_UserInput.py b/UnitTests/referenceSignificantFragmentThreshold/test_2_UserInput.py index 2eda4e3f..6dd9679f 100644 --- a/UnitTests/referenceSignificantFragmentThreshold/test_2_UserInput.py +++ b/UnitTests/referenceSignificantFragmentThreshold/test_2_UserInput.py @@ -1,6 +1,6 @@ -referenceFileNamesList = ['reference_measured_EthyleneExtracted.csv'] -referenceFormsList = 'xyyy' -collectedFileName = 'Ethylene.csv' +referencePatternsFileNamesList = ['reference_measured_EthyleneExtracted.csv'] +referencePatternsFormsList = 'xyyy' +dataToAnalyzeFileName = 'Ethylene.csv' referencePatternTimeRanges = [] ionizationDataFileName = '181017ProvidedIonizationData.csv' iterativeAnalysis = False @@ -8,7 +8,7 @@ iterationSuffix = '' unusedMolecules = '' oldReferenceFileName = [] -oldCollectedFileName = '' +oldDataToAnalyzeFileName = '' nextRefFileName = [] nextExpFileName = '' preProcessing = 'yes' @@ -48,7 +48,7 @@ maxPermutations = 100001 scaleRawDataOption = 'manual' scaleRawDataFactor = 1 -measuredReferenceYorN = 'no' +tuningCorrection = 'no' referenceFileStandardTuningAndForm = [] referenceFileExistingTuningAndForm = 'AcetaldehydeMeasuredRef.csv' referenceFileDesiredTuningAndForm = 'AcetaldehydeOnlyNISTRef.csv' @@ -57,8 +57,8 @@ rpcMoleculesToChange = ['Ethylene'] rpcMoleculesToChangeMF = [[2, 4, 14, 15, 16, 18, 25, 26, 27, 28, 29, 30, 32, 44]] rpcTimeRanges = [[6745.0, 8000]] -minimalReferenceValue = 'yes' -referenceValueThreshold = [1.0] +applyReferenceMassFragmentsThresholds = 'yes' +referenceMassFragmentFilterThreshold = [1.0] referenceSignificantFragmentThresholds = [1.0, 3.0, 3.0] lowerBoundThresholdChooser = 'no' massesToLowerBoundThresholdFilter = [] @@ -70,7 +70,7 @@ dataSmootherPointRadius = 7.0 dataSmootherHeadersToConfineTo = [] polynomialOrder = 1 -rawSignalThresholdMethod = 'no' +applyRawSignalThresholds = 'no' rawSignalThresholdValue = [1e-07] sensitivityThresholdValue = [0.05] rawSignalThresholdDivider = [] @@ -111,4 +111,4 @@ timeSinceLastCheckpoint = '' iterationNumber = None -# __var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldCollectedFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','answer','uniqueOrCommon','slsFinish','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file +# __var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName','oldDataToAnalyzeFileName','nextRefFileName','nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','answer','uniqueOrCommon','slsFinish','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport','concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint','iterationNumber'] \ No newline at end of file diff --git a/UnitTests/slsCommon/test_1_Input.py b/UnitTests/slsCommon/test_1_Input.py index 44bdc278..98dbdfa4 100644 --- a/UnitTests/slsCommon/test_1_Input.py +++ b/UnitTests/slsCommon/test_1_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Negative Analyzer// UserChoices['negativeAnalyzerYorN'] = {} #initialize the negativeAnalyzerYorN container @@ -286,4 +286,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/slsUniquePositiveConcentrationsOnly/test_1_Input.py b/UnitTests/slsUniquePositiveConcentrationsOnly/test_1_Input.py index 99591114..1449e433 100644 --- a/UnitTests/slsUniquePositiveConcentrationsOnly/test_1_Input.py +++ b/UnitTests/slsUniquePositiveConcentrationsOnly/test_1_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Negative Analyzer// UserChoices['negativeAnalyzerYorN'] = {} #initialize the negativeAnalyzerYorN container @@ -288,4 +288,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/slsUniquePositiveConcentrationsOnly/test_2.py b/UnitTests/slsUniquePositiveConcentrationsOnly/test_2.py index db795d64..a1747a0b 100644 --- a/UnitTests/slsUniquePositiveConcentrationsOnly/test_2.py +++ b/UnitTests/slsUniquePositiveConcentrationsOnly/test_2.py @@ -17,7 +17,7 @@ import test_2_Input MSRESOLVE.G = test_2_Input -#this input file uses the rawSignalThresholdMethod,which excludes molecules if they have significant mass fragments +#this input file uses the applyRawSignalThresholds,which excludes molecules if they have significant mass fragments # that are not present above a particular signal threshold. # in this case, we set the signal threshold to be 0.02, and the significance to be at 1% for standardized reference patterns. # the mass 70 signal is always below 0.02 and a significant for both crotyl alcohol and 2-butenal (crotonaldehyde) diff --git a/UnitTests/slsUniquePositiveConcentrationsOnly/test_2_Input.py b/UnitTests/slsUniquePositiveConcentrationsOnly/test_2_Input.py index 16e00282..6ac289b1 100644 --- a/UnitTests/slsUniquePositiveConcentrationsOnly/test_2_Input.py +++ b/UnitTests/slsUniquePositiveConcentrationsOnly/test_2_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Negative Analyzer// UserChoices['negativeAnalyzerYorN'] = {} #initialize the negativeAnalyzerYorN container @@ -287,4 +287,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/uncertainties/test_10_Input.py b/UnitTests/uncertainties/test_10_Input.py index 4ef91f56..2028d9ee 100644 --- a/UnitTests/uncertainties/test_10_Input.py +++ b/UnitTests/uncertainties/test_10_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -297,4 +297,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/uncertainties/test_11_Input.py b/UnitTests/uncertainties/test_11_Input.py index f32896ee..386cf890 100644 --- a/UnitTests/uncertainties/test_11_Input.py +++ b/UnitTests/uncertainties/test_11_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [0.1] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [0.1] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -297,4 +297,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/uncertainties/test_12_Input.py b/UnitTests/uncertainties/test_12_Input.py index 5e1ea2bb..5e0b44a3 100644 --- a/UnitTests/uncertainties/test_12_Input.py +++ b/UnitTests/uncertainties/test_12_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -297,4 +297,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/uncertainties/test_13_Input.py b/UnitTests/uncertainties/test_13_Input.py index af1ad32d..19def298 100644 --- a/UnitTests/uncertainties/test_13_Input.py +++ b/UnitTests/uncertainties/test_13_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [0.1] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [0.1] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -297,4 +297,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/uncertainties/test_14_Input.py b/UnitTests/uncertainties/test_14_Input.py index 9e66b01f..1765e1d6 100644 --- a/UnitTests/uncertainties/test_14_Input.py +++ b/UnitTests/uncertainties/test_14_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,19 +153,19 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -#UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +#UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='yes' -UserChoices['measuredReferenceYorN']['tuningCorrectPatternInternalVsExternal'] = 'Internal' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] =[] -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] = 'AcetaldehydeOnlyNISTRef.csv' #This will be ignored in test_14.py -UserChoices['measuredReferenceYorN']['createMixedTuningPattern'] = False -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = [0.00041154151447065387, -0.0200083957021084, 1.2192131558273835] +UserChoices['tuningCorrection']['on'] ='yes' +UserChoices['tuningCorrection']['tuningCorrectPatternInternalVsExternal'] = 'Internal' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] =[] +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] = 'AcetaldehydeOnlyNISTRef.csv' #This will be ignored in test_14.py +UserChoices['tuningCorrection']['createMixedTuningPattern'] = False +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = [0.00041154151447065387, -0.0200083957021084, 1.2192131558273835] #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] = [[1.6745077041967374e-07, -1.2256016522854983e-05, 0.00020694004752915527], [-1.225601652285498e-05, 0.0009248854589718302, -0.016160488458714865], [0.0002069400475291552, -0.016160488458714862, 0.2955588432116031]] +UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] = [[1.6745077041967374e-07, -1.2256016522854983e-05, 0.00020694004752915527], [-1.225601652285498e-05, 0.0009248854589718302, -0.016160488458714865], [0.0002069400475291552, -0.016160488458714862, 0.2955588432116031]] #//Reference Pattern Changer // (rpc) UserChoices['extractReferencePatternFromDataOption'] = {} #initialize the extractReferencePatternFromDataOption container @@ -183,11 +183,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [0.1] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [0.1] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [2.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -215,18 +215,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -300,4 +300,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN', 'tuningCorrectPatternInternalVsExternal', 'referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection', 'tuningCorrectPatternInternalVsExternal', 'referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/uncertainties/test_15_Input.py b/UnitTests/uncertainties/test_15_Input.py index 23e38d87..a811acc1 100644 --- a/UnitTests/uncertainties/test_15_Input.py +++ b/UnitTests/uncertainties/test_15_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,19 +153,19 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -#UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +#UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='yes' -UserChoices['measuredReferenceYorN']['tuningCorrectPatternInternalVsExternal'] = 'Internal' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] =[] -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' #this will be ignored in test_15.py -UserChoices['measuredReferenceYorN']['createMixedTuningPattern'] = False -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = [0.00041154151447065387, -0.0200083957021084, 1.2192131558273835] +UserChoices['tuningCorrection']['on'] ='yes' +UserChoices['tuningCorrection']['tuningCorrectPatternInternalVsExternal'] = 'Internal' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] =[] +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' #this will be ignored in test_15.py +UserChoices['tuningCorrection']['createMixedTuningPattern'] = False +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = [0.00041154151447065387, -0.0200083957021084, 1.2192131558273835] #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] = [0,0,0] #no cov. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] = [0,0,0] #no cov. #//Reference Pattern Changer // (rpc) UserChoices['extractReferencePatternFromDataOption'] = {} #initialize the extractReferencePatternFromDataOption container @@ -183,11 +183,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [0.1] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [0.1] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [2.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -215,18 +215,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -300,4 +300,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN', 'tuningCorrectPatternInternalVsExternal', 'referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection', 'tuningCorrectPatternInternalVsExternal', 'referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/uncertainties/test_16_Input.py b/UnitTests/uncertainties/test_16_Input.py index f1c7f5a9..f64f11a7 100644 --- a/UnitTests/uncertainties/test_16_Input.py +++ b/UnitTests/uncertainties/test_16_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,18 +153,18 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -#UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +#UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='yes' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] = [] #['ReferenceExternal.csv', 'xyxy'] -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] = [] -UserChoices['measuredReferenceYorN']['createMixedTuningPattern'] = True -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = [0.00041154151447065387, -0.0200083957021084, 1.2192131558273835] +UserChoices['tuningCorrection']['on'] ='yes' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] = [] #['ReferenceExternal.csv', 'xyxy'] +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] = [] +UserChoices['tuningCorrection']['createMixedTuningPattern'] = True +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = [0.00041154151447065387, -0.0200083957021084, 1.2192131558273835] #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] = [[1.6745077041967374e-07, -1.2256016522854983e-05, 0.00020694004752915527], [-1.225601652285498e-05, 0.0009248854589718302, -0.016160488458714865], [0.0002069400475291552, -0.016160488458714862, 0.2955588432116031]] +UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] = [[1.6745077041967374e-07, -1.2256016522854983e-05, 0.00020694004752915527], [-1.225601652285498e-05, 0.0009248854589718302, -0.016160488458714865], [0.0002069400475291552, -0.016160488458714862, 0.2955588432116031]] #//Reference Pattern Changer // (rpc) UserChoices['extractReferencePatternFromDataOption'] = {} #initialize the extractReferencePatternFromDataOption container @@ -182,11 +182,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [0.1] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [0.1] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [2.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -214,18 +214,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -298,4 +298,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/uncertainties/test_1_Input.py b/UnitTests/uncertainties/test_1_Input.py index d1e35467..bfac0698 100644 --- a/UnitTests/uncertainties/test_1_Input.py +++ b/UnitTests/uncertainties/test_1_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -297,4 +297,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/uncertainties/test_2_Input.py b/UnitTests/uncertainties/test_2_Input.py index 57017006..365f1870 100644 --- a/UnitTests/uncertainties/test_2_Input.py +++ b/UnitTests/uncertainties/test_2_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -298,4 +298,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/uncertainties/test_3_Input.py b/UnitTests/uncertainties/test_3_Input.py index ce41d048..171b11b1 100644 --- a/UnitTests/uncertainties/test_3_Input.py +++ b/UnitTests/uncertainties/test_3_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -297,4 +297,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/uncertainties/test_4_Input.py b/UnitTests/uncertainties/test_4_Input.py index 90161cb7..c267bc93 100644 --- a/UnitTests/uncertainties/test_4_Input.py +++ b/UnitTests/uncertainties/test_4_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -297,4 +297,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/uncertainties/test_5_Input.py b/UnitTests/uncertainties/test_5_Input.py index 99c5557d..e736c404 100644 --- a/UnitTests/uncertainties/test_5_Input.py +++ b/UnitTests/uncertainties/test_5_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -297,4 +297,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/uncertainties/test_6_Input.py b/UnitTests/uncertainties/test_6_Input.py index 9d95f5b1..16940198 100644 --- a/UnitTests/uncertainties/test_6_Input.py +++ b/UnitTests/uncertainties/test_6_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -297,4 +297,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/uncertainties/test_7_Input.py b/UnitTests/uncertainties/test_7_Input.py index ac1d9443..994afcdb 100644 --- a/UnitTests/uncertainties/test_7_Input.py +++ b/UnitTests/uncertainties/test_7_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -297,4 +297,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/uncertainties/test_8_Input.py b/UnitTests/uncertainties/test_8_Input.py index 7a99fa10..255e6cec 100644 --- a/UnitTests/uncertainties/test_8_Input.py +++ b/UnitTests/uncertainties/test_8_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [2.0] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [2.0] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -297,4 +297,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UnitTests/uncertainties/test_9_Input.py b/UnitTests/uncertainties/test_9_Input.py index 74cad6af..3b29eeeb 100644 --- a/UnitTests/uncertainties/test_9_Input.py +++ b/UnitTests/uncertainties/test_9_Input.py @@ -16,10 +16,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['ConvertedSpectra.csv'] #enter the file name of the file containing reference information +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '20190817A-integer-data.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -34,7 +34,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -153,15 +153,15 @@ #Note that 1 is the default and will make no alteration to the data #//Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] ='AcetaldehydeMeasuredRef.csv' +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] ='AcetaldehydeOnlyNISTRef.csv' +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten (Ashi thinks it will generate a new reference pattern) +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0 #//Reference Pattern Changer // (rpc) @@ -180,11 +180,11 @@ ] #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'yes' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [0.5] -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [5.0] +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'yes' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [0.5] +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [5.0] #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -212,18 +212,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -297,4 +297,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName','referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection','referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] \ No newline at end of file diff --git a/UserInput.py b/UserInput.py index eb502945..517fecf5 100644 --- a/UserInput.py +++ b/UserInput.py @@ -13,10 +13,10 @@ #//Input Files// UserChoices['inputFiles'] = {} #initialize the inputFiles container -UserChoices['inputFiles']['referenceFileNamesList'] = ['AcetaldehydeNISTRefMixed2.tsv'] #enter the file name of the file containing reference information. tsv is tab-separated, csv is comma separated. tsv supports commas in molecule names. -UserChoices['inputFiles']['referenceFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) +UserChoices['inputFiles']['referencePatternsFileNamesList'] = ['AcetaldehydeNISTRefMixed2.tsv'] #enter the file name of the file containing reference information. tsv is tab-separated, csv is comma separated. tsv supports commas in molecule names. +UserChoices['inputFiles']['referencePatternsFormsList'] = 'xyyy' #form is either 'xyyy' or 'xyxy' (if using reference pattern time chooser enter as list with forms for each individual reference file ['xyyy','xyyy','xyyy']) UserChoices['inputFiles']['referencePatternTimeRanges'] = [] #Leave empty if not using reference pattern time chooser [] -UserChoices['inputFiles']['collectedFileName'] = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data +UserChoices['inputFiles']['dataToAnalyzeFileName'] = '2-CrotAcetExp#2.csv' #enter the file name with raw mass spectrometer data UserChoices['inputFiles']['ionizationDataFileName'] = '181017ProvidedIonizationData.csv' #the name of the file containing the ionization data @@ -31,7 +31,7 @@ UserChoices['iterativeAnalysis']['iterationSuffix'] = '' UserChoices['iterativeAnalysis']['unusedMolecules'] ='' UserChoices['iterativeAnalysis']['oldReferenceFileName'] = [] -UserChoices['iterativeAnalysis']['oldCollectedFileName'] ='' +UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] ='' UserChoices['iterativeAnalysis']['nextRefFileName'] = [] UserChoices['iterativeAnalysis']['nextExpFileName'] = '' UserChoices['iterativeAnalysis']['iterationNumber'] = None #just initializing. @@ -150,24 +150,24 @@ #Note that 1 is the default and will make no alteration to the data #//Tuning Corrector - Reference Correction Coefficients// -UserChoices['measuredReferenceYorN'] = {} #initialize the measuredReferenceYorN container +UserChoices['tuningCorrection'] = {} #initialize the tuningCorrection container #TODO Reference Correction Coefficients feature should be upgraded to enable separate coefficients for each molecule to allow mixing and matching of reference patterns #TODO This can be tested by looking at the exported reference file and comparing it to the existing reference file #To change reference data based on mass dependent 2nd degree polynomial fit, input polynomial below. If you do not wish to use this function, simply leave as default -UserChoices['measuredReferenceYorN']['on'] ='no' -UserChoices['measuredReferenceYorN']['tuningCorrectPatternInternalVsExternal'] = 'External' #the options are 'External' or 'Internal'. Typically, External with createMixedTuningPattern is used. With "External", the existing pattern is assumed to be an External pattern and is tuning corrected. With "Internal" the existing pattern is assumed to be an Internal pattern, and the analysis pattern is changed to match the tuning of the desired pattern. Another use of 'Internal' when applying reference Coefficients manually to the Reference Analysis pattern. As of Nov 2021, if "External" is used, then at least one of referenceFileStandardTuningAndForm and referenceFileExistingTuningAndForm must be filled. -UserChoices['measuredReferenceYorN']['referenceFileStandardTuningAndForm'] = [] #optional: Provides tuningCorrectionIntensity feature. Must include csv file and form. Example: ['NISTRef.csv', 'xyyy'] . Will automatically be used for ReferenceFileExistingTuning if that variable is blank and if createMixedTuningPattern=True. -UserChoices['measuredReferenceYorN']['createMixedTuningPattern'] = True #Users should normally never change this. If True, the external pattern gets changed, and a mixed reference pattern gets changded. If False, the *internal* pattern gets changed. -UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] =[] #This is the pattern that will be pattern tuning corrected. Normally should be empty list, []. Otherwise, must include csv file and form. Example: ['NISTRef.csv', 'xyyy'] . -UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] =[] #This is what the pattern will look more like after everything is done. Normally should be empty, list, []. Otherwise, must include csv file and form. Example: ['OriginalRef.csv', 'xyyy'] . -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames'] =[] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided (along with filling the next two variables). -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureConcentrations'] =[] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided -UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureSignals'] = [] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum, tuningCorrectorGasMixtureSignals must be provided or will be used to extract from the data. Leaving this unchanged will take the average of all of the data. If a pair of times is provided, that will be used to extract from the measured data. Alternatively, a single filename with an MSRESOLVE reference file and molecule name "GaxMixture". - -#The reference correction coefficients are always used. If measuredReferenceYorN is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} +UserChoices['tuningCorrection']['on'] ='no' +UserChoices['tuningCorrection']['tuningCorrectPatternInternalVsExternal'] = 'External' #the options are 'External' or 'Internal'. Typically, External with createMixedTuningPattern is used. With "External", the existing pattern is assumed to be an External pattern and is tuning corrected. With "Internal" the existing pattern is assumed to be an Internal pattern, and the analysis pattern is changed to match the tuning of the desired pattern. Another use of 'Internal' when applying reference Coefficients manually to the Reference Analysis pattern. As of Nov 2021, if "External" is used, then at least one of referenceFileStandardTuningAndForm and referenceFileExistingTuningAndForm must be filled. +UserChoices['tuningCorrection']['referenceFileStandardTuningAndForm'] = [] #optional: Provides tuningCorrectionIntensity feature. Must include csv file and form. Example: ['NISTRef.csv', 'xyyy'] . Will automatically be used for ReferenceFileExistingTuning if that variable is blank and if createMixedTuningPattern=True. +UserChoices['tuningCorrection']['createMixedTuningPattern'] = True #Users should normally never change this. If True, the external pattern gets changed, and a mixed reference pattern gets changded. If False, the *internal* pattern gets changed. +UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] =[] #This is the pattern that will be pattern tuning corrected. Normally should be empty list, []. Otherwise, must include csv file and form. Example: ['NISTRef.csv', 'xyyy'] . +UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] =[] #This is what the pattern will look more like after everything is done. Normally should be empty, list, []. Otherwise, must include csv file and form. Example: ['OriginalRef.csv', 'xyyy'] . +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames'] =[] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum molecule names must be provided (along with filling the next two variables). +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureConcentrations'] =[] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum concetrations must be provided +UserChoices['tuningCorrection']['tuningCorrectorGasMixtureSignals'] = [] #Optional: Special case, When using tuning corrector with a measured gas mixture spectrum, tuningCorrectorGasMixtureSignals must be provided or will be used to extract from the data. Leaving this unchanged will take the average of all of the data. If a pair of times is provided, that will be used to extract from the measured data. Alternatively, a single filename with an MSRESOLVE reference file and molecule name "GaxMixture". + +#The reference correction coefficients are always used. If tuningCorrection is 'yes' then the coefficients are overwritten and a new reference pattern is also generated to look more like the "Literature" case. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] = {'A': 0.0, 'B': 0.0, 'C': 1.0} #default is 'A': 0.0, 'B': 0.0, 'C': 1.0. Used as.... Factor = A*X^2 + B*X + C, so A=0,B=0,C=1.0 means the final factor is 1.0 and independent of molecular weight. -UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. +UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] = [0,0,0] #Covariance for reference correction coefficients for tuning corrector. Default is 0,0,0. Can be 9 x 9 covariance. #//Reference Pattern Changer // (rpc) @@ -186,11 +186,11 @@ ] #Make sure every mass you listed was collected otherwise there will be an error. #//Reference Mass Fragmentation Threshold// -UserChoices['minimalReferenceValue'] = {} #initialize the minimalReferenceValue container +UserChoices['applyReferenceMassFragmentsThresholds'] = {} #initialize the applyReferenceMassFragmentsThresholds container # if you want to exclude tiny fragmentation peaks -UserChoices['minimalReferenceValue']['on'] = 'no' -UserChoices['minimalReferenceValue']['referenceValueThreshold'] = [5.0] #typical values are between 1 and 5. Can be a list (one value for each molecule) or a single value across all molecules. The list case has not been tested with all features. This approximates smaller fragmentation peaks as '0', though implicitSLS will correct for the approximation. -UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] = [6.0] #typical values are between 5 and 50. Can be a list (one value for each molecule) or a single value across all molecules. The list case has not been tested with all features. This setting causes MSRESOLVE to favor larger intensity reference peaks (above the number provided) during solving. +UserChoices['applyReferenceMassFragmentsThresholds']['on'] = 'no' +UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] = [5.0] #typical values are between 1 and 5. Can be a list (one value for each molecule) or a single value across all molecules. The list case has not been tested with all features. This approximates smaller fragmentation peaks as '0', though implicitSLS will correct for the approximation. +UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] = [6.0] #typical values are between 5 and 50. Can be a list (one value for each molecule) or a single value across all molecules. The list case has not been tested with all features. This setting causes MSRESOLVE to favor larger intensity reference peaks (above the number provided) during solving. #//Data Threshold Filter// UserChoices['lowerBoundThresholdChooser'] = {} #initialize the lowerBoundThresholdChooser container @@ -218,18 +218,18 @@ UserChoices['dataSmootherYorN']['polynomialOrder'] = 1 #During the local smoothing, a linear fit (or polynomial fit) is applied. #//Raw Signal Threshold// -UserChoices['rawSignalThresholdMethod'] = {} #initialize the rawSignalThresholdMethod container +UserChoices['applyRawSignalThresholds'] = {} #initialize the applyRawSignalThresholds container #To change the threshold at which raw signals are not longer relevant, change below (similar to above function, but for rows instead of columns) #We think the reference to the 'above function' in the previous line is referring to Data Threshold Filter #These signals get converted into 0. #WARNING: This function is highly complex and should be considered a work in progress. It cannot be confirmed to work properly (as of 7/18/17). -UserChoices['rawSignalThresholdMethod']['on'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] = [.0000001] -UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] = [] +UserChoices['applyRawSignalThresholds']['on'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] = [.0000001] +UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] = [1] #this is the number in the Reference given the relative intensity of the signal of the mass fragment +UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] = [] #Part of previous entry function, but this function enables the user to change the sum of raw signals, allowing molecules with very high concentrations not to affect previous funciton -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] = 'no' -UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] = [] +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] = 'no' +UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] = [] #//Uncertainties for Calculating Uncertainties in Concentrations// UserChoices['uncertainties'] = {} @@ -303,4 +303,4 @@ SettingsVDictionary = userInputValidityCheck(UserChoices) populateModuleVariablesFromDictionary(thisModuleObject, SettingsVDictionary) ####End of temporary code#### -__var_list__ = ['referenceFileNamesList','referenceFormsList','collectedFileName', 'referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldCollectedFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','measuredReferenceYorN', 'tuningCorrectPatternInternalVsExternal', 'referenceFileStandardTuningAndForm', 'createMixedTuningPattern', 'referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','minimalReferenceValue','referenceValueThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','rawSignalThresholdMethod','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'implicitSLSRecursion', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] +__var_list__ = ['referencePatternsFileNamesList','referencePatternsFormsList','dataToAnalyzeFileName', 'referencePatternTimeRanges','ionizationDataFileName','iterativeAnalysis','iterationNumber','iterationSuffix','unusedMolecules','oldReferenceFileName', 'oldDataToAnalyzeFileName', 'nextRefFileName', 'nextExpFileName','preProcessing','dataAnalysis','dataSimulation','grapher','stopAtGraphs','timeRangeLimit','timeRangeStart','timeRangeFinish','specificMolecules','chosenMoleculesNames','specificMassFragments','chosenMassFragments','moleculeLikelihoods','sensitivityValues','linearBaselineCorrectionSemiAutomatic','baselineType','massesToBackgroundCorrect','earlyBaselineTimes','lateBaselineTimes','backgroundMassFragment','backgroundSlopes','backgroundIntercepts','interpolateYorN','marginalChangeRestriction','ignorableDeltaYThreshold','dataLowerBound','dataUpperBound','dataRangeSpecifierYorN','signalOrConcentrationRange','csvFile','moleculesToRestrict','csvFileName','bruteIncrements','permutationNum','maxPermutations','scaleRawDataOption','scaleRawDataFactor','tuningCorrection', 'tuningCorrectPatternInternalVsExternal', 'referenceFileStandardTuningAndForm', 'createMixedTuningPattern', 'referenceFileExistingTuningAndForm','referenceFileDesiredTuningAndForm','referenceCorrectionCoefficients','referenceCorrectionCoefficients_cov','extractReferencePatternFromDataOption','rpcMoleculesToChange','rpcMoleculesToChangeMF','rpcTimeRanges','applyReferenceMassFragmentsThresholds','referenceMassFragmentFilterThreshold','referenceSignificantFragmentThresholds','lowerBoundThresholdChooser','massesToLowerBoundThresholdFilter','lowerBoundThresholdPercentage','lowerBoundThresholdAbsolute','dataSmootherYorN','dataSmootherChoice','dataSmootherTimeRadius','dataSmootherPointRadius','dataSmootherHeadersToConfineTo','polynomialOrder','applyRawSignalThresholds','rawSignalThresholdValue','sensitivityThresholdValue','rawSignalThresholdDivider','rawSignalThresholdLimit','rawSignalThresholdLimitPercent','negativeAnalyzerYorN','NegativeAnalyzerTopNContributors','NegativeAnalyzerBaseNumberOfGridIntervals','calculateUncertaintiesInConcentrations' , 'referenceFileUncertainties' ,'collectedFileUncertainties','referenceCorrectionCoefficientsUncertainties', 'referenceCorrectionCoefficientsIonizationUncertainties' ,'answer','uniqueOrCommon','slsWeighting','slsFinish','slsUniquePositiveConcentrationsOnly','objectiveFunctionType','distinguished','fullBrute','SLSUniqueExport', 'implicitSLScorrection', 'implicitSLSRecursion', 'finalOptimization', 'concentrationFinder','moleculesTSC_List','TSC_List_Type','moleculeSignalTSC_List','massNumberTSC_List','moleculeConcentrationTSC_List','unitsTSC','preProcessedDataOutputName','resolvedScaledConcentrationsOutputName','scaledConcentrationsPercentages','concentrationsOutputName','simulatedSignalsOutputName','TotalConcentrationsOutputName','ExportAtEachStep','generatePercentages','checkpoint','start','timeSinceLastCheckpoint', 'iterationNumber'] diff --git a/userInputValidityFunctions.py b/userInputValidityFunctions.py index bf38cf47..4dc57c79 100644 --- a/userInputValidityFunctions.py +++ b/userInputValidityFunctions.py @@ -8,14 +8,14 @@ ''' def parseUserInput(currentUserInput): #Input Files - currentUserInput.referenceFileNamesList = parse.listCast(currentUserInput.referenceFileNamesList) #referenceFileName needs to be a list - currentUserInput.referenceFileNamesList = parse.stripListOfStrings(currentUserInput.referenceFileNamesList) - currentUserInput.referenceFormsList = parse.listCast(currentUserInput.referenceFormsList) #form needs to be a list - currentUserInput.referenceFormsList = parse.stripListOfStrings(currentUserInput.referenceFormsList) - currentUserInput.referenceFormsList = parse.parallelVectorize(currentUserInput.referenceFormsList,len(currentUserInput.referenceFileNamesList)) #form needs to be a list of the same length as referenceFileName + currentUserInput.referencePatternsFileNamesList = parse.listCast(currentUserInput.referencePatternsFileNamesList) #referenceFileName needs to be a list + currentUserInput.referencePatternsFileNamesList = parse.stripListOfStrings(currentUserInput.referencePatternsFileNamesList) + currentUserInput.referencePatternsFormsList = parse.listCast(currentUserInput.referencePatternsFormsList) #form needs to be a list + currentUserInput.referencePatternsFormsList = parse.stripListOfStrings(currentUserInput.referencePatternsFormsList) + currentUserInput.referencePatternsFormsList = parse.parallelVectorize(currentUserInput.referencePatternsFormsList,len(currentUserInput.referencePatternsFileNamesList)) #form needs to be a list of the same length as referenceFileName currentUserInput.referencePatternTimeRanges = parse.listCast(currentUserInput.referencePatternTimeRanges) #RefPatternTimeRanges needs to be a list - parse.strCheck(currentUserInput.collectedFileName,'collectedFileName') #collectedFileName must be a string - currentUserInput.collectedFileName = currentUserInput.collectedFileName.strip() + parse.strCheck(currentUserInput.dataToAnalyzeFileName,'dataToAnalyzeFileName') #dataToAnalyzeFileName must be a string + currentUserInput.dataToAnalyzeFileName = currentUserInput.dataToAnalyzeFileName.strip() #preProcessing, dataAnalysis, dataSimulation, grapher @@ -53,18 +53,18 @@ def parseUserInput(currentUserInput): if currentUserInput.specificMolecules == 'yes': #if yes, use the user's chosen moleclues chosenMoleculesForParsing = copy.deepcopy(currentUserInput.chosenMoleculesNames) #If using specificMolecules, make sure all selected molecules are in the reference data - if currentUserInput.measuredReferenceYorN == 'no': #If not making a mixed reference pattern, then use the regular moleculesNames object for comparison. + if currentUserInput.tuningCorrection == 'no': #If not making a mixed reference pattern, then use the regular moleculesNames object for comparison. parse.compareElementsBetweenLists(currentUserInput.chosenMoleculesNames,currentUserInput.moleculesNames,'chosenMolecules','Molecules from Reference Data') - if (currentUserInput.measuredReferenceYorN == 'yes') and (currentUserInput.createMixedTuningPattern == True):#If using a making a mixed reference pattern, check the extended moleculesNames list. + if (currentUserInput.tuningCorrection == 'yes') and (currentUserInput.createMixedTuningPattern == True):#If using a making a mixed reference pattern, check the extended moleculesNames list. currentUserInput.moleculesNamesExtended = parse.stripListOfStrings(currentUserInput.moleculesNamesExtended) parse.compareElementsBetweenLists(currentUserInput.chosenMoleculesNames,currentUserInput.moleculesNamesExtended,'chosenMolecules','Molecules from Reference Data') elif currentUserInput.specificMolecules == 'no': #Otherwise use all molecules - if currentUserInput.measuredReferenceYorN == 'no': #If not making a mixed reference pattern, then use the regular moleculesNames object for comparison. + if currentUserInput.tuningCorrection == 'no': #If not making a mixed reference pattern, then use the regular moleculesNames object for comparison. currentUserInput.moleculesNames = parse.stripListOfStrings(list(currentUserInput.moleculesNames)) chosenMoleculesForParsing = copy.deepcopy(currentUserInput.moleculesNames) - if (currentUserInput.measuredReferenceYorN == 'yes') and (currentUserInput.createMixedTuningPattern == False):#If using tuning corrector and not making a mixed reference pattern, then we make the same chosenMoleculesForParsing as the normal case. + if (currentUserInput.tuningCorrection == 'yes') and (currentUserInput.createMixedTuningPattern == False):#If using tuning corrector and not making a mixed reference pattern, then we make the same chosenMoleculesForParsing as the normal case. chosenMoleculesForParsing = copy.deepcopy(currentUserInput.moleculesNames) - if (currentUserInput.measuredReferenceYorN == 'yes') and (currentUserInput.createMixedTuningPattern == True):#If using a making a mixed reference pattern, check the extended moleculesNames list. + if (currentUserInput.tuningCorrection == 'yes') and (currentUserInput.createMixedTuningPattern == True):#If using a making a mixed reference pattern, check the extended moleculesNames list. currentUserInput.moleculesNamesExtended = parse.stripListOfStrings(currentUserInput.moleculesNamesExtended) chosenMoleculesForParsing = copy.deepcopy(currentUserInput.moleculesNamesExtended) @@ -127,7 +127,7 @@ def parseUserInput(currentUserInput): currentUserInput.scaleRawDataFactor = float(currentUserInput.scaleRawDataFactor) #scaleRawDataFactor is a float #Reference Correction Changer - parse.strCheck(currentUserInput.measuredReferenceYorN,'measuredReferenceYorN') + parse.strCheck(currentUserInput.tuningCorrection,'tuningCorrection') #The below two variables are no longer strings. They are now lists with two elements, each of which are strings. TODO: Change their names to referenceFileExistingTuningAndForm and referenceFileDesiredTuningAndForm #parse.strCheck(currentUserInput.referenceFileExistingTuningAndForm,'referenceFileExistingTuningAndForm') #parse.strCheck(currentUserInput.referenceFileDesiredTuningAndForm,'referenceFileDesiredTuningAndForm') @@ -145,11 +145,11 @@ def parseUserInput(currentUserInput): parse.compareElementsBetweenLists(currentUserInput.rpcMoleculesToChange,chosenMoleculesForParsing,'rpcMoleculesToChange','chosenMolecules') #Reference Mass Fragmentation Threshold - parse.strCheck(currentUserInput.minimalReferenceValue,'minimalReferenceValue') - if currentUserInput.minimalReferenceValue == 'yes': #If using reference mass fragmentation threshold - currentUserInput.referenceValueThreshold = parse.listCast(currentUserInput.referenceValueThreshold) #reference value threshold is a list + parse.strCheck(currentUserInput.applyReferenceMassFragmentsThresholds,'applyReferenceMassFragmentsThresholds') + if currentUserInput.applyReferenceMassFragmentsThresholds == 'yes': #If using reference mass fragmentation threshold + currentUserInput.referenceMassFragmentFilterThreshold = parse.listCast(currentUserInput.referenceMassFragmentFilterThreshold) #reference value threshold is a list #The length of the reference value thresholds needs to be the same length as the number of molecules - currentUserInput.referenceValueThreshold = parse.parallelVectorize(currentUserInput.referenceValueThreshold,len(chosenMoleculesForParsing)) + currentUserInput.referenceMassFragmentFilterThreshold = parse.parallelVectorize(currentUserInput.referenceMassFragmentFilterThreshold,len(chosenMoleculesForParsing)) currentUserInput.referenceSignificantFragmentThresholds = parse.parallelVectorize(currentUserInput.referenceSignificantFragmentThresholds,len(chosenMoleculesForParsing)) #Data Threshold Filter @@ -179,9 +179,9 @@ def parseUserInput(currentUserInput): parse.compareElementsBetweenLists(currentUserInput.dataSmootherHeadersToConfineTo,chosenMassFragmentsForParsing,'dataSmootherHeadersToConfineTo','chosenMolecules') #Raw Signal Threshold - parse.strCheck(currentUserInput.rawSignalThresholdMethod,'rawSignalThresholdMethod') + parse.strCheck(currentUserInput.applyRawSignalThresholds,'applyRawSignalThresholds') parse.strCheck(currentUserInput.rawSignalThresholdLimit,'rawSignalThresholdLimit') - if currentUserInput.rawSignalThresholdMethod == 'yes': #If using rawSignalThresholdMethod + if currentUserInput.applyRawSignalThresholds == 'yes': #If using applyRawSignalThresholds #raw signal threshold value, sensitivity value, raw signal threshold divider, and raw signal threshold limit percent are all lists currentUserInput.rawSignalThresholdValue = parse.listCast(currentUserInput.rawSignalThresholdValue) currentUserInput.sensitivityThresholdValue = parse.listCast(currentUserInput.sensitivityThresholdValue) @@ -228,10 +228,10 @@ def parseUserInput(currentUserInput): if currentUserInput.TSC_List_Type == 'MultipleReferencePatterns': #If using multiple reference patterns then the user must input 1 value to use for each reference file or a value for each reference file #Then parallelize these variables to have the same length as number of reference patterns - currentUserInput.moleculesTSC_List = parse.parallelVectorize(currentUserInput.moleculesTSC_List,len(currentUserInput.referenceFileNamesList)) - currentUserInput.moleculeSignalTSC_List = parse.parallelVectorize(currentUserInput.moleculeSignalTSC_List,len(currentUserInput.referenceFileNamesList)) - currentUserInput.massNumberTSC_List = parse.parallelVectorize(currentUserInput.massNumberTSC_List,len(currentUserInput.referenceFileNamesList)) - currentUserInput.moleculeConcentrationTSC_List = parse.parallelVectorize(currentUserInput.moleculeConcentrationTSC_List,len(currentUserInput.referenceFileNamesList)) + currentUserInput.moleculesTSC_List = parse.parallelVectorize(currentUserInput.moleculesTSC_List,len(currentUserInput.referencePatternsFileNamesList)) + currentUserInput.moleculeSignalTSC_List = parse.parallelVectorize(currentUserInput.moleculeSignalTSC_List,len(currentUserInput.referencePatternsFileNamesList)) + currentUserInput.massNumberTSC_List = parse.parallelVectorize(currentUserInput.massNumberTSC_List,len(currentUserInput.referencePatternsFileNamesList)) + currentUserInput.moleculeConcentrationTSC_List = parse.parallelVectorize(currentUserInput.moleculeConcentrationTSC_List,len(currentUserInput.referencePatternsFileNamesList)) #NOTE: vectorizing these lists for 'SeparateMoleculesFactors' occurs in RatioFinder #Output Files @@ -268,7 +268,7 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t print("Incompatible choice detected: forcing SLSUniqueExport to no.") if 'implicitSLScorrection' in UserChoices['dataAnalysisMethods']: - if UserChoices['minimalReferenceValue']['on'] =='no': #Turn off SLS implicit if the mnimalReferenceValue is not being used. + if UserChoices['applyReferenceMassFragmentsThresholds']['on'] =='no': #Turn off SLS implicit if the mnimalReferenceValue is not being used. UserChoices['dataAnalysisMethods']['implicitSLScorrection'] = False if UserChoices['dataAnalysisMethods']['implicitSLScorrection'] == True: if (UserChoices['dataAnalysisMethods']['uniqueOrCommon'] != 'unique'): @@ -276,45 +276,45 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t UserChoices['dataAnalysisMethods']['implicitSLScorrection'] = False print("Incompatible choice detected: implicitSLScorrection only works with sls unique. forcing implicitSLScorrection to False.") - if UserChoices['measuredReferenceYorN']['on'] == 'no': #forcing the standard and external reference files to blank if measuredReferenceYorN is not on. - UserChoices['measuredReferenceYorN']['referenceFileStandardTuningAndForm'] = [] - UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] = [] + if UserChoices['tuningCorrection']['on'] == 'no': #forcing the standard and external reference files to blank if tuningCorrection is not on. + UserChoices['tuningCorrection']['referenceFileStandardTuningAndForm'] = [] + UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] = [] - if 'referenceFileStandardTuningAndForm' not in UserChoices['measuredReferenceYorN']: - UserChoices['measuredReferenceYorN']['referenceFileStandardTuningAndForm'] = [] #set to default if not present, for backwards compatibility, to make sure old unit tests and analyses work. - if 'referenceFileExistingTuningAndForm' not in UserChoices['measuredReferenceYorN']: - UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] = [] #set to default if not present, for backwards compatibility, to make sure old unit tests and analyses work. + if 'referenceFileStandardTuningAndForm' not in UserChoices['tuningCorrection']: + UserChoices['tuningCorrection']['referenceFileStandardTuningAndForm'] = [] #set to default if not present, for backwards compatibility, to make sure old unit tests and analyses work. + if 'referenceFileExistingTuningAndForm' not in UserChoices['tuningCorrection']: + UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] = [] #set to default if not present, for backwards compatibility, to make sure old unit tests and analyses work. - if ((UserChoices['measuredReferenceYorN']['referenceFileStandardTuningAndForm'] == []) and (UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] == [])): #This If statement sets createMixedTuningPattern to False if referenceFileStandardTuningAndForm pattern and referenceFileExistingTuningAndForm are both populated with a blank list. - UserChoices['measuredReferenceYorN']['createMixedTuningPattern'] = False + if ((UserChoices['tuningCorrection']['referenceFileStandardTuningAndForm'] == []) and (UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] == [])): #This If statement sets createMixedTuningPattern to False if referenceFileStandardTuningAndForm pattern and referenceFileExistingTuningAndForm are both populated with a blank list. + UserChoices['tuningCorrection']['createMixedTuningPattern'] = False print("No Standard or External tuning pattern. Forcing createMixedTuningPattern to False.") #Will make sure that any referenceFileStandardTuning and referenceFileExistingTuning filenames have the same extension as the original reference pattern, and exit if that condition is not met. #First get the regular reference filename extension. - if '.csv' in UserChoices['inputFiles']['referenceFileNamesList'][0]: + if '.csv' in UserChoices['inputFiles']['referencePatternsFileNamesList'][0]: referenceFileExtension = 'csv' - if '.tsv' in UserChoices['inputFiles']['referenceFileNamesList'][0]: + if '.tsv' in UserChoices['inputFiles']['referencePatternsFileNamesList'][0]: referenceFileExtension = 'tsv' #Make sure all of the reference files match each other: - for referenceFileName in UserChoices['inputFiles']['referenceFileNamesList']: + for referenceFileName in UserChoices['inputFiles']['referencePatternsFileNamesList']: if referenceFileExtension not in referenceFileName: - print("ERROR: All filenamese in referenceFileNamesList must have the same extension."); sys.exit() - if len (UserChoices['measuredReferenceYorN']['referenceFileStandardTuningAndForm']) > 0: - if referenceFileExtension not in UserChoices['measuredReferenceYorN']['referenceFileStandardTuningAndForm'][0]: - print("ERROR: All filenamese in referenceFileNamesList and referenceFileStandardTuningAndForm must have the same extension."); sys.exit() - if len (UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm']) > 0: - if referenceFileExtension not in UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'][0]: - print("ERROR: All filenamese in referenceFileNamesList and referenceFileExistingTuningAndForm must have the same extension."); sys.exit() + print("ERROR: All filenamese in referencePatternsFileNamesList must have the same extension."); sys.exit() + if len (UserChoices['tuningCorrection']['referenceFileStandardTuningAndForm']) > 0: + if referenceFileExtension not in UserChoices['tuningCorrection']['referenceFileStandardTuningAndForm'][0]: + print("ERROR: All filenamese in referencePatternsFileNamesList and referenceFileStandardTuningAndForm must have the same extension."); sys.exit() + if len (UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm']) > 0: + if referenceFileExtension not in UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'][0]: + print("ERROR: All filenamese in referencePatternsFileNamesList and referenceFileExistingTuningAndForm must have the same extension."); sys.exit() #Filling settings variables dictionary so that variables can be populated from it. This is basically a mapping. See user input file for details. #The original variable names were single variables. Now, we are using a dictionary type structure (right side of equal signs) so they are being mapped to the single variables (left side of equal sign) #TODO: Consider if G.iterativeAnalysis = True or False should be changed to G.IterativeAnalysis_On or something like that, but will break backwards compatibility unless special care is taken. #Also to consider if other variables should change to have names like G.specificMolecules_chosenMoleculesNames. Probably not necessary since we have the dictionaries. SettingsVDictionary = {} - SettingsVDictionary['referenceFileNamesList'] = UserChoices['inputFiles']['referenceFileNamesList'] - SettingsVDictionary['referenceFormsList'] = UserChoices['inputFiles']['referenceFormsList'] + SettingsVDictionary['referencePatternsFileNamesList'] = UserChoices['inputFiles']['referencePatternsFileNamesList'] + SettingsVDictionary['referencePatternsFormsList'] = UserChoices['inputFiles']['referencePatternsFormsList'] SettingsVDictionary['referencePatternTimeRanges'] = UserChoices['inputFiles']['referencePatternTimeRanges'] - SettingsVDictionary['collectedFileName'] = UserChoices['inputFiles']['collectedFileName'] + SettingsVDictionary['dataToAnalyzeFileName'] = UserChoices['inputFiles']['dataToAnalyzeFileName'] SettingsVDictionary['ionizationDataFileName'] = UserChoices['inputFiles']['ionizationDataFileName'] SettingsVDictionary['preProcessing'] = UserChoices['preProcessing']['on'] @@ -333,7 +333,7 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t SettingsVDictionary['iterationSuffix'] = UserChoices['iterativeAnalysis']['iterationSuffix'] SettingsVDictionary['unusedMolecules'] = UserChoices['iterativeAnalysis']['unusedMolecules'] SettingsVDictionary['oldReferenceFileName'] = UserChoices['iterativeAnalysis']['oldReferenceFileName'] - SettingsVDictionary['oldCollectedFileName'] = UserChoices['iterativeAnalysis']['oldCollectedFileName'] + SettingsVDictionary['oldDataToAnalyzeFileName'] = UserChoices['iterativeAnalysis']['oldDataToAnalyzeFileName'] SettingsVDictionary['nextRefFileName'] = UserChoices['iterativeAnalysis']['nextRefFileName'] SettingsVDictionary['nextExpFileName'] = UserChoices['iterativeAnalysis']['nextExpFileName'] SettingsVDictionary['iterationNumber'] = UserChoices['iterativeAnalysis']['iterationNumber'] @@ -375,47 +375,47 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t SettingsVDictionary['scaleRawDataOption'] = UserChoices['scaleRawDataYorN']['scaleRawDataOption'] SettingsVDictionary['scaleRawDataFactor'] = UserChoices['scaleRawDataYorN']['scaleRawDataFactor'] - SettingsVDictionary['measuredReferenceYorN'] = UserChoices['measuredReferenceYorN']['on'] + SettingsVDictionary['tuningCorrection'] = UserChoices['tuningCorrection']['on'] - SettingsVDictionary['referenceFileStandardTuningAndForm'] = UserChoices['measuredReferenceYorN']['referenceFileStandardTuningAndForm'] - SettingsVDictionary['referenceFileExistingTuningAndForm'] = UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] + SettingsVDictionary['referenceFileStandardTuningAndForm'] = UserChoices['tuningCorrection']['referenceFileStandardTuningAndForm'] + SettingsVDictionary['referenceFileExistingTuningAndForm'] = UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] - if 'tuningCorrectPatternInternalVsExternal' in UserChoices['measuredReferenceYorN']: - SettingsVDictionary['tuningCorrectPatternInternalVsExternal'] = UserChoices['measuredReferenceYorN']['tuningCorrectPatternInternalVsExternal'] - #if UserChoices['measuredReferenceYorN']['tuningCorrectPatternInternalVsExternal'].lower() == 'internal': #Create a warning if internal & createMixedTuningPattern are both chosen. - #if 'createMixedTuningPattern' in UserChoices['measuredReferenceYorN']: - #if UserChoices['measuredReferenceYorN']['createMixedTuningPattern'] == True: + if 'tuningCorrectPatternInternalVsExternal' in UserChoices['tuningCorrection']: + SettingsVDictionary['tuningCorrectPatternInternalVsExternal'] = UserChoices['tuningCorrection']['tuningCorrectPatternInternalVsExternal'] + #if UserChoices['tuningCorrection']['tuningCorrectPatternInternalVsExternal'].lower() == 'internal': #Create a warning if internal & createMixedTuningPattern are both chosen. + #if 'createMixedTuningPattern' in UserChoices['tuningCorrection']: + #if UserChoices['tuningCorrection']['createMixedTuningPattern'] == True: #print("Warning: createMixedTuningPattern is on and tuningCorrectPatternInternalVsExternal is set to internal. This is not the typical set of choices.") else: #If not provided, then populate with the default for backwards compatibility. SettingsVDictionary['tuningCorrectPatternInternalVsExternal'] = 'External' - if 'createMixedTuningPattern' not in UserChoices['measuredReferenceYorN']: - UserChoices['measuredReferenceYorN']['createMixedTuningPattern'] = True - SettingsVDictionary['createMixedTuningPattern'] = UserChoices['measuredReferenceYorN']['createMixedTuningPattern'] - SettingsVDictionary['referenceFileExistingTuningAndForm'] = UserChoices['measuredReferenceYorN']['referenceFileExistingTuningAndForm'] - SettingsVDictionary['referenceFileDesiredTuningAndForm'] = UserChoices['measuredReferenceYorN']['referenceFileDesiredTuningAndForm'] - SettingsVDictionary['referenceCorrectionCoefficients'] = UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients'] + if 'createMixedTuningPattern' not in UserChoices['tuningCorrection']: + UserChoices['tuningCorrection']['createMixedTuningPattern'] = True + SettingsVDictionary['createMixedTuningPattern'] = UserChoices['tuningCorrection']['createMixedTuningPattern'] + SettingsVDictionary['referenceFileExistingTuningAndForm'] = UserChoices['tuningCorrection']['referenceFileExistingTuningAndForm'] + SettingsVDictionary['referenceFileDesiredTuningAndForm'] = UserChoices['tuningCorrection']['referenceFileDesiredTuningAndForm'] + SettingsVDictionary['referenceCorrectionCoefficients'] = UserChoices['tuningCorrection']['referenceCorrectionCoefficients'] if 'implicitSLSRecursion' not in UserChoices['dataAnalysisMethods']: #This variable is a work in progress. This if statement is to prevent errors thats created by old Unit Test. UserChoices['dataAnalysisMethods']['implicitSLSRecursion'] = 0 SettingsVDictionary['implicitSLSRecursion'] = UserChoices['dataAnalysisMethods']['implicitSLSRecursion'] #to make sure old unit tests and analyses work. - if 'referenceFileStandardTuningAndForm' in UserChoices['measuredReferenceYorN']: - SettingsVDictionary['referenceFileStandardTuningAndForm'] = UserChoices['measuredReferenceYorN']['referenceFileStandardTuningAndForm'] + if 'referenceFileStandardTuningAndForm' in UserChoices['tuningCorrection']: + SettingsVDictionary['referenceFileStandardTuningAndForm'] = UserChoices['tuningCorrection']['referenceFileStandardTuningAndForm'] else: SettingsVDictionary['referenceFileStandardTuningAndForm'] = [] try: #to make sure old unit tests and analyses work. - #if 'tuningCorrectorGasMixtureMoleculeNames' in UserChoices['measuredReferenceYorN'].keys(): - SettingsVDictionary['tuningCorrectorGasMixtureMoleculeNames'] = UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames'] + #if 'tuningCorrectorGasMixtureMoleculeNames' in UserChoices['tuningCorrection'].keys(): + SettingsVDictionary['tuningCorrectorGasMixtureMoleculeNames'] = UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames'] except: #to make sure old unit tests work. SettingsVDictionary['tuningCorrectorGasMixtureMoleculeNames'] = [] - UserChoices['measuredReferenceYorN']['tuningCorrectorGasMixtureMoleculeNames'] = [] + UserChoices['tuningCorrection']['tuningCorrectorGasMixtureMoleculeNames'] = [] try: - SettingsVDictionary['referenceCorrectionCoefficients_cov'] = UserChoices['measuredReferenceYorN']['referenceCorrectionCoefficients_cov'] + SettingsVDictionary['referenceCorrectionCoefficients_cov'] = UserChoices['tuningCorrection']['referenceCorrectionCoefficients_cov'] except: SettingsVDictionary['referenceCorrectionCoefficients_cov'] = [0,0,0] #TODO: This is to keep some old unit tests running. Ideally they should be fixed. SettingsVDictionary['extractReferencePatternFromDataOption'] = UserChoices['extractReferencePatternFromDataOption']['on'] @@ -423,9 +423,9 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t SettingsVDictionary['rpcTimeRanges'] = UserChoices['extractReferencePatternFromDataOption']['rpcTimeRanges'] SettingsVDictionary['rpcMoleculesToChangeMF'] = UserChoices['extractReferencePatternFromDataOption']['rpcMoleculesToChangeMF'] - SettingsVDictionary['minimalReferenceValue'] = UserChoices['minimalReferenceValue']['on'] - SettingsVDictionary['referenceValueThreshold'] = UserChoices['minimalReferenceValue']['referenceValueThreshold'] - SettingsVDictionary['referenceSignificantFragmentThresholds'] = UserChoices['minimalReferenceValue']['referenceSignificantFragmentThresholds'] + SettingsVDictionary['applyReferenceMassFragmentsThresholds'] = UserChoices['applyReferenceMassFragmentsThresholds']['on'] + SettingsVDictionary['referenceMassFragmentFilterThreshold'] = UserChoices['applyReferenceMassFragmentsThresholds']['referenceMassFragmentFilterThreshold'] + SettingsVDictionary['referenceSignificantFragmentThresholds'] = UserChoices['applyReferenceMassFragmentsThresholds']['referenceSignificantFragmentThresholds'] SettingsVDictionary['lowerBoundThresholdChooser'] = UserChoices['lowerBoundThresholdChooser']['on'] SettingsVDictionary['massesToLowerBoundThresholdFilter'] = UserChoices['lowerBoundThresholdChooser']['massesToLowerBoundThresholdFilter'] @@ -439,12 +439,12 @@ def userInputValidityCheck(UserChoices): #Right now, currentUserInputModule is t SettingsVDictionary['dataSmootherHeadersToConfineTo'] = UserChoices['dataSmootherYorN']['dataSmootherHeadersToConfineTo'] SettingsVDictionary['polynomialOrder'] = UserChoices['dataSmootherYorN']['polynomialOrder'] - SettingsVDictionary['rawSignalThresholdMethod'] = UserChoices['rawSignalThresholdMethod']['on'] - SettingsVDictionary['rawSignalThresholdValue'] = UserChoices['rawSignalThresholdMethod']['rawSignalThresholdValue'] - SettingsVDictionary['sensitivityThresholdValue'] = UserChoices['rawSignalThresholdMethod']['sensitivityThresholdValue'] - SettingsVDictionary['rawSignalThresholdDivider'] = UserChoices['rawSignalThresholdMethod']['rawSignalThresholdDivider'] - SettingsVDictionary['rawSignalThresholdLimit'] = UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimit'] - SettingsVDictionary['rawSignalThresholdLimitPercent'] = UserChoices['rawSignalThresholdMethod']['rawSignalThresholdLimitPercent'] + SettingsVDictionary['applyRawSignalThresholds'] = UserChoices['applyRawSignalThresholds']['on'] + SettingsVDictionary['rawSignalThresholdValue'] = UserChoices['applyRawSignalThresholds']['rawSignalThresholdValue'] + SettingsVDictionary['sensitivityThresholdValue'] = UserChoices['applyRawSignalThresholds']['sensitivityThresholdValue'] + SettingsVDictionary['rawSignalThresholdDivider'] = UserChoices['applyRawSignalThresholds']['rawSignalThresholdDivider'] + SettingsVDictionary['rawSignalThresholdLimit'] = UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimit'] + SettingsVDictionary['rawSignalThresholdLimitPercent'] = UserChoices['applyRawSignalThresholds']['rawSignalThresholdLimitPercent'] SettingsVDictionary['calculateUncertaintiesInConcentrations'] = UserChoices['uncertainties']['calculateUncertaintiesInConcentrations'] SettingsVDictionary['referenceFileUncertainties'] = UserChoices['uncertainties']['referenceFileUncertainties']