// ---------------------------------------------------------------------------- bool CSoMap::xFeatureMakeRegulatory( const string& so_type, CSeq_feat& feature) // ---------------------------------------------------------------------------- { static const map<string, string, CompareNoCase> mapTypeToQual = { {"DNAsel_hypersensitive_site", "DNase_I_hypersensitive_site"}, {"GC_rich_promoter_region", "GC_signal"}, {"boundary_element", "insulator"}, {"regulatory_region", "other"}, {"ribosome_entry_site", "ribosome_binding_site"}, }; feature.SetData().SetImp().SetKey("regulatory"); CRef<CGb_qual> regulatory_class(new CGb_qual); regulatory_class->SetQual("regulatory_class"); auto cit = mapTypeToQual.find(so_type); if (cit == mapTypeToQual.end()) { regulatory_class->SetVal(so_type); } else { regulatory_class->SetVal(cit->second); } feature.SetQual().push_back(regulatory_class); return true; }
// ---------------------------------------------------------------------------- bool CSoMap::xFeatureMakeRegion( const string& so_type, CSeq_feat& feature) // ---------------------------------------------------------------------------- { feature.SetData().SetRegion(); CRef<CGb_qual> qual(new CGb_qual("SO_type", so_type)); feature.SetQual().push_back(qual); return true; }
// ---------------------------------------------------------------------------- bool CSoMap::xFeatureMakeRepeatRegion( const string& so_type, CSeq_feat& feature) // ---------------------------------------------------------------------------- { static const map<string, string, CompareNoCase> mapTypeToSatellite = { {"microsatellite", "microsatellite"}, {"minisatellite", "minisatellite"}, {"satellite_DNA", "satellite"}, }; static const map<string, string, CompareNoCase> mapTypeToRptType = { {"tandem_repeat", "tandem"}, {"inverted_repeat", "inverted"}, {"direct_repeat", "direct"}, {"nested_repeat", "nested"}, {"non_LTR_retrotransposon_polymeric_tract", "non_ltr_retrotransposon_polymeric_tract"}, {"X_element_combinatorial_repeat", "x_element_combinatorial_repeat"}, {"Y_prime_element", "y_prime_element"}, {"repeat_region", "other"}, }; feature.SetData().SetImp().SetKey("repeat_region"); CRef<CGb_qual> qual(new CGb_qual); auto cit = mapTypeToSatellite.find(so_type); if (cit != mapTypeToSatellite.end()) { qual->SetQual("satellite"); qual->SetVal(cit->second); } else { qual->SetQual("rpt_type"); cit = mapTypeToRptType.find(so_type); if (cit == mapTypeToRptType.end()) { qual->SetVal(so_type); } else { qual->SetVal(cit->second); } } feature.SetQual().push_back(qual); return true; }
// ---------------------------------------------------------------------------- bool CSoMap::xFeatureMakeNcRna( const string& so_type, CSeq_feat& feature) // ---------------------------------------------------------------------------- { static const map<string, string, CompareNoCase> mTypeToClass = { {"ncRNA", "other"}, }; feature.SetData().SetRna().SetType(CRNA_ref::eType_ncRNA); CRef<CGb_qual> qual(new CGb_qual); qual->SetQual("ncRNA_class"); auto it = mTypeToClass.find(so_type); if (it == mTypeToClass.end()) { qual->SetVal(so_type); } else { qual->SetVal(it->second); } feature.SetQual().push_back(qual); return true; }
// ---------------------------------------------------------------------------- bool CSoMap::xFeatureMakeMiscRecomb( const string& so_type, CSeq_feat& feature) // ---------------------------------------------------------------------------- { static const map<string, string, CompareNoCase> mapTypeToQual = { {"meiotic_recombination_region", "meiotic"}, {"mitotic_recombination_region", "mitotic"}, {"non_allelic_homologous_recombination", "non_allelic_homologous"}, {"recombination_feature", "other"}, }; feature.SetData().SetImp().SetKey("misc_recomb"); CRef<CGb_qual> recombination_class(new CGb_qual); recombination_class->SetQual("recombination_class"); auto cit = mapTypeToQual.find(so_type); if (cit == mapTypeToQual.end()) { recombination_class->SetVal(so_type); } else { recombination_class->SetVal(cit->second); } feature.SetQual().push_back(recombination_class); return true; }
// ---------------------------------------------------------------------------- bool CSoMap::xFeatureMakeMiscFeature( const string& so_type, CSeq_feat& feature) // ---------------------------------------------------------------------------- { static const map<string, string, CompareNoCase> mapTypeToQual = { {"TSS", "transcription_start_site"}, }; feature.SetData().SetImp().SetKey("misc_feature"); if (so_type == "sequence_feature") { return true; } CRef<CGb_qual> feat_class(new CGb_qual); feat_class->SetQual("feat_class"); auto cit = mapTypeToQual.find(so_type); if (cit == mapTypeToQual.end()) { feat_class->SetVal(so_type); } else { feat_class->SetVal(cit->second); } feature.SetQual().push_back(feat_class); return true; }