CSeq_loc::TMix::Tdata::iterator dest = loc.
SetMix().Set().begin();
90loc.
SetMix().Set().erase(dest, loc.
SetMix().Set().end());
94loc.
Assign(*content_loc);
95}
else if(loc.
GetMix().
Get().size() == 0) {
119 returnmax_start == min_stop + 1;
131 boolis_5p_partial(
false);
132 boolis_3p_partial(
false);
140prev_exon = current_exon;
145 const boolis_consensus_donor =
149 const boolis_consensus_acceptor =
154&& (!is_consensus_acceptor || is_consensus_donor))
156is_5p_partial =
true;
160&& (!is_consensus_donor || is_consensus_acceptor))
162is_3p_partial =
true;
165prev_exon = current_exon;
204 size_tunaligned_ends_partialness_thr)
207 if(!product_cds_loc) {
211> unaligned_ends_partialness_thr;
214> unaligned_ends_partialness_thr;
223cds_stop = cds_stop*3+2;
226 boolstart_covered =
false;
227 boolstop_covered =
false;
239partialness.first = !start_covered
242partialness.second = !stop_covered
246 swap(partialness.first, partialness.second);
254 if(partialness.first) {
257 if(partialness.second) {
325 if(convert_overlaps) {
333<< (orig_loc.
Equals(*loc) ?
"equal":
"not-equal")
339 if(convert_overlaps) {
349 template<
typenameT>
352 return CRef<T>(SerialClone<T>(x));
358 template<
typenameiterator_t>
365 if( (d < 0 && distance(begin, it) <
abs(d))
366|| (d > 0 && distance(it, end) <
abs(d)))
377 template<
typenamecontainer_t>
379 constcontainer_t& container,
380 typenamecontainer_t::const_iterator it,
388 returnit == container.end() ? default_value : *it;
394 constCPacked_seqint::Tdata::const_iterator it)
402 constCPacked_seqint::Tdata::const_iterator it)
453 return a.GetId().Equals(
b.GetId())
468 return(
g% 3) == 0;
484: seqint.
SetTo(pos));
525 "Expected same seq-id and strand");
552CPacked_seqint::Tdata::iterator dest = seqints.begin();
562 const boolcan_subsume =
586seqints.erase(seqints.end() == dest ? dest : ++dest,
606}
else if(overlap > 2) {
609}
else if(
prev->GetLength() > 3) {
621CPacked_seqint::Tdata::iterator dest = seqints.begin();
636seqints.erase(seqints.end() == dest ? dest : ++dest,
657 if(packed_seqint.
Get().empty()) {
658 return "Empty-Packed-seqint";
675<< (d < 0 ?
"-":
"+") <<
abs(d)
676<<
","<< seqint->GetLength();
678ostr << (!prev_seqint ?
"":
",")
679<< seqint->GetId().GetSeqIdString()
682<<
":"<< seqint->GetLength();
685prev_seqint = seqint;
712 "Logic error - frame not preserved");
722problem_str +=
"invalid seqint";
728 if(d != 1 && d != 2) {
735 if(!problem_str.empty()) {
742<<
"\nproblem: "<< problem_str <<
"\n";
762 const CSeq_id& aln_genomic_id,
764 boolconvert_overlaps)
773: aln_genomic_strand;
777exon_loc->
SetInt().SetId().Assign( genomic_id);
778exon_loc->
SetInt().SetStrand( genomic_strand);
784 typedefvector<pair<int, int> > TExonStructure;
793TExonStructure exon_structure;
794 boollast_is_diag =
false;
805 if(is_diag && last_is_diag) {
806exon_structure.back().first +=
len;
807exon_structure.back().second +=
len;
808}
else if(is_diag) {
811 if(exon_structure.empty()) {
815: exon_structure.back().second) +=
len;
817last_is_diag = is_diag;
827 if(it != exon_structure.begin()) {
828it->second += (it-1)->second;
837 ITERATE(TExonStructure, it, exon_structure) {
838 intchunk_length = it->first;
839 intchunk_offset = it == exon_structure.begin() ? 0 : (it-1)->second;
841 if(chunk_length == 0) {
847 TSeqPosbio_start = exon_bio_start_pos + (chunk_offset * genomic_sign);
850 autopos = (
int64_t)bio_start + (chunk_length - 1) * genomic_sign;
861pos = ((pos % 3) + 3) % 3;
867chunk->
SetId().Assign(genomic_id);
869chunk->
SetFrom(genomic_sign > 0 ? bio_start : bio_stop);
870chunk->
SetTo(genomic_sign > 0 ? bio_stop : bio_start);
943 while( (q_len - s_len) % 3 ) {
965 boollast_is_diag =
false;
977 boolis_diag = chunk.
IsMatch()
981 const boolstart_new_block =
985: last_is_diag ?
false 997last_is_diag = is_diag;
1015 while(
blocks.size() > 1
1016&&
blocks.front().diag < 3)
1021 if(
blocks[1].diag > 0) {
1032&&
blocks.back().diag > 0
1033&&
blocks.back().HasGap())
1054SBlocks::iterator dest = this->begin();
1058}
else if( !it->diag
1060|| !dest->IsFrameshifting()
1062&& &(*it) != &back()
1063&& &(*it) != &
front() ) )
1077 if(it != this->end()) {
1080this->erase(it, this->end());
1102 const CSeq_id& aln_genomic_id,
1113: aln_genomic_strand;
1117exon_loc->
SetInt().SetId().Assign( genomic_id);
1118exon_loc->
SetInt().SetStrand( genomic_strand);
1128 const TSeqPosexon_bio_start_pos =
1133 size_texon_relative_subj_start = 0;
1138 const TSeqPosbio_start = exon_bio_start_pos
1139+ (exon_relative_subj_start * genomic_sign);
1141 const size_t len= it->GetFramePreservingSubjLen();
1143 const TSeqPosbio_stop = bio_start + ((
len- 1) * genomic_sign);
1147chunk->
SetId().Assign(genomic_id);
1149chunk->
SetFrom( genomic_sign > 0 ? bio_start : bio_stop);
1150chunk->
SetTo( genomic_sign > 0 ? bio_stop : bio_start);
1156exon_relative_subj_start += it->diag + it->s_ins;
1164 const size_texon_product_len =
1170 if(loc_len % 3 != exon_product_len % 3) {
1172 "Logic error - frame not preserved");
1200 const CSeq_id& aln_genomic_id,
1202 boolconvert_overlaps)
1228-
as_nucpos(exon->GetProduct_start()) + 1;
1229 TSeqPossubject_range = exon->GetGenomic_end() - exon->GetGenomic_start() + 1;
1230 TSeqPosmin_range =
min(query_range, subject_range);
1231 TSeqPosmax_range =
max(query_range, subject_range);
1236diag1->SetDiag(min_range / 2);
1237diag2->SetDiag(min_range - diag1->GetDiag());
1238 if(max_range == subject_range) {
1239gap_chunk->SetGenomic_ins(max_range - min_range);
1241gap_chunk->SetProduct_ins(max_range - min_range);
1243exon->SetParts().clear();
1244exon->SetParts().push_back(diag1);
1245exon->SetParts().push_back(gap_chunk);
1246exon->SetParts().push_back(diag2);
1303 boolconvert_overlaps)
1306exon_aln->ResetScore();
1307exon_aln->ResetExt();
1310exon_aln->SetSegs().SetSpliced().SetExons().clear();
1311exon_aln->SetSegs().SetSpliced().SetExons().push_back(
1340mapper->SetTrimSplicedSeg(
false);
1344truncated_exon_aln = mapper->Map(*exon_aln);
1351truncated_exon_aln->
Assign(*exon_aln);
1352truncated_exon_aln->
SetSegs().SetSpliced().SetExons().clear();
1367 if(truncated_exon_aln->GetSegs().GetSpliced()
1368.GetExons().empty())
1396*exon_aln->SetSegs().SetSpliced().SetExons().front());
1398exon_aln->SetSegs().SetSpliced().SetExons().front() = collapsed_exon;
1399truncated_exon_aln = mapper->Map(*exon_aln);
1401 if(truncated_exon_aln->GetSegs().GetSpliced()
1402.GetExons().empty())
1411*truncated_exon_aln->GetSegs().GetSpliced().GetExons().front(),
1429exon_loc->SetPacked_int().Set().insert(
1430exon_loc->SetPacked_int().Set().end(),
1447 if(!product_cds_loc) {
1468 if(mapped_collapsed_cds_subloc->
IsNull()) {
1470}
else if(mapped_collapsed_cds_subloc->
IsInt()) {
1472&mapped_collapsed_cds_subloc->
SetInt());
1473 out->Set().push_back(seqint);
1495 const boolsame_stop = src.
GetStop(ext) == dest.
GetStop(ext);
1515 if(!collapsed_genomic_cds) {
1516 returndetailed_rna_exon;
1528 if(cds_exon->
IsNull()) {
1534out_loc->
SetMix().Set().push_back(cds_exon);
1545 boolconvert_overlaps,
1546 size_tunaligned_ends_partialness_thr = 0)
1565genomic_collapsed_cds);
1570 if(!product_cds_loc) {
1572}
else if(exon_loc->
GetId()) {
1578 boolstart_partial = partialness.first;
1579 boolstop_partial = partialness.second;
1583 swap(start_partial, stop_partial);
1601exons_loc->
SetMix().Set().push_back(exon_loc);
1611unaligned_ends_partialness_thr));
1626 if(loc.
IsMix()) {
1628collapsed_loc->
SetMix();
1634collapsed_loc->
SetMix().Set().push_back(collapsed_exon_loc);
1660 size_tcount_terminals_within_cds =
1661(last_interval.
GetFrom() >= cds_start && last_interval.
GetFrom() <= cds_stop ? 1 : 0)
1662+ ( interval.
GetFrom() >= cds_start && interval.
GetFrom() <= cds_stop ? 1 : 0)
1663+ (last_interval.
GetTo() >= cds_start && last_interval.
GetTo() <= cds_stop ? 1 : 0)
1664+ ( interval.
GetTo() >= cds_start && interval.
GetTo() <= cds_stop ? 1 : 0);
1666 if( count_terminals_within_cds <= 1
1671loc1.
SetInt(last_interval);
1678 NcbiCerr<<
"Retaining UTR indel: " 1679<<
"cds: "<< cds_start <<
".."<< cds_stop <<
"; " 1680<<
"terminals_in_cds: "<< count_terminals_within_cds <<
"; " 1695collapsed_loc->
Assign(loc);
1698 returncollapsed_loc;
1722loc_mix.
Set().push_back(exons_loc);
1723 auto& exons = exons_loc->
IsMix() ? exons_loc->
SetMix().Set() : loc_mix.Set();
1725 for(
autoit = exons.begin(); it != exons.end(); ++it) {
1734 for(
autoit = chunks.begin(); it != chunks.end(); ++it) {
1739 autois_overlapping = [&](
TSeqPospos)
1741 returnivl->GetFrom() <= pos && pos <= ivl->GetTo();
1744 if( is_overlapping(cds_start)
1745&& !is_overlapping(cds_start + (is_minus_strand ? -2 : 2))
1747&& next_ivl->GetLength() > 3)
1753 if( is_overlapping(cds_stop)
1754&& !is_overlapping(cds_stop - (is_minus_strand ? -2 : 2))
1756&& prev_ivl->GetLength() > 3)
1766 _ASSERT(orig_len == final_len);
1776 size_tunaligned_ends_partialness_thr)
1783unaligned_ends_partialness_thr);
1788 if(product_cds_loc) {
1811cds_start, cds_stop),
1812cds_start, cds_stop);
1818 boolconvert_overlaps)
1836todo: move to unit-
test 1838 voidCollapseMatches(
CSeq_align& spliced_aln)
1862chunk2->Assign(chunk);
1863 if(current_is_diag) {
1864chunk2->SetDiag(
len);
1880 boolCFeatureGenerator::TestProjectExons(
const CSeq_align& aln2)
1884aln_ref->Assign(aln2);
1885CollapseMatches(*aln_ref);
1891 boolall_ok =
false;
1893 boolthis_ok =
true;
1901 if(covered_cds->
IsNull()) {
1905 static const size_tallowed_unaligned_ends_len = 6;
1912 if(query_sv.size() != subject_sv.size()) {
1915<<
"|query-cds truncated to aln|="<< query_sv.size()
1916<<
"; |projected-cds|="<< subject_sv.size());
1924 size_taln_cds_matches(0);
1931aln_cds_matches += chunk.
GetMatch();
1936 size_tseq_cds_matches(0);
1937 for(
size_t i= 0;
i< query_sv.size();
i++) {
1938seq_cds_matches += (query_sv[
i] == subject_sv[
i] ? 1 : 0);
1941 if(seq_cds_matches < aln_cds_matches) {
1944<< aln_cds_matches <<
" matches in alignment truncated to CDS, but only " 1945<< seq_cds_matches <<
" matches in seq-vector");
1955all_ok = all_ok & this_ok;
ESeqLocExtremes
Used to determine the meaning of a location's Start/Stop positions.
@ eExtreme_Positional
numerical value
@ eExtreme_Biological
5' and 3'
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
CRef< CSpliced_exon > spliced_exon(const CModelExon &e, EStrand strand)
Seq-loc and seq-align mapper exceptions.
unique_ptr< SImplementation > m_impl
static CRef< objects::CSeq_loc > s_ProjectCDS(const objects::CSeq_align &spliced_aln, const objects::CSeq_loc &product_cds_loc, bool convert_overlaps=true)
Similar to s_ProjectRNA(...) Postcondition: seq-vector of the returned loc is of exact same length an...
static CRef< objects::CSeq_loc > s_ProjectRNA(const objects::CSeq_align &spliced_aln, CConstRef< objects::CSeq_loc > product_cds_loc=CConstRef< objects::CSeq_loc >(NULL), size_t unaligned_ends_partialness_thr=kDefaultAllowedUnaligned)
Project RNA, preserving discontinuities in the CDS.
CNcbiOstrstreamToString class helps convert CNcbiOstrstream to a string Sample usage:
CProt_pos_Base::TFrame GetFrame() const
TSeqPos GetSeqStop(TDim row) const
CRef< CSeq_loc > CreateRowSeq_loc(TDim row) const
const CSeq_id & GetSeq_id(TDim row) const
Get seq-id (the first one if segments have different ids).
TSeqPos GetSeqStart(TDim row) const
ENa_strand GetSeqStrand(TDim row) const
Get strand (the first one if segments have different strands).
TSeqPos GetStart(ESeqLocExtremes ext) const
TSeqPos GetLength(void) const
TSeqPos GetStop(ESeqLocExtremes ext) const
Seq-loc iterator class â iterates all intervals from a seq-loc in the correct order.
Template class for iteration on objects of class C (non-medifiable version)
std::ofstream out("events_result.xml")
main entry point for tests
#define test(a, b, c, d, e)
static DLIST_TYPE *DLIST_NAME() prev(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
static DLIST_TYPE *DLIST_NAME() next(DLIST_LIST_TYPE *list, DLIST_TYPE *item)
unsigned int TSeqPos
Type for sequence locations and lengths.
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
int TSignedSeqPos
Type for signed sequence position.
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
const TSeqPos kInvalidSeqPos
Define special value for invalid sequence position.
void swap(NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair1, NCBI_NS_NCBI::pair_base_member< T1, T2 > &pair2)
#define ERR_POST(message)
Error posting with file, line number information but without error codes.
#define NCBI_USER_THROW(message)
Throw a quick-and-dirty runtime exception of type 'CException' with the given error message and error...
void Error(CExceptionArgs_Base &args)
TErrCode GetErrCode(void) const
Get error code.
#define NCBI_THROW(exception_class, err_code, message)
Generic macro to throw an exception, given the exception class, error code and message string.
#define NCBI_RETHROW_SAME(prev_exception, message)
Generic macro to re-throw the same exception.
void Warning(CExceptionArgs_Base &args)
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Set object to copy of another one.
C * SerialClone(const C &src)
Create on heap a clone of the source object.
#define MSerial_AsnText
I/O stream manipulators â.
virtual bool Equals(const CSerialObject &object, ESerialRecursionMode how=eRecursive) const
Check if both objects contain the same values.
const string AsFastaString(void) const
void SetTruncatedStart(bool val, ESeqLocExtremes ext)
set / remove e_Lim fuzz on start or stop (tl/tr - indicating removed parts of the seq-loc)
void SetPacked_int(TPacked_int &v)
bool IsPartialStart(ESeqLocExtremes ext) const
check start or stop of location for e_Lim fuzz
ENa_strand GetStrand(void) const
Get the location's strand.
void ChangeToPackedInt(void)
Works only if location is currently an interval, point, packed-int (handled trivially),...
virtual void Assign(const CSerialObject &source, ESerialRecursionMode how=eRecursive)
Override Assign() to incorporate cache invalidation.
TSeqPos GetStart(ESeqLocExtremes ext) const
Return start and stop positions of the seq-loc.
bool IsTruncatedStop(ESeqLocExtremes ext) const
bool IsTruncatedStart(ESeqLocExtremes ext) const
check if parts of the seq-loc are missing
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)
CRef< CSeq_loc > Intersect(const CSeq_loc &other, TOpFlags flags, ISynonymMapper *syn_mapper) const
Find the intersection with the seq-loc, merge/sort resulting ranges depending on flags.
void SetPartialStop(bool val, ESeqLocExtremes ext)
void SetNull(void)
Override all setters to incorporate cache invalidation.
bool IsPartialStop(ESeqLocExtremes ext) const
void SetTruncatedStop(bool val, ESeqLocExtremes ext)
TSeqPos GetStop(ESeqLocExtremes ext) const
@ eOrder_Biological
Iterate sub-locations in positional order.
CBeginInfo Begin(C &obj)
Get starting point of object hierarchy.
TSeqPos GetStop(const CSeq_loc &loc, CScope *scope, ESeqLocExtremes ext=eExtreme_Positional)
If only one CBioseq is represented by CSeq_loc, returns the position at the stop of the location.
TSeqPos GetLength(const CSeq_id &id, CScope *scope)
Get sequence length if scope not null, else return max possible TSeqPos.
TSeqPos GetStart(const CSeq_loc &loc, CScope *scope, ESeqLocExtremes ext=eExtreme_Positional)
If only one CBioseq is represented by CSeq_loc, returns the position at the start of the location.
sequence::ECompare Compare(const CSeq_loc &loc1, const CSeq_loc &loc2, CScope *scope)
Returns the sequence::ECompare containment relationship between CSeq_locs.
CRef< CSeq_loc > Seq_loc_Merge(const CSeq_loc &loc, CSeq_loc::TOpFlags flags, CScope *scope)
Merge ranges in the seq-loc.
CRef< CSeq_loc > Seq_loc_Add(const CSeq_loc &loc1, const CSeq_loc &loc2, CSeq_loc::TOpFlags flags, CScope *scope)
Add two seq-locs.
@ fCompareOverlapping
Check if seq-locs are overlapping.
@ eNoOverlap
CSeq_locs do not overlap or abut.
CRef< CSeq_loc > Map(const CSeq_loc &src_loc)
Map seq-loc.
CBioseq_Handle GetBioseqHandle(const CSeq_id &id)
Get bioseq handle by seq-id.
CSeq_loc_Mapper_Base & SetTrimSplicedSeg(bool trim)
For mapping spliced-segs only: preserve or trim starting/ending indels.
@ eBadAlignment
Unsuported or invalid alignment.
@ eCoding_Iupac
Set coding to printable coding (Iupacna or Iupacaa)
const CSeq_loc & GetLocation(void) const
void Reset(void)
Reset reference object.
int64_t Int8
8-byte (64-bit) signed integer
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
const TDonor_after_exon & GetDonor_after_exon(void) const
Get the Donor_after_exon member data.
const TProtpos & GetProtpos(void) const
Get the variant data.
bool IsSetFrame(void) const
position within codon (1-based) 0 = not set (meaning 1) Check if a value has been assigned to Frame d...
bool IsProtpos(void) const
Check if variant Protpos is selected.
bool IsSetParts(void) const
basic seqments always are in biologic order Check if a value has been assigned to Parts data member.
TMatch GetMatch(void) const
Get the variant data.
TGenomic_start GetGenomic_start(void) const
Get the Genomic_start member data.
const TAcceptor_before_exon & GetAcceptor_before_exon(void) const
Get the Acceptor_before_exon member data.
bool IsMismatch(void) const
Check if variant Mismatch is selected.
void SetSegs(TSegs &value)
Assign a value to Segs data member.
bool IsSetAcceptor_before_exon(void) const
splice sites Check if a value has been assigned to Acceptor_before_exon data member.
TProduct_length GetProduct_length(void) const
Get the Product_length member data.
bool IsSetPoly_a(void) const
start of poly(A) tail on the transcript For sense transcripts: aligned product positions < poly-a <= ...
TDiag GetDiag(void) const
Get the variant data.
TProduct_type GetProduct_type(void) const
Get the Product_type member data.
TMismatch GetMismatch(void) const
Get the variant data.
bool IsSetGenomic_strand(void) const
genomic-strand represents the strand of translation Check if a value has been assigned to Genomic_str...
TAmin GetAmin(void) const
Get the Amin member data.
const TProduct_start & GetProduct_start(void) const
Get the Product_start member data.
const TProduct_end & GetProduct_end(void) const
Get the Product_end member data.
const TSpliced & GetSpliced(void) const
Get the variant data.
bool IsGenomic_ins(void) const
Check if variant Genomic_ins is selected.
bool IsMatch(void) const
Check if variant Match is selected.
TGenomic_ins GetGenomic_ins(void) const
Get the variant data.
list< CRef< CSpliced_exon > > TExons
const TExons & GetExons(void) const
Get the Exons member data.
TGenomic_strand GetGenomic_strand(void) const
Get the Genomic_strand member data.
bool IsDiag(void) const
Check if variant Diag is selected.
const TBases & GetBases(void) const
Get the Bases member data.
list< CRef< CSpliced_exon_chunk > > TParts
bool IsSetProduct_length(void) const
length of the product, in bases/residues from this (or from poly-a if present), a 3' unaligned length...
TGenomic_end GetGenomic_end(void) const
Get the Genomic_end member data.
bool IsSetGenomic_id(void) const
Check if a value has been assigned to Genomic_id data member.
bool IsProduct_ins(void) const
Check if variant Product_ins is selected.
bool IsNucpos(void) const
Check if variant Nucpos is selected.
TProduct_ins GetProduct_ins(void) const
Get the variant data.
TNucpos GetNucpos(void) const
Get the variant data.
const TSegs & GetSegs(void) const
Get the Segs member data.
const TGenomic_id & GetGenomic_id(void) const
Get the Genomic_id member data.
bool IsSetDonor_after_exon(void) const
Check if a value has been assigned to Donor_after_exon data member.
void SetTo(TTo value)
Assign a value to To data member.
bool IsMix(void) const
Check if variant Mix is selected.
list< CRef< CSeq_interval > > Tdata
ENa_strand
strand of nucleic acid
const Tdata & Get(void) const
Get the member data.
const TId & GetId(void) const
Get the Id member data.
Tdata & Set(void)
Assign a value to data member.
void SetId(TId &value)
Assign a value to Id data member.
TFrom GetFrom(void) const
Get the From member data.
list< CRef< CSeq_loc > > Tdata
void SetFrom(TFrom value)
Assign a value to From data member.
const Tdata & Get(void) const
Get the member data.
bool IsPacked_int(void) const
Check if variant Packed_int is selected.
bool IsSetStrand(void) const
Check if a value has been assigned to Strand data member.
Tdata & Set(void)
Assign a value to data member.
TStrand GetStrand(void) const
Get the Strand member data.
TTo GetTo(void) const
Get the To member data.
bool IsInt(void) const
Check if variant Int is selected.
const TInt & GetInt(void) const
Get the variant data.
bool IsNull(void) const
Check if variant Null is selected.
void SetStrand(TStrand value)
Assign a value to Strand data member.
const TMix & GetMix(void) const
Get the variant data.
const TPacked_int & GetPacked_int(void) const
Get the variant data.
constexpr auto front(list< Head, As... >, T=T()) noexcept -> Head
double value_type
The numeric datatype used by the parser.
Defines: CTimeFormat - storage class for time format.
Int4 delta(size_t dimension_, const Int4 *score_)
CRef< CPacked_seqint > ProjectAndCollapseCDS(const CSeq_align &spliced_aln, CConstRef< CSeq_loc > product_cds_loc)
static TSeqPos as_nucpos(const CProduct_pos &pos)
static CRef< CSeq_loc > PreserveTerminalCodons(CRef< CSeq_loc > exons_loc, TSeqPos cds_start, TSeqPos cds_stop)
static CRef< CSeq_loc > ProjectExon_newlogic(const CSpliced_exon &exon, const CSeq_id &aln_genomic_id, ENa_strand aln_genomic_strand)
void Canonicalize(CSeq_loc &loc)
Recursively convert empty container-locs to null-locs, drop null sublocs from containers,...
T53Partialness GetTerminalPartialness(const CSeq_align &spliced_aln, CConstRef< CSeq_loc > product_cds_loc, size_t unaligned_ends_partialness_thr)
Return whether 5' and/or 3' end of exons-loc is partial based on unaligned tails in case of RNA,...
bool AreAbuttingOnProduct(const CSpliced_exon &exon1, const CSpliced_exon &exon2)
retrun true iff abutting on query (in nucpos-coords)
CRef< CSeq_loc > ProjectExons(const CSeq_align &spliced_aln, CConstRef< CSeq_loc > product_cds_loc, bool convert_overlaps, size_t unaligned_ends_partialness_thr=0)
size_t GetUnalignedLength_3p(const CSeq_align &spliced_aln)
T53Partialness GetExonPartialness(const CSeq_align &spliced_aln, const CSpliced_exon &target_exon)
Return whether 5' and/or 3' end of exon is partial based on consensus splicing with upstream/downstre...
CRef< CSeq_loc > TruncateToCDS(CRef< CSeq_loc > detailed_rna_exon, CConstRef< CPacked_seqint > collapsed_genomic_cds)
static CRef< CSeq_loc > ProjectExon(const CSpliced_exon &exon, const CSeq_id &aln_genomic_id, ENa_strand aln_genomic_strand, bool convert_overlaps)
static CRef< CSeq_loc > ProjectExon_oldlogic(const CSpliced_exon &spliced_exon, const CSeq_id &aln_genomic_id, ENa_strand aln_genomic_strand, bool convert_overlaps)
pair< bool, bool > T53Partialness
first and ::second indicate partialness for of a loc or an exon, 5' and 3' end respectively.
void TransferPartialness(const CSeq_loc &src, CSeq_loc &dest)
CRef< CSpliced_exon > CollapseExonStructure(const CSpliced_exon &orig_exon)
Create an exon with the structure consisting of two diags extending inwards from the exon terminals w...
void AugmentPartialness(CSeq_loc &loc, T53Partialness partialness)
size_t GetUnalignedLength_5p(const CSeq_align &spliced_aln)
CRef< CSeq_loc > CollapseDiscontinuitiesInUTR(const CSeq_loc &loc, TSeqPos cds_start, TSeqPos cds_stop)
Precondition: input loc is discontinuity-preserving RNA loc Postcontition: adjacent packed-ints havin...
static bool SameIdAndStrand(const CSeq_interval &a, const CSeq_interval &b)
static void SetBioStart(CSeq_interval &seqint, TSeqPos pos)
static void Validate(const CSeq_loc &orig_loc, const CSeq_loc &final_loc)
static void AdjustBioStop(CSeq_interval &seqint, TSignedSeqPos amt)
static void CheckIdAndStrand(const CPacked_seqint &ps)
static TSignedSeqPos GetGapLength(const CSeq_interval &prev, const CSeq_interval &curr)
static void SubsumeMicroIntervals(CPacked_seqint &ps)
static bool MinusStrand(const CSeq_interval &seqint)
static void ConvertOverlapsToGaps(CPacked_seqint &ps)
static bool CanCreateNonframeshiftingGap(const CSeq_interval &prev, const CSeq_interval &curr, const CSeq_interval &next)
static void CollapseNonframeshiftting(CPacked_seqint &ps)
static CRef< T > Clone(const T &x)
static CRef< CSeq_loc > TweakExon(const CSeq_loc &orig_loc, bool convert_overlaps)
static CRef< CSeq_interval > Collapse(const CSeq_interval &a, const CSeq_interval &b)
static container_t::value_type rel_at(const container_t &container, typename container_t::const_iterator it, Int8 delta, typename container_t::value_type default_value)
static void AdjustBioStart(CSeq_interval &seqint, TSignedSeqPos amt)
static const TSeqPos k_keep_len
static void AdjustBiostops(CPacked_seqint &ps)
static string AsString(const CPacked_seqint &packed_seqint)
static void SetBioStop(CSeq_interval &seqint, TSeqPos pos)
static const TSeqPos k_min_len
static void safe_advance(iterator_t begin, iterator_t end, iterator_t &it, Int8 d)
static TSeqPos GetBiostartsDelta(const CSeq_interval &upst, const CSeq_interval &downst)
static CRef< CSeq_interval > Prev(const CPacked_seqint::Tdata &seqints, const CPacked_seqint::Tdata::const_iterator it)
static CRef< CSeq_interval > Next(const CPacked_seqint::Tdata &seqints, const CPacked_seqint::Tdata::const_iterator it)
bool IsFrameshifting() const
size_t GetFramePreservingSubjLen() const
void Add(const SBlock &other)
void EraseAfter(SBlocks::iterator it)
SBlocks(const CSpliced_exon &spliced_exon)
static DP_BlockInfo * blocks
int g(Seg_Gsm *spe, Seq_Mtf *psm, Thd_Gsm *tdg)
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