One package less failing in science. OBS-URL: https://build.opensuse.org/request/show/726471 OBS-URL: https://build.opensuse.org/package/show/science/xtandem?expand=0&rev=18
86 lines
3.2 KiB
Diff
86 lines
3.2 KiB
Diff
diff --git a/src/saxmzmlhandler.cpp b/src/saxmzmlhandler.cpp
|
|
index 9348b62..88dd906 100644
|
|
--- a/src/saxmzmlhandler.cpp
|
|
+++ b/src/saxmzmlhandler.cpp
|
|
@@ -93,6 +93,7 @@ void SAXMzmlHandler::startElement(const XML_Char *el, const XML_Char **attr)
|
|
const char* name = getAttrValue("name", attr);
|
|
cout.flush();
|
|
const char* accession = getAttrValue("accession", attr);
|
|
+ const char* unitAccession = getAttrValue("unitAccession", attr);
|
|
const char* value = getAttrValue("value", attr);
|
|
if (m_bInRefGroup)
|
|
{
|
|
@@ -100,12 +101,13 @@ void SAXMzmlHandler::startElement(const XML_Char *el, const XML_Char **attr)
|
|
m_cvParam.refGroupName = string(m_ccurrentRefGroupName);
|
|
m_cvParam.name = string(name);
|
|
m_cvParam.accession = string(accession);
|
|
+ m_cvParam.unitAccession = string(unitAccession);
|
|
m_cvParam.value = string(value);
|
|
m_refGroupCvParams.push_back(m_cvParam);
|
|
}
|
|
else
|
|
{
|
|
- processCVParam(name,accession,value);
|
|
+ processCVParam(name,accession,unitAccession,value);
|
|
}
|
|
}
|
|
else if (isElement("referenceableParamGroupRef", el))
|
|
@@ -115,7 +117,7 @@ void SAXMzmlHandler::startElement(const XML_Char *el, const XML_Char **attr)
|
|
{
|
|
if(!strcmp(groupName,m_refGroupCvParams[i].refGroupName.c_str()))
|
|
{
|
|
- processCVParam(m_refGroupCvParams[i].name.c_str(), m_refGroupCvParams[i].accession.c_str(), m_refGroupCvParams[i].value.c_str());
|
|
+ processCVParam(m_refGroupCvParams[i].name.c_str(), m_refGroupCvParams[i].accession.c_str(), m_refGroupCvParams[i].unitAccession.c_str(), m_refGroupCvParams[i].value.c_str());
|
|
}
|
|
}
|
|
}
|
|
@@ -165,7 +167,7 @@ void SAXMzmlHandler::characters(const XML_Char *s, int len)
|
|
}
|
|
}
|
|
|
|
-void SAXMzmlHandler::processCVParam(const char* name, const char* accession, const char* value)
|
|
+void SAXMzmlHandler::processCVParam(const char* name, const char* accession, const char* unitAccession, const char* value)
|
|
{
|
|
if ((!strcmp(name, "ms level") || !strcmp(accession,"MS:1000511")) && !strcmp(value,"2")){
|
|
m_bInMsLevel2 = true;
|
|
@@ -178,9 +180,16 @@ void SAXMzmlHandler::processCVParam(const char* name, const char* accession, con
|
|
// m_strDesc = value;
|
|
}
|
|
else if(!strcmp(name, "scan start time") || !strcmp(accession,"MS:1000016")) {
|
|
- if(atof(value) > 0.0) {
|
|
+ float fvalue = atof(value);
|
|
+ if (!strcmp(unitAccession, "UO:0000010")) // seconds
|
|
+ fvalue *= 1.0;
|
|
+ else if (!strcmp(unitAccession, "UO:0000031")) // minutes
|
|
+ fvalue *= 60.0;
|
|
+ else
|
|
+ fvalue *= 60.0; // backward compat
|
|
+ if(fvalue > 0.0) {
|
|
char pLine[256];
|
|
- sprintf(pLine,"PT%.3lfS",60.0*atof(value));
|
|
+ sprintf(pLine,"PT%.3lfS",fvalue);
|
|
m_strRt = pLine;
|
|
}
|
|
else {
|
|
diff --git a/src/saxmzmlhandler.h b/src/saxmzmlhandler.h
|
|
index c11eae9..3a4a387 100644
|
|
--- a/src/saxmzmlhandler.h
|
|
+++ b/src/saxmzmlhandler.h
|
|
@@ -63,7 +63,7 @@ private:
|
|
/**
|
|
* Process cv params
|
|
*/
|
|
- void processCVParam(const char* name, const char* accession, const char* value);
|
|
+ void processCVParam(const char* name, const char* accession, const char* unitAccession, const char* value);
|
|
|
|
private:
|
|
// Flags indicating parser is inside a particular tag.
|
|
@@ -81,6 +81,7 @@ private:
|
|
string name;
|
|
string accession;
|
|
string value;
|
|
+ string unitAccession;
|
|
};
|
|
vector <cvParam> m_refGroupCvParams;
|
|
|