36#include <pwiz/data/msdata/DefaultReaderList.hpp> 
   74  pwiz::msdata::DefaultReaderList defaultReaderList;
 
   76  std::vector<pwiz::msdata::MSDataPtr> msDataPtrVector;
 
   80      defaultReaderList.read(file_name_std, msDataPtrVector);
 
   82  catch(std::exception &error)
 
   84      qDebug() << QString(
"Failed to read the data from file %1")
 
   85                    .arg(QString::fromStdString(file_name_std));
 
   87      throw(
PappsoException(QString(
"Error reading file %1 in PwizMsRunReader, for msrun %2:\n%3")
 
  105      if(msDataPtrVector.size() != 1)
 
  108                               "one run in the file."));
 
  118      for(
const pwiz::msdata::MSDataPtr &msDataPtr : msDataPtrVector)
 
  120          qDebug() << 
"msDataPtr->run.id=" << msDataPtr->run.id.c_str();
 
  121          qDebug() << 
"mcsp_msRunId->getRunId()=" << 
mcsp_msRunId->getRunId();
 
  122          qDebug() << 
"mcsp_msRunId->getXmlId()=" << 
mcsp_msRunId->getXmlId();
 
  123          qDebug() << 
"mcsp_msRunId->getSampleName()=" << 
mcsp_msRunId->getSampleName();
 
  124          if(msDataPtr->run.id == 
mcsp_msRunId->getRunId().toStdString())
 
  140                                         "matching the requested run id : %1")
 
  147  pwiz::cv::CVID native_id_format = pwiz::msdata::id::getDefaultNativeIDFormat(*
msp_msData.get());
 
  151  if(native_id_format == pwiz::cv::CVID::MS_Thermo_nativeID_format)
 
 
  178  term.
m_name = 
"no nativeID format";
 
  180    "No nativeID format indicates that the file tagged with this term does " 
  182    "contain spectra that can have a nativeID format.";
 
  185  pwiz::cv::CVID cvid = pwiz::msdata::id::getDefaultNativeIDFormat(*(
msp_msData.get()));
 
  189      case pwiz::cv::MS_Thermo_nativeID_format:
 
  191        term.
m_name = 
"Thermo nativeID format";
 
  193          "Native format defined by controllerType=xsd:nonNegativeInteger " 
  194          "controllerNumber=xsd:positiveInteger scan=xsd:positiveInteger.";
 
 
  202pwiz::msdata::SpectrumPtr
 
  204                                    std::size_t spectrum_index,
 
  205                                    bool want_binary_data)
 const 
  207  pwiz::msdata::SpectrumPtr native_pwiz_spectrum_sp;
 
  211      native_pwiz_spectrum_sp = p_spectrum_list->spectrum(spectrum_index, want_binary_data);
 
  213  catch(std::runtime_error &error)
 
  215      qDebug() << 
"getPwizSpectrumPtr error " << error.what() << 
" " << 
typeid(error).name();
 
  218                                          "MS file std::runtime_error :\n%2")
 
  222  catch(std::exception &error)
 
  224      qDebug() << 
"getPwizSpectrumPtr error " << error.what() << 
typeid(error).name();
 
  226      throw ExceptionNotFound(QObject::tr(
"Pwiz spectrum index %1 not found in MS file :\n%2")
 
  231  if(native_pwiz_spectrum_sp.get() == 
nullptr)
 
  234        QObject::tr(
"Pwiz spectrum index %1 not found in MS file : null pointer")
 
  235          .arg(spectrum_index));
 
  238  return native_pwiz_spectrum_sp;
 
 
  250  if(!spectrum_p->scanList.scans[0].hasCVParam(pwiz::msdata::MS_scan_start_time))
 
  263      pwiz::data::CVParam retention_time_cv_param =
 
  264        spectrum_p->scanList.scans[0].cvParam(pwiz::msdata::MS_scan_start_time);
 
  268      std::string unit_name = retention_time_cv_param.unitsName();
 
  273      if(unit_name == 
"second")
 
  275          qualified_mass_spectrum.
setRtInSeconds(retention_time_cv_param.valueAs<
double>());
 
  277      else if(unit_name == 
"minute")
 
  279          qualified_mass_spectrum.
setRtInSeconds(retention_time_cv_param.valueAs<
double>() * 60);
 
  284                               "scan start time value."));
 
 
  312  if(spectrum_p->scanList.scans[0].hasCVParam(pwiz::msdata::MS_ion_mobility_drift_time))
 
  322                                  .cvParam(pwiz::msdata::MS_ion_mobility_drift_time)
 
  343      if(std::isnan(driftTime) || std::isinf(driftTime))
 
 
  372                                                          pwiz::msdata::Spectrum *spectrum_p,
 
  373                                                          bool want_binary_data,
 
  378  if(spectrum_p == 
nullptr)
 
  379    qFatal(
"Spectrum pointer cannot be nullptr.");
 
  390      int msLevel = (spectrum_p->cvParam(pwiz::msdata::MS_ms_level).valueAs<int>());
 
  394      if(!spectrum_p->scanList.scans[0].hasCVParam(pwiz::msdata::MS_peak_list_scans))
 
  401            spectrum_p->cvParam(pwiz::msdata::MS_peak_list_scans).valueAs<
double>());
 
  406      std::size_t precursor_list_size = spectrum_p->precursors.size();
 
  413      if(precursor_list_size > 0)
 
  419              qDebug() << 
"Going to throw: msLevel cannot be less than two for " 
  420                          "a spectrum that has items in its Precursor list.";
 
  424                                     "a spectrum that has items in its Precursor list."));
 
  429          for(
auto &precursor : spectrum_p->precursors)
 
  435              std::size_t precursor_spectrum_index = std::numeric_limits<std::size_t>::max();
 
  439              if(precursor.spectrumID.empty())
 
  467                    QString::fromStdString(precursor.spectrumID));
 
  478                  precursor_spectrum_index =
 
  479                    msp_msData->run.spectrumListPtr->find(precursor.spectrumID);
 
  483                  if(precursor_spectrum_index == 
msp_msData->run.spectrumListPtr->size())
 
  489                                                 "precursor ion's spectrum."));
 
  504              if(!precursor.selectedIons.size())
 
  506                  qDebug() << 
"Going to throw The spectrum has msLevel > 1 but the " 
  507                              "precursor ions's selected ions list is empty..";
 
  511                                         "precursor ions's selected ions " 
  515              pwiz::msdata::SelectedIon &ion = *(precursor.selectedIons.begin());
 
  520                QString(ion.cvParam(pwiz::cv::MS_selected_ion_m_z).value.c_str()).toDouble();
 
  529                QString(ion.cvParam(pwiz::cv::MS_peak_intensity).value.c_str()).toDouble();
 
  533              unsigned int selected_ion_charge_state =
 
  534                QString(ion.cvParam(pwiz::cv::MS_charge_state).value.c_str()).toUInt();
 
  540                selected_ion_mz, selected_ion_charge_state, selected_ion_peak_intensity);
 
  582          qDebug() << 
"Going to throw The number of precursors in the file is " 
  583                      "different from the number of precursors in memory.";
 
  586            QObject::tr(
"The number of precursors in the file is different " 
  587                        "from the number of precursors in memory."));
 
  615          std::vector<pwiz::msdata::MZIntensityPair> pairs;
 
  616          spectrum_p->getMZIntensityPairs(pairs);
 
  623          for(std::vector<pwiz::msdata::MZIntensityPair>::const_iterator it  = pairs.begin(),
 
  634                  spectrum.push_back(
DataPoint(it->mz, it->intensity));
 
  635                  tic += it->intensity;
 
  663      qDebug() << 
"Going to throw";
 
  666        QObject::tr(
"Error reading data using the proteowizard library: %1").arg(errorp.
qwhat()));
 
  668  catch(std::exception &error)
 
  670      qDebug() << 
"Going to throw";
 
  673        QObject::tr(
"Error reading data using the proteowizard library: %1").arg(error.what()));
 
  680  return qualified_mass_spectrum;
 
 
  686                                                     bool want_binary_data,
 
  702  pwiz::msdata::SpectrumListPtr spectrum_list_p = 
msp_msData->run.spectrumListPtr;
 
  704  if(spectrum_index == spectrum_list_p.get()->size())
 
  708        QObject::tr(
"The spectrum index cannot be equal to the size of the " 
  716  pwiz::msdata::SpectrumPtr native_pwiz_spectrum_sp =
 
  721  massSpectrumId.
setNativeId(QString::fromStdString(native_pwiz_spectrum_sp->id));
 
  724    massSpectrumId, native_pwiz_spectrum_sp.get(), want_binary_data, ok);
 
 
  732  pwiz::msdata::ReaderList reader_list;
 
  734  std::string reader_type = reader_list.identify(file_name.toStdString());
 
  736  if(!reader_type.empty())
 
 
  788  catch(std::exception &error)
 
  790      qDebug() << 
"Going to throw";
 
  793        QObject::tr(
"Error reading data (spectrum collection) using the " 
  794                    "proteowizard library: %1")
 
 
  808  catch(std::exception &error)
 
  810      qDebug() << 
"Going to throw";
 
  813        QObject::tr(
"Error reading data (spectrum collection2) using the " 
  814                    "proteowizard library: %1")
 
 
  821                                                 unsigned int ms_level)
 
  843  pwiz::msdata::SpectrumListPtr spectrum_list_p = 
msp_msData->run.spectrumListPtr;
 
  846  std::size_t spectrum_list_size = spectrum_list_p.get()->size();
 
  856  for(std::size_t iter = 0; iter < spectrum_list_size; iter++)
 
  863          qDebug() << 
"The operation was cancelled. Breaking the loop.";
 
  870      pwiz::msdata::SpectrumPtr native_pwiz_spectrum_sp =
 
  895      QString native_id = QString::fromStdString(native_pwiz_spectrum_sp->id);
 
  905        massSpectrumId, native_pwiz_spectrum_sp.get(), want_binary_data, ok);
 
  930          if(qualified_mass_spectrum.
getMsLevel() == ms_level)
 
 
  974  pwiz::msdata::SpectrumListPtr spectrum_list_p = 
msp_msData->run.spectrumListPtr;
 
  977  std::size_t spectrum_list_size = spectrum_list_p.get()->size();
 
  988  for(std::size_t iter = 0; iter < spectrum_list_size; iter++)
 
  996          qDebug() << 
"The operation was cancelled. Breaking the loop.";
 
 1004      pwiz::msdata::SpectrumPtr native_pwiz_spectrum_sp =
 
 1031      QString native_id = QString::fromStdString(native_pwiz_spectrum_sp->id);
 
 1041        massSpectrumId, native_pwiz_spectrum_sp.get(), want_binary_data, ok);
 
 1082  qDebug() << 
"Loading ended";
 
 
 1089  return msp_msData->run.spectrumListPtr.get()->size();
 
 
 1141  std::string env_backup;
 
 1148      std::string env_backup = std::setlocale(LC_ALL, 
nullptr);
 
 1149      std::setlocale(LC_ALL, 
"C");
 
 1151      std::locale::global(std::locale(
"C")); 
 
 1154  catch(std::exception &error)
 
 1157        QObject::tr(
"Error trying to set local to C : %1").arg(error.what()));
 
 
 1170      std::setlocale(LC_ALL, environment_locale.c_str());
 
 1172      std::locale::global(std::locale(
""));  
 
 1175  catch(std::exception &error)
 
 1178        QObject::tr(
"Error trying to set local to original system one %1 : %2")
 
 1179          .arg(environment_locale.c_str())
 
 1180          .arg(error.what()));
 
 
 1188  std::size_t spectrum_id =
 
 1189    msp_msData->run.spectrumListPtr->find(spectrum_identifier.toStdString());
 
 1190  if(spectrum_id == 
msp_msData->run.spectrumListPtr->size())
 
 1193        QObject::tr(
"Spectrum identifier %1 not found").arg(spectrum_identifier));
 
 
 1225      for(
auto ¶m_group : 
msp_msData.get()->paramGroupPtrs)
 
 1227          for(
auto &cv_param : param_group.get()->cvParams)
 
 1229              if(cv_param.cvid == pwiz::cv::CVID::MS_Q_Exactive)
 
 1233              else if(cv_param.cvid == pwiz::cv::CVID::MS_Velos_Plus)
 
 1238              else if(cv_param.cvid == pwiz::cv::CVID::MS_LTQ_Orbitrap_Elite)
 
 1247              else if(cv_param.cvid == pwiz::cv::CVID::MS_Orbitrap_Fusion)
 
 1256              else if(cv_param.cvid == pwiz::cv::CVID::MS_Q_Exactive_HF)
 
 1265              else if(cv_param.cvid == pwiz::cv::CVID::MS_Exactive_Plus)
 
 1270              else if(cv_param.cvid == pwiz::cv::CVID::MS_Q_Exactive_Plus)
 
 1277              else if(cv_param.cvid == pwiz::cv::CVID::MS_Orbitrap_Fusion_Lumos)
 
 1282              else if(cv_param.cvid == pwiz::cv::CVID::MS_Q_Exactive_HF_X)
 
 1289              else if(cv_param.cvid == pwiz::cv::CVID::MS_Orbitrap_Exploris_480)
 
 1296              else if(cv_param.cvid == pwiz::cv::CVID::MS_Orbitrap_Eclipse)
 
 1303              else if(cv_param.cvid == pwiz::cv::CVID::MS_Orbitrap_Exploris_240)
 
 1310              else if(cv_param.cvid == pwiz::cv::CVID::MS_Orbitrap_Exploris_120)
 
 1316              else if(cv_param.cvid == pwiz::cv::CVID::MS_LTQ_Orbitrap_Velos_Pro)
 
 1322              else if(cv_param.cvid == pwiz::cv::CVID::MS_Q_Exactive_UHMR)
 
 1327              else if(cv_param.cvid == pwiz::cv::CVID::MS_TSQ_Altis_Plus)
 
 1334              else if(cv_param.cvid == pwiz::cv::CVID::MS_Orbitrap_Ascend)
 
 1341              else if(cv_param.cvid == pwiz::cv::CVID::MS_Orbitrap_Astral)
 
 
const OboPsiModTerm & getOboPsiModTermWithAccession(const QString &accession) const
 
void setNativeId(const QString &native_id)
 
void setSpectrumIndex(std::size_t index)
 
Class to represent a mass spectrum.
 
void sortMz()
Sort the DataPoint instances of this spectrum.
 
MassSpectrumSPtr makeMassSpectrumSPtr() const
 
bool needPeakList() const
 
bool acceptMsLevel(std::size_t ms_level) const
 
bool acceptRetentionTimeInSeconds(double retention_time_in_seconds) const
 
MsRunIdCstSPtr mcsp_msRunId
 
MsRunReader(const MsRunIdCstSPtr &ms_run_id)
 
void setAccession(const QString &accession)
 
virtual const QString & qwhat() const
 
virtual pappso::XicCoordSPtr newXicCoordSPtrFromSpectrumIndex(std::size_t spectrum_index, pappso::PrecisionPtr precision) const override
get a xic coordinate object from a given spectrum index
 
pwiz::msdata::MSDataPtr msp_msData
 
virtual void readSpectrumCollectionByMsLevel(SpectrumCollectionHandlerInterface &handler, unsigned int ms_level) override
function to visit an MsRunReader and get each Spectrum in a spectrum collection handler by Ms Levels
 
static std::string setGlobalLocaleToEnglish()
 
virtual void readSpectrumCollectionWithMsrunReadConfig(const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler)
 
bool processDriftTime(pwiz::msdata::Spectrum *spectrum_p, QualifiedMassSpectrum &qualified_mass_spectrum) const
 
virtual MassSpectrumCstSPtr massSpectrumCstSPtr(std::size_t spectrum_index) override
 
QualifiedMassSpectrum qualifiedMassSpectrumFromPwizMSData(std::size_t spectrum_index, bool want_binary_data, bool &ok) const
 
PwizMsRunReader(MsRunIdCstSPtr &msrun_id_csp)
 
static void setGlobalLocaleToCurrentOs(const std::string &environment_locale)
 
QualifiedMassSpectrum qualifiedMassSpectrumFromPwizSpectrumPtr(const MassSpectrumId &massSpectrumId, pwiz::msdata::Spectrum *spectrum_p, bool want_binary_data, bool &ok) const
 
virtual void readSpectrumCollection2(const MsRunReadConfig &config, SpectrumCollectionHandlerInterface &handler) override
 
virtual std::size_t spectrumStringIdentifier2SpectrumIndex(const QString &spectrum_identifier) override
if possible, get the spectrum index given a string identifier throw a not found exception if spectrum...
 
virtual QualifiedMassSpectrum qualifiedMassSpectrum(std::size_t spectrum_index, bool want_binary_data=true) const override
get a QualifiedMassSpectrum class given its scan number
 
virtual bool hasScanNumbers() const override
tells if spectra can be accessed using scan numbers by default, it returns false. Only overrided func...
 
bool processRetentionTime(pwiz::msdata::Spectrum *spectrum_p, QualifiedMassSpectrum &qualified_mass_spectrum) const
 
virtual bool acquireDevice() override
acquire data back end device
 
virtual const OboPsiModTerm getOboPsiModTermInstrumentModelName() const override
get OboPsiModTerm corresponding to the instrument model name child of : [Term] id: MS:1000031 name: i...
 
virtual ~PwizMsRunReader()
 
virtual void initialize() override
 
virtual void readSpectrumCollection(SpectrumCollectionHandlerInterface &handler) override
function to visit an MsRunReader and get each Spectrum in a spectrum collection handler
 
virtual bool accept(const QString &file_name) const override
tells if the reader is able to handle this file must be implemented by private MS run reader,...
 
virtual std::size_t spectrumListSize() const override
get the totat number of spectrum conained in the MSrun data file
 
pwiz::msdata::SpectrumPtr getPwizSpectrumPtr(pwiz::msdata::SpectrumList *p_spectrum_list, std::size_t spectrum_index, bool want_binary_data) const
 
virtual bool releaseDevice() override
release data back end device if a the data back end is released, the developper has to use acquireDev...
 
virtual pappso::XicCoordSPtr newXicCoordSPtrFromQualifiedMassSpectrum(const pappso::QualifiedMassSpectrum &mass_spectrum, pappso::PrecisionPtr precision) const override
get a xic coordinate object from a given spectrum
 
const OboPsiModTerm getOboPsiModTermNativeIDFormat() const
get OboPsiModTerm corresponding to the nativeID format format of mz data
 
virtual MassSpectrumSPtr massSpectrumSPtr(std::size_t spectrum_index) override
get a MassSpectrumSPtr class given its spectrum index
 
Class representing a fully specified mass spectrum.
 
uint getMsLevel() const
Get the mass spectrum level.
 
MassSpectrumCstSPtr getMassSpectrumCstSPtr() const
Get the MassSpectrumCstSPtr.
 
void setPrecursorNativeId(const QString &native_id)
Set the scan native id of the precursor ion.
 
const std::vector< PrecursorIonData > & getPrecursorIonData() const
 
void setDtInMilliSeconds(pappso_double rt)
Set the drift time in milliseconds.
 
const QString & getPrecursorNativeId() const
 
void appendPrecursorIonData(const PrecursorIonData &precursor_ion_data)
 
void setMsLevel(uint ms_level)
Set the mass spectrum level.
 
void setPrecursorSpectrumIndex(std::size_t precursor_scan_num)
Set the scan number of the precursor ion.
 
pappso_double getPrecursorMz(bool *ok=nullptr) const
get precursor mz
 
MassSpectrumSPtr getMassSpectrumSPtr() const
Get the MassSpectrumSPtr.
 
void setParameterValue(QualifiedMassSpectrumParameter parameter, const QVariant &value)
 
void setMassSpectrumSPtr(MassSpectrumSPtr massSpectrum)
Set the MassSpectrumSPtr.
 
void setRtInSeconds(pappso_double rt)
Set the retention time in seconds.
 
pappso_double getRtInSeconds() const
Get the retention time in seconds.
 
void setEmptyMassSpectrum(bool is_empty_mass_spectrum)
 
interface to collect spectrums from the MsRunReader class
 
virtual bool shouldStop()
 
virtual bool needPeakList() const =0
tells if we need the peak list (if we want the binary data) for each spectrum
 
virtual void loadingEnded()
 
virtual void spectrumListHasSize(std::size_t size)
 
virtual void setQualifiedMassSpectrum(const QualifiedMassSpectrum &spectrum)=0
 
static std::string toUtf8StandardString(const QString &text)
 
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
 
std::shared_ptr< const MsRunId > MsRunIdCstSPtr
 
double pappso_double
A type definition for doubles.
 
std::shared_ptr< const MassSpectrum > MassSpectrumCstSPtr
 
const PrecisionBase * PrecisionPtr
 
std::shared_ptr< MassSpectrum > MassSpectrumSPtr
 
std::shared_ptr< XicCoord > XicCoordSPtr