SeqAnnotList::const_iterator
n,
ne= seqAnnots.end();
70 for(
n=seqAnnots.begin();
n!=
ne; ++
n) {
72 if(!
n->GetObject().GetData().IsAlign()) {
73 ERR_POST_X(1,
Error<<
"AlignmentSet::AlignmentSet() - confused by alignment data format");
77CSeq_annot::C_Data::TAlign::const_iterator
78 a, ae =
n->GetObject().GetData().GetAlign().end();
79 for(
a=
n->GetObject().GetData().GetAlign().begin();
a!=ae; ++
a) {
83!((*a)->GetSegs().IsDendiag() || (*a)->GetSegs().IsDenseg()) ||
84!(((*a)->IsSetDim() && (*a)->GetDim() == 2) ||
85((*a)->GetSegs().IsDenseg() && (*a)->GetSegs().GetDenseg().GetDim() == 2)))
87 ERR_POST_X(2,
Error<<
"AlignmentSet::AlignmentSet() - confused by alignment type or dimensionality");
91seqaligns.push_back(
a->GetPointer());
94 if(seqaligns.size() == 0) {
95 ERR_POST_X(3,
Error<<
"AlignmentSet::AlignmentSet() - no valid Seq-aligns present");
103SeqAlignList::const_iterator
a, ae = seqaligns.end();
104 for(
a=seqaligns.begin();
a!=ae; ++
a) {
105 const SeqIdList& sids = (*a)->GetSegs().IsDendiag() ?
106(*a)->GetSegs().GetDendiag().front()->GetIds() :
107(*a)->GetSegs().GetDenseg().GetIds();
109SequenceSet::SequenceList::const_iterator
111 for(s=sequenceSet->
sequences.begin(); s!=se; ++s) {
112 if((*s)->Matches(sids.front().GetObject())) {
119 ERR_POST_X(4,
Error<<
"AlignmentSet::AlignmentSet() - master must be first sequence of every alignment");
129 ERR_POST_X(6,
Error<<
"AlignmentSet::AlignmentSet() - couldn't determine which is master sequence");
135SeqAlignList::const_iterator s, se = seqaligns.end();
137 for(s=seqaligns.begin(); s!=se; ++s, ++
i) {
138unique_ptr < const MasterSlaveAlignment > alignment(
140 if(!alignment.get() || alignment->Status() !=
CAV_SUCCESS) {
141 if(alignment.get() && ignoreBadPairwiseAlignments) {
144 ERR_POST_X(7,
Error<<
"Error parsing master/slave pairwise alignment #"<<
i);
173SequenceSet::SequenceList::const_iterator
182 boolmasterFirst =
true;
187 if((*s)->Matches(sids.back().GetObject())) {
189}
else if((*s)->Matches(sids.front().GetObject())) {
190masterFirst =
false;
199 ERR_POST_X(9,
Error<<
"MasterSlaveAlignment::MasterSlaveAlignment() - \n" 200 "couldn't find matching unaligned slave sequence");
208 intmasterRes, slaveRes;
213CSeq_align::C_Segs::TDendiag::const_iterator d , de = seqAlign.
GetSegs().
GetDendiag().end();
218block.
GetIds().size() != 2 ||
220 ERR_POST_X(10,
Error<<
"MasterSlaveAlignment::MasterSlaveAlignment() - \n" 221 "incorrect dendiag block dimensions");
228!slave->Matches(block.
GetIds().back().GetObject()))) ||
231!slave->Matches(block.
GetIds().front().GetObject())))) {
232 ERR_POST_X(11,
Error<<
"MasterSlaveAlignment::MasterSlaveAlignment() - \n" 233 "mismatched Seq-id in dendiag block");
238 for(
i=0;
i<block.
GetLen(); ++
i) {
246 if(masterRes >= (
int)
master->
Length() || slaveRes >= (
int) slave->Length()) {
248 "seqloc in dendiag block > length of sequence!");
251masterToSlave[masterRes] = slaveRes;
262block.
GetIds().size() != 2 ||
266 ERR_POST_X(13,
Error<<
"MasterSlaveAlignment::MasterSlaveAlignment() - \n" 267 "incorrect denseg block dimension");
274!slave->Matches(block.
GetIds().back().GetObject()))) ||
277!slave->Matches(block.
GetIds().front().GetObject())))) {
278 ERR_POST_X(14,
Error<<
"MasterSlaveAlignment::MasterSlaveAlignment() - \n" 279 "mismatched Seq-id in denseg block");
284CDense_seg::TStarts::const_iterator starts = block.
GetStarts().begin();
285CDense_seg::TLens::const_iterator lens,
le= block.
GetLens().end();
286 for(lens=block.
GetLens().begin(); lens!=
le; ++lens) {
288masterRes = *(starts++);
289slaveRes = *(starts++);
291slaveRes = *(starts++);
292masterRes = *(starts++);
294 if(masterRes != -1 && slaveRes != -1) {
296(slaveRes + *lens - 1) >= slave->Length()) {
298 "seqloc in denseg block > length of sequence!");
301 for(
i=0;
i<*lens; ++
i)
302masterToSlave[masterRes +
i] = slaveRes +
i;
User-defined methods of the data storage class.
User-defined methods of the data storage class.
list< const CSeq_align * > SeqAlignList
list< const CSeq_align * > SeqAlignList
vector< CRef< CSeq_id > > SeqIdList
C interface header for cddalignview as function call.
#define CAV_ERROR_ALIGNMENTS
#define CAV_ERROR_PAIRWISE
AlignmentSet(SequenceSet *seqSet, const SeqAnnotList &seqAnnots, bool ignoreBadPairwiseAlignments=false)
std::list< ncbi::CRef< ncbi::objects::CSeq_annot > > SeqAnnotList
MasterSlaveAlignment(const SequenceSet *sequenceSet, const Sequence *masterSequence, const objects::CSeq_align &seqAlign)
bool Matches(const objects::CSeq_id &seqID) const
unsigned int Length(void) const
string GetTitle(void) const
CConstRef< objects::CBioseq > bioseqASN
#define ERR_POST_X(err_subcode, message)
Error posting with default error code and given error subcode.
void Critical(CExceptionArgs_Base &args)
void Error(CExceptionArgs_Base &args)
void Warning(CExceptionArgs_Base &args)
void Info(CExceptionArgs_Base &args)
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
const TDenseg & GetDenseg(void) const
Get the variant data.
bool IsSetDim(void) const
dimensionality Check if a value has been assigned to Dim data member.
bool IsSetDim(void) const
dimensionality Check if a value has been assigned to Dim data member.
const TStarts & GetStarts(void) const
Get the Starts member data.
const TLens & GetLens(void) const
Get the Lens member data.
TLen GetLen(void) const
Get the Len member data.
TDim GetDim(void) const
Get the Dim member data.
const TIds & GetIds(void) const
Get the Ids member data.
bool IsDendiag(void) const
Check if variant Dendiag is selected.
TDim GetDim(void) const
Get the Dim member data.
const TDendiag & GetDendiag(void) const
Get the variant data.
const TIds & GetIds(void) const
Get the Ids member data.
const TStarts & GetStarts(void) const
Get the Starts member data.
TNumseg GetNumseg(void) const
Get the Numseg member data.
const TSegs & GetSegs(void) const
Get the Segs member data.
bool IsDenseg(void) const
Check if variant Denseg is selected.
@ eType_partial
mapping pieces together
@ eType_diags
unbroken, but not ordered, diagonals
bool le(T x_, T y_, T round_)
bool ne(T x_, T y_, T round_)
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