* label_prefix =
NULL);
153 const char* label_prefix =
NULL);
157 const char* label_prefix =
nullptr);
160 const char* label_prefix =
nullptr);
180 intlevel,
const string& title);
264 const char* label_prefix =
NULL);
315 const CSeq_feat& c_feat = (*iter)->GetFeature();
318 if(
x_IsDbref(
"CCDS", (*c_iter)->GetFeature())) {
339 boolhas_rna =
false;
340 boolhas_cds =
false;
343 const CSeq_feat& c_feat = (*iter)->GetFeature();
346 if(!(*iter)->GetChildren().empty()) {
357 returnhas_rna && !has_cds;
364 const CSeq_feat& c_feat = (*iter)->GetFeature();
365 if( (c_feat.
GetData().
IsRna() && !(*iter)->GetChildren().empty()) ||
444TJobToken token,
intmax_feat,
446 const string& extra_filter)
451max_feat, LinkedFeat,
455 if(!extra_filter.empty()) {
456 if(!filter.empty()) filter +=
" and ";
457filter += extra_filter;
459job->SetFilter(filter);
476 "Feature",
m_Handle, range, window, token, requests));
498 "Feature",
m_Handle, lm_feat_sel, m_feat_sel, lm_token,
499main_token, landmark_feat, range, window,
513 "Calculate feature histogram", objs,
514range, window, token));
553 const CSeq_id&
id=
dynamic_cast<const CSeq_id&
>(
object.object.GetObject());
556 return new CSGFeatureDS(
object.scope.GetObject(),
id);
562 static stringsid(
"seqgraphic_feature_ds_type");
569 static stringslabel(
"Graphical View Feature Data Source Type");
662, m_FeatLimit(max_feat)
663, m_LinkedFeat(LinkedFeatDisplay)
672 if(sortby.empty()) {
677 size_tfound = sortby.find_first_of(
'|');
680 if(found != string::npos) {
681sort_str = sortby.substr(found + 1);
709 CFeat_CIfeat_iter(handle, range, sel);
711 if(iter->IsNamed()) {
712 if(iter->GetName().find(
"@@") == string::npos) {
728 CFeat_CIfeat_iter(handle, range, sel);
730 if(iter->IsNamed()) {
731 if(iter->GetName().find(
"@@") == string::npos) {
746 for( ; feature_iter; ++feature_iter) {
790(*iter)->GetChildren().clear();
800 if(curr_feats.size() == group->GetChildrenNum()) {
806 _ASSERT(feat_groups.size() == 1);
807objs.swap(group->SetChildren());
825 _ASSERT(feat_groups.size() == 1);
826objs.emplace_back(group.GetPointer());
855 data->GetData(the_map);
858annots =
m_Sel.GetIncludedAnnotsNames();
859 for(
const auto& annot : annots) {
860 if(annot.IsNamed()) {
861 result->m_Desc = annot.GetName();
882vector<TSeqRange> ranges;
888 for(
const auto&
r: ranges) {
893annots =
m_Sel.GetIncludedAnnotsNames();
894 for(
const auto& annot : annots) {
895 if(annot.IsNamed()) {
896 result->m_Desc = annot.GetName();
920 boolglyph_created =
false;
926 if(!glyph_created) {
970 size=
static_cast<int>(features.size());
977 result->m_ObjectList.swap(objs);
982 if(has_coverage_graph) {
1001 result->m_ObjectList.swap(objs);
1009}
catch(std::exception& ex) {
1023 boolpassed =
false;
1024CLinkedFeature::TLinkedFeats::iterator p_iter = features.begin();
1025 while(p_iter != features.end()) {
1030 boolis_leaf = (*p_iter)->GetChildren().empty();
1035filter.
Pass(&(*p_iter)->GetMappedFeature())) {
1039p_iter = features.erase(p_iter);
1051feat_groups.clear();
1060feat_groups.emplace_back(
m_Sorter->GroupIdxToName(grp_iter->first), grp_iter->second);
1069CLinkedFeature::TLinkedFeats::iterator p_iter = feats.begin();
1070 while(p_iter != feats.end()) {
1075 boolis_leaf = (*p_iter)->GetChildren().empty();
1076 intidx =
m_Sorter->GetGroupIdx((*p_iter)->GetMappedFeature());
1079 if( !is_leaf &&
m_Sorter->ChildFeatureFirst() ) {
1084 size_tgrp_num = child_group_map.
size();
1090p_feat->GetChildren() = grp_iter->second;
1091group_map[grp_iter->first].push_back(p_feat);
1094}
else if(idx > -1 || grp_num == 1) {
1097idx = child_group_map.
begin()->first;
1103group_map[idx].push_back(*p_iter);
1107p_iter = feats.
erase(p_iter);
1118group->SetLevel(Level);
1120 boolneed_group = features.size() > 1;
1126 if( !glyph )
continue;
1128 size_tnum_children = (*iter)->GetChildren().size();
1136 if(num_children == 0 ) {
1137group->PushBack(glyph);
1139group->SetAsMaster(glyph);
1182 for(; feature_iter ; ++feature_iter) {
1188 for(
const auto& it : glyphs) {
1197objs.push_back(glyph);
1208 const char* label_prefix
)
1214}
catch(std::exception&) {
1219 if(loc_obj.
GetId()) {
1220loc.
Reset(&loc_obj);
1228 autoGetCDSFrame = [&]() {
1272 auto offset= GetCDSFrame();
1273 if(
nullptr!= parent_glyph) {
1296 static unsignedid_num{ 0 };
1298 auto offset= GetCDSFrame();
1303 if( !
info.empty() ) {
1313<<
"Failed to get seq-loc with unique seq-id!");
1326 catch(std::exception&) {
1332 if(loc_obj.
GetId()) {
1333loc.
Reset(&loc_obj);
1342 autoGetCDSFrame = [&]() {
1355vector<CRef<CSeqGlyph>> glyphs;
1362 for(
CSeq_loc_CIloc_it(*loc); loc_it; ++loc_it) {
1369copy_loc->
Assign(*loc);
1375 if(feat_range != gen_range) {
1386glyphs.push_back(glyph);
1403 auto offset= GetCDSFrame();
1404 if(
nullptr!= parent_glyph) {
1427 static unsignedid_num{ 0 };
1429 auto offset= GetCDSFrame();
1434 if(!
info.empty()) {
1444 LOG_POST(
Error<<
"CSGFeatureJob::x_CreateCrossOriginGlyphs()" 1445<<
"Failed to get seq-loc with unique seq-id!");
1456 if(!glyphs.empty()) {
1457vector<CRef<CSeqGlyph>>::iterator g_it = glyphs.begin();
1458 while(g_it != glyphs.end()) {
1459 if((*g_it)->GetRange() != range) {
1460g_it = glyphs.erase(g_it);
1479 const char* label_prefix
)
1483 const string& object_type =
data.GetUser().GetType().GetStr();
1484 if(object_type ==
"clone placement") {
1494unique_ptr<CFeatGlyph> feat_glyph;
1503feat_glyph->SetTopLabelPrefix(label_prefix);
1506glyph.
Reset(feat_glyph.release());
1522intervals.push_back((*iter)->GetTotalRange());
1534 const string& title)
1540 for(
const auto&
f: features) {
1543the_map.
AddRange(
f->GetMappedFeature().GetLocation().GetTotalRange(), 1,
false);
1563 for(; feat_iter; ++feat_iter) {
1584 const string& title)
1593 result->m_ExtraObj = glyphs.front();
1601 const string& title)
1606 for(; feat_iter ; ++feat_iter) {
1615 if(iter == the_maps.
end()) {
1616iter = the_maps.
insert(
1626iter->second.AddRange(
1634 if( !the_maps.
empty() ) {
1652 for( ; iter; ++iter) {
1654intervals.push_back(iter.
GetRange());
1659 boolrsite =
false;
1663 boolrsiteRangeFromSet =
false;
1664 for( ; iter; ++iter) {
1671 if(!rsiteRangeFromSet) {
1673rsiteRangeFromSet =
true;
1677intervals.push_back(rsiteRange);
1678rsiteRangeFromSet =
false;
1684intervals.push_back(iter.
GetRange());
1703, m_MainFeatSel(m_feat_sel)
1704, m_MainFeatToken(main_token)
1705, m_LandmarkFeats(landmark_feat)
1789 for( ; feature_iter; ++feature_iter) {
1799 booltranscripts_filtered =
false;
1804 if(transcripts_filtered) {
1805 result->m_FilterDescr =
"Some track data has been hidden";
1812}
catch(std::exception& ex) {
1843 if((*xit)->IsSetData() && (*xit)->GetData().Which() == choice) {
1853 for(
const auto& it : linked_feat.
GetChildren()) {
1854 if(it->GetFeature().GetData().IsCdregion())
1882 if(!ext_type.
IsStr() || ext_type.
GetStr() !=
"CombinedFeatureUserObjects") {
1892 if(!field_label.
IsStr() || !field_data.
IsObject() || field_label.
GetStr() !=
"ModelEvidence")
1902 const CUser_field& evidence_field = **evidence_iter;
1919 for(
const auto& iter : feat.
GetQual()) {
1920 if(iter->GetQual() ==
"tag"&& iter->IsSetVal()) {
1921 const string&
val= iter->GetVal();
1922 if(tags.count(
val) > 0)
1969 SetTaskName(
"Creating feature glyphs and gene models...");
1972transcripts_filtered =
false;
2012 if(skip)
continue;
2014vector<CRef<CSeqGlyph>> glyphs;
2017 if(glyphs.empty()) {
2023 if(!glyph)
continue;
2024glyphs.push_back(glyph);
2029 if((*iter)->GetChildren().empty()) {
2033transcripts_filtered =
true;
2046 for(
const auto& it : glyphs) {
2056transcripts_filtered =
true;
2062 for(
const auto& glyph_it : glyphs) {
2067 autocurrent_range = glyph->
GetRange();
2074 stringlabel_prefix;
2077 size_tnum_filtered = 0;
2079vector<CRef<CSeqGlyph>> g_glyphs;
2082 if(g_glyphs.empty())
2087 if(!g_glyph)
continue;
2088g_glyphs.push_back(g_glyph);
2091 _ASSERT(g_glyphs.size() == 1);
2098exon_group->
PushBack(g_glyphs[0]);
2102rnacds_group->PushBack(g_glyphs[0]);
2107misc_group->
PushBack(g_glyphs[0]);
2114rnacds_group->PushBack(rna_group);
2115rna_group->
PushBack(g_glyphs[0]);
2119vector<CRef<CSeqGlyph>> r_glyphs =
x_CreateAndFilterCrossOriginGlyphs((*r_iter)->GetMappedFeature(), current_range, g_glyphs[0].GetPointer(), label_prefix.c_str());
2120 for(
const auto& g_it : r_glyphs) {
2121rna_group->
PushBack(g_it.GetNCPointerOrNull());
2133rnacds_group->PushBack(g_glyphs[0]);
2136vector<CRef<CSeqGlyph>> r_glyphs =
x_CreateAndFilterCrossOriginGlyphs((*r_iter)->GetMappedFeature(), current_range, g_glyphs[0].GetPointer(), label_prefix.c_str());
2137 for(
const auto& g_it : r_glyphs) {
2138rnacds_group->PushBack(g_it.GetNCPointerOrNull());
2144rnacds_group->PushBack(r_glyph);
2152transcripts_filtered =
true;
2157 boolis_filtered = (num_filtered > 0 && num_filtered == (*iter)->GetChildren().size());
2162objs.emplace_back(group);
2167group->PushBack(misc_group);
2173 if(!rnacds_group->GetChildren().empty()) {
2174 if(rnacds_group->GetChildren().size() == 1 ||
2179group->Append(rnacds_group->SetChildren());
2183group->PushBack(rnacds_group);
2189group->PushBack(exon_group);
2200 if((*iter)->GetChildren().empty()) {
2202objs.push_back(glyph);
2217vector<CRef<CSeqGlyph>> r_glyphs;
2220 for(
const auto& g_it : r_glyphs) {
2221group->PushBack(g_it.GetNCPointerOrNull());
2228group->PushBack(r_glyph);
2250 for(; feature_iter ; ++feature_iter) {
2262objs.push_back(glyph);
2267 for( ; feature_iter; ++feature_iter) {
2270features.push_back(fref);
2273feature::CFeatTree::eFeatId_by_type,
this) ) {
2283 if( !(*iter)->GetFeature().GetData().IsGene() )
continue;
2313 if(skip)
continue;
2317objs.push_back(glyph);
2341 "http://www.ncbi.nlm.nih.gov/gutils/fgenes_by_loc.fcgi?sort=weight&retmode=asnb";
2361*obj_stream >> gbl_reply;
2366 if(
data.CanGetGenes()) {
2373 LOG_POST(
Error<<
"Failed to retrieve genes by location for gi|" 2374<< gi <<
", error: "<< e.
GetMsg());
2390vector<SLandmarkFeat> landmark_feats;
2401 if(m_StopRequested) {
2410 floatscore = (float)range.
GetLength();
2413score /= s.length();
2419landmark_feats.push_back(
f);
2431vector<int> gene_uids;
2433 if(m_StopRequested) {
2444 if(gene_tag && gene_tag->
GetTag().
IsId()) {
2445gene_uids.push_back(gene_tag->
GetTag().
GetId());
2450TScoreMap gene_scores;
2453CEntrezCache& cache = CEntrezCache::GetInstance();
2455vector<int>::iterator iter = gene_uids.begin();
2456 stringdb(
"gene");
2457 for( ; iter != gene_uids.end(); ) {
2460gene_scores[ds->GetUid()] =
2461s_GetGeneDocsumWeight(*ds);
2462iter = gene_uids.erase(iter);
2470 if(gene_uids.size()) {
2473 if(ds && ds->IsSetList()) {
2474cache.Put(
"gene", *ds);
2476gene_scores[(*iter)->GetUid()] =
2477s_GetGeneDocsumWeight(**iter);
2483 if(m_StopRequested) {
2496 if(gene_tag && gene_tag->
GetTag().
IsId()) {
2498TScoreMap::iterator it = gene_scores.find(uid);
2499 if(it != gene_scores.end()) {
2508landmark_feats.push_back(
f);
2523 if(idh && idh.
GetGi() > 0) {
2527 if(number_genes > 0) {
2548 if(gene_weights.
empty()) {
2568score /= s.length();
2572 if(
tag->GetTag().IsId()) {
2574 if(g_iter != gene_weights.
end()) {
2575score = (float)g_iter->second;
2584landmark_feats.push_back(
f);
2592 if(landmark_feats.empty())
return eCompleted;
2598 std::sort(landmark_feats.begin(), landmark_feats.end(),
2604 dynamic_cast<const CFeatGlyph*
>(landmark_feats.front().obj.GetPointer());
2609 ITERATE(vector<SLandmarkFeat>, iter, landmark_feats) {
2614 TSeqRangerange = iter->obj->GetRange();
2622 size_t len= landmark_feats.size() - 1;
2623vector<SLandmarkFeat>::iterator
prev=
2625vector<SLandmarkFeat>::iterator s_iter =
prev;
2626vector<SLandmarkFeat>::iterator end = landmark_feats.end();
2637landmark_feats.erase(s_iter, end);
2640 if(highlight_num > 40) {
2642}
else if(highlight_num < 10) {
2648s_iter = landmark_feats.begin();
2649 while(highlight_num > 0 && s_iter != landmark_feats.end()) {
2650s_iter->obj->SetHighlighted(
true);
2656s_iter = landmark_feats.begin();
2657 while(highlight_num > 0 && s_iter != landmark_feats.end()) {
2665comment_objs.push_back(glyph);
2671 std::sort(landmark_feats.begin(), landmark_feats.end(),
2679 ITERATE(vector<SLandmarkFeat>, l_iter, landmark_feats) {
2680objs.push_back(l_iter->obj);
2690 const string& filter)
2692vector<string> filters;
2703 CFeat_CIfeat_iter(handle, range, sel);
2706filters.push_back(filter);
2716 CFeat_CIfeat_iter(handle, range, sel);
2719filters.push_back(filter);
2729 CFeat_CIfeat_iter(handle, range, sel);
2732filters.push_back(filter);
2744 CFeat_CIfeat_iter(handle, range, sel);
2746 for(; feat_iter; ++feat_iter) {
2749features.push_back(fref);
2752feature::CFeatTree::eFeatId_by_type,
NULL);
2755filters.push_back(filter);
2765 CFeat_CIfeat_iter(handle, range, sel);
2767 for(; feat_iter; ++feat_iter) {
2770features.push_back(fref);
2773feature::CFeatTree::eFeatId_by_type,
NULL);
2776filters.push_back(filter);
2804}
else if( !filter.empty() ) {
2820, m_Requests(requests)
2839 result->m_Results.push_back(single_res);
2845}
catch(std::exception& ex) {
2885 while(align_iter && !mapper) {
2908 boolpacked = feat_iter &&
2917 for( ; feat_iter; ++feat_iter) {
2926}
else if(
size> 0) {
2927 for( ; feat_iter; ++feat_iter) {
2944 if(dmap)
result->m_ExtraObj.Reset(dmap);
2945 if( !
tmp.empty() )
result->m_ObjectList.swap(
tmp);
2976 result->m_ExtraObj.Reset(dmap);
2981}
catch(std::exception& ex) {
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
Seq-loc and seq-align mapper exceptions.
const TAnnotNames & GetAnnotNames(void) const
size_t GetSize(void) const
CAppJobError Default implementation for IAppJobError - encapsulates a text error message.
CBatchFeatJob: a job class for loading annotated features from a given a set of sequences within the ...
virtual CRef< CSGJobResult > x_LoadFeatProducts(CRef< CFeatGlyph > feat, const SAnnotSelector &sel)
virtual EJobState x_Execute()
method truly doing the job.
TFeatBatchJobRequests m_Requests
CBatchFeatJob(const string &desc, CBioseq_Handle handle, const TSeqRange &range, TModelUnit window, TJobToken token, const TFeatBatchJobRequests &requests)
CBatchFeatJob.
CBatchJobResult â the data structure holding the seqgraphic job results for a batch job processing.
CCloneConcordancySorter is a feature sorter used to sort clone features based on clone concordancy.
static const string & GetID()
CClonePlacementGlyph is similar to CFeatureGlyph, but with different rendering style and settings.
TIntervals & SetIntervals()
CClonePlacementGlyph inline implementations.
This stream exchanges data with an HTTP server located at the URL: http[s]://host[:port]/path[?...
CDbvarClinicalAsstSorter is a feature sorter used to sort variant features based on variant quality.
static const string & GetID()
CDbvarPilotSorter is a feature sorter used to sort variant features based on variant pilot number.
static const string & GetID()
CDbvarQualitySorter is a feature sorter used to sort variant features based on variant quality.
static const string & GetID()
CDbvarSamplesetTypeSorter is a feature sorter used to sort variant features based on variant quality.
static const string & GetID()
CDbvarValidationSorter is a feature sorter used to sort variant features based on variant quality.
static const string & GetID()
CRef< CEntrez2_docsum_list > GetDocsums(const vector< TUid > &uids, const string &db)
Retrieve the docsums for a set of UIDs.
void SetMappingInfo(const TMappingInfo &info)
TIntervals & SetIntervals()
CFeatGlyph inline implementations.
const TMappingInfo & GetMappingInfo() const
virtual const objects::CSeq_loc & GetLocation(void) const
access the position of this object.
void SetTopLabelPrefix(const char *prefix)
Set prefix to prepend to labels on top.
const objects::CMappedFeat & GetMappedFeature(void) const
Access a new, fully remapped feature.
virtual TSeqRange GetRange(void) const
get the total range of this object.
virtual const TIntervals & GetIntervals(void) const
access sub-intervals (if any).
const objects::CSeq_feat & GetFeature(void) const
Access the original feature.
static size_t GetCustomColorIdx(const objects::CSeq_feat &feat)
Get the customized color idx for a given feature.
void GetLabel(string &label, CLabel::ELabelType type) const
retrieve feature label for a given type
static const string & GetID()
bool NeedFiltering() const
bool Pass(const objects::CMappedFeat *feat)
void Init(const string &filter)
CGRCStatusSorter is a feature sorter used to sort GRC issue features based on resolving status stored...
static const string & GetID()
CGeneGroup is a subclass of CLayoutGroup contains gene, RNA, cds, and Exon features.
bool m_CCDSOnly
Show only CCDS variants.
EMergeStyle m_MergeStyle
the way on how to merge CDSs and RNAs.
bool m_SelectOnly
Show only Select/MANE variants.
bool m_HideNonCoding
Hide transcripts without associated CDS.
bool m_ShowHistogram
show gene distribution histogram.
@ eMerge_OneLine
merge into one line
@ eMerge_Pairs
merge each transcript and CDS pair
@ eMerge_No
show all feature individually
bool m_HideModels
Hide Model RefSeqs.
CGeneModelFeatJob: a job class for loading annotated main features, including genes,...
static vector< string > GetFilters(const CBioseq_Handle &handle, const TSeqRange &range, SAnnotSelector &sel, const string &filter)
static bool x_IsncRNA(const CLinkedFeature &linked_feat)
static bool x_IsDbref(const string &db, const CSeq_feat &feat)
virtual CRef< CSeqGlyph > x_CreateFeature2(const CMappedFeat &feat, const CSeq_loc &loc, const char *label_prefix=NULL)
overridable creator.
IAppJob::EJobState x_CreateFeaturesWithFilter(CFeat_CI &feature_iter, CSeqGlyph::TObjects &objs, TFilterType filter)
create features when there is a filter set up.
static bool x_IsnpcGene(const CLinkedFeature &linked_feat)
static TFilterType x_FilterStrToValue(const string &filter)
static bool x_IsCCDS(const CLinkedFeature &linked_feat)
static bool x_IsDbref(const string &db, const CLinkedFeature &linked_feat)
bool x_IsTranscriptAcceptable(const CLinkedFeature &feat)
Check if transcript passes Config filters.
IAppJob::EJobState x_CreateGeneModels(CLinkedFeature::TLinkedFeats &feats, CSeqGlyph::TObjects &objs, bool &transcripts_filtered)
Link features into a hierarchical list.
SAnnotSelector m_MainFeatSel
annotation selector for all main features.
EJobState x_ProcessLandMarkFeatures(CSeqGlyph::TObjects &objs, CRef< CSeqGlyph > &hist_obj, CSeqGlyph::TObjects &comment_objs)
TJobToken m_MainFeatToken
Job token for loading main features.
CGeneModelConfig m_Config
CGeneModelFeatJob(const string &desc, CBioseq_Handle handle, const SAnnotSelector &lm_feat_sel, const SAnnotSelector &m_feat_sel, TJobToken lm_token, TJobToken main_token, bool landmark_feat, const TSeqRange &range, TModelUnit window, const CGeneModelConfig &conf, ICoordMapper *mapper)
CGeneModelFeatJob.
@ eFilter_dbref
one specific dbref
@ eFilter_dbref_all
any dbref
@ eFilter_CCDS
genes with Consensus CDS
bool m_LandmarkFeats
is overview mode?
static bool x_IsPseudoGene(const CSeq_feat &feat)
virtual EJobState x_Execute()
method truly doing the job.
CRef< TData > GetData(const string &data_key)
Retrieves TData from in-memory cache or if not found calls TData::Init to initialize new TData instan...
static CGraphCache & GetInstance()
CRef< TData > GetCachedData(const string &data_key)
Retrieves TData from in-memory cache.
static int GetNearestLevel(const set< int > &levels, double zoom)
CLayoutGroup is a container of CSeqGlyphs (layout objects).
void PushBack(CSeqGlyph *obj)
Append a layout object to the end.
TObjectList & SetChildren()
const TObjectList & GetChildren() const
CLayoutGroup inline methods.
void SetAsMaster(CRef< CSeqGlyph > master)
master glyph has some special meaning (e.g.
ILayoutPolicy::TObjectList TObjectList
CLinkedFeatsGroup is a container class contains related features.
CLayoutGroup & SetGroup()
void PushBack(CSeqGlyph *obj)
CTitleGroup is a layout group with a title.
objects::SAnnotSelector m_Sel
our annotation selector
objects::CScope & GetScope(void) const
CSGAnnotJob inline methods.
int GetGraphLevel() const
TSeqRange m_Range
target range
objects::CBioseq_Handle m_Handle
target sequence
IAppJob::EJobState x_LoadCoverageGraph(CSeqGlyph::TObjects &glyphs, int level, TModelUnit window, const string &title, bool fixed_scale, const TAxisLimits &y_limits)
TSeqRange m_Range
target range
TModelUnit m_Window
current window for smear bars
EJobState x_CalcFeatHistRecursive(CRef< CSeqGlyph > obj, CDensityMap< float > &the_map)
CSGCalcFeatHistJob(const string &desc, const CSeqGlyph::TObjects &objs, const TSeqRange &range, TModelUnit window, TJobToken token)
const CSeqGlyph::TObjects & m_Objects
virtual EJobState x_Execute()
CSGCalcFeatHistJob.
virtual ISGDataSource * CreateDS(SConstScopedObject &object) const
create an instance of the layout track type using default settings.
virtual string GetExtensionLabel() const
returns a displayable label for this extension ( please capitalize the key words - "My Extension" )
virtual bool IsSharable() const
check if the data source can be shared.
virtual string GetExtensionIdentifier() const
returns the unique human-readable identifier for the extension the id should use lowercase letters se...
CSGFeatureDS(objects::CScope &scope, const objects::CSeq_id &id)
CSGFeatureDS.
void LoadGeneModelFeatures(objects::SAnnotSelector &lm_feat_sel, objects::SAnnotSelector &m_feat_sel, TJobToken lm_token, TJobToken main_token, bool landmark_feat, const TSeqRange &range, TModelUnit window, const CRef< CGeneModelConfig > &conf)
load features for gene model.
void GetAnnotNames(objects::SAnnotSelector &sel, const TSeqRange &range, TAnnotNameTitleMap &names) const
void CalcFeatHistogram(const CSeqGlyph::TObjects &objs, const TSeqRange &range, TModelUnit window, TJobToken token=-1)
virtual void LoadFeatures(objects::SAnnotSelector &sel, const TSeqRange &range, TModelUnit window, TJobToken token=-1, int max_feat=-1, ELinkedFeatDisplay LinkedFeatDisplay=ELinkedFeatDisplay::eLFD_Default, const string &extra_filter="")
void GetAnnotNames_var(objects::SAnnotSelector &sel, const TSeqRange &range, TAnnotNameTitleMap &names) const
vector< string > GetFilters(const string &annot_name, const TSeqRange &range) const
CSGFeatureJob: a job class for loading annotated features from a given sequence and visible range.
CRef< CSeqGlyph > x_CreateCloneFeature(const CMappedFeat &feat, const CSeq_loc &loc)
bool x_FilterFeature_recursive(CLinkedFeature::TLinkedFeats &features, CFeatureFilter &filter)
void x_GetLinkedFeatures(CFeat_CI &feature_iter, CLinkedFeature::TLinkedFeats &features)
IAppJob::EJobState x_CreateFeatSmear(CFeat_CI &feat_iter, CSGJobResult *result, const string &title)
int m_FeatLimit
the maximum number of features allowed.
void SetVcfCacheKey(const string &cache_key)
void x_SortFeatures(CLinkedFeature::TLinkedFeats &feats, TFeatGroups &feat_groups)
bool x_ProcessCachedVcfTabix()
IAppJob::EJobState x_LinkFeatures(CLinkedFeature::TLinkedFeats &feats, CSeqGlyph::TObjects &objs)
bool x_ProcessCachedBigBed()
void x_CalcIntervals(CFeatGlyph &feat)
CSGFeatureJob(const string &desc, CBioseq_Handle handle, const SAnnotSelector &sel, const TSeqRange &range, TModelUnit window, TJobToken token)
vector< TSortedFeats > TFeatGroups
EJobState x_CreateFeatHist(CLinkedFeature::TLinkedFeats &features, CSGJobResult *result, const string &title)
CRef< CSeqGlyph > x_CreateFeature1(const CMappedFeat &feat, CSeqGlyph *parent_glyph=NULL, const char *label_prefix=NULL)
CIRef< ICoordMapper > m_Mapper
void x_SortFeature_recursive(CLinkedFeature::TLinkedFeats &feats, TFeatGroupMap &group_map)
ELinkedFeatDisplay m_LinkedFeat
controls creation of parent or child features
TModelUnit m_Window
current window for smear bars
vector< CRef< CSeqGlyph > > x_CreateCrossOriginGlyphs(const CMappedFeat &feat, CSeqGlyph *parent_glyph=nullptr, const char *label_prefix=nullptr)
static void GetAnnotNames_var(const CBioseq_Handle &handle, const TSeqRange &range, SAnnotSelector &sel, TAnnotNameTitleMap &names)
IAppJob::EJobState x_CreateFeature_Recursive(CLinkedFeature::TLinkedFeats &features, CLayoutGroup *group, int Level)
CIRef< IFeatSorter > m_Sorter
map< int, CLinkedFeature::TLinkedFeats > TFeatGroupMap
void SetBigBedCacheKey(const string &cache_key)
vector< CRef< CSeqGlyph > > x_CreateAndFilterCrossOriginGlyphs(const CMappedFeat &feat, const TSeqRange &range, CSeqGlyph *parent_glyph=nullptr, const char *label_prefix=nullptr)
IAppJob::EJobState x_CreateFeatures(CFeat_CI &feature_iter, CSeqGlyph::TObjects &objs)
static void GetAnnotNames(const CBioseq_Handle &handle, const TSeqRange &range, SAnnotSelector &sel, TAnnotNameTitleMap &names)
EJobState x_CreateFeatHistFromGraph(CSGJobResult *result, int level, const string &title)
pair< string, CLinkedFeature::TLinkedFeats > TSortedFeats
void SetSortBy(const string &sortby)
virtual EJobState x_Execute()
method truly doing the job.
virtual CRef< CSeqGlyph > x_CreateFeature2(const CMappedFeat &feat, const CSeq_loc &loc, const char *label_prefix=NULL)
overridable creator.
void SetFilter(const string &filter)
CIRef< ICoordMapper > m_Mapper
coordinate mapper between mapped features coord. and sequence coord.
TJobID x_LaunchJob(IAppJob &job, int report_period=1, const string &pool="ObjManagerEngine")
Launch either a background or foreground job.
bool m_Adaptive
adaptive/exact annot selector
int m_Depth
annotation resolving depth
TGraphLevels m_GraphLevels
Existing coverage graph levels.
objects::CBioseq_Handle m_Handle
CSGJobResult â the data structure holding the seqgraphic job results.
ESubtype GetSubtype(void) const
class CSeqGlyph defines an interface that wraps a rectilinear abstract object.
virtual TSeqRange GetRange(void) const
get the total range of this object.
virtual bool LessBySeqPos(const CSeqGlyph &obj) const
compare this object to another based on glyph sequence position.
void SetTearlineText(const string &sTearlineText)
tearline text â if set, is appended to the glyph name (does not naffect processing otherwise)
list< CRef< CSeqGlyph > > TObjects
CSeqGraphicJob â the base class of seqgraphic job for handling the job status such as reporting the p...
virtual void SetTaskTotal(int total)
map< string, string > TAnnotNameTitleMap
List of annotations with the corresponding titles.
virtual void SetTaskName(const string &name)
virtual void SetTaskCompleted(int completed)
set total finished task number.
void SetToken(TJobToken token)
CSeqGraphicJob inline methods.
virtual void AddTaskCompleted(int delta)
set to add newly finished task number.
TJobToken m_Token
Job token recognizable by job listener.
CRef< CAppJobError > m_Error
TDim CheckNumRows(void) const
Validatiors.
const CSeq_id & GetSeq_id(TDim row) const
Get seq-id (the first one if segments have different ids).
namespace ncbi::objects::
CConstRef< CDbtag > GetNamedDbxref(const CTempString &db) const
Return a specified DB xref.
Seq-loc iterator class â iterates all intervals from a seq-loc in the correct order.
Seq-loc iterator class â iterates all intervals from a seq-loc in the correct order.
ICoordMapper interface for converting location between two coordinate systems.
vector< TSeqRange > TIntervals
container_type::const_iterator const_iterator
container_type::iterator iterator
const_iterator begin() const
const_iterator end() const
iterator_bool insert(const value_type &val)
container_type::value_type value_type
const_iterator find(const key_type &key) const
static bool s_HasCDS(const CLinkedFeature &linked_feat)
static bool s_HasFeatXref(const CSeq_feat &feat, CSeqFeatData_Base::E_Choice choice)
static const char * kGeneByLocUrl
static bool s_IsGnomonModel(const CSeq_feat &feat)
static const float kMinScaleForMapping
static const char * kUnsortedGroupName
static bool s_HasTag(const CSeq_feat &feat, const set< string > &tags)
static bool s_IsSelect(const CLinkedFeature &feat)
static const size_t kMaxChildNum
static const int kMaxObjNum
static bool s_IsCCDS(const CLinkedFeature &linked_feat)
bool s_GetGeneWeight(TId2Wt &genes, TGi gi, const TSeqRange &r, size_t retmax)
static const float kSeqZoomLevel
static const struct name_t names[]
static DLIST_TYPE *DLIST_NAME() prev(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
@ fHTTP_AutoReconnect
See HTTP_CreateConnectorEx()
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
void Error(CExceptionArgs_Base &args)
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
const string & GetMsg(void) const
Get message string.
virtual const char * what(void) const noexcept
Standard report (includes full backlog).
static TMappingInfo GetMappingInfoFromLocation(const objects::CSeq_loc &feat_loc, const objects::CSeq_id &product_id, const int feat_offset=0)
static TMappingInfo GetRnaMappingInfo(const objects::CSeq_loc &feat_loc, const objects::CMappedFeat &feat, const objects::CBioseq_Handle &handle)
Helper function to generate mapping info between the specified product sequence and genomic sequence ...
const objects::CSeq_feat & GetFeature() const
static bool LinkFeatures(CLinkedFeature::TLinkedFeats &feats, TFeatLinkingMode mode=1, ISeqTaskProgressCallback *p_cb=NULL)
Link features into a hierarchical list.
static objects::SAnnotSelector GetAnnotSelector(TAnnotFlags flags=0)
request an annotation selector for a given type
list< CRef< CLinkedFeature > > TLinkedFeats
static TMappingInfo GetCdsMappingInfoFromRna(const TMappingInfo &rna_mapping_info, const objects::CSeq_feat &rna_feat, const objects::CMappedFeat &mapped_cds_feat, const objects::CSeq_loc &feat_loc, objects::CScope &scope, const int feat_offset=0)
Derive the CDS feature mapping information based on its parent RNA feature mapping info.
static bool IsCrossOrigin(const objects::CSeq_loc &loc)
static string GetAnnotName(const objects::CSeq_annot_Handle &annot_handle)
static CRef< objects::CSeq_loc > MixLocToLoc(const objects::CSeq_loc &mix_loc, const objects::CBioseq_Handle &handle)
Create a new seq-loc with a unique seq-id from a "mixed" loc.
static const string & GetUnnamedAnnot()
Get the commonly used symbol representing a unnnamed annotation.
static bool IsSameStrands(const objects::CSeq_loc &loc)
static void SetAnnot(objects::SAnnotSelector &sel, const string &annot)
help function for setting up an annotation.
vector< TMappedInt > TMappingInfo
const TLinkedFeats & GetChildren() const
static void SetResolveDepth(objects::SAnnotSelector &sel, bool adaptive, int depth=-1)
help function for setting selector resolve depth.
CGlPoint< TModelUnit > TModelPoint
virtual bool IsCanceled() const override
virtual void AddRange(TSeqRange range, CntType score=1, bool expand=false)
EJobState
Job states (describe FSM)
@ eSerial_AsnBinary
ASN.1 binary.
bool Match(const CSeq_id &sid2) const
Match() - TRUE if SeqIds are equivalent.
string GetLabel(const CSeq_id &id)
CRef< CSeq_loc > MakeSeq_loc(EMakeType make_type=eMake_CompactType) const
return constructed CSeq_loc with all changes
void Delete(void)
Delete current element, and make iterator to point to the next element.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Override Assign() to incorporate cache invalidation.
void SetId(CSeq_id &id)
set the 'id' field in all parts of this location
TRange GetTotalRange(void) const
CConstRef< CSeq_loc > GetRangeAsSeq_loc(void) const
Get seq-loc for the current iterator position.
const CSeq_id * GetId(void) const
Get the id of the location return NULL if has multiple ids or no id at all.
TRange GetRange(void) const
Get the range.
const CSeq_id & GetSeq_id(void) const
Get seq_id of the current location.
static CObjectIStream * Open(ESerialDataFormat format, CNcbiIstream &inStream, bool deleteInStream)
Create serial object reader and attach it to an input stream.
@ fFGL_Content
Include its content if there is any.
const CSeq_id & GetId(const CSeq_loc &loc, CScope *scope)
If all CSeq_ids embedded in CSeq_loc refer to the same CBioseq, returns the first CSeq_id found,...
ENa_strand GetStrand(const CSeq_loc &loc, CScope *scope=0)
Returns eNa_strand_unknown if multiple Bioseqs in loc Returns eNa_strand_other if multiple strands in...
sequence::ECompare Compare(const CSeq_loc &loc1, const CSeq_loc &loc2, CScope *scope)
Returns the sequence::ECompare containment relationship between CSeq_locs.
@ fComparePositional
Use positional coordinates (ignore strands) when looking for abutting locations.
@ eNoOverlap
CSeq_locs do not overlap or abut.
@ eGetId_ForceGi
return only a gi-based seq-id
CRef< CSeq_loc > Map(const CSeq_loc &src_loc)
Map seq-loc.
const CSeq_annot_Handle & GetAnnot(void) const
Get handle to seq-annot for this feature.
const CSeqFeatData & GetData(void) const
bool IsSetProduct(void) const
CSeqFeatData::ESubtype GetFeatSubtype(void) const
SAnnotSelector & SetFeatType(TFeatType type)
Set feature type (also set annotation type to feat)
vector< CAnnotName > TAnnotsNames
Object manager recognizes several fields of Seq-annot as annot name.
const CSeq_loc & GetLocation(void) const
const CSeq_feat & GetOriginalFeature(void) const
Get original feature with unmapped location/product.
SAnnotSelector & SetCollectNames(bool value=true)
Collect available annot names rather than annots.
SAnnotSelector & IncludeFeatType(TFeatType type)
Include feature type in the search.
const CSeq_loc & GetProduct(void) const
TObjectType * GetNCPointerOrNull(void) const THROWS_NONE
Get pointer value.
TObjectType * GetNCPointer(void) const THROWS_NONE
Get pointer,.
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
void Reset(void)
Reset reference object.
void Reset(void)
Reset reference object.
TObjectType & GetObject(void)
Get object.
position_type GetLength(void) const
TThisType & IntersectWith(const TThisType &r)
TThisType & SetToOpen(position_type toOpen)
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static SIZE_TYPE FindNoCase(const CTempString str, const CTempString pattern, SIZE_TYPE start, SIZE_TYPE end, EOccurrence which=eFirst)
Find the pattern in the specified range of a string using a case insensitive search.
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
static bool EqualNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive equality of a substring with another string.
static enable_if< is_arithmetic< TNumeric >::value||is_convertible< TNumeric, Int8 >::value, string >::type NumericToString(TNumeric value, TNumToStringFlags flags=0, int base=10)
Convert numeric value to string.
static string TruncateSpaces(const string &str, ETrunc where=eTrunc_Both)
Truncate whitespace in a string.
unsigned int usec
microseconds (modulo 1,000,000)
static const char label[]
void SetFrom(TFrom value)
Assign a value to From data member.
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
list< CRef< CEntrez2_docsum > > TList
const TStr & GetStr(void) const
Get the variant data.
bool IsSetData(void) const
the object itself Check if a value has been assigned to Data data member.
bool IsStr(void) const
Check if variant Str is selected.
bool IsSetType(void) const
type of object within class Check if a value has been assigned to Type data member.
bool IsLim(void) const
Check if variant Lim is selected.
const TTag & GetTag(void) const
Get the Tag member data.
bool IsId(void) const
Check if variant Id is selected.
const TData & GetData(void) const
Get the Data member data.
TLim GetLim(void) const
Get the variant data.
bool IsStr(void) const
Check if variant Str is selected.
bool IsSetLabel(void) const
field label Check if a value has been assigned to Label data member.
const TStr & GetStr(void) const
Get the variant data.
const TData & GetData(void) const
Get the Data member data.
const TObject & GetObject(void) const
Get the variant data.
const TLabel & GetLabel(void) const
Get the Label member data.
const TType & GetType(void) const
Get the Type member data.
bool IsObject(void) const
Check if variant Object is selected.
bool IsSetData(void) const
Check if a value has been assigned to Data data member.
vector< CRef< CUser_field > > TData
TId GetId(void) const
Get the variant data.
@ eLim_tl
space to left of position
list< CRef< CGBL_Gene > > TGenes
const TData & GetData(void) const
Get the variant data.
bool IsError(void) const
Check if variant Error is selected.
const TError & GetError(void) const
Get the variant data.
vector< CRef< CDbtag > > TDbxref
bool IsSetQual(void) const
qualifiers Check if a value has been assigned to Qual data member.
E_Choice Which(void) const
Which variant is currently selected.
bool IsSetExt(void) const
user defined structure extension Check if a value has been assigned to Ext data member.
bool IsCdregion(void) const
Check if variant Cdregion is selected.
const TQual & GetQual(void) const
Get the Qual member data.
E_Choice
Choice variants.
bool IsGene(void) const
Check if variant Gene is selected.
TFrame GetFrame(void) const
Get the Frame member data.
const TData & GetData(void) const
Get the Data member data.
const TDbxref & GetDbxref(void) const
Get the Dbxref member data.
const TCdregion & GetCdregion(void) const
Get the variant data.
TPseudo GetPseudo(void) const
Get the Pseudo member data.
bool IsSetPseudo(void) const
annotated on pseudogene? Check if a value has been assigned to Pseudo data member.
const TXref & GetXref(void) const
Get the Xref member data.
vector< CRef< CSeqFeatXref > > TXref
bool IsSetDbxref(void) const
support for xref to other databases Check if a value has been assigned to Dbxref data member.
const TExt & GetExt(void) const
Get the Ext member data.
bool IsRna(void) const
Check if variant Rna is selected.
bool IsSetFrame(void) const
Check if a value has been assigned to Frame data member.
bool IsMix(void) const
Check if variant Mix is selected.
ENa_strand
strand of nucleic acid
const TPnt & GetPnt(void) const
Get the variant data.
TPoint GetPoint(void) const
Get the Point member data.
list< CRef< CSeq_loc > > Tdata
const TFuzz & GetFuzz(void) const
Get the Fuzz member data.
E_Choice Which(void) const
Which variant is currently selected.
const Tdata & Get(void) const
Get the member data.
bool CanGetFuzz(void) const
Check if it is safe to call GetFuzz method.
const TMix & GetMix(void) const
Get the variant data.
bool IsPnt(void) const
Check if variant Pnt is selected.
@ e_Empty
to NULL one Seq-id in a collection
unsigned int
A callback function used to compare two keys in a database.
constexpr auto sort(_Init &&init)
const struct ncbi::grid::netcache::search::fields::SIZE size
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
struct named_group named_group
vector< SFeatBatchJobRequest > TFeatBatchJobRequests
#define row(bind, expected)
CSGFeatureJob implementation.
bool operator()(const CSGFeatureJob::SLandmarkFeat &f1, const CSGFeatureJob::SLandmarkFeat &f2) const
bool operator()(const CSGFeatureJob::SLandmarkFeat &f1, const CSGFeatureJob::SLandmarkFeat &f2) const
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4