void createTestFeatureMapSimVector_(FeatureMapSimVector& feature_maps) { feature_maps.clear(); // first feature map TVQMENQFVAFVDK,ACHKKKKHHACAC,AAAAHTKLRTTIPPEFG,RYCNHKTUIKL FeatureMapSim fm1,fm2; ProteinHit prothit1,prothit2,prothit3,prothit4,prothit5,prothit6; // create first map prothit1.setSequence("AAAAAAAKHHHHHHHHHHH"); prothit1.setMetaValue("description", "test sequence 1"); prothit1.setAccession("ACC1"); prothit1.setMetaValue("intensity", 200.0); prothit2.setSequence("CNHAAAAAAAAA"); prothit2.setMetaValue("description", "test sequence 2"); prothit2.setAccession("ACC2"); prothit2.setMetaValue("intensity", 100.0); prothit3.setSequence("LDCELR"); prothit3.setMetaValue("description", "test sequence 3"); prothit3.setAccession("ACC3"); prothit3.setMetaValue("intensity", 100.0); ProteinIdentification protIdent1; protIdent1.insertHit(prothit1); protIdent1.insertHit(prothit2); protIdent1.insertHit(prothit3); vector<ProteinIdentification> protIdents_vec1; protIdents_vec1.push_back(protIdent1); fm1.setProteinIdentifications(protIdents_vec1); // create labeled map prothit4.setSequence("AAAAAAAKHHHHHHHHHHH"); // same as protein 1 from first map prothit4.setMetaValue("description", "test sequence 4"); prothit4.setAccession("ACC4"); prothit4.setMetaValue("intensity", 50.0); prothit5.setSequence("CNHAAAAAAAAA"); prothit5.setMetaValue("description", "test sequence 5"); prothit5.setAccession("ACC5"); prothit5.setMetaValue("intensity", 100.0); prothit6.setSequence("CNHAADDAAAAA"); prothit6.setMetaValue("description", "test sequence 6"); prothit6.setAccession("ACC6"); prothit6.setMetaValue("intensity", 120.0); ProteinIdentification protIdent2; protIdent2.insertHit(prothit4); protIdent2.insertHit(prothit5); protIdent2.insertHit(prothit6); vector<ProteinIdentification> protIdents_vec2; protIdents_vec2.push_back(protIdent2); fm2.setProteinIdentifications(protIdents_vec2); feature_maps.push_back(fm1); feature_maps.push_back(fm2); }
void digestFeaturesMapSimVector_(FeatureMapSimVector& feature_maps) { // digest here DigestSimulation digest_sim; Param p; p.setValue("model", "naive"); p.setValue("model_naive:missed_cleavages", 0); digest_sim.setParameters(p); std::cout << digest_sim.getParameters() << std::endl; for(FeatureMapSimVector::iterator iter = feature_maps.begin() ; iter != feature_maps.end() ; ++iter) { digest_sim.digest((*iter)); } }
FeatureMapSim BaseLabeler::mergeProteinIdentificationsMaps_(const FeatureMapSimVector & maps) { // we do not have any features yet (or at least we ignore them), so simply iterate over the protein // identifications std::map<String, ProteinHit> prot_hits; Size channel_index = 1; for (FeatureMapSimVector::const_iterator maps_iterator = maps.begin(); maps_iterator != maps.end(); ++maps_iterator) { if (maps_iterator->getProteinIdentifications().size() == 0) continue; for (std::vector<ProteinHit>::const_iterator protein_hit = (*maps_iterator).getProteinIdentifications()[0].getHits().begin(); protein_hit != (*maps_iterator).getProteinIdentifications()[0].getHits().end(); ++protein_hit) { if (prot_hits.count((*protein_hit).getSequence())) // we already know this protein -- sum up abundances { SimIntensityType new_intensity = prot_hits[(*protein_hit).getSequence()].getMetaValue("intensity"); // remember channel intensity prot_hits[(*protein_hit).getSequence()].setMetaValue("intensity_" + String(channel_index), new_intensity); new_intensity += static_cast<SimIntensityType>((*protein_hit).getMetaValue("intensity")); prot_hits[(*protein_hit).getSequence()].setMetaValue("intensity", new_intensity); } else // new protein hit .. remember { ProteinHit protHit(*protein_hit); protHit.setMetaValue("intensity_" + String(channel_index), protHit.getMetaValue("intensity")); prot_hits.insert(std::pair<String, ProteinHit>((*protein_hit).getSequence(), protHit)); } } ++channel_index; } FeatureMapSim final_map; ProteinIdentification protIdent; for (std::map<String, ProteinHit>::iterator prot_hit_iter = prot_hits.begin(); prot_hit_iter != prot_hits.end(); ++prot_hit_iter) { protIdent.insertHit(prot_hit_iter->second); } std::vector<ProteinIdentification> protIdents; protIdents.push_back(protIdent); final_map.setProteinIdentifications(protIdents); return final_map; }
FeatureMapSim fm1,fm2,fm3; FeatureMapSimVector fm_vec; fm_vec.push_back(fm1); TEST_EXCEPTION_WITH_MESSAGE(Exception::IllegalArgument, labeler.setUpHook(fm_vec), "1 channel(s) given. 18O Labeling only works with 2 channels. Please provide two FASTA files!") fm_vec.push_back(fm2); labeler.setUpHook(fm_vec); fm_vec.push_back(fm3); TEST_EXCEPTION_WITH_MESSAGE(Exception::IllegalArgument, labeler.setUpHook(fm_vec), "3 channel(s) given. 18O Labeling only works with 2 channels. Please provide two FASTA files!") } END_SECTION START_SECTION((void postDigestHook(FeatureMapSimVector &))) { FeatureMapSimVector feature_maps; createTestFeatureMapSimVector_(feature_maps); digestFeaturesMapSimVector_(feature_maps); // maps are digested by now O18Labeler labeler; labeler.postDigestHook(feature_maps); TEST_EQUAL(feature_maps.size(), 1) ABORT_IF(feature_maps.size() != 1) TEST_EQUAL(feature_maps[0].size(), 6) ABORT_IF(feature_maps[0].size() != 6) TEST_EQUAL(feature_maps[0][0].getIntensity(), 50) TEST_EQUAL(feature_maps[0][0].getPeptideIdentifications()[0].getHits()[0].getSequence().toString(), "AAAAAAAK(Label:18O(2))")