本文整理汇总了C++中MzMLFile类的典型用法代码示例。如果您正苦于以下问题:C++ MzMLFile类的具体用法?C++ MzMLFile怎么用?C++ MzMLFile使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了MzMLFile类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main_
ExitCodes main_(int, const char **)
{
String in = getStringOption_("in");
String out = getStringOption_("out");
String tr_file = getStringOption_("tr");
bool force = getFlag_("force");
boost::shared_ptr<PeakMap > exp ( new PeakMap );
MzMLFile mzmlfile;
mzmlfile.setLogType(log_type_);
mzmlfile.load(in, *exp);
TargetedExpType transition_exp;
TraMLFile().load(tr_file, transition_exp);
FeatureMap output;
OpenSwath::SpectrumAccessPtr input = SimpleOpenMSSpectraFactory::getSpectrumAccessOpenMSPtr(exp);
run_(input, output, transition_exp, force);
output.ensureUniqueId();
StringList ms_runs;
exp->getPrimaryMSRunPath(ms_runs);
output.setPrimaryMSRunPath(ms_runs);
FeatureXMLFile().store(out, output);
return EXECUTION_OK;
}
示例2:
SpectrumAccessOpenMSCached::SpectrumAccessOpenMSCached(String filename)
{
filename_cached_ = filename + ".cached";
// currently we re-open the filestream with each read access
// std::ifstream ifs_((filename_cached_).c_str(), std::ios::binary);
MzMLFile f;
f.load(filename, meta_ms_experiment_);
filename_ = filename;
}
示例3: main_
ExitCodes main_(int, const char **)
{
//-------------------------------------------------------------
// parameter handling
//-------------------------------------------------------------
//varaibles
String db, user, password, host, in;
Int port;
bool init = getFlag_("init");
if (!init)
{
in = getStringOption_("in");
}
db = getStringOption_("db");
user = getStringOption_("user");
password = getStringOption_("password");
host = getStringOption_("host");
port = getIntOption_("port");
//-------------------------------------------------------------
// reading input
//-------------------------------------------------------------
DBConnection con;
con.connect(db, user, password, host, port);
DBAdapter a(con);
if (init)
{
a.createDB();
}
else
{
//load input file data
MSExperiment<Peak1D> exp;
MzMLFile f;
f.setLogType(log_type_);
f.load(in, exp);
//annotate output with data processing info
addDataProcessing_(exp, getProcessingInfo_(DataProcessing::FORMAT_CONVERSION));
//store data
a.storeExperiment(exp);
writeLog_(String(" written file to DB (id: ") + (double)(exp.getPersistenceId()) + ")");
}
return EXECUTION_OK;
}
示例4: main_
ExitCodes main_(int, const char **)
{
//-------------------------------------------------------------
// parameter handling
//-------------------------------------------------------------
//input/output files
String in(getStringOption_("in"));
String out(getStringOption_("out"));
//-------------------------------------------------------------
// loading input
//-------------------------------------------------------------
MSExperiment<> exp;
MzMLFile f;
f.setLogType(log_type_);
f.load(in, exp);
//-------------------------------------------------------------
// if meta data arrays are present, remove them and warn
//-------------------------------------------------------------
if (exp.clearMetaDataArrays())
{
writeLog_("Warning: Spectrum meta data arrays cannot be sorted. They are deleted.");
}
//-------------------------------------------------------------
// filter
//-------------------------------------------------------------
Param filter_param = getParam_().copy("algorithm:", true);
writeDebug_("Used filter parameters", filter_param, 3);
BernNorm filter;
filter.setParameters(filter_param);
filter.filterPeakMap(exp);
//-------------------------------------------------------------
// writing output
//-------------------------------------------------------------
//annotate output with data processing info
addDataProcessing_(exp, getProcessingInfo_(DataProcessing::FILTERING));
f.store(out, exp);
return EXECUTION_OK;
}
示例5: main
int main(int argc, const char** argv)
{
if (argc < 2) return 1;
// the path to the data should be given on the command line
String tutorial_data_path(argv[1]);
MzXMLFile mzxml;
MzMLFile mzml;
// temporary data storage
MSExperiment<Peak1D> map;
// convert MzXML to MzML
mzxml.load(tutorial_data_path + "/data/Tutorial_FileIO.mzXML", map);
mzml.store("Tutorial_FileIO.mzML", map);
return 0;
} //end of main
示例6: main
int main(int argc, const char** argv)
{
if (argc < 2) return 1;
// the path to the data should be given on the command line
String tutorial_data_path(argv[1]);
MSExperiment spectra;
MzMLFile f;
// load mzML from code examples folder
f.load(tutorial_data_path + "/data/Tutorial_GaussFilter.mzML", spectra);
// iterate over map and output MS2 precursor information
for (auto s_it = spectra.begin(); s_it != spectra.end(); ++s_it)
{
// we are only interested in MS2 spectra so we skip all other levels
if (s_it->getMSLevel() != 2) continue;
// get a reference to the precursor information
const MSSpectrum& spectrum = *s_it;
const vector<Precursor>& precursors = spectrum.getPrecursors();
// size check & throw exception if needed
if (precursors.empty()) throw Exception::InvalidSize(__FILE__, __LINE__, OPENMS_PRETTY_FUNCTION, precursors.size());
// get m/z and intensity of precursor
double precursor_mz = precursors[0].getMZ();
float precursor_int = precursors[0].getIntensity();
// retrieve the precursor spectrum (the most recent MS1 spectrum)
PeakMap::ConstIterator precursor_spectrum = spectra.getPrecursorSpectrum(s_it);
double precursor_rt = precursor_spectrum->getRT();
// output precursor information
std::cout << " precusor m/z: " << precursor_mz
<< " intensity: " << precursor_int
<< " retention time (sec.): " << precursor_rt
<< std::endl;
}
return 0;
} // end of main
示例7: main_
ExitCodes main_(int, const char **)
{
//-------------------------------------------------------------
// parameter handling
//-------------------------------------------------------------
//input/output files
String in(getStringOption_("in"));
String out(getStringOption_("out"));
//-------------------------------------------------------------
// loading input
//-------------------------------------------------------------
MSExperiment<> exp;
MzMLFile f;
f.setLogType(log_type_);
f.load(in, exp);
//-------------------------------------------------------------
// filter
//-------------------------------------------------------------
Param filter_param = getParam_().copy("algorithm:", true);
writeDebug_("Used filter parameters", filter_param, 3);
Normalizer filter;
filter.setParameters(filter_param);
filter.filterPeakMap(exp);
//-------------------------------------------------------------
// writing output
//-------------------------------------------------------------
//annotate output with data processing info
addDataProcessing_(exp, getProcessingInfo_(DataProcessing::FILTERING));
f.store(out, exp);
return EXECUTION_OK;
}
示例8: main_
ExitCodes main_(int, const char **)
{
//----------------------------------------------------------------
// load data
//----------------------------------------------------------------
String in = getStringOption_("in");
String out = getStringOption_("out");
MSExperiment<> exp;
MzMLFile f;
f.setLogType(log_type_);
f.load(in, exp);
DoubleReal sampling_rate = getDoubleOption_("sampling_rate");
LinearResampler lin_resampler;
Param resampler_param;
resampler_param.setValue("spacing", sampling_rate);
lin_resampler.setParameters(resampler_param);
// resample every scan
for (Size i = 0; i < exp.size(); ++i)
{
lin_resampler.raster(exp[i]);
}
//clear meta data because they are no longer meaningful
exp.clearMetaDataArrays();
//annotate output with data processing info
addDataProcessing_(exp,
getProcessingInfo_(DataProcessing::DATA_PROCESSING));
//store output
f.store(out, exp);
return EXECUTION_OK;
}
示例9: main_
ExitCodes main_(int , const char**) override
{
String in = getStringOption_("in");
String out = getStringOption_("out");
MapType exp;
MapType out_exp;
Param picker_param = getParam_().copy("algorithm:", true);
MzMLFile f;
f.setLogType(log_type_);
f.load(in,exp);
PeakPickerIterative pp;
pp.setParameters(picker_param);
pp.setLogType(log_type_);
pp.pickExperiment(exp, out_exp);
addDataProcessing_(out_exp, getProcessingInfo_(DataProcessing::PEAK_PICKING));
f.store(out,out_exp);
return EXECUTION_OK;
}
示例10: main_
ExitCodes main_(int, const char **)
{
//----------------------------------------------------------------
// load data
//----------------------------------------------------------------
String in = getStringOption_("in");
String in_featureXML = getStringOption_("in_featureXML");
String out = getStringOption_("out");
String format = getStringOption_("out_type");
if (format.trim() == "") // get from filename
{
try
{
format = out.suffix('.');
}
catch (Exception::ElementNotFound & /*e*/)
{
format = "nosuffix";
}
StringListUtils::toUpper(out_formats_);
if (!ListUtils::contains(out_formats_, format.toUpper()))
{
LOG_ERROR << "No explicit image output format was provided via 'out_type', and the suffix ('" << format << "') does not resemble a valid type. Please fix one of them." << std::endl;
return ILLEGAL_PARAMETERS;
}
}
MSExperiment<> exp;
MzMLFile f;
f.setLogType(log_type_);
f.load(in, exp);
exp.updateRanges(1);
SignedSize rows = getIntOption_("height");
if (rows == 0)
{
rows = exp.size();
}
if (rows <= 0)
{
writeLog_("Error: Zero rows is not possible.");
return ILLEGAL_PARAMETERS;
}
SignedSize cols = getIntOption_("width");
if (cols == 0)
{
cols = UInt(ceil(exp.getMaxMZ() - exp.getMinMZ()));
}
if (cols <= 0)
{
writeLog_("Error: Zero columns is not possible.");
return ILLEGAL_PARAMETERS;
}
//----------------------------------------------------------------
//Do the actual resampling
BilinearInterpolation<double, double> bilip;
bilip.getData().resize(rows, cols);
if (!getFlag_("transpose"))
{
// scans run bottom-up:
bilip.setMapping_0(0, exp.getMaxRT(), rows - 1, exp.getMinRT());
// peaks run left-right:
bilip.setMapping_1(0, exp.getMinMZ(), cols - 1, exp.getMaxMZ());
for (MSExperiment<>::Iterator spec_iter = exp.begin();
spec_iter != exp.end(); ++spec_iter)
{
if (spec_iter->getMSLevel() != 1) continue;
for (MSExperiment<>::SpectrumType::ConstIterator peak1_iter =
spec_iter->begin(); peak1_iter != spec_iter->end();
++peak1_iter)
{
bilip.addValue(spec_iter->getRT(), peak1_iter->getMZ(),
peak1_iter->getIntensity());
}
}
}
else // transpose
{
// spectra run bottom-up:
bilip.setMapping_0(0, exp.getMaxMZ(), rows - 1, exp.getMinMZ());
// scans run left-right:
bilip.setMapping_1(0, exp.getMinRT(), cols - 1, exp.getMaxRT());
for (MSExperiment<>::Iterator spec_iter = exp.begin();
spec_iter != exp.end(); ++spec_iter)
{
if (spec_iter->getMSLevel() != 1) continue;
for (MSExperiment<>::SpectrumType::ConstIterator peak1_iter =
spec_iter->begin(); peak1_iter != spec_iter->end();
++peak1_iter)
{
bilip.addValue(peak1_iter->getMZ(), spec_iter->getRT(),
peak1_iter->getIntensity());
}
}
}
//.........这里部分代码省略.........
示例11: main_
ExitCodes main_(int, const char**)
{
//input file names
String in = getStringOption_("in");
String out = getStringOption_("out");
String out_mzq = getStringOption_("out_mzq");
//prevent loading of fragment spectra
PeakFileOptions options;
options.setMSLevels(vector<Int>(1, 1));
//reading input data
MzMLFile f;
f.getOptions() = options;
f.setLogType(log_type_);
PeakMap exp;
f.load(in, exp);
exp.updateRanges();
if (exp.getSpectra().empty())
{
throw OpenMS::Exception::FileEmpty(__FILE__, __LINE__, __FUNCTION__, "Error: No MS1 spectra in input file.");
}
// determine type of spectral data (profile or centroided)
SpectrumSettings::SpectrumType spectrum_type = exp[0].getType();
if (spectrum_type == SpectrumSettings::RAWDATA)
{
if (!getFlag_("force"))
{
throw OpenMS::Exception::IllegalArgument(__FILE__, __LINE__, __FUNCTION__, "Error: Profile data provided but centroided spectra expected. To enforce processing of the data set the -force flag.");
}
}
//load seeds
FeatureMap seeds;
if (getStringOption_("seeds") != "")
{
FeatureXMLFile().load(getStringOption_("seeds"), seeds);
}
//setup of FeatureFinder
FeatureFinder ff;
ff.setLogType(log_type_);
// A map for the resulting features
FeatureMap features;
// get parameters specific for the feature finder
Param feafi_param = getParam_().copy("algorithm:", true);
writeDebug_("Parameters passed to FeatureFinder", feafi_param, 3);
// Apply the feature finder
ff.run(FeatureFinderAlgorithmPicked::getProductName(), exp, features, feafi_param, seeds);
features.applyMemberFunction(&UniqueIdInterface::setUniqueId);
// DEBUG
if (debug_level_ > 10)
{
FeatureMap::Iterator it;
for (it = features.begin(); it != features.end(); ++it)
{
if (!it->isMetaEmpty())
{
vector<String> keys;
it->getKeys(keys);
LOG_INFO << "Feature " << it->getUniqueId() << endl;
for (Size i = 0; i < keys.size(); i++)
{
LOG_INFO << " " << keys[i] << " = " << it->getMetaValue(keys[i]) << endl;
}
}
}
}
//-------------------------------------------------------------
// writing files
//-------------------------------------------------------------
//annotate output with data processing info
addDataProcessing_(features, getProcessingInfo_(DataProcessing::QUANTITATION));
// write features to user specified output file
FeatureXMLFile map_file;
// Remove detailed convex hull information and subordinate features
// (unless requested otherwise) to reduce file size of feature files
// unless debugging is turned on.
if (debug_level_ < 5)
{
FeatureMap::Iterator it;
for (it = features.begin(); it != features.end(); ++it)
{
it->getConvexHull().expandToBoundingBox();
for (Size i = 0; i < it->getConvexHulls().size(); ++i)
{
it->getConvexHulls()[i].expandToBoundingBox();
}
//.........这里部分代码省略.........
示例12: main_
ExitCodes main_(int, const char**)
{
ExitCodes ret = checkParameters_();
if (ret != EXECUTION_OK) return ret;
MapAlignmentAlgorithmSpectrumAlignment algorithm;
Param algo_params = getParam_().copy("algorithm:", true);
algorithm.setParameters(algo_params);
algorithm.setLogType(log_type_);
StringList ins = getStringList_("in");
StringList outs = getStringList_("out");
StringList trafos = getStringList_("trafo_out");
Param model_params = getParam_().copy("model:", true);
String model_type = model_params.getValue("type");
model_params = model_params.copy(model_type + ":", true);
std::vector<TransformationDescription> transformations;
//-------------------------------------------------------------
// perform peak alignment
//-------------------------------------------------------------
ProgressLogger progresslogger;
progresslogger.setLogType(log_type_);
// load input
std::vector<MSExperiment<> > peak_maps(ins.size());
MzMLFile f;
f.setLogType(log_type_);
progresslogger.startProgress(0, ins.size(), "loading input files");
for (Size i = 0; i < ins.size(); ++i)
{
progresslogger.setProgress(i);
f.load(ins[i], peak_maps[i]);
}
progresslogger.endProgress();
// try to align
algorithm.align(peak_maps, transformations);
if (model_type != "none")
{
for (vector<TransformationDescription>::iterator it =
transformations.begin(); it != transformations.end(); ++it)
{
it->fitModel(model_type, model_params);
}
}
// write output
progresslogger.startProgress(0, outs.size(), "applying RT transformations and writing output files");
for (Size i = 0; i < outs.size(); ++i)
{
progresslogger.setProgress(i);
MapAlignmentTransformer::transformRetentionTimes(peak_maps[i],
transformations[i]);
// annotate output with data processing info
addDataProcessing_(peak_maps[i],
getProcessingInfo_(DataProcessing::ALIGNMENT));
f.store(outs[i], peak_maps[i]);
}
progresslogger.endProgress();
if (!trafos.empty())
{
TransformationXMLFile trafo_file;
for (Size i = 0; i < transformations.size(); ++i)
{
trafo_file.store(trafos[i], transformations[i]);
}
}
return EXECUTION_OK;
}
示例13: main_
ExitCodes main_(int, const char **)
{
// data to be passed through the algorithm
vector<vector<SILACPattern> > data;
MSQuantifications msq;
vector<Clustering *> cluster_data;
//
// Parameter handling
//
map<String, DoubleReal> label_identifiers; // list defining the mass shifts of each label (e.g. "Arg6" => 6.0201290268)
handleParameters_sample();
handleParameters_algorithm();
handleParameters_labels(label_identifiers);
handleParameters();
if (selected_labels.empty() && !out.empty()) // incompatible parameters
{
writeLog_("Error: The 'out' parameter cannot be used without a label (parameter 'sample:labels'). Use 'out_features' instead.");
return ILLEGAL_PARAMETERS;
}
//
// Initializing the SILACAnalzer with our parameters
//
SILACAnalyzer analyzer;
analyzer.setLogType(log_type_);
analyzer.initialize(
// section "sample"
selected_labels,
charge_min,
charge_max,
missed_cleavages,
isotopes_per_peptide_min,
isotopes_per_peptide_max,
// section "algorithm"
rt_threshold,
rt_min,
intensity_cutoff,
intensity_correlation,
model_deviation,
allow_missing_peaks,
// labels
label_identifiers);
//--------------------------------------------------
// loading input from .mzML
//--------------------------------------------------
MzMLFile file;
MSExperiment<Peak1D> exp;
// only read MS1 spectra ...
/*
std::vector<int> levels;
levels.push_back(1);
file.getOptions().setMSLevels(levels);
*/
LOG_DEBUG << "Loading input..." << endl;
file.setLogType(log_type_);
file.load(in, exp);
// set size of input map
exp.updateRanges();
// extract level 1 spectra
exp.getSpectra().erase(remove_if(exp.begin(), exp.end(), InMSLevelRange<MSExperiment<Peak1D>::SpectrumType>(IntList::create("1"), true)), exp.end());
// sort according to RT and MZ
exp.sortSpectra();
if (out_mzq != "")
{
vector<vector<String> > SILAClabels = analyzer.getSILAClabels(); // list of SILAC labels, e.g. selected_labels="[Lys4,Arg6][Lys8,Arg10]" => SILAClabels[0][1]="Arg6"
std::vector<std::vector<std::pair<String, DoubleReal> > > labels;
//add none label
labels.push_back(std::vector<std::pair<String, DoubleReal> >(1, std::make_pair<String, DoubleReal>(String("none"), DoubleReal(0))));
for (Size i = 0; i < SILAClabels.size(); ++i) //SILACLabels MUST be in weight order!!!
{
std::vector<std::pair<String, DoubleReal> > one_label;
for (UInt j = 0; j < SILAClabels[i].size(); ++j)
{
one_label.push_back(*(label_identifiers.find(SILAClabels[i][j]))); // this dereferencing would break if all SILAClabels would not have been checked before!
}
labels.push_back(one_label);
}
msq.registerExperiment(exp, labels); //add assays
msq.assignUIDs();
}
MSQuantifications::QUANT_TYPES quant_type = MSQuantifications::MS1LABEL;
msq.setAnalysisSummaryQuantType(quant_type); //add analysis_summary_
//--------------------------------------------------
// estimate peak width
//--------------------------------------------------
LOG_DEBUG << "Estimating peak width..." << endl;
PeakWidthEstimator::Result peak_width;
//.........这里部分代码省略.........
示例14: main_
//.........这里部分代码省略.........
parameters << "-cfg" << cfg_file;
// path to input file must be the last parameter
parameters << inputfile_name;
//-------------------------------------------------------------
// calculations
//-------------------------------------------------------------
QStringList qparam;
writeDebug_("MyriMatch arguments:", 1);
writeDebug_(String("\"") + ListUtils::concatenate(parameters, "\" \"") + "\"", 1);
for (Size i = 0; i < parameters.size(); ++i)
{
qparam << parameters[i].toQString();
}
QProcess process;
// Bad style, because it breaks relative paths?
process.setWorkingDirectory(tmp_dir.toQString());
process.start(myrimatch_executable.toQString(), qparam, QIODevice::ReadOnly);
bool success = process.waitForFinished(-1);
String myri_msg(QString(process.readAllStandardOutput()));
String myri_err(QString(process.readAllStandardError()));
writeDebug_(myri_msg, 1);
writeDebug_(myri_err, 0);
if (!success || process.exitStatus() != 0 || process.exitCode() != 0)
{
writeLog_("Error: MyriMatch problem! (Details can be seen in the logfile: \"" + logfile + "\")");
writeLog_("Note: This message can also be triggered if you run out of space in your tmp directory");
return EXTERNAL_PROGRAM_ERROR;
}
//-------------------------------------------------------------
// reading MyriMatch output
//-------------------------------------------------------------
writeDebug_("Reading output of MyriMatch", 5);
String exp_name = File::basename(inputfile_name);
String pep_file = tmp_dir + File::removeExtension(exp_name) + ".pepXML";
vector<ProteinIdentification> protein_identifications;
vector<PeptideIdentification> peptide_identifications;
PeakMap exp;
if (File::exists(pep_file))
{
MzMLFile fh;
fh.load(inputfile_name, exp);
SpectrumMetaDataLookup lookup;
lookup.readSpectra(exp.getSpectra());
PepXMLFile().load(pep_file, protein_identifications,
peptide_identifications, exp_name, lookup);
}
else
{
writeLog_("Error: MyriMatch problem! No pepXML output file (expected as '" + pep_file + "') was generated by MyriMatch.");
writeLog_("Note: This message can be triggered if no MS2 spectra were found or no identifications were made.");
writeLog_(" Myrimatch expects MS2 spectra in mzML files to contain the MSn tag. MSSpectrum with MS level 2 is not sufficient. You can use FileConverter to create such an mzML file by converting from mzML --> mzXML --> mzML.");
return EXTERNAL_PROGRAM_ERROR;
}
if (debug_level_ == 0)
{
QFile(pep_file.toQString()).remove();
QFile(cfg_file.toQString()).remove();
}
else
{
writeDebug_(String("Not removing '") + pep_file + "' for debugging purposes. Please delete manually!", 1);
writeDebug_(String("Not removing '") + cfg_file + "' for debugging purposes. Please delete manually!", 1);
}
//-------------------------------------------------------------
// writing results
//-------------------------------------------------------------
ProteinIdentification::SearchParameters search_parameters;
search_parameters.db = getStringOption_("database");
ProteinIdentification::PeakMassType mass_type = getFlag_("precursor_mass_tolerance_avg") == true ? ProteinIdentification::AVERAGE : ProteinIdentification::MONOISOTOPIC;
search_parameters.mass_type = mass_type;
search_parameters.fixed_modifications = getStringList_("fixed_modifications");
search_parameters.variable_modifications = getStringList_("variable_modifications");
search_parameters.missed_cleavages = getIntOption_("MaxMissedCleavages");
search_parameters.fragment_mass_tolerance = getDoubleOption_("fragment_mass_tolerance");
search_parameters.precursor_mass_tolerance = getDoubleOption_("precursor_mass_tolerance");
search_parameters.precursor_mass_tolerance_ppm = getStringOption_("precursor_mass_tolerance_unit") == "ppm" ? true : false;
search_parameters.fragment_mass_tolerance_ppm = getStringOption_("fragment_mass_tolerance_unit") == "ppm" ? true : false;
protein_identifications[0].setSearchParameters(search_parameters);
protein_identifications[0].setSearchEngineVersion(myrimatch_version);
protein_identifications[0].setSearchEngine("MyriMatch");
if (!protein_identifications.empty())
{
StringList ms_runs;
exp.getPrimaryMSRunPath(ms_runs);
protein_identifications[0].setPrimaryMSRunPath(ms_runs);
}
IdXMLFile().store(outputfile_name, protein_identifications, peptide_identifications);
return EXECUTION_OK;
}
示例15: main_
ExitCodes main_(int, const char **) override
{
//-------------------------------------------------------------
// Parsing parameters
//-------------------------------------------------------------
String in = getStringOption_("in");
String out_sirius = getStringOption_("out_sirius");
String out_csifingerid = getStringOption_("out_fingerid");
// needed for counting
int number_compounds = getIntOption_("number");
// Parameter for Sirius3
QString executable = getStringOption_("executable").toQString();
const QString profile = getStringOption_("profile").toQString();
const QString elements = getStringOption_("elements").toQString();
const QString database = getStringOption_("database").toQString();
const QString isotope = getStringOption_("isotope").toQString();
const QString noise = QString::number(getIntOption_("noise"));
const QString ppm_max = QString::number(getIntOption_("ppm_max"));
const QString candidates = QString::number(getIntOption_("candidates"));
bool auto_charge = getFlag_("auto_charge");
bool no_recalibration = getFlag_("no_recalibration");
bool iontree = getFlag_("iontree");
//-------------------------------------------------------------
// Determination of the Executable
//-------------------------------------------------------------
// Parameter executable not provided
if (executable.isEmpty())
{
const QProcessEnvironment env;
const QString & qsiriuspathenv = env.systemEnvironment().value("SIRIUS_PATH");
if (qsiriuspathenv.isEmpty())
{
writeLog_( "FATAL: Executable of Sirius could not be found. Please either use SIRIUS_PATH env variable or provide with -executable");
return MISSING_PARAMETERS;
}
executable = qsiriuspathenv;
}
// Normalize file path
QFileInfo file_info(executable);
executable = file_info.canonicalFilePath();
writeLog_("Executable is: " + executable);
const QString & path_to_executable = File::path(executable).toQString();
//-------------------------------------------------------------
// Calculations
//-------------------------------------------------------------
PeakMap spectra;
MzMLFile f;
f.setLogType(log_type_);
f.load(in, spectra);
std::vector<String> subdirs;
QString tmp_base_dir = File::getTempDirectory().toQString();
QString tmp_dir = QDir(tmp_base_dir).filePath(File::getUniqueName().toQString());
String tmp_ms_file = QDir(tmp_base_dir).filePath((File::getUniqueName() + ".ms").toQString());
String out_dir = QDir(tmp_dir).filePath("sirius_out");
//Write msfile
SiriusMSFile::store(spectra, tmp_ms_file);
// Assemble SIRIUS parameters
QStringList process_params;
process_params << "-p" << profile
<< "-e" << elements
<< "-d" << database
<< "-s" << isotope
<< "--noise" << noise
<< "--candidates" << candidates
<< "--ppm-max" << ppm_max
<< "--quiet"
<< "--output" << out_dir.toQString(); //internal output folder for temporary SIRIUS output file storage
// Add flags
if (no_recalibration)
{
process_params << "--no-recalibration";
}
if (!out_csifingerid.empty())
{
process_params << "--fingerid";
}
if (iontree)
{
process_params << "--iontree";
}
if (auto_charge)
{
process_params << "--auto-charge";
}
process_params << tmp_ms_file.toQString();
//.........这里部分代码省略.........