From: Nichole <ni...@us...> - 2006-06-24 08:45:21
|
Update of /cvsroot/sashimi/trans_proteomic_pipeline/src/Quantitation/Libra/LibraPeptideParser In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv13514 Modified Files: LibraConditionHandler.cpp LibraConditionHandler.hpp Log Message: Edited the parsing to read the new the fragmentMasses elements, reagent, in condition.xml Index: LibraConditionHandler.hpp =================================================================== RCS file: /cvsroot/sashimi/trans_proteomic_pipeline/src/Quantitation/Libra/LibraPeptideParser/LibraConditionHandler.hpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** LibraConditionHandler.hpp 13 Jun 2006 06:55:44 -0000 1.6 --- LibraConditionHandler.hpp 24 Jun 2006 08:45:18 -0000 1.7 *************** *** 152,155 **** --- 152,157 ---- int getNumCentroidingIterations(); + int toString(); + }; Index: LibraConditionHandler.cpp =================================================================== RCS file: /cvsroot/sashimi/trans_proteomic_pipeline/src/Quantitation/Libra/LibraPeptideParser/LibraConditionHandler.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** LibraConditionHandler.cpp 13 Jun 2006 06:55:44 -0000 1.7 --- LibraConditionHandler.cpp 24 Jun 2006 08:45:18 -0000 1.8 *************** *** 60,91 **** int LibraConditionHandler::getNormalPosition() { - - /* - if ( m_normalPosition == 0 || m_normalPosition == -2) - { - // do nothing - - } else if ( m_normalPosition > 1 ) - { - // check that selection is within bounds of array... - // number of "channels is size of vector m_mass - int nChannels = m_mass.size(); - - // if out of bounds, set to 0 - if ( (m_normalPosition - 1) < 0 || (m_normalPosition - 1) > nChannels ) - { - - m_normalPosition = 0; - - } - - } else - { - m_normalPosition = 0; - } - */ - return m_normalPosition; - } --- 60,64 ---- *************** *** 116,132 **** /** ! * xxxxxxx need to replace this with a proper xml parser */ int LibraConditionHandler::readFile() { ! int n; ! char ch; ! char* pValue; ! char buff[1000]; ! double mass; std::ifstream in(conditionFileName); --- 89,115 ---- /** ! * parse condition xml file */ int LibraConditionHandler::readFile() { ! double mass; ! // int line_width = 10000; ! char nextline[10000]; ! char* data = NULL; ! Array<Tag*>* tags = NULL; ! Tag* tag = NULL; ! ! // in Element tags for elements with children ! int inFragmentMassesElement; ! int inIsotopicContributionsElement; ! int inContributingMzElement; ! int aContributingMz; ! int anAffectedMz; ! float aCorrection; ! int initIsoMatrix; std::ifstream in(conditionFileName); *************** *** 136,406 **** if (dbug) cout << "reading condition file : "<< conditionFileName << endl; - try { if (!in) throw 100; ! while( !in.eof() ) ! { ! in.get( ch ); // check read state: checkread = in.rdstate(); ! if (checkread & ios::eofbit ) ! ! int dummyvar = 1; ! ! else if (checkread & ios::failbit ) ! ! throw 101; ! ! else if (checkread & ios::badbit ) ! ! throw 101; ! ! // parse ch ! if( (ch == '<') || (strlen(buff) > 1 ) ) ! { // Element start ! ! if( in.peek() == '/' ) ! { // Element closing tag ! ! continue; ! ! } else ! { // Element opening tag ! ! in.get( buff , 1000 , '>' ); ! ! if( strstr( buff , "fragmentMasses" ) ) ! { ! ! if (dbug) cout << "Target masses:\n"; ! ! while( in.peek() != '<' ) ! { ! // Read mass list ! ! n = 0; ! ! in.get( ch ); ! ! ! while( ( (ch >= '0') && (ch <= '9') ) || (ch == '.') ) ! { ! // Fragment mass ! buff[n] = ch; ! ! n++; ! ! in.get( ch ); ! } ! ! buff[n] = '\0'; ! ! mass = atof( buff ); ! ! if( mass ) ! { ! ! m_mass.push_back( mass ); ! ! if (dbug) cout << "\t" << mass << endl; ! ! } ! ! } ! ! // Sort the reagent masses in ascending order ! std::sort( m_mass.begin() , m_mass.end() ); ! ! if (dbug) cout << "finished parsing for reagent masses" <<endl; ! ! // read isotopicContributions from xml file ! } else if( strstr( buff , "isotopicContributions" ) ) ! { ! if (dbug) cout << "parsing isotopicContributions" <<endl; ! ! ! // set flag to do isotopic corrections: ! m_useIsotopicCorrection = true; ! ! int aContributingMz; ! ! int anAffectedMz; ! ! float aCorrection; ! ! int row, col; ! ! // Fill the isotopic contribution matrix with zeros ! for( row = 0 ; row < (int) m_mass.size() ; row++ ) ! { ! ! m_massIsotopes.push_back( vf() ); ! ! for( col = 0 ; col < (int) m_mass.size() ; col++ ) ! { ! ! m_massIsotopes[row].push_back( 0 ); ! ! } ! } ! in.getline( buff, 10 ); // get > ! in.getline( buff, 100 ); // get <contributingMz value=" "> ! while( !strstr( buff , "isotopicContributions" ) ) ! { // Stay in here until the end of this element ! if( strstr( buff , "contributingMz" ) ) ! { ! if( (pValue = strstr( buff , "value=\"" )) ) ! { ! pValue += strlen( "value=\"" ); ! aContributingMz = atoi( pValue ); ! if (dbug) cout << "contributing mz " << aContributingMz << endl; ! } else { throw 102; } ! ! in.getline( buff , 1000 , '>' ); ! while( !strstr( buff , "contributingMz" ) ) ! { // Stay in here untill the end of this element ! if( strstr( buff , "affected" ) ) ! { ! if( (pValue = strstr( buff , "mz=\"" )) ) ! { ! pValue += strlen( "mz=\"" ); ! anAffectedMz = atoi( pValue ); ! if (dbug) cout << "afffected mz= " << ! anAffectedMz << endl; ! } else { throw 103; } ! ! if( (pValue = strstr( buff , "correction=\"" )) ) ! { ! pValue += strlen( "correction=\"" ); ! aCorrection = atof( pValue ); ! if (dbug) cout << "correction= " << ! aCorrection << endl; ! } else { throw 104; } ! m_massIsotopes[aContributingMz-1][anAffectedMz-1] = aCorrection; ! } ! in.getline( buff , 10 ); // get > ! in.get( buff , 1000 , '>' ); ! } ! } ! in.getline( buff , 10 ); // get > ! in.get( buff , 1000 , '>' ); ! } ! ! in.getline( buff , 10 ); // get > ! } ! else if (strstr( buff , "massTolerance" ) ) { ! if( (pValue = strstr( buff , "value=\"" )) ) { ! pValue += strlen( "value=\"" ); ! ! } else { throw 105; } ! ! m_tolerance = atof( pValue ); ! ! if (dbug) cout << "Mass tolerance:\t\t" << ! m_tolerance << endl; ! } else if( strstr( buff , "centroiding" ) ) { ! if( (pValue = strstr( buff , "type=\"" )) ) ! { ! ! pValue += strlen( "type=\"" ); ! ! } else { throw 106; } ! ! m_centroidingPref = atoi( pValue ); ! ! if (dbug) cout << "centroidingPref:\t\t" << ! m_centroidingPref << endl; ! ! if( m_centroidingPref ) ! { ! // Centroiding requested -> read iterations ! if( (pValue = strstr( buff , "iterations=\"" ) ) ) ! { ! ! pValue += strlen( "iterations=\"" ); ! ! m_centroidingIteration = atoi( pValue ); ! ! } else { throw 107; } ! ! if (dbug) cout << "centroidingIter:\t\t" << ! m_centroidingIteration << endl; ! ! } ! } else if( strstr( buff , "normalization" ) ) { ! if( (pValue = strstr( buff , "type=\"" )) ) ! { ! ! pValue += strlen( "type=\"" ); ! ! } else { throw 108; } ! m_normalPosition = atoi( pValue ); ! if (dbug) ! cout << "m_normalPosition:\t\t" << ! m_normalPosition << endl; ! m_isToNormalize = true; ! if (dbug) ! cout << "Normalization option:\t" ! << m_normalPosition << endl; ! } else if( strstr( buff , "targetMs" ) ) { ! ! if( (pValue = strstr( buff , "level=\"" )) ) ! { ! ! pValue += strlen( "level=\"" ); ! ! } else { throw 109; } ! ! m_requestedMsLevel = atoi( pValue ); ! ! if (dbug) cout << "Target MS level:\t" << ! m_requestedMsLevel << endl; ! ! } else if( strstr( buff , "output" ) ) { ! if( (pValue = strstr( buff , "type=\"" )) ) ! { ! pValue += strlen( "type=\"" ); ! } else { throw 110; } ! m_outputPrefs = atoi( pValue ); ! } ! } } --- 119,290 ---- if (dbug) cout << "reading condition file : "<< conditionFileName << endl; try { if (!in) throw 100; ! inFragmentMassesElement = 0; ! inIsotopicContributionsElement = 0; ! inContributingMzElement = 0; ! initIsoMatrix = 0; ! + while( in.getline(nextline, 10000) ) + { // check read state: checkread = in.rdstate(); ! if (checkread & ios::eofbit) int dummyvar = 1; ! else if (checkread & ios::failbit ) throw 101; ! else if (checkread & ios::badbit ) throw 101; ! data = strstr(nextline, "<"); ! while(data != NULL) ! { ! tag = new Tag(data); ! // tag->write(cout); ! // ********* handle fragmentMasses element ************ ! // set flag to in element ! if ( tag->isStart() && ! strcmp(tag->getName(), ! "fragmentMasses")) ! { ! inFragmentMassesElement = 1; ! } ! // set flag to out of element ! if ( tag->isEnd() && ! strcmp(tag->getName(), ! "fragmentMasses")) ! { ! inFragmentMassesElement = 0; ! } ! // get reagent mz attributes ! if ( (inFragmentMassesElement == 1) && (tag->isStart()) ! && (! strcmp(tag->getName(), "reagent"))) ! { ! mass = atof(tag->getAttributeValue("mz")); ! m_mass.push_back( mass ); ! } ! // **************************************************** ! // ********* handle isotopicContributions element ***** ! if ( tag->isStart() && ! strcmp(tag->getName(), ! "isotopicContributions")) ! { ! m_useIsotopicCorrection = true; ! inIsotopicContributionsElement = 1; ! } ! // set flag to out of element ! if ( tag->isEnd() && ! strcmp(tag->getName(), ! "isotopicContributions")) ! { ! inIsotopicContributionsElement = 0; ! } ! ! if ((inIsotopicContributionsElement == 1) && (initIsoMatrix == 0)) ! { ! int row, col; ! // Fill the isotopic contribution matrix with zeros ! for( row = 0 ; row < (int) m_mass.size() ; row++ ) { + m_massIsotopes.push_back( vf() ); ! for( col = 0 ; col < (int) m_mass.size() ; col++ ) { + m_massIsotopes[row].push_back( 0 ); + } + } ! initIsoMatrix = 1; ! } ! if ((inIsotopicContributionsElement == 1) && (initIsoMatrix == 1)) ! { ! if ( tag->isStart() && ! strcmp(tag->getName(), ! "contributingMz")) { + aContributingMz = atoi(tag->getAttributeValue("value")); + } ! if ( tag->isStart() && ! strcmp(tag->getName(), ! "affected")) { + anAffectedMz = atoi(tag->getAttributeValue("mz")); ! aCorrection = atof(tag->getAttributeValue("correction")); ! m_massIsotopes[aContributingMz-1][anAffectedMz-1] ! = aCorrection; ! } ! } ! // **************************************************** ! // ********* handle remaining elements element ***** ! if ( tag->isEnd() && ! strcmp(tag->getName(), ! "massTolerance")) ! { ! m_tolerance = atof(tag->getAttributeValue("value")); ! } ! ! if ( tag->isEnd() && ! strcmp(tag->getName(), ! "centroiding")) ! { ! m_centroidingPref = atoi(tag->getAttributeValue("type")); ! m_centroidingIteration = atoi( ! tag->getAttributeValue("iterations")); ! } ! if ( tag->isEnd() && ! strcmp(tag->getName(), ! "m_normalPosition")) ! { ! m_normalPosition = atoi(tag->getAttributeValue("type")); ! if( m_normalPosition == -1 ) { ! m_isToNormalize = false; ! } else { + m_isToNormalize = true; + } + } + + if ( tag->isEnd() && ! strcmp(tag->getName(), + "targetMs")) + { + m_requestedMsLevel = atoi(tag->getAttributeValue("level")); + } ! if ( tag->isEnd() && ! strcmp(tag->getName(), ! "output")) ! { ! m_outputPrefs = atoi(tag->getAttributeValue("type")); ! } ! if ( tag->isEnd() && ! strcmp(tag->getName(), ! "minimumThreshhold")) ! { ! // = atoi(tag->getAttributeValue("value")); ! } ! if ( tag->isEnd() && ! strcmp(tag->getName(), ! "quantitationFile")) ! { ! // = tag->getAttributeValue("name"); ! } ! if (tag != NULL) delete tag; ! tag = NULL; ! ! data = strstr(data+1, "<"); } *************** *** 408,411 **** --- 292,296 ---- in.close(); + } catch ( int code) { *************** *** 470,474 **** } - in.close(); --- 355,358 ---- *************** *** 872,873 **** --- 756,785 ---- return output; } + + + /** + * print state of class to standard out + */ + int LibraConditionHandler::toString() + { + cout << "fileName: " << getFileName() << endl; + + cout << "centroidingPref: " << getCentroidingPref() << endl; + + cout << "normalPosition: " << getNormalPosition() << endl; + + cout << "numCentroidingIterations: " << getNumCentroidingIterations() << endl; + + cout << "tolerance: " << getTolerance() << endl; + + + std::vector<float> tmp2; + tmp2 = getReagentMasses(); + + for (int i = 0; i < tmp2.size(); i++) + { + cout <<"reagent mass: " << tmp2[i] << endl; + } + + return 1; + } |