Commit c5fd849d authored by Langella Olivier's avatar Langella Olivier
Browse files

libpappsomspp (0.4.3-1) stretch

parent f74e3747
......@@ -59,7 +59,7 @@ endif ()
SET(PAPPSOMSPP_VERSION_MAJOR "0")
SET(PAPPSOMSPP_VERSION_MINOR "4")
SET(PAPPSOMSPP_VERSION_PATCH "2")
SET(PAPPSOMSPP_VERSION_PATCH "3")
SET(PAPPSOMSPP_VERSION "${PAPPSOMSPP_VERSION_MAJOR}.${PAPPSOMSPP_VERSION_MINOR}.${PAPPSOMSPP_VERSION_PATCH}")
# Set the CMAKE_PREFIX_PATH for the find_library fonction when using non
......
Language: Cpp
---
Language: Cpp
# BasedOnStyle: LLVM
AccessModifierOffset: 0
AccessModifierOffset: 4
AlignAfterOpenBracket: Align
AlignConsecutiveAssignments: true
AlignConsecutiveDeclarations: false
......@@ -15,14 +16,10 @@ AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
# Deprecated AlwaysBreakAfterDefinitionReturnType: All
AlwaysBreakAfterReturnType: AllDefinitions
AlwaysBreakBeforeMultilineStrings: false
AlwaysBreakTemplateDeclarations: false
BinPackArguments: true
BinPackParameters: true
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: true
BinPackArguments: false
BinPackParameters: false
BraceWrapping:
AfterClass: false
AfterControlStatement: false
......@@ -35,13 +32,13 @@ BraceWrapping:
BeforeCatch: false
BeforeElse: false
IndentBraces: false
BreakAfterJavaFieldAnnotations: false
BreakBeforeBinaryOperators: None
BreakBeforeBraces: GNU
BreakBeforeTernaryOperators: true
BreakConstructorInitializersBeforeComma: true
BreakAfterJavaFieldAnnotations: false
BreakConstructorInitializersBeforeComma: false
BreakStringLiterals: true
ColumnLimit: 80
ColumnLimit: 80
CommentPragmas: '^ IWYU pragma:'
ConstructorInitializerAllOnOneLineOrOnePerLine: true
ConstructorInitializerIndentWidth: 2
......@@ -63,12 +60,12 @@ IndentCaseLabels: true
IndentWidth: 2
IndentWrappedFunctionNames: false
JavaScriptQuotes: Leave
JavaScriptWrapImports: true
KeepEmptyLinesAtTheStartOfBlocks: true
# Language: Cpp
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 2
NamespaceIndentation: All
NamespaceIndentation: Inner
ObjCBlockIndentWidth: 2
ObjCSpaceAfterProperty: false
ObjCSpaceBeforeProtocolList: true
......@@ -82,15 +79,18 @@ PointerAlignment: Right
ReflowComments: true
SortIncludes: false
SpaceAfterCStyleCast: false
# SpaceAfterTemplateKeyword: false
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: Never
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInContainerLiterals: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
TabWidth: 2
UseTab: Never
...
libpappsomspp (0.4.3-1) stretch; urgency=medium
* new buffered XIC reader based on pwiz library
-- Olivier Langella <olivier.langella@u-psud.fr> Tue, 14 Aug 2018 14:27:31 +0200
libpappsomspp (0.4.2-1) stretch; urgency=medium
* new API to read MSrun data
......
......@@ -6,7 +6,7 @@
*/
/*******************************************************************************
* Copyright (c) 2015 Olivier Langella <Olivier.Langella@moulon.inra.fr>.
* Copyright (c) 2015 Olivier Langella <Olivier.Langella@u-psud.fr>.
*
* This file is part of the PAPPSOms++ library.
*
......@@ -24,126 +24,134 @@
* along with PAPPSOms++. If not, see <http://www.gnu.org/licenses/>.
*
* Contributors:
* Olivier Langella <Olivier.Langella@moulon.inra.fr> - initial API and implementation
* Olivier Langella <Olivier.Langella@moulon.inra.fr> - initial API and
*implementation
******************************************************************************/
#include "mass_range.h"
#include "exception/exceptionnotpossible.h"
#include "mass_range.h"
#include <QDebug>
#include <QStringList>
#include <cmath>
#include <QDebug>
using namespace pappso;
Precision::MapPpmPrecision Precision::_map_ppm = [] {
MapPpmPrecision ret;
Precision::MapPpmPrecision Precision::_map_ppm = []
{
MapPpmPrecision ret;
return ret;
return ret;
}();
Precision::MapDaltonPrecision Precision::_map_dalton = [] {
MapDaltonPrecision ret;
Precision::MapDaltonPrecision Precision::_map_dalton = []
{
MapDaltonPrecision ret;
return ret;
return ret;
}();
pappso_double PrecisionBase::getValue() const {
return _precision;
}
PrecisionP Precision::fromString(const QString & precision_str) {
QStringList list = precision_str.split(QRegExp("\\s+"), QString::SkipEmptyParts);
if (list.size() > 0) {
bool ok;
pappso_double value = list[0].toDouble(&ok);
if (!ok) {
throw ExceptionNotPossible(QObject::tr("ERROR getting precision from string :\nunable to convert %1 to number in %2").arg(value).arg(precision_str));
pappso_double PrecisionBase::getValue() const { return _precision; }
PrecisionP Precision::fromString(const QString &precision_str) {
QStringList list =
precision_str.split(QRegExp("\\s+"), QString::SkipEmptyParts);
if (list.size() > 0) {
bool ok;
pappso_double value = list[0].toDouble(&ok);
if (!ok) {
throw ExceptionNotPossible(
QObject::tr("ERROR getting precision from string :\nunable to "
"convert %1 to number in %2")
.arg(value)
.arg(precision_str));
}
if (list.size() == 1) {
return Precision::getDaltonInstance(value);
} else {
if (list.size() == 2) {
if (list[1].toLower() == "ppm") {
return Precision::getPpmInstance(value);
}
if (list.size()==1) {
return Precision::getDaltonInstance(value);
} else {
if (list.size()==2) {
if (list[1].toLower() == "ppm") {
return Precision::getPpmInstance(value);
}
if (list[1].toLower() == "dalton") {
return Precision::getDaltonInstance(value);
}
throw ExceptionNotPossible(QObject::tr("ERROR getting precision from string :\nprecision unit %1 to not known in %2").arg(list[1]).arg(precision_str));
}
if (list[1].toLower() == "dalton") {
return Precision::getDaltonInstance(value);
}
}
throw ExceptionNotPossible(QObject::tr("ERROR getting precision from string :\nunable to convert %1 to precision").arg(precision_str));
throw ExceptionNotPossible(
QObject::tr("ERROR getting precision from string :\nprecision unit "
"%1 to not known in %2")
.arg(list[1])
.arg(precision_str));
}
}
}
throw ExceptionNotPossible(QObject::tr("ERROR getting precision from string "
":\nunable to convert %1 to precision")
.arg(precision_str));
}
PrecisionP Precision::getDaltonInstance(pappso_double precision) {
MapDaltonPrecision::iterator it = Precision::_map_dalton.find(precision);
if (it == Precision::_map_dalton.end() ) {
// not found
std::pair< MapDaltonPrecision::iterator, bool > insert_res = Precision::_map_dalton.insert(
std::pair<pappso_double, DaltonPrecision * > (precision, new DaltonPrecision(precision)));
it = insert_res.first;
} else {
// found
}
return it->second;
MapDaltonPrecision::iterator it = Precision::_map_dalton.find(precision);
if (it == Precision::_map_dalton.end()) {
// not found
std::pair<MapDaltonPrecision::iterator, bool> insert_res =
Precision::_map_dalton.insert(
std::pair<pappso_double, DaltonPrecision *>(
precision, new DaltonPrecision(precision)));
it = insert_res.first;
} else {
// found
}
return it->second;
}
PrecisionP Precision::getPpmInstance(pappso_double precision) {
MapPpmPrecision::iterator it = Precision::_map_ppm.find(precision);
if (it == Precision::_map_ppm.end() ) {
// not found
std::pair< MapPpmPrecision::iterator, bool > insert_res = Precision::_map_ppm.insert(
std::pair<pappso_double, PpmPrecision * >(precision, new PpmPrecision(precision)));
it = insert_res.first;
} else {
// found
}
return it->second;
MapPpmPrecision::iterator it = Precision::_map_ppm.find(precision);
if (it == Precision::_map_ppm.end()) {
// not found
std::pair<MapPpmPrecision::iterator, bool> insert_res =
Precision::_map_ppm.insert(std::pair<pappso_double, PpmPrecision *>(
precision, new PpmPrecision(precision)));
it = insert_res.first;
} else {
// found
}
return it->second;
}
PrecisionUnit PpmPrecision::getUnit() const {
return PrecisionUnit::ppm;
};
PrecisionUnit PpmPrecision::getUnit() const { return PrecisionUnit::ppm; };
PrecisionUnit DaltonPrecision::getUnit() const {
return PrecisionUnit::dalton;
return PrecisionUnit::dalton;
};
MassRange::MassRange(mz mz, PrecisionP precision): _mz(mz),_delta(precision->getDelta(_mz)) {
}
MassRange::MassRange(mz mz, PrecisionP precision)
: _mz(mz), _delta(precision->getDelta(_mz)) {}
MassRange::MassRange(pappso::mz mz, PrecisionP precision_lower, PrecisionP precision_upper) {
MassRange::MassRange(pappso::mz mz, PrecisionP precision_lower,
PrecisionP precision_upper) {
_delta = (precision_lower->getDelta(mz) + precision_upper->getDelta(mz))/2;
_mz = mz - precision_lower->getDelta(mz) + _delta;
_delta = (precision_lower->getDelta(mz) + precision_upper->getDelta(mz)) / 2;
_mz = mz - precision_lower->getDelta(mz) + _delta;
}
MassRange::MassRange (const MassRange & other): _mz(other._mz),_delta(other._delta) {
//std::cout << "MassRange::MassRange (const MassRange & other)" << endl;
MassRange::MassRange(const MassRange &other)
: _mz(other._mz), _delta(other._delta) {
// std::cout << "MassRange::MassRange (const MassRange & other)" << endl;
}
const mz MassRange::getMz() const {
return _mz;
}
const mz MassRange::getMz() const { return _mz; }
bool MassRange::contains(mz mz) const {
//qDebug() << " " << std::abs(mz - _mz) << " _delta:" << _delta;
if (std::abs(mz - _mz) <= _delta) {
return true;
}
return false;
// qDebug() << " " << std::abs(mz - _mz) << " _delta:" << _delta;
if (std::abs(mz - _mz) <= _delta) {
return true;
}
return false;
}
const QString MassRange::toString() const {
//QString s = "mz=" + QString::number(_mz) + " delta=" + QString::number(_delta);
return QString("mz=%1 delta=%2 : %3 < %4 < %5").arg(_mz).arg(_delta).arg(getLowest()).arg(_mz).arg(getHighest());
// QString s = "mz=" + QString::number(_mz) + " delta=" +
// QString::number(_delta);
return QString("mz=%1 delta=%2 : %3 < %4 < %5")
.arg(_mz)
.arg(_delta)
.arg(getLowest())
.arg(_mz)
.arg(getHighest());
}
......@@ -22,10 +22,11 @@
* along with PAPPSOms++. If not, see <http://www.gnu.org/licenses/>.
*
* Contributors:
* Olivier Langella <Olivier.Langella@moulon.inra.fr> - initial API and implementation
* Olivier Langella <Olivier.Langella@moulon.inra.fr> - initial API and
*implementation
******************************************************************************/
//make test ARGS="-V -I 14,14"
// make test ARGS="-V -I 14,14"
#include <pappsomspp/mass_range.h>
#include <pappsomspp/peptide/peptidenaturalisotopelist.h>
......@@ -45,130 +46,174 @@
using namespace pappso;
using namespace std;
//using namespace pwiz::msdata;
int main() {
cout << endl << "..:: readMgf ::.." << endl;
bool refine_spectrum_synthesis = false;
Spectrum spectrum_simple = readMgf(QString(CMAKE_SOURCE_DIR).append("/test/data/peaklist_15046_simple_xt.mgf"));
//.applyCutOff(150).takeNmostIntense(100).applyDynamicRange(100);
Peptide peptide("AIADGSLLDLLR");
PeptideSp peptide_sp(peptide.makePeptideSp());
//peptide_sp.get()->addAaModification(AaModification::getInstance("MOD:00397"), 0);
PrecisionP precision = Precision::getDaltonInstance(0.02);
std::list<PeptideIon> ion_list;
ion_list.push_back(PeptideIon::y);
ion_list.push_back(PeptideIon::b);
cout << "spectrum_simple size " << spectrum_simple.getSpectrumSize()<< endl;
XtandemHyperscore hyperscore_withxtspectrum(spectrum_simple, peptide_sp,2, precision, ion_list,refine_spectrum_synthesis);
cout << "spectrum_simple " << peptide.getSequence().toStdString()<< " hyperscore=" << hyperscore_withxtspectrum.getHyperscore()<< endl;
float test_tandem = std::round(10 * hyperscore_withxtspectrum.getHyperscore())/10;
if (test_tandem != (float) 33.5) {
cerr << "test_tandem != 33.5 " << test_tandem << endl;
return 1;
// using namespace pwiz::msdata;
int
main()
{
cout << endl << "..:: readMgf ::.." << endl;
bool refine_spectrum_synthesis = false;
Spectrum spectrum_simple =
readMgf(QString(CMAKE_SOURCE_DIR)
.append("/test/data/peaklist_15046_simple_xt.mgf"));
//.applyCutOff(150).takeNmostIntense(100).applyDynamicRange(100);
Peptide peptide("AIADGSLLDLLR");
PeptideSp peptide_sp(peptide.makePeptideSp());
// peptide_sp.get()->addAaModification(AaModification::getInstance("MOD:00397"),
// 0);
PrecisionP precision = Precision::getDaltonInstance(0.02);
std::list<PeptideIon> ion_list;
ion_list.push_back(PeptideIon::y);
ion_list.push_back(PeptideIon::b);
cout << "spectrum_simple size " << spectrum_simple.getSpectrumSize() << endl;
XtandemHyperscore hyperscore_withxtspectrum(spectrum_simple, peptide_sp, 2,
precision, ion_list,
refine_spectrum_synthesis);
cout << "spectrum_simple " << peptide.getSequence().toStdString()
<< " hyperscore=" << hyperscore_withxtspectrum.getHyperscore() << endl;
float test_tandem =
std::round(10 * hyperscore_withxtspectrum.getHyperscore()) / 10;
if(test_tandem != (float)33.5)
{
cerr << "test_tandem != 33.5 " << test_tandem << endl;
return 1;
}
// hyperscore="33.5"
refine_spectrum_synthesis = true;
XtandemHyperscore hyperscore_model(spectrum_simple, peptide_sp,2, precision, ion_list,refine_spectrum_synthesis);
cout << "spectrum_simple with spectrum model " << peptide.getSequence().toStdString()<< " hyperscore=" << hyperscore_model.getHyperscore()<< endl;
// hyperscore="35.4"
test_tandem = round(10 * hyperscore_model.getHyperscore())/10;
if (test_tandem != (float) 35.4) {
cerr << std::setprecision(5) << "test_tandem != 35.4 " << test_tandem << endl;
return 1;
// hyperscore="33.5"
refine_spectrum_synthesis = true;
XtandemHyperscore hyperscore_model(spectrum_simple, peptide_sp, 2, precision,
ion_list, refine_spectrum_synthesis);
cout << "spectrum_simple with spectrum model "
<< peptide.getSequence().toStdString()
<< " hyperscore=" << hyperscore_model.getHyperscore() << endl;
// hyperscore="35.4"
test_tandem = round(10 * hyperscore_model.getHyperscore()) / 10;
if(test_tandem != (float)35.4)
{
cerr << std::setprecision(5) << "test_tandem != 35.4 " << test_tandem
<< endl;
return 1;
}
XtandemSpectrumProcess spectrum_process;
spectrum_process.setMinimumMz(150);
spectrum_process.setNmostIntense(100);
spectrum_process.setDynamicRange(100);
// 20120906_balliau_extract_1_A01_urnb-1
// http://pappso.inra.fr/protic/proticprod/angular/#/peptide_hits/947252
// 35.400
// pwiz::msdata::MSDataFile
// dataFile("/home/langella/developpement/git/pappsomspp/test/data/peaklist_15046.mgf");
Spectrum spectrum = spectrum_process.process(
readMgf(QString(CMAKE_SOURCE_DIR).append("/test/data/peaklist_15046.mgf")),
628.86414, 2);
//.applyCutOff(150).takeNmostIntense(100).applyDynamicRange(100);
/*
* <domain id="15046.1.1" start="430" end="441" expect="2.9e-05"
* mh="1256.7213" delta="-0.0010" hyperscore="35.4" nextscore="32.3"
* y_score="11.1" y_ions="9" b_score="10.3" b_ions="2" pre="CGDK" post="QVFT"
* seq="AIADGSLLDLLR" missed_cleavages="0">
* */
// spectrum.applyCutOff(150);
// spectrum_temp.takeNmostIntense(50,spectrum);
cout << "spectrum size " << spectrum.getSpectrumSize() << endl;
refine_spectrum_synthesis = false;
XtandemHyperscore hyperscore(spectrum, peptide.makePeptideSp(), 2, precision,
ion_list, refine_spectrum_synthesis);
cout << "peptide " << peptide.getSequence().toStdString()
<< " hyperscore=" << hyperscore.getHyperscore() << endl;
// SUCCESS
// msconvert
// /gorgone/pappso/formation/Janvier2014/TD/mzXML/20120906_balliau_extract_1_A01_urnb-1.mzXML
// --filter "scanNumber 2016" --mgf
spectrum = spectrum_process.process(
readMgf(QString(CMAKE_SOURCE_DIR).append("/test/data/scan_2016.mgf")),
679.467, 3);
//.applyCutOff(150).takeNmostIntense(100).applyDynamicRange(100);
refine_spectrum_synthesis = true;
Peptide pep("EDKPQPPPEGR");
PrecisionP precisionb = Precision::getDaltonInstance(0.02);
XtandemHyperscore hyperscoreb(spectrum, pep.makePeptideSp(), 2, precisionb,
ion_list, refine_spectrum_synthesis);
cout << "peptide " << pep.getSequence().toStdString()
<< " hyperscore=" << hyperscoreb.getHyperscore() << endl;
// match ion ED b 245.077, pi=15 for X!Tandem
//"ED" 245.077 1 intensity: 20.155 Pi= 15 sum= 448.197
// Spectrum::getHyperscore peak match ! 245.046 -0.031235
// 15968
// msconvert
// /gorgone/pappso/formation/Janvier2014/TD/mzXML/20120906_balliau_extract_1_A01_urnb-1.mzXML
// --filter "scanNumber 15968" --mgf
spectrum =
readMgf(QString(CMAKE_SOURCE_DIR).append("/test/data/scan_15968.mgf"))
.removeMzUnder(150);
refine_spectrum_synthesis = true;
// spectrum.debugPrintValues();
Peptide pep15968("EITLGFVDLLR");
XtandemSpectrumProcess xt_spectrum_process;
xt_spectrum_process.setExcludeParent(true);
xt_spectrum_process.setDynamicRange(100);
xt_spectrum_process.setNmostIntense(100);
// spectrum = spectrum.removeParent(pep15968.makePeptideSp(), 2, 2,
// 2).takeNmostIntense(100).applyDynamicRange(100);
spectrum = xt_spectrum_process.process(spectrum, 638.36934732588, 2);
XtandemHyperscore hyperscore15968(spectrum, pep15968.makePeptideSp(), 2,
precisionb, ion_list,
refine_spectrum_synthesis);
cout << "peptide " << pep15968.getSequence().toStdString()
<< " hyperscore15968=" << hyperscore15968.getHyperscore() << endl;
cout << "peptide " << pep15968.getSequence().toStdString()
<< " mz1=" << pep15968.getMz(1) << " mz2=" << pep15968.getMz(2) << endl;
std::vector<PeptideIon> ion_vec;
ion_vec.push_back(PeptideIon::y);
ion_vec.push_back(PeptideIon::b);
XtandemHyperscoreBis hyperscore15968bis(refine_spectrum_synthesis, precisionb,
ion_vec);
if(hyperscore15968bis.computeXtandemHyperscore(spectrum, pep15968, 2))
{
cout << "XtandemHyperscoreBis peptide "
<< pep15968.getSequence().toStdString()
<< " hyperscore15968bis=" << hyperscore15968bis.getHyperscore()
<< endl;
cout << "XtandemHyperscoreBis peptide "
<< pep15968.getSequence().toStdString()
<< " mz1=" << pep15968.getMz(1) << " mz2=" << pep15968.getMz(2)
<< endl;
}
XtandemSpectrumProcess spectrum_process;
spectrum_process.setMinimumMz(150);
spectrum_process.setNmostIntense(100);
spectrum_process.setDynamicRange(100);
// 20120906_balliau_extract_1_A01_urnb-1
//http://pappso.inra.fr/protic/proticprod/angular/#/peptide_hits/947252
//35.400
//pwiz::msdata::MSDataFile dataFile("/home/langella/developpement/git/pappsomspp/test/data/peaklist_15046.mgf");
Spectrum spectrum = spectrum_process.process(readMgf(QString(CMAKE_SOURCE_DIR).append("/test/data/peaklist_15046.mgf")),628.86414,2);
//.applyCutOff(150).takeNmostIntense(100).applyDynamicRange(100);
/*
* <domain id="15046.1.1" start="430" end="441" expect="2.9e-05" mh="1256.7213" delta="-0.0010" hyperscore="35.4" nextscore="32.3" y_score="11.1" y_ions="9" b_score="10.3" b_ions="2" pre="CGDK" post="QVFT" seq="AIADGSLLDLLR" missed_cleavages="0">
* */
//spectrum.applyCutOff(150);
// spectrum_temp.takeNmostIntense(50,spectrum);
cout << "spectrum size " << spectrum.getSpectrumSize()<< endl;
refine_spectrum_synthesis = false;
XtandemHyperscore hyperscore(spectrum, peptide.makePeptideSp(),2, precision, ion_list,refine_spectrum_synthesis);
cout << "peptide " << peptide.getSequence().toStdString()<< " hyperscore=" << hyperscore.getHyperscore()<< endl;
//SUCCESS
// msconvert /gorgone/pappso/formation/Janvier2014/TD/mzXML/20120906_balliau_extract_1_A01_urnb-1.mzXML --filter "scanNumber 2016" --mgf
spectrum = spectrum_process.process(readMgf(QString(CMAKE_SOURCE_DIR).append("/test/data/scan_2016.mgf")),679.467,3);
//.applyCutOff(150).takeNmostIntense(100).applyDynamicRange(100);
refine_spectrum_synthesis = true;
Peptide pep("EDKPQPPPEGR");
PrecisionP precisionb = Precision::getDaltonInstance(0.02);
XtandemHyperscore hyperscoreb(spectrum, pep.makePeptideSp(),2, precisionb, ion_list,refine_spectrum_synthesis);
cout << "peptide " << pep.getSequence().toStdString()<< " hyperscore=" << hyperscoreb.getHyperscore()<< endl;
//match ion ED b 245.077, pi=15 for X!Tandem
//"ED" 245.077 1 intensity: 20.155 Pi= 15 sum= 448.197
//Spectrum::getHyperscore peak match ! 245.046 -0.031235
//15968
// msconvert /gorgone/pappso/formation/Janvier2014/TD/mzXML/20120906_balliau_extract_1_A01_urnb-1.mzXML --filter "scanNumber 15968" --mgf
spectrum = readMgf(QString(CMAKE_SOURCE_DIR).append("/test/data/scan_15968.mgf"))
.removeMzUnder(150);
refine_spectrum_synthesis = true;
//spectrum.debugPrintValues();
Peptide pep15968("EITLGFVDLLR");
XtandemSpectrumProcess xt_spectrum_process;
xt_spectrum_process.setExcludeParent(true);
xt_spectrum_process.setDynamicRange(100);
xt_spectrum_process.setNmostIntense(100);
//spectrum = spectrum.removeParent(pep15968.makePeptideSp(), 2, 2, 2).takeNmostIntense(100).applyDynamicRange(100);
spectrum = xt_spectrum_process.process(spectrum, 638.36934732588, 2);
XtandemHyperscore hyperscore15968(spectrum, pep15968.makePeptideSp(), 2, precisionb, ion_list,refine_spectrum_synthesis);
cout << "peptide " << pep15968.getSequence().toStdString()<< " hyperscore15968=" << hyperscore15968.getHyperscore()<< endl;
cout << "peptide " << pep15968.getSequence().toStdString()<< " mz1=" << pep15968.getMz(1)<< " mz2=" << pep15968.getMz(2)<< endl;