From: Matthew C. <mat...@va...> - 2008-03-25 15:13:19
|
Hi all, To reiterate, I really want to see chromatograms supported in mzML because otherwise it will be impossible to get instant/random access to the most useful SRM/MRM views without first coming up with a proprietary format to cache them. I'll just get something out there to look at before the conference call. I haven't gotten it done until now because I'm not decided whether SRM/MRM-derived chromatograms (total ion chromatograms and selected/extracted ion chromatograms) should be treated differently than other scan modes' TICs and SICs. I think that they might be treated (termed) differently because a SRM/MRM-derived chromatogram has some slightly different markup that should always go with it (i.e. the transition precursor m/z and for SICs, the product m/z as well). The example I've come up with here is based on the SRM/MRM tiny example. If there is only a single transition in the run (one precursor m/z and one product m/z) then I propose 3 chromatograms: a TIC for the entire run, a TIC for the precursor m/z (which is also a SIC, argh!), and a SIC for the product m/z. In other words, the entire run has a TIC, every precursor m/z in a SRM/MRM run has a TIC, and every transition (precursor m/z paired with a product m/z) has a SIC. I propose this format for storing SRM/MRM files despite the fact that some vendors proprietary formats seem to store them as individual scans. At US HUPO I talked with Darren about how Thermo's Qual Browser gets such quick views of the SRM/MRM chromatograms (especially the TIC) when if only the scans are present, it would have to iterate through 50000 or more scans (typical of an SRM/MRM file) to build that view. I came to the conclusion that Thermo's RAW files probably store the TIC of the entire run for quick access instead of rebuilding it. I'm less certain about whether this is true for the individual transitions (because there is some delay when selecting a view of a precursor TIC or transition SIC), but regardless I think it makes much more sense to store these data as chromatograms instead of (or even in addition to) scans. This is even more true in the XML world where markup on each tiny SRM/MRM spectrum will be very expensive. I envision something like: <run id="msRun01" instrumentRef="TSQ Quantum" sampleRef="1" startTimeStamp="2007-06-27T15:23:45.00035"> <sourceFileRefList count="1"> <sourceFileRef ref="1"/> </sourceFileRefList> <chromatogramList count="3"> <chromatogram id="TIC" index="1" arrayLength="2"> <cvParam cvLabel="MS" accession="MS:1000xxx" name="total ion chromatogram" value=""/> <binaryDataArray encodedLength="123"> <cvParam cvLabel="MS" accession="MS:1000523" name="32-bit float" value=""/> <cvParam cvLabel="MS" accession="MS:1000576" name="no compression" value=""/> <cvParam cvLabel="MS" accession="MS:1000xxx" name="time array" value=""/> <binary>HereAreTheScanTimesForEachSpectrum</binary> </binaryDataArray> <binaryDataArray encodedLength="123"> <cvParam cvLabel="MS" accession="MS:1000523" name="32-bit float" value=""/> <cvParam cvLabel="MS" accession="MS:1000576" name="no compression" value=""/> <cvParam cvLabel="MS" accession="MS:1000515" name="intensity array" value=""/> <binary>HereAreTheTotalIntensitiesForEachSpectrum</binary> </binaryDataArray> </chromatogram> <chromatogram id="Transition TIC: 567.8" index="2" arrayLength="2"> <cvParam cvLabel="MS" accession="MS:1000xxx" name="SRM total ion chromatogram" value=""/> <cvParam cvLabel="MS" accession="MS:1000xxx" name="SRM precursor m/z" value="567.8"/> <binaryDataArray encodedLength="123"> <cvParam cvLabel="MS" accession="MS:1000523" name="32-bit float" value=""/> <cvParam cvLabel="MS" accession="MS:1000576" name="no compression" value=""/> <cvParam cvLabel="MS" accession="MS:1000xxx" name="time array" value=""/> <binary>HereAreTheScanTimesForEachSpectrumForThisPrecursor</binary> </binaryDataArray> <binaryDataArray encodedLength="123"> <cvParam cvLabel="MS" accession="MS:1000523" name="32-bit float" value=""/> <cvParam cvLabel="MS" accession="MS:1000576" name="no compression" value=""/> <cvParam cvLabel="MS" accession="MS:1000515" name="intensity array" value=""/> <binary>HereAreTheTotalIntensitiesForEachSpectrumForThisPrecursor</binary> </binaryDataArray> </chromatogram> <chromatogram id="Transition SIC: 567.8 -> 456.7" index="3" arrayLength="2"> <cvParam cvLabel="MS" accession="MS:1000xxx" name="SRM selected ion chromatogram" value=""/> <cvParam cvLabel="MS" accession="MS:1000xxx" name="SRM precursor m/z" value="567.8"/> <cvParam cvLabel="MS" accession="MS:1000xxx" name="SRM product m/z" value="456.7"/> <binaryDataArray encodedLength="123"> <cvParam cvLabel="MS" accession="MS:1000523" name="32-bit float" value=""/> <cvParam cvLabel="MS" accession="MS:1000576" name="no compression" value=""/> <cvParam cvLabel="MS" accession="MS:1000xxx" name="time array" value=""/> <binary>HereAreTheScanTimesForEachSpectrumForThisTransition</binary> </binaryDataArray> <binaryDataArray encodedLength="123"> <cvParam cvLabel="MS" accession="MS:1000523" name="32-bit float" value=""/> <cvParam cvLabel="MS" accession="MS:1000576" name="no compression" value=""/> <cvParam cvLabel="MS" accession="MS:1000515" name="intensity array" value=""/> <binary>HereAreTheTotalIntensitiesForEachSpectrumForThisTransition</binary> </binaryDataArray> </chromatogram> </chromatogramList> <spectrumList count="2"> <!-- ... --> </spectrumList> </run> |