void DetectabilitySimulation::svmFilter_(SimTypes::FeatureMapSim& features) { // transform featuremap to peptides vector vector<String> peptides_vector(features.size()); for (Size i = 0; i < features.size(); ++i) { peptides_vector[i] = features[i].getPeptideIdentifications()[0].getHits()[0].getSequence().toUnmodifiedString(); } vector<double> labels; vector<double> detectabilities; predictDetectabilities(peptides_vector, labels, detectabilities); // copy all meta data stored in the feature map SimTypes::FeatureMapSim temp_copy(features); temp_copy.clear(false); for (Size i = 0; i < peptides_vector.size(); ++i) { if (detectabilities[i] > min_detect_) { features[i].setMetaValue("detectability", detectabilities[i]); temp_copy.push_back(features[i]); } #ifdef DEBUG_SIM cout << detectabilities[i] << " " << min_detect_ << endl; #endif } features.swap(temp_copy); }
void ITRAQLabeler::labelPeptide_(const Feature& feature, SimTypes::FeatureMapSim& result) const { // modify with iTRAQ modification (needed for mass calculation and MS/MS signal) //site="Y" - low abundance //site="N-term" //site="K" - lysine String modification = (itraq_type_ == ItraqConstants::FOURPLEX ? "iTRAQ4plex" : "iTRAQ8plex"); vector<PeptideHit> pep_hits(feature.getPeptideIdentifications()[0].getHits()); AASequence seq(pep_hits[0].getSequence()); // N-term seq.setNTerminalModification(modification); // all "K": for (Size i = 0; i < seq.size(); ++i) { if (seq[i] == 'K' && !seq[i].isModified()) seq.setModification(i, modification); } result.resize(1); result[0] = feature; pep_hits[0].setSequence(seq); result[0].getPeptideIdentifications()[0].setHits(pep_hits); // some "Y": // for each "Y" create two new features, depending on labeling efficiency on "Y": if (y_labeling_efficiency_ == 0) return; for (Size i = 0; i < seq.size(); ++i) { if (seq[i] == 'Y' && !seq[i].isModified()) { if (y_labeling_efficiency_ == 1) { addModificationToPeptideHit_(result.back(), modification, i); } else // double number of features: { Size f_count = result.size(); for (Size f = 0; f < f_count; ++f) { // copy feature result.push_back(result[f]); // modify the copy addModificationToPeptideHit_(result.back(), modification, i); // adjust intensities: result.back().setIntensity(result.back().getIntensity() * y_labeling_efficiency_); result[f].setIntensity(result[f].getIntensity() * (1 - y_labeling_efficiency_)); } } } } }