Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 24 additions & 7 deletions pwiz/analysis/spectrum_processing/SpectrumList_IonMobility.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ SpectrumList_IonMobility::SpectrumList_IonMobility(const msdata::SpectrumListPtr
{
units_ = IonMobilityUnits::none;
has_mzML_combined_ion_mobility_ = false;
// isPassEntireDiaPasefFrame_ = false;
if (dynamic_cast<detail::SpectrumList_Agilent*>(&*innermost()) != NULL)
{
equipment_ = IonMobilityEquipment::AgilentDrift;
Expand All @@ -66,6 +67,7 @@ SpectrumList_IonMobility::SpectrumList_IonMobility(const msdata::SpectrumListPtr
{
equipment_ = IonMobilityEquipment::BrukerTIMS;
units_ = IonMobilityUnits::inverse_reduced_ion_mobility_Vsec_per_cm2;
//isPassEntireDiaPasefFrame_ = (dynamic_cast<detail::SpectrumList_Bruker*>(&*innermost()))->isPassEntireDiaPasefFrame();
}
}
else if (dynamic_cast<detail::SpectrumList_Thermo*>(&*innermost()) != NULL)
Expand Down Expand Up @@ -110,19 +112,24 @@ SpectrumList_IonMobility::SpectrumList_IonMobility(const msdata::SpectrumListPtr
units_ = IonMobilityUnits::drift_time_msec;
for (const auto& binaryArray : spectrum->binaryDataArrayPtrs)
{
CVID ionMobilityArrayType = binaryArray->cvParamChild(MS_ion_mobility_array).cvid;
if (ionMobilityArrayType == CVID_Unknown)
if (binaryArray->cvParamChild(MS_scanning_quadrupole_position_lower_bound_m_z_array).cvid != CVID_Unknown)
{
//isPassEntireDiaPasefFrame_ = true;
continue;
}
CVID ionMobilityArrayType = binaryArray->cvParamChild(MS_ion_mobility_array).cvid;
if (ionMobilityArrayType == CVID_Unknown)
continue;

if (ionMobilityArrayType == MS_raw_ion_mobility_array || ionMobilityArrayType == MS_mean_ion_mobility_array)
{
if (ionMobilityArrayType == MS_raw_ion_mobility_array || ionMobilityArrayType == MS_mean_ion_mobility_array)
{
has_mzML_combined_ion_mobility_ = true;
units_ = IonMobilityUnits::drift_time_msec;
probe = probeLimit; // No need to look further
break;
}
else if (ionMobilityArrayType == MS_raw_inverse_reduced_ion_mobility_array || ionMobilityArrayType == MS_mean_inverse_reduced_ion_mobility_array)
{
}
else if (ionMobilityArrayType == MS_raw_inverse_reduced_ion_mobility_array || ionMobilityArrayType == MS_mean_inverse_reduced_ion_mobility_array)
{
has_mzML_combined_ion_mobility_ = true;
units_ = IonMobilityUnits::inverse_reduced_ion_mobility_Vsec_per_cm2;
probe = probeLimit; // No need to look further
Expand All @@ -135,6 +142,11 @@ SpectrumList_IonMobility::SpectrumList_IonMobility(const msdata::SpectrumListPtr
spectrum = inner->spectrum(0, true);
for (const auto& binaryArray : spectrum->binaryDataArrayPtrs)
{
if (binaryArray->cvParamChild(MS_scanning_quadrupole_position_lower_bound_m_z_array).cvid != CVID_Unknown)
{
//isPassEntireDiaPasefFrame_ = true;
continue;
}
CVID ionMobilityArrayType = binaryArray->cvParamChild(MS_ion_mobility_array).cvid;
if (ionMobilityArrayType == CVID_Unknown)
continue;
Expand Down Expand Up @@ -165,6 +177,11 @@ PWIZ_API_DECL SpectrumList_IonMobility::IonMobilityUnits SpectrumList_IonMobilit
return units_;
}

//PWIZ_API_DECL bool SpectrumList_IonMobility::isPassEntireDiaPasefFrame() const
//{
// return isPassEntireDiaPasefFrame_;
//}

PWIZ_API_DECL bool SpectrumList_IonMobility::accept(const msdata::SpectrumListPtr& inner)
{
return true; // We'll wrap anything, but getIonMobilityUnits() may well return "none"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,11 +66,15 @@ class PWIZ_API_DECL SpectrumList_IonMobility : public msdata::SpectrumListWrappe
/// for Waters SONAR data, given a "drift" bin return the nominal m/z filter value of that bin. If bin is outside the SONAR range, return value will be 0
virtual double sonarBinToPrecursorMz(int bin) const;

/// for Bruker TIMS data, returns true if the data represents an entire diaPASEF frame with isolation range arrays, as in diagonal PASEF mode
// virtual bool isPassEntireDiaPasefFrame() const;

private:
enum class IonMobilityEquipment { None, AgilentDrift, WatersDrift, WatersSonar, BrukerTIMS, ThermoFAIMS, UIMFDrift, MobilIonDrift };
IonMobilityEquipment equipment_;
IonMobilityUnits units_;
bool has_mzML_combined_ion_mobility_;
//bool isPassEntireDiaPasefFrame_;
msdata::SpectrumListIonMobilityBase* sl_;
};

Expand Down
4 changes: 4 additions & 0 deletions pwiz/data/msdata/Reader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ Reader::Config::Config()
, sortAndJitter(false)
, globalChromatogramsAreMs1Only(false)
, ddaProcessing(false)
, passEntireDiaPasefFrame(false)
, includeIsolationArrays(true)
{
}

Expand All @@ -74,6 +76,8 @@ Reader::Config::Config(const Config& rhs)
isolationMzAndMobilityFilter = rhs.isolationMzAndMobilityFilter;
sortAndJitter = rhs.sortAndJitter;
globalChromatogramsAreMs1Only = rhs.globalChromatogramsAreMs1Only;
passEntireDiaPasefFrame = rhs.passEntireDiaPasefFrame;
includeIsolationArrays = rhs.includeIsolationArrays;
}

void Reader::Config::instrumentMetadataError(const std::string& msg) const
Expand Down
6 changes: 6 additions & 0 deletions pwiz/data/msdata/Reader.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,12 @@ class PWIZ_API_DECL Reader
/// when true, all drift bins/scans in a frame/block are written in combined form instead of as individual spectra
bool combineIonMobilitySpectra;

/// when true, diaPASEF data is combined frame-by-frame instead of grouped by isolation window
bool passEntireDiaPasefFrame;

/// when true, include precursor isolation range arrays in Bruker DiaPASEF in passEntireDiaPasefFrame mode
bool includeIsolationArrays;

/// when true, scans with only calibration data will be ignored (currently Waters lockmass only)
bool ignoreCalibrationScans;

Expand Down
15 changes: 14 additions & 1 deletion pwiz/data/vendor_readers/Bruker/Reader_Bruker.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,19 @@ void fillInMetadata(const bfs::path& rootpath, MSData& msd, Reader_Bruker_Format
auto serialNumber = compassDataPtr->getInstrumentSerialNumber();
if (!serialNumber.empty())
msd.run.defaultInstrumentConfigurationPtr->set(MS_instrument_serial_number, serialNumber);

// Write DIA-PASEF window group information if available
auto diaFrameMsMsWindowsTable = compassDataPtr->getDiaFrameMsMsWindowsTable();
if (!diaFrameMsMsWindowsTable.empty())
{
std::vector<std::string> lines;
boost::split(lines, diaFrameMsMsWindowsTable, boost::is_any_of(";"));
msd.run.defaultInstrumentConfigurationPtr->userParams.push_back(UserParam("DiaFrameMsMsWindowsTable", lines[0]));
for (size_t i = 1; i < lines.size(); ++i)
{
msd.run.defaultInstrumentConfigurationPtr->userParams.push_back(UserParam("WindowGroup", lines[i]));
}
}
}

msd.run.id = msd.id;
Expand Down Expand Up @@ -233,7 +246,7 @@ void Reader_Bruker::read(const string& filename,
rootpath = rootpath.parent_path();

CompassDataPtr compassDataPtr(CompassData::create(rootpath.string(), config.combineIonMobilitySpectra, format,
config.preferOnlyMsLevel, config.allowMsMsWithoutPrecursor, config.isolationMzAndMobilityFilter));
config.preferOnlyMsLevel, config.allowMsMsWithoutPrecursor, config.passEntireDiaPasefFrame, config.includeIsolationArrays, config.isolationMzAndMobilityFilter));

SpectrumList_Bruker* sl = new SpectrumList_Bruker(result, rootpath.string(), format, compassDataPtr, config);
ChromatogramList_Bruker* cl = new ChromatogramList_Bruker(result, rootpath.string(), format, compassDataPtr, config);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,6 @@
<cvParam cvRef="MS" accession="MS:1000571" name="sum of spectra" value=""/>
<scan spectrumRef="frame=1 scan=229">
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="3600.104777103251" unitCvRef="UO" unitAccession="UO:0000010" unitName="second"/>
<cvParam cvRef="MS" accession="MS:1002815" name="inverse reduced ion mobility" value="1.383376377915" unitCvRef="MS" unitAccession="MS:1002814" unitName="volt-second per square centimeter"/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="100.0" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
Expand Down Expand Up @@ -202,7 +201,6 @@
<cvParam cvRef="MS" accession="MS:1000571" name="sum of spectra" value=""/>
<scan spectrumRef="frame=1 scan=297">
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="3600.104777103251" unitCvRef="UO" unitAccession="UO:0000010" unitName="second"/>
<cvParam cvRef="MS" accession="MS:1002815" name="inverse reduced ion mobility" value="1.311488568245" unitCvRef="MS" unitAccession="MS:1002814" unitName="volt-second per square centimeter"/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="100.0" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
Expand Down Expand Up @@ -314,7 +312,6 @@
<cvParam cvRef="MS" accession="MS:1000571" name="sum of spectra" value=""/>
<scan spectrumRef="frame=2 scan=210">
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="3600.219602772449" unitCvRef="UO" unitAccession="UO:0000010" unitName="second"/>
<cvParam cvRef="MS" accession="MS:1002815" name="inverse reduced ion mobility" value="1.402904707999" unitCvRef="MS" unitAccession="MS:1002814" unitName="volt-second per square centimeter"/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="100.0" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
Expand Down Expand Up @@ -424,7 +421,6 @@
<cvParam cvRef="MS" accession="MS:1000571" name="sum of spectra" value=""/>
<scan spectrumRef="frame=2 scan=251">
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="3600.219602772449" unitCvRef="UO" unitAccession="UO:0000010" unitName="second"/>
<cvParam cvRef="MS" accession="MS:1002815" name="inverse reduced ion mobility" value="1.360215217559" unitCvRef="MS" unitAccession="MS:1002814" unitName="volt-second per square centimeter"/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="100.0" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
Expand Down Expand Up @@ -536,7 +532,6 @@
<cvParam cvRef="MS" accession="MS:1000571" name="sum of spectra" value=""/>
<scan spectrumRef="frame=2 scan=297">
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="3600.219602772449" unitCvRef="UO" unitAccession="UO:0000010" unitName="second"/>
<cvParam cvRef="MS" accession="MS:1002815" name="inverse reduced ion mobility" value="1.311488568245" unitCvRef="MS" unitAccession="MS:1002814" unitName="volt-second per square centimeter"/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="100.0" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
Expand Down Expand Up @@ -648,7 +643,6 @@
<cvParam cvRef="MS" accession="MS:1000571" name="sum of spectra" value=""/>
<scan spectrumRef="frame=3 scan=210">
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="3600.332630267621" unitCvRef="UO" unitAccession="UO:0000010" unitName="second"/>
<cvParam cvRef="MS" accession="MS:1002815" name="inverse reduced ion mobility" value="1.402904707999" unitCvRef="MS" unitAccession="MS:1002814" unitName="volt-second per square centimeter"/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="100.0" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
Expand Down Expand Up @@ -758,7 +752,6 @@
<cvParam cvRef="MS" accession="MS:1000571" name="sum of spectra" value=""/>
<scan spectrumRef="frame=3 scan=251">
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="3600.332630267621" unitCvRef="UO" unitAccession="UO:0000010" unitName="second"/>
<cvParam cvRef="MS" accession="MS:1002815" name="inverse reduced ion mobility" value="1.360215217559" unitCvRef="MS" unitAccession="MS:1002814" unitName="volt-second per square centimeter"/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="100.0" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
Expand Down Expand Up @@ -870,7 +863,6 @@
<cvParam cvRef="MS" accession="MS:1000571" name="sum of spectra" value=""/>
<scan spectrumRef="frame=3 scan=297">
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="3600.332630267621" unitCvRef="UO" unitAccession="UO:0000010" unitName="second"/>
<cvParam cvRef="MS" accession="MS:1002815" name="inverse reduced ion mobility" value="1.311488568245" unitCvRef="MS" unitAccession="MS:1002814" unitName="volt-second per square centimeter"/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="100.0" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
Expand Down Expand Up @@ -982,7 +974,6 @@
<cvParam cvRef="MS" accession="MS:1000571" name="sum of spectra" value=""/>
<scan spectrumRef="frame=4 scan=210">
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="3600.446653913667" unitCvRef="UO" unitAccession="UO:0000010" unitName="second"/>
<cvParam cvRef="MS" accession="MS:1002815" name="inverse reduced ion mobility" value="1.402904707999" unitCvRef="MS" unitAccession="MS:1002814" unitName="volt-second per square centimeter"/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="100.0" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
Expand Down Expand Up @@ -1092,7 +1083,6 @@
<cvParam cvRef="MS" accession="MS:1000571" name="sum of spectra" value=""/>
<scan spectrumRef="frame=4 scan=251">
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="3600.446653913667" unitCvRef="UO" unitAccession="UO:0000010" unitName="second"/>
<cvParam cvRef="MS" accession="MS:1002815" name="inverse reduced ion mobility" value="1.360215217559" unitCvRef="MS" unitAccession="MS:1002814" unitName="volt-second per square centimeter"/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="100.0" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
Expand Down Expand Up @@ -1204,7 +1194,6 @@
<cvParam cvRef="MS" accession="MS:1000571" name="sum of spectra" value=""/>
<scan spectrumRef="frame=4 scan=297">
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="3600.446653913667" unitCvRef="UO" unitAccession="UO:0000010" unitName="second"/>
<cvParam cvRef="MS" accession="MS:1002815" name="inverse reduced ion mobility" value="1.311488568245" unitCvRef="MS" unitAccession="MS:1002814" unitName="volt-second per square centimeter"/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="100.0" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
Expand Down Expand Up @@ -1316,7 +1305,6 @@
<cvParam cvRef="MS" accession="MS:1000571" name="sum of spectra" value=""/>
<scan spectrumRef="frame=5 scan=210">
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="3600.560795150677" unitCvRef="UO" unitAccession="UO:0000010" unitName="second"/>
<cvParam cvRef="MS" accession="MS:1002815" name="inverse reduced ion mobility" value="1.402904707999" unitCvRef="MS" unitAccession="MS:1002814" unitName="volt-second per square centimeter"/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="100.0" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
Expand Down Expand Up @@ -1426,7 +1414,6 @@
<cvParam cvRef="MS" accession="MS:1000571" name="sum of spectra" value=""/>
<scan spectrumRef="frame=5 scan=251">
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="3600.560795150677" unitCvRef="UO" unitAccession="UO:0000010" unitName="second"/>
<cvParam cvRef="MS" accession="MS:1002815" name="inverse reduced ion mobility" value="1.360215217559" unitCvRef="MS" unitAccession="MS:1002814" unitName="volt-second per square centimeter"/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="100.0" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
Expand Down Expand Up @@ -1538,7 +1525,6 @@
<cvParam cvRef="MS" accession="MS:1000571" name="sum of spectra" value=""/>
<scan spectrumRef="frame=5 scan=297">
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="3600.560795150677" unitCvRef="UO" unitAccession="UO:0000010" unitName="second"/>
<cvParam cvRef="MS" accession="MS:1002815" name="inverse reduced ion mobility" value="1.311488568245" unitCvRef="MS" unitAccession="MS:1002814" unitName="volt-second per square centimeter"/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="100.0" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
Expand Down Expand Up @@ -1650,7 +1636,6 @@
<cvParam cvRef="MS" accession="MS:1000571" name="sum of spectra" value=""/>
<scan>
<cvParam cvRef="MS" accession="MS:1000016" name="scan start time" value="3600.674356643713" unitCvRef="UO" unitAccession="UO:0000010" unitName="second"/>
<cvParam cvRef="MS" accession="MS:1002815" name="inverse reduced ion mobility" value="1.58380207594" unitCvRef="MS" unitAccession="MS:1002814" unitName="volt-second per square centimeter"/>
<scanWindowList count="1">
<scanWindow>
<cvParam cvRef="MS" accession="MS:1000501" name="scan window lower limit" value="100.0" unitCvRef="MS" unitAccession="MS:1000040" unitName="m/z"/>
Expand Down
Loading