//------------------------------------------------------------------------------------------------------------ PMF_v3_00 13 May 2017 //------------------------------------------------------------------------------------------------------------ Donna Sueper fixed a serious bug having to do with step 6 of the Prep tab of the PMF_PerformCalc_panel. This bug was emailed to her by Sahil Bhandari, a grad student working with Leah Hildebrandt Ruiz at University of Texas. There is a serious bug having to do with step 6 of the Prep tab of the PMF_PerformCalc_panel. This bug occurs when the user presses the "Downweight weak, bad m/zs" button and chooses to 'Remove' bad variables (default setting) and bad variables exist. The bug is serious in that some columns in the data matrix *may have been overwritten* and hence PMF results messed up. But it is not serious in that it is very unlikely that any scientific conclusions will be upended. In Igor 6.x and PET versions 2.07Z and younger this bug will not generate an obvious error (even though this bug/error occurred!). If you are using Igor 7 OR are using PET versions 2.08-2.09Z or higher, you will get a Wavemetrics generated out-of-index error. The bug is that the code will incorrectly overwrite the right-most columns of the data matrix (corresponding to the highest m/z if the matrix columns are in increasing m/z order (default for AMS Org, HROrg, etc). The number of right-most columns that are incorrectly overwritten is dependent on the SNR (signal to noise ratio) and the column location of 'bad' variables. The more 'bad' variables were flagged, the larger the number of columns were incorrectly overwritten. The behavior is an 'out-of-index' error; in Igor 6 or PET versions < 3.00 the overwritten (right-most) columns begin to become (incorrectly) identical. Because the right-most columns generally correspond to signal with relatively little variability, the net effect on PMF results is likely minimal. If you combined any other signal (i.e. inorganic) by appending columns to the right of the main organic matrix, it is likely these right-most (i.e. inorganic) signals are compromised. Note that it is only the data matrix that is potentially compromised. The error matrix was 'correctly' generated. However, if the data matrix is compromised, then the problem is that the right-most, last (bad) columns are paired with semi-random errors and PMF is trying to make sense of it. Who should check their PMF results? Anyone who analyzed data using PET's code for automatic downweighting of bad variables in Igor 6, or anyone using code older than 2.08. For your reference PET version, 2.06 was released in spring 2015, and this was the first code to incorporate all the error preparation tasks for the AMS. If you used PET 2.08+ OR used Igor 7+ to perform the error preparation steps, you are fine. How can you tell if your previously analyzed PMF results were compromised? Several methods are available: (A) In the history window search for the words "bad/weak columns" For example // Removed 3 bad/weak columns. in the history window indicates that in step 6, 3 columns were removed. In this case, the right-most 3 columns in the data matrix are possibly incorrect. OR (B) In the main PMF evaluation panel, select the largest specie (for HR ions) or largest UMR m/z that was analyzed. Notice the time series graph of this specie (or m/z) titled "Reconst., measured signal for current species", and the top-most, purple trace. Now select the second largest specie or m/z. Did the purple trace change? If it did not, this is an indication that the data matrix is compromised. What should I do if my PMF results were compromised? It is likely that your scientific conclusions are not faulty. But the best thing to do is to redo the PMF analysis with PET version 2.08 or higher. In the first tab you can use the yellow "Clear error prep work' button and start over without having to reload in the original data and error matricies. As always if you have problems or concernts let me know, //------------------------------------------------------------------------------------------------------------ PMF_v2_09B 31 May 2017 Harald Stark added some code for HR CIMS data. Donna Sueper fixed some out of range errors and changed the #pragma rtGlobals=3 //------------------------------------------------------------------------------------------------------------ PMF_SetupPanel_v2_08D 11 Apr 2016 Code fixed a small bug whereby the initially skipped parameter was set to 1 when varying fpeak. Added code for some AMS HR calculations like O/C. PMF_SetupPanel_v2_08A 31 Aug 2015 Code now includes all parts for calculating elemental ratios and HR family grouping mass spectra. These calculations are optional and are performed at the "View Results" step. If the HR radio button is selected, (and not the UMR radio button) the calculations are performed. Default family groupings are used unless the user imports custom family definitions. New ipf for v2.06 that contains the functions for the "Setup panel" used to run PMF. All functions that are part of actually *running* PMF remain in PMF_Execution_vX.XX.ipf Some were moved from PMF_Execution_v2_0x.ipf For most prep steps, button function is a pass-through to the appropriate function in PMF_ErrPrep_AMS_v2_x.ipf Columns to downweight (e.g., m/z-44-related peaks) can be identified by number (unit-res) or by text in amusWv_txt (high res) One exception is pmfPrep_butt_dnwt44, which finds the indices in the amus or amus_txt wave --------------------- PMF_ErrPrep_AMS_v2_6.ipf 14 Dec 2012 Changes made by Ingrid Ulbrich for integration into PMF_PerformCalc_Panel All changes made start with comment //imu2.6 Made all functions that modify the error matrix return a string with the name of the new error matrix name Updated pmf_ams_deleteNaNs_mxWvs so that it takes more input waves (including amusTxtWv), can delete columns of zeros and isotopes in HR data Updated pmf_err_SNRwv to draw user-selected bad/weak SNR levels on graph Updated pmf_err_DwntWeakColumns so that it can also treat "bad" columns, including deleting them Changed pmf_err_dnwt44peaks so that it takes a wave with the *indices* of the columns to be downweighted. Identification of the columns happens in pmfPrep_butt_dnwt44 in PMF_SetupPanel_v2_0x.ipf --------------------- PMF_Exectution_v2.06 14 Dec 2012 Changes made by Ingrid Ulbrich to do some feature updates. All changes made start with comment //imu2.06 in Execution.ipf: Significant reorganization of code in ipfs. Made new PMF_SetupPanel ipf that contains all functions to do the first panel that takes input for PMF. All execution functions remain in this ipf. Functions that are really part of error prep (pmf_ams_deleteNaNs_mxWvs, etc.) moved to PMF_ErrPrep. --------------------- PMF_ViewResults_v2.06 14 Dec 2012 Changes made by Ingrid Ulbrich to do some feature updates. All changes made start with comment //imu2.06 in ViewResults.ipf: moved storage of diurnal waves to pmfDF:diurnals (were all in root:pmf_plot_globals:diurnals) now only waves to plot are in root:pmf_plot_globals:diurnals --------------------- PMF_Scatter_v2.06 14 Dec 2012 No changes in this version