(
constobjects::CBioseq_Handle& handle,
110 const TSeqRange& range, objects::SAnnotSelector& sel,
130 returnis_gaps[
row/ 8] & 0x01 << (8 -
row% 8);
149objects::CScope& scope,
TJobTokentoken);
184, m_IsChromosome(
true)
193range,
m_Depth, cutoff, token));
291}
else if(level ==
eContig) {
304 const CSeq_id&
id=
dynamic_cast<const CSeq_id&
>(
object.object.GetObject());
311 static stringsid(
"seqgraphic_segment_map_ds_type");
318 static stringslabel(
"Graphical View Segment Map Data Source Type");
353 inttotal_levels = 0;
354 for(
intlevel = 0; level < 2; ++level) {
360 boolisMaxSegmentsReached{
false};
361 while(start <= stop) {
369 if(isMaxSegmentsReached) {
373 if(isMaxSegmentsReached) {
392level =
min(level, max_level);
401 for(
int l= start_l;
l<= end_l; ++
l) {
407 if(seg)
return true;
426 boolover_limit =
false;
439 for(
size_tlevels = 0; levels < 4; ++levels) {
451 size_tseg_count = 0;
474 if(over_limit)
break;
498 TSeqPosseg_from = seg.GetPosition();
499 TSeqPosseg_to = seg.GetEndPosition() - 1;
502 TSeqPosref_from = seg.GetRefPosition();
503 TSeqPosref_to = seg.GetRefEndPosition() - 1;
515 boolneg = seg.GetRefMinusStrand();
520seg_r, neg, length));
528seg_maps.push_back(seqmap);
537 "exception in retrieval of seq-maps: "<< e.
GetMsg());
542 if(seg_maps.size()) {
551 if(
result->Size() > 1 ||
561 if(over_limit &&
result->m_ObjectList.empty()) {
562 string msg=
"There are more than ";
564 msg+=
" segments for the given range. Segment map is not shown at this zooming level!";
568 result->m_ObjectList.push_back(message_glyph);
573}
catch(std::exception& ex) {
587 typedefpair<const TSeqRange, CRef<CSegmentGlyph> > CSegMapPair;
589CSegMapMap merge_map;
599 const TSeqRange& range = segmap->GetLocation().GetTotalRange();
601merge_map.insert( CSegMapPair(range, segmap) );
602map_keys.
insert( range );
611pair<CSegMapMap::iterator, CSegMapMap::iterator> the_bounds;
612the_bounds = merge_map.equal_range(*iter);
617 for(CSegMapMap::iterator it = the_bounds.first;
618it != the_bounds.second; it++)
620CSegMapPair pair = *it;
624comp_range.
insert(*cr_it);
627mapped_range.
insert(*mr_it);
630ref.
Reset(pair.second.GetPointer());
633ref->SetComponentRanges(comp_range);
634ref->SetMappedRanges(mapped_range);
638objs.push_back(obj_ref);
665objects::CBioseq_Handle handle,
668 const string& annot,
676, m_SeqVector(seq_vec)
688objects::SAnnotSelector& sel,
691sel.SetCollectNames();
697 if(iter->IsNamed()) {
698 if(iter->GetName().find(
"@@") == string::npos) {
710 while(pre != annots.
end()) {
713 if(iter != annots.
end()
716&& pre->first.substr(0, 11) == iter->first.substr(0, 11)) {
738 "failed to retrieve map from cache: "<< e.
GetMsg());
773perfLog.
AddParameter(
"description",
"Load segment smear map from delta seqs");
780 int depth= is_chromosome ? 1 : 0;
787unique_ptr<CSegmentSmearGlyph::CSegMap>
795 usingTSegData =
struct{
800vector<TSegData>
data;
810 TSeqPosseg_from = seg.GetPosition();
811 TSeqPosseg_to = seg.GetEndPosition() - 1;
812 if(pre_to < seg_from) {
813 data.push_back({
TSeqRange(pre_to, seg_from - 1), gap_val, 0});
815ids.push_back(seg.GetRefSeqid());
821 if(seg.GetEndPosition() > r_to) {
829 autohandles =
m_Handle.GetScope().GetBioseqHandles(ids);
832 for(
auto& d :
data) {
833 if(d.val != gap_val) {
842the_map->AddRange(d.range, d.val,
false);
852 result->m_ObjectList.push_back(glyph);
863perfLog.
AddParameter(
"description",
"Loading segment smear map from NA");
877unique_ptr<CSegmentSmearGlyph::CSegMap> the_map(
890col_to.
TryGet(annot, rows - 1, to);
895col_from.
TryGet(annot, 0, from);
896 if(r_to < (
TSeqPos)from)
break;
903 if((*iter)->GetHeader().CanGetField_name() &&
904(*iter)->GetHeader().GetField_name() ==
"is_gap") {
905col_gap = iter->GetPointer();
909 if( !col_gap )
return eFailed;
920 size_tr_end = rows - 1;
923 row= (r_start + r_end) / 2;
925 if((
TSeqPos)from < r_from ) r_start =
row;
927}
while((
TSeqPos)from != r_from && r_start < r_end - 1);
930 for(
row= (r_start + r_end) / 2; (size_t)
row< rows; ++
row) {
931 if(col_from.
TryGet(annot,
row, from) &&
935 if((
TSeqPos)from > r_to)
break;
941the_map->AddRange(
TSeqRange(from, to), (TValType)qual,
false);
952 result->m_ObjectList.push_back(hist);
965perfLog.
AddParameter(
"description",
"Loading segment smear map from NetCache");
970unique_ptr<CSegmentSmearGlyph::CSegMap> the_map(
975the_map->Deserialize(*reader);
980 result->m_ObjectList.push_back(hist);
997 "failed to store map to cache: "<< e.
GetMsg());
1019objects::CScope& scope,
1039ids.reserve(
m_Objs.size());
1040 for(
auto&& iter :
m_Objs) {
1053 _ASSERT(bshs.size() == ids.size());
1054 if(bshs.size() != ids.size())
1057 for(
auto&& iter :
m_Objs) {
1060 if(bshs[
i] && bshs[
i].CanGetInst_Mol()) {
1117all_objs.push_back(sp);
1120 result->m_ObjectList.swap(all_objs);
static CRef< CScope > m_Scope
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
const TAnnotNames & GetAnnotNames(void) const
CAppJobError Default implementation for IAppJobError - encapsulates a text error message.
CJobResultBase â the basic job result class holding a token.
void AddParameter(const std::string &name, const std::string &value)
void Post(CRequestStatus::ECode status=CRequestStatus::e200_Ok)
CNcbiOstrstreamToString class helps convert CNcbiOstrstream to a string Sample usage:
class CRegistryReadView provides a nested hierarchical view at a particular key.
objects::SAnnotSelector m_Sel
our annotation selector
TSeqRange m_Range
target range
objects::CBioseq_Handle m_Handle
target sequence
TJobID x_LaunchJob(IAppJob &job, int report_period=1, const string &pool="ObjManagerEngine")
Launch either a background or foreground job.
int m_Depth
annotation resolving depth
objects::CScope & GetScope(void) const
Get the scope from the handle.
void SetDepth(int depth)
Set the annotation selector resolving depth.
objects::CBioseq_Handle m_Handle
CSGJobResult â the data structure holding the seqgraphic job results.
virtual string GetExtensionIdentifier() const
returns the unique human-readable identifier for the extension the id should use lowercase letters se...
virtual string GetExtensionLabel() const
returns a displayable label for this extension ( please capitalize the key words - "My Extension" )
virtual ISGDataSource * CreateDS(SConstScopedObject &object) const
create an instance of the layout track type using default settings.
virtual bool IsSharable() const
check if the data source can be shared.
bool IsChromosome() const
bool HasComponent(const TSeqRange &range) const
void LoadSegmentMap(const TSeqRange &range, int cutoff, TJobToken token)
static void SetICacheClient(ICache *pCache)
Set cache client to use.
static bool GetEnabled()
Indicates if the segment map is enabled.
void SetSegmentLevel(ESegmentLevel level)
Set which segment level to show.
void LoadSegmentSmear(const TSeqRange &range, TModelUnit scale, const objects::CSeqVector *seq_vec=nullptr)
Used in sequence track for showing segment color.
int GetSegmentMapLevels(const TSeqRange &range) const
Get total number of segment map levels.
bool HasSegmentMap(int level, const TSeqRange &range) const
Query if there is segment maps for given level.
int x_ConceptualToRealDepth(ESegmentLevel level) const
Convert conceptual segment level to real segment depth.
static ICache * m_Cache
Cache, used to store segment smear.
bool m_IsChromosome
Flag to indicate if the sequence is a chromosome sequence.
ESegmentLevel
It is not technically correct to name a specific segment level as config/scaffold and component becau...
static bool m_Enabled
Indicates if the segment map is enabled.
void GetAnnotNames(objects::SAnnotSelector &sel, const TSeqRange &range, TAnnotNameTitleMap &names) const
void LoadSegmentMapSeqIDs(CSeqGlyph::TObjects &objs, TJobToken token)
static void SetEnabled(bool enabled=true)
Enables/disables the segment map.
string m_Annot
The named annotation storing segment map data.
CSGSegmentMapDS(objects::CScope &scope, const objects::CSeq_id &id)
bool HasScaffold(const TSeqRange &range) const
CSGSegmentMapJob declaration.
static bool HasSegmentMap(const objects::CBioseq_Handle &Handle, int level, const TSeqRange &range)
objects::CBioseq_Handle m_Handle
target sequence
int m_Cutoff
limit of number of segments we want to show.
TSeqRange m_Range
target range
virtual EJobState x_Execute()
method truly doing the job.
CSGSegmentMapJob(const string &desc, objects::CBioseq_Handle handle, const TSeqRange &range, int depth, int cutoff, TJobToken token)
CSGSegmentMapJob implementation.
bool x_AdaptiveDepth() const
static int GetSegmentMapLevels(const objects::CBioseq_Handle &handle, const TSeqRange &range)
IAppJob::EJobState x_MergeSeqSegments(CSegmentGlyph::TSeqMapList &seg_maps, CSeqGlyph::TObjects &objs)
merge equal segment maps into one map.
int m_Depth
Resolve depth for selector.
CSGSegmentSmearJob declaration.
void x_WriteToCache(const string &key, const CSegmentSmearGlyph::CSegMap &density_map)
string m_Annot
annotation storing the segments
static void GetAnnotNames(const objects::CBioseq_Handle &handle, const TSeqRange &range, objects::SAnnotSelector &sel, TAnnotNameTitleMap &annots)
ICache * m_Cache
cache to store segment ranges
const CSeqVector * m_SeqVector
IAppJob::EJobState x_LoadFromNetCache(const string &key)
TModelUnit m_Scale
bases per pixel
IAppJob::EJobState x_LoadFromNA()
bool x_IsGap(vector< char > is_gaps, int row) const
virtual EJobState x_Execute()
method truly doing the job.
CSGSegmentSmearJob(const string &desc, objects::CBioseq_Handle handle, const TSeqRange &range, TModelUnit scale, const string &annot, ICache *cache=0, const CSeqVector *seq_vec=nullptr)
CSGSegmentSmearJob implementation.
string x_GetCacheKey() const
IAppJob::EJobState x_LoadFromDeltaSeqs()
CSGSegmentsSeqIDJob declaration.
objects::CScope & m_Scope
scope for retrieving the CBioseq
CSGSegmentsSeqIDJob(const string &desc, CSeqGlyph::TObjects &objs, objects::CScope &scope, TJobToken token)
CSGSegmentsSeqIDJob implementation.
virtual EJobState x_Execute()
method truly doing the job.
CSeqGlyph::TObjects m_Objs
objects for post-processing
CSGSwitchPointJob declaration.
objects::CBioseq_Handle m_Handle
target sequence
virtual EJobState x_Execute()
method truly doing the job.
CSGSwitchPointJob(const string &desc, objects::CBioseq_Handle handle)
CSGSwitchPointJob implementation.
static bool IsChromosome(const objects::CBioseq_Handle &handle, objects::CScope &scope)
void SetSeqQuality(CSegmentConfig::TSegMapQuality quality)
const objects::CSeq_loc & GetLocation(void) const
access the position of this object.
vector< CRef< CSegmentGlyph > > TSeqMapList
void Serialize(IWriter &writer) const
class CSeqGlyph defines an interface that wraps a rectilinear abstract object.
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)
virtual void SetTaskName(const string &name)
virtual void SetTaskCompleted(int completed)
set total finished task number.
void SetToken(TJobToken token)
CSeqGraphicJob inline methods.
TJobToken m_Token
Job token recognizable by job listener.
CRef< CAppJobError > m_Error
bool TryGetBool(size_t row, bool &v) const
bool TryGet(const CFeat_CI &feat_ci, Value &v) const
BLOB cache read/write/maintenance interface.
virtual IWriter * GetWriteStream(const string &key, TBlobVersion version, const string &subkey, unsigned int time_to_live=0, const string &owner=kEmptyStr)=0
Return sequential stream interface to write BLOB data.
virtual bool HasBlobs(const string &key, const string &subkey)=0
Check if any BLOB exists (any version)
virtual IReader * GetReadStream(const string &key, TBlobVersion version, const string &subkey)=0
Return sequential stream interface to read BLOB data.
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
iterator_bool insert(const value_type &val)
static unsigned char depth[2 *(256+1+29)+1]
bool Empty(const CNcbiOstrstream &src)
static const struct name_t names[]
unsigned int TSeqPos
Type for sequence locations and lengths.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
const string & GetMsg(void) const
Get message string.
void Warning(CExceptionArgs_Base &args)
virtual const char * what(void) const noexcept
Standard report (includes full backlog).
void Info(CExceptionArgs_Base &args)
static bool IsNAA(const string &annot, bool isStrict=false)
check if a given annotation is a named annotation accession[.version][number] when isSctrict == false...
static int GetMaxSearchSegments(const CRegistryReadView &view)
static objects::SAnnotSelector::EMaxSearchSegmentsAction GetMaxSearchSegmentsAction(const CRegistryReadView &view)
static const string & GetUnnamedAnnot()
Get the commonly used symbol representing a unnnamed annotation.
static CRegistryReadView GetSelectorRegistry()
helper functions to read selector-related tune-up info (mostly segment limits) from registry:
static void SetResolveDepth(objects::SAnnotSelector &sel, bool adaptive, int depth=-1)
help function for setting selector resolve depth.
static bool CheckMaxSearchSegments(int actual, int max, objects::SAnnotSelector::EMaxSearchSegmentsAction action)
check actual number of segments against max and perform the action if the actual number is more than ...
CGlPoint< TModelUnit > TModelPoint
virtual bool IsCanceled() const override
EJobState
Job states (describe FSM)
void GetLabel(string *label, ELabelType type=eDefault, TLabelFlags flags=fLabel_Default) const
Append a label for this Seq-id to the supplied string.
CConstRef< CSeq_id > GetSeqId(void) const
static CSeq_id_Handle GetHandle(const CSeq_id &id)
Normal way of getting a handle, works for any seq-id.
@ eContent
Untagged human-readable accession or the like.
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,...
@ eGetId_Best
return the "best" gi (uses FindBestScore(), with CSeq_id::CalculateScore() as the score function
vector< CBioseq_Handle > TBioseqHandles
vector< CSeq_id_Handle > TIds
@ eGetBioseq_Loaded
Search in all loaded TSEs in the scope.
@ eGetBioseq_All
Search bioseq, load if not loaded yet.
TSeqPos GetBioseqLength(void) const
CConstRef< CSeq_annot > GetCompleteSeq_annot(void) const
Complete and return const reference to the current seq-annot.
size_t GetSeq_tableNumRows(void) const
bool CanGetInst_Mol(void) const
SSeqMapSelector & SetResolveCount(size_t res_cnt)
Set max depth of resolving seq-map.
CSeqMap::ESegmentType GetType(void) const
TSeqPos GetPosition(void) const
return position of current segment in sequence
const CSeqMap_CI & GetCurrentSeqMap_CI() const
vector< CRef< CSeqMapSwitchPoint > > TSeqMapSwitchPoints
TSeqMapSwitchPoints GetAllSwitchPoints(const CBioseq_Handle &seq, const TSeqMapSwitchAligns &aligns)
@ eSeqRef
reference to Bioseq
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
void Reset(void)
Reset reference object.
bool Empty(void) const THROWS_NONE
Check if CRef is empty â not pointing to any object, which means having a null value.
position_type GetLength(void) const
CRange< TSeqPos > TSeqRange
typedefs for sequence ranges
static TThisType GetWhole(void)
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
const TColumns & GetColumns(void) const
Get the Columns member data.
vector< CRef< CSeqTable_column > > TColumns
@ eField_id_location_to
interval to
@ eField_id_location_from
interval from
bool IsLocal(void) const
Check if variant Local is selected.
list< CRef< CSeq_align > > TAssembly
const TInst & GetInst(void) const
Get the Inst member data.
bool IsSetAssembly(void) const
how was this assembled? Check if a value has been assigned to Assembly data member.
bool IsSetHist(void) const
sequence history Check if a value has been assigned to Hist data member.
TTech GetTech(void) const
Get the Tech member data.
bool IsSetInst(void) const
the sequence data Check if a value has been assigned to Inst data member.
const TAssembly & GetAssembly(void) const
Get the Assembly member data.
const THist & GetHist(void) const
Get the Hist member data.
const TSeq_table & GetSeq_table(void) const
Get the variant data.
bool IsSetTech(void) const
Check if a value has been assigned to Tech data member.
const TData & GetData(void) const
Get the Data member data.
const TMolinfo & GetMolinfo(void) const
Get the variant data.
@ eTech_htgs_2
ordered High Throughput sequence contig
@ eTech_htgs_3
finished High Throughput sequence
@ eTech_htgs_1
unordered High Throughput sequence contig
@ eTech_wgs
whole genome shotgun sequencing
@ e_Molinfo
info on the molecule and techniques
Interfaces for a local cache of versioned binary large objects (BLOBS).
const struct ncbi::grid::netcache::search::fields::KEY key
const GenericPointer< typename T::ValueType > T2 value
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
Defines NCBI C++ API for timing-and-logging, classes, and macros.
CSegmentConfig::ESequenceQuality SGetSeqQuality(CMolInfo_Base::TTech tech)
utility function
const int kSegmentLoadLimit
static SLJIT_INLINE sljit_ins l(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
static SLJIT_INLINE sljit_ins msg(sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b)
#define row(bind, expected)
Selector used in CSeqMap methods returning iterators.
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