& cds =
context.FeatCDS();
45 const auto& trnas =
context.FeatTRNAs();
47 boolincrease_count =
false;
48 static size_tbs_count = 0;
49 stringreport_item_str =
"[n] coding region[s] [has] overlapping tRNAs[*"+ to_string(++bs_count) +
"*]";
51 for(
size_t i= 0;
i< cds.size();
i++) {
52 const CSeq_loc& loc_i = cds[
i]->GetLocation();
53 boolhas_overlap =
false;
54 stringcur_report_cds_trna_pair_str =
"Coding region overlaps tRNAs[*"+ to_string(
i) +
"*]";
56 for(
size_tj = 0; j < trnas.size(); j++) {
57 const CSeq_loc& loc_j = trnas[j]->GetLocation();
61 if(need_to_compare) {
62ovlp =
context.Compare(loc_i, loc_j);
65increase_count =
true;
83 static const string kCdsTrnaOverlapComment=
"TAA stop codon is completed by the addition of 3' A residues to the mRNA";
100 const CSeq_loc& loc_t =
f->GetLocation();
104 if(!(
r1.GetFrom() >=
r2.GetToOpen() ||
r2.GetFrom() >=
r1.GetToOpen())) {
105ovlp_len =
r1.GetToOpen() -
r2.GetFrom();
107other.
Reset(&loc_t);
111ovlp_len =
r2.GetToOpen() -
r1.GetFrom();
113other.
Reset(&loc_t);
133 if(!br_loc->
GetId()) {
140br_loc->
SetInt().SetId(*seq_id);
145br_loc->
SetInt().SetId(*seq_id);
146br_loc->
SetInt().SetFrom(rr.
GetTo() - 2 + ovlp_len);
151code_break->
SetLoc().Assign(*br_loc);
152code_break->
SetAa().SetNcbieaa(
'*');
158 if(comment.length()) {
164new_cds->
SetData().SetCdregion().SetCode_break().push_back(code_break);
165 context.ReplaceSeq_feat(*obj, cds, *new_cds);
171new_gene->
Assign(*gene);
184 const string kCDSRNAExactMatch=
"[n/2] coding region location[s] exactly match an RNA location";
196 boolis_eukaryotic =
context.IsEukaryotic(biosrc ? &biosrc->
GetSource() :
nullptr);
198 const auto& cds =
context.FeatCDS();
199 const auto& rnas =
context.Feat_RNAs();
200 for(
const auto& pRna : rnas) {
201 const CSeq_loc& rna_loc = pRna->GetLocation();
209 for(
const auto* pCds : cds) {
210 const CSeq_loc& cds_loc = pCds->GetLocation();
211 const autocompare =
context.Compare(cds_loc, rna_loc);
219 const auto* pMrnaGene =
context.GetGeneForFeature(*pMrna);
220 if(pMrnaGene && (pMrnaGene ==
context.GetGeneForFeature(*pCds))) {
222pRnaGene =
context.GetGeneForFeature(*pRna);
224 if(pMrnaGene == pRnaGene) {
246 ENa_strandcds_strand = pCds->GetLocation().GetStrand();
247 ENa_strandrna_strand = pRna->GetLocation().GetStrand();
265m_ReportItems = m_Objs.Export(*
this,
false)->GetSubitems();
271 const auto& rrnas =
context.FeatRRNAs();
272 for(
size_t i= 0;
i< rrnas.size();
i++) {
273 const CSeq_loc& loc_i = rrnas[
i]->GetLocation();
274 for(
size_tj =
i+ 1; j < rrnas.size(); j++) {
275 const CSeq_loc& loc_j = rrnas[j]->GetLocation();
277m_Objs[
"[n] rRNA feature[s] overlap[S] another rRNA feature."].
Add(*
context.SeqFeatObjRef(*rrnas[
i])).Add(*
context.SeqFeatObjRef(*rrnas[j])).Fatal();
288 const auto& genes =
context.FeatGenes();
289 for(
size_t i= 0;
i< genes.size();
i++) {
290 const CSeq_loc& loc_i = genes[
i]->GetLocation();
292 for(
size_tj =
i+ 1; j < genes.size(); j++) {
293 const CSeq_loc& loc_j = genes[j]->GetLocation();
295m_Objs[
"[n] gene[s] overlap[S] another gene on the same strand."].
Add(*
context.SeqFeatObjRef(*genes[
i])).Add(*
context.SeqFeatObjRef(*genes[j]));
306 const auto& genes =
context.FeatGenes();
307 for(
size_t i= 0;
i< genes.size();
i++) {
308 const CSeq_loc& loc_i = genes[
i]->GetLocation();
311 for(
size_tj =
i+ 1; j < genes.size(); j++) {
312 const CSeq_loc& loc_j = genes[j]->GetLocation();
315 if(strand_i == strand_j) {
319m_Objs[
"[n] gene[s] completely overlapped by other genes"].Add(*
context.SeqFeatObjRef(*genes[
i]));
322m_Objs[
"[n] gene[s] completely overlapped by other genes"].Add(*
context.SeqFeatObjRef(*genes[j]));
334 const auto& genes =
context.FeatGenes();
335 for(
size_t i= 0;
i< genes.size();
i++) {
336 const CSeq_loc& loc_i = genes[
i]->GetLocation();
338 for(
size_tj =
i+ 1; j < genes.size(); j++) {
339 const CSeq_loc& loc_j = genes[j]->GetLocation();
345m_Objs[
"[n] genes match other genes in the same location, but on the opposite strand"].Add(*
context.SeqFeatObjRef(*genes[
i])).Add(*
context.SeqFeatObjRef(*genes[j]));
356 const auto& pseudo =
context.FeatPseudo();
357 const auto& mrnas =
context.FeatMRNAs();
358 for(
size_t i= 0;
i< mrnas.size();
i++) {
359 const CSeq_loc& loc_i = mrnas[
i]->GetLocation();
360 for(
size_tj = 0; j < pseudo.size(); j++) {
361 const CSeq_loc& loc_j = pseudo[j]->GetLocation();
396 static const string kIntronExon=
"[n] introns and exons are incorrectly positioned";
400 sort(vex.begin(), vex.end(),
less);
401 sort(vint.begin(), vint.end(),
less);
402 autoIex = vex.cbegin();
403 autoIint = vint.cbegin();
404 while(Iex != vex.cend() && Iint != vint.cend()) {
427 const auto& genes =
context.FeatGenes();
428 const auto& exons =
context.FeatExons();
429 const auto& introns =
context.FeatIntrons();
430 if(exons.empty() || introns.empty()) {
434vector<const CSeq_feat*> vex;
435vector<const CSeq_feat*> vint;
436vex.insert(vex.end(), exons.cbegin(), exons.cend());
437vint.insert(vint.end(), introns.cbegin(), introns.cend());
442 if(gg->CanGetExcept_text() && gg->GetExcept_text() ==
"trans-splicing") {
447vector<const CSeq_feat*> vex;
448vector<const CSeq_feat*> vint;
467 static const string kGeneMisc=
"[n] gene[s] overlap[S] with IGS misc features";
472 if(gene->IsSetLocation() && gene->IsSetData() && gene->GetData().GetGene().IsSetLocus() &&
475 const CSeq_loc& loc_gene = gene->GetLocation();
476 boolgene_added =
false;
479 if(misc->IsSetLocation() && misc->IsSetComment() &&
NStr::FindNoCase(misc->GetComment(),
"intergenic spacer") !=
NPOS) {
480 const CSeq_loc& loc_misc = misc->GetLocation();
499 const auto& genes =
context.FeatGenes();
500 const auto& cds =
context.FeatCDS();
501 const auto& mrnas =
context.FeatMRNAs();
503 const CGene_ref& gref = gene->GetData().GetGene();
509 if(
context.GetGeneForFeature(*feat) == &*gene) {
516 if(
context.GetGeneForFeature(*feat) == &*gene) {
523m_Objs[
"[n] gene[s] missing locus"].Add(*
context.SeqFeatObjRef(*gene, gene));
535new_feat->
SetData().SetGene().ResetDesc();
536 context.ReplaceSeq_feat(*obj, *sf, *new_feat);
User-defined methods of the data storage class.
@ eExtreme_Positional
numerical value
static void Add(TReportObjectList &list, TReportObjectSet &hash, CReportObj &obj, bool unique=true)
CReportNode & Ext(bool b=true)
CSeq_feat_EditHandle â.
namespace ncbi::objects::
#define DISCREPANCY_AUTOFIX(name)
#define DISCREPANCY_CASE(name, type, group, descr)
#define DISCREPANCY_SUMMARIZE(name)
std::ofstream out("events_result.xml")
main entry point for tests
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Optimized implementation of CSerialObject::Assign, which is not so efficient.
ENa_strand GetStrand(void) const
Get the location's strand.
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Override Assign() to incorporate cache invalidation.
TRange GetTotalRange(void) const
void Add(const CSeq_loc &other)
Simple adding of seq-locs.
bool IsSetStrand(EIsSetStrand flag=eIsSetStrand_Any) const
Check if strand is set for any/all part(s) of the seq-loc depending on the flag.
const CSeq_id * GetId(void) const
Get the id of the location return NULL if has multiple ids or no id at all.
void SetPartialStart(bool val, ESeqLocExtremes ext)
set / remove e_Lim fuzz on start or stop (lt/gt - indicating partial interval)
void SetPartialStop(bool val, ESeqLocExtremes ext)
CMappedFeat GetBestMrnaForCds(const CMappedFeat &cds_feat, CFeatTree *feat_tree=0, const SAnnotSelector *base_sel=0)
CRef< CSeq_loc > Seq_loc_Subtract(const CSeq_loc &loc1, const CSeq_loc &loc2, CSeq_loc::TOpFlags flags, CScope *scope)
Subtract the second seq-loc from the first one.
@ eContains
First CSeq_loc contains second.
@ eSame
CSeq_locs contain each other.
@ eContained
First CSeq_loc contained by second.
@ eNoOverlap
CSeq_locs do not overlap or abut.
CConstRef< CSeq_feat > GetGeneForFeature(const CSeq_feat &feat, CScope &scope)
Finds gene for feature, but obeys SeqFeatXref directives.
void Remove(void) const
Remove the feature from Seq-annot.
void Replace(const CSeq_feat &new_feat) const
Replace the feature with new Seq-feat object.
void Reset(void)
Reset reference object.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
#define BEGIN_SCOPE(ns)
Define a new scope.
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 bool StartsWith(const CTempString str, const CTempString start, ECase use_case=eCase)
Check if a string starts with a specified prefix value.
TTo GetTo(void) const
Get the To member data.
TFrom GetFrom(void) const
Get the From member data.
const TDesc & GetDesc(void) const
Get the Desc member data.
bool CanGetLocus(void) const
Check if it is safe to call GetLocus method.
bool CanGetDesc(void) const
Check if it is safe to call GetDesc method.
const TLocus & GetLocus(void) const
Get the Locus member data.
void SetAa(TAa &value)
Assign a value to Aa data member.
void SetLocation(TLocation &value)
Assign a value to Location data member.
void SetComment(const TComment &value)
Assign a value to Comment data member.
const TLocation & GetLocation(void) const
Get the Location member data.
const TData & GetData(void) const
Get the Data member data.
void SetData(TData &value)
Assign a value to Data data member.
void SetLoc(TLoc &value)
Assign a value to Loc data member.
const TComment & GetComment(void) const
Get the Comment member data.
const TGene & GetGene(void) const
Get the variant data.
bool CanGetComment(void) const
Check if it is safe to call GetComment method.
ENa_strand
strand of nucleic acid
const TSource & GetSource(void) const
Get the variant data.
constexpr auto sort(_Init &&init)
const string kCDSRNAContainstRNA
const string kCDSRNAOverlapNoContainSameStrand
const string kCDSRNAOverlapNoContain
const string kCDSRNAExactMatch
static const string kGeneMisc
static const string kCdsTrnaOverlapComment
static void CollectExonsIntrons(CReportNode &out, CDiscrepancyContext &context, vector< const CSeq_feat * > &vex, vector< const CSeq_feat * > &vint)
static bool less(const CSeq_feat *A, const CSeq_feat *B)
const string kCDSRNAOverlapNoContainOppStrand
const string kCDSRNAContains
const string kCDSRNAContainedIn
static const string kIntronExon
static const string kCDSoverlapTRNA
const string kCDSRNAAnyOverlap
static const sljit_gpr r1
static const sljit_gpr r2
float g0(Seg_Nsm *spn, Thd_Cxe *cxe)
float Overlap(iterator1 iter1, iterator1 end1, iterator2 iter2, iterator2 end2)
Overlap measure.
static CS_CONTEXT * context
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