(!master || !parentSet->sequenceSet) {
64 ERRORMSG(
"AlignmentSet::AlignmentSet() - need sequenceSet and master before parsing alignments");
69CSeq_annot::C_Data::TAlign::const_iterator
70 a, ae = seqAnnots.front()->GetData().GetAlign().end();
71 for(
a=seqAnnots.front()->GetData().GetAlign().begin();
a!=ae; ++
a)
73 TRACEMSG(
"number of alignments: "<< alignments.size());
86 for(
unsigned int i=0;
i<rowOrder.size(); ++
i) rowCheck[rowOrder[
i]] =
i;
87 if(rowOrder.size() != multiple->
NRows() || rowCheck.
size() != multiple->
NRows() || rowOrder[0] != 0) {
88 ERRORMSG(
"AlignmentSet::CreateFromMultiple() - bad row order vector");
98seqAligns.resize((multiple->
NRows() == 1) ? 1 : multiple->
NRows() - 1);
99CSeq_annot::C_Data::TAlign::iterator sa = seqAligns.begin();
106 if(multiple->
NRows() > 1) {
108 for(
unsigned int row=1;
row<multiple->
NRows(); ++
row, ++sa) {
109newRow = rowOrder[
row];
116unique_ptr<AlignmentSet> newAlignmentSet;
119}
catch(exception& e) {
121 "AlignmentSet::CreateFromMultiple() - failed to create AlignmentSet from new asn object; " 122<<
"exception: "<< e.what());
127 returnnewAlignmentSet.release();
134 constncbi::objects::CSeq_align& seqAlign) :
142 const CSeq_id& frontSeqId = seqAlign.GetSegs().IsDendiag() ?
143seqAlign.GetSegs().GetDendiag().front()->GetIds().front().GetObject() :
144seqAlign.GetSegs().GetDenseg().GetIds().front().GetObject();
145 const CSeq_id& backSeqId = seqAlign.GetSegs().IsDendiag() ?
146seqAlign.GetSegs().GetDendiag().front()->GetIds().back().GetObject() :
147seqAlign.GetSegs().GetDenseg().GetIds().back().GetObject();
149 boolmasterFirst =
true;
150SequenceSet::SequenceList::const_iterator
154(*s)->identifier->MatchesSeqId(backSeqId)) {
156}
else if((*s)->identifier->MatchesSeqId(frontSeqId) &&
158masterFirst =
false;
163 ERRORMSG(
"MasterDependentAlignment::MasterDependentAlignment() - couldn't find matching sequences; " 165<< backSeqId.
AsFastaString() <<
" must be in the sequence list for this file!");
171 unsigned int i, blockNum = 0;
172 intmasterRes, dependentRes;
175 if(seqAlign.GetSegs().IsDendiag()) {
177CSeq_align::C_Segs::TDendiag::const_iterator d , de = seqAlign.GetSegs().GetDendiag().end();
178 for(d=seqAlign.GetSegs().GetDendiag().begin(); d!=de; ++d, ++blockNum) {
182 ERRORMSG(
"MasterDependentAlignment::MasterDependentAlignment() - \n" 183 "incorrect dendiag block dimensions");
194 ERRORMSG(
"MasterDependentAlignment::MasterDependentAlignment() - " 195 "mismatched Seq-id in dendiag block");
200 for(
i=0;
i<block.
GetLen(); ++
i) {
203dependentRes = block.
GetStarts().back() +
i;
206dependentRes = block.
GetStarts().front() +
i;
208 if(masterRes < 0 || masterRes >= (
int)
master->
Length() || dependentRes < 0 || dependentRes >= (
int)
dependent->
Length()) {
209 ERRORMSG(
"MasterDependentAlignment::MasterDependentAlignment() - seqloc in dendiag block > length of sequence!");
219 else if(seqAlign.GetSegs().IsDenseg()) {
221 const CDense_seg& block = seqAlign.GetSegs().GetDenseg();
224block.
GetIds().size() != 2 ||
227 ERRORMSG(
"MasterDependentAlignment::MasterDependentAlignment() - \n" 228 "incorrect denseg block dimension");
239 ERRORMSG(
"MasterDependentAlignment::MasterDependentAlignment() - \n" 240 "mismatched Seq-id in denseg block");
245CDense_seg::TStarts::const_iterator starts = block.
GetStarts().begin();
246CDense_seg::TLens::const_iterator lens,
le= block.
GetLens().end();
247 for(lens=block.
GetLens().begin(); lens!=
le; ++lens) {
249masterRes = *(starts++);
250dependentRes = *(starts++);
252dependentRes = *(starts++);
253masterRes = *(starts++);
255 if(masterRes != -1 && dependentRes != -1) {
258 ERRORMSG(
"MasterDependentAlignment::MasterDependentAlignment() - \n" 259 "seqloc in denseg block > length of sequence!");
262 for(
i=0;
i<*lens; ++
i) {
User-defined methods of the data storage class.
list< const CSeq_align * > SeqAlignList
AlignmentSet(SequenceSet *seqSet, const SeqAnnotList &seqAnnots, bool ignoreBadPairwiseAlignments=false)
SeqAnnotList * newAsnAlignmentData
std::list< ncbi::CRef< ncbi::objects::CSeq_annot > > SeqAnnotList
static AlignmentSet * CreateFromMultiple(const BlockMultipleAlignment *multiple, SeqAnnotList *newAsnAlignmentData, const SequenceSet &sequenceSet, const std::vector< unsigned int > *rowOrder=NULL)
const Sequence * GetMaster(void) const
std::vector< const UngappedAlignedBlock * > UngappedAlignedBlockList
void GetUngappedAlignedBlocks(UngappedAlignedBlockList *blocks) const
unsigned int NRows(void) const
MasterDependentAlignment(StructureBase *parent, const Sequence *masterSequence, const ncbi::objects::CSeq_align &seqAlign)
ResidueVector masterToDependent
const Sequence * dependent
ResidueVector blockStructure
bool MatchesSeqId(const ncbi::objects::CSeq_id &sid) const
const MoleculeIdentifier * identifier
unsigned int Length(void) const
const SequenceSet * sequenceSet
const string AsFastaString(void) const
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_SCOPE(ns)
Define a new scope.
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.
TDim GetDim(void) const
Get the Dim member 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.
void SetData(TData &value)
Assign a value to Data data member.
list< CRef< CSeq_align > > TAlign
The NCBI C++/STL use hints.
bool le(T x_, T y_, T round_)
#define row(bind, expected)
static DP_BlockInfo * blocks
ncbi::objects::CSeq_align * CreatePairwiseSeqAlignFromMultipleRow(const BlockMultipleAlignment *multiple, const BlockMultipleAlignment::UngappedAlignedBlockList &blocks, unsigned int slaveRow)
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