originalMultiple =
NULL;
104UpdateAlignList::const_iterator u, ue = updates.end();
105 for(u=updates.begin(); u!=ue; ++u) {
106 if(u->GetObject().IsSetSeqannot() && u->GetObject().GetSeqannot().GetData().IsAlign()) {
107CSeq_annot::C_Data::TAlign::const_iterator
108s, se = u->GetObject().GetSeqannot().GetData().GetAlign().end();
109 for(s=u->GetObject().GetSeqannot().GetData().GetAlign().begin(); s!=se; ++s) {
115}
else if(updateAlignments.size() > 0) {
116master = updateAlignments.front()->GetMaster();
118SequenceSet::SequenceList::const_iterator q, qe = sSet->
sequences.end();
119 for(q=sSet->
sequences.begin(); q!=qe; ++q) {
120 if((*q)->identifier->MatchesSeqId(
121(*s)->GetSegs().IsDendiag() ?
122(*s)->GetSegs().GetDendiag().front()->GetIds().front().GetObject() :
123(*s)->GetSegs().GetDenseg().GetIds().front().GetObject()
131 ERRORMSG(
"AlignmentManager::AlignmentManager() - " 132<<
"can't determine master sequence for updates");
138pairwise.front() = alignment;
141updateAlignments.push_back(multiple);
187 constvector < unsigned int >& rowOrder)
192 if(newAlignmentSet) {
196 ERRORMSG(
"Couldn't create pairwise alignments from the current multiple!\n" 197<<
"Alignment data in output file will be left unchanged.");
230 TRACEMSG(
"PSSM changed - zero blocks before or after");
235¤tPSSM = multiple->
GetPSSM().GetPSSM();
236 TRACEMSG(
"checking for PSSM changes... ");
237 if(originalPSSM.
GetPssm().
GetNumRows() != currentPSSM.GetPssm().GetNumRows() ||
239originalPSSM.
GetPssm().
GetByRow() != currentPSSM.GetPssm().GetByRow() ||
249CPssmFinalData::TScores::const_iterator
252c = currentPSSM.GetPssm().GetFinalData().GetScores().begin();
253 for(; o!=oe; ++o, ++c) {
274 return((currentAlignments.size() > 0) ? currentAlignments.front() :
NULL);
280AlignmentManager::PairwiseAlignmentList::const_iterator
a, ae = alignments.end();
281 for(
a=alignments.begin();
a!=ae; ++
a) {
282 if((*a)->masterToDependent[masterResidue] == -1)
return false;
290AlignmentManager::PairwiseAlignmentList::const_iterator
a, ae = alignments.end();
291 for(
a=alignments.begin();
a!=ae; ++
a) {
292 if(((*a)->masterToDependent[masterTo] - (*a)->masterToDependent[masterFrom]) != (masterTo - masterFrom))
301AlignmentManager::PairwiseAlignmentList::const_iterator
a, ae = alignments.end();
302 for(
a=alignments.begin();
a!=ae; ++
a) {
303 if((*a)->blockStructure[masterTo] != (*a)->blockStructure[masterFrom])
312PairwiseAlignmentList::const_iterator
a, ae = alignments.end();
317BlockMultipleAlignment::SequenceList::iterator s = sequenceList->begin();
318*(s++) = alignments.front()->master;
319 for(
a=alignments.begin();
a!=ae; ++
a) {
320*(s++) = (*a)->dependent;
321 if((*a)->master != sequenceList->front()) {
322 ERRORMSG(
"AlignmentManager::CreateMultipleFromPairwiseWithIBM() -\n" 323<<
"all pairwise alignments must have the same master sequence");
332 intmasterFrom = 0, masterTo;
336 while(masterFrom < (
int)multipleAlignment->
GetMaster()->
Length()) {
347 for(masterTo=masterFrom+1;
358newBlock->
width= masterTo - masterFrom + 1;
361 for(
a=alignments.begin(),
row=1;
a!=ae; ++
a, ++
row) {
363(*a)->masterToDependent[masterFrom],
364(*a)->masterToDependent[masterTo]);
372masterFrom = masterTo + 1;
377 ERRORMSG(
"AlignmentManager::CreateMultipleFromPairwiseWithIBM() - error finalizing alignment");
381 returnmultipleAlignment;
385BlockMultipleAlignment::UngappedAlignedBlockList::const_iterator&
b,
386BlockMultipleAlignment::UngappedAlignedBlockList::const_iterator& be,
389 unsigned int i= 0, c, highlighted = 0;
391 for(;
b!=be; ++
b) {
392range = (*b)->GetRangeOfRow(
row);
393 for(c=0; c<(*b)->width; ++c, ++
i) {
394seqIndexes[
i] = range->
from+ c;
395 if(countHighlights) {
396 if(
GlobalMessenger()->IsHighlighted(multiple->GetSequenceOfRow(
row), seqIndexes[
i]))
399seqIndexes[
i] = -1;
409 if(!multiple)
return;
412BlockMultipleAlignment::UngappedAlignedBlockList::const_iterator
b, be =
blocks.end();
414 for(
b=
blocks.begin();
b!=be; ++
b)
415nResidues += (*b)->width;
416 if(nResidues == 0) {
417 WARNINGMSG(
"Can't realign dependents with no aligned residues!");
422 const Molecule*masterMol, *dependentMol;
423 if(!masterSeq || !(masterMol = masterSeq->
molecule)) {
424 WARNINGMSG(
"Can't realign dependents to non-structured master!");
428 int*masterSeqIndexes =
new int[nResidues], *dependentSeqIndexes =
new int[nResidues];
431 if((highlightedOnly ? nHighlightedAligned : nResidues) < 3) {
432 WARNINGMSG(
"Can't realign dependents using < 3 residues!");
433 delete[] masterSeqIndexes;
434 delete[] dependentSeqIndexes;
438 double*weights =
new double[nResidues];
441 typedef const Vector* CVP;
442CVP *masterCoords =
newCVP[nResidues], *dependentCoords =
newCVP[nResidues];
443 if(!masterMol->
GetAlphaCoords(nResidues, masterSeqIndexes, masterCoords)) {
444 WARNINGMSG(
"Can't get master alpha coords");
451 unsigned intnStructureAlignments = 0;
452 for(
unsigned int i=1;
i<multiple->
NRows(); ++
i) {
454 if(!dependentSeq || !(dependentMol = dependentSeq->molecule))
continue;
458 if(dependentMol->
GetAlphaCoords(nResidues, dependentSeqIndexes, dependentCoords) < 3) {
459 ERRORMSG(
"can't realign dependent "<< dependentSeq->identifier->pdbID <<
", not enough coordinates in aligned region");
467 for(
intj=0; j<nResidues; ++j) {
468 if(!masterCoords[j] || !dependentCoords[j] || (highlightedOnly && masterSeqIndexes[j] < 0)) {
476 WARNINGMSG(
"Can't realign dependent #"<< (
i+1) <<
" using < 3 residues!");
480 INFOMSG(
"realigning dependent "<< dependentSeq->identifier->pdbID <<
" against master "<< masterSeq->
identifier->
pdbID 481<<
" using coordinates of "<< nWeighted <<
" residues");
482(
const_cast<StructureObject*
>(dependentObj))->RealignStructure(nResidues, masterCoords, dependentCoords, weights,
i);
483++nStructureAlignments;
490 delete[] masterSeqIndexes;
491 delete[] dependentSeqIndexes;
492 delete[] masterCoords;
493 delete[] dependentCoords;
505(*sequences)[
i] = (*a)->dependent;
522 ERRORMSG(
"AlignmentManager::ShowHideCallbackFunction() - wrong size list");
529AlignmentSet::AlignmentList::const_iterator
533 if((*a)->master->molecule) {
535 if((*a)->master->molecule->GetParentOfType(&
object))
540 for(
int i=0;
a!=ae; ++
a, ++
i) {
541 if((*a)->dependent->molecule) {
542 if((*a)->dependent->molecule->GetParentOfType(&
object))
557 ERRORMSG(
"AlignmentManager::NewMultipleWithRows() - wrong size visibility vector");
566 if(visibilities[
i])
567alignments.push_back(*
a);
576 if(!sequence)
return false;
578 if(currentAlignment)
579 returncurrentAlignment->
IsAligned(sequence, seqIndex);
586 if(!sequence)
return false;
588 if(currentAlignment) {
590 if((*(currentAlignment->
GetSequences()))[
i] == sequence)
601 if(currentAlignment)
622 ERRORMSG(
"AlignmentManager::RealignDependentSequences() - wrong multiple alignment");
625 if(dependentsToRealign.size() == 0)
return;
630 if(multiple->
ExtractRows(dependentsToRealign, &alignments)) {
633 TRACEMSG(
"adding to update window");
645 if(currentAlignments.size() == 0)
return;
650 unsigned intnRowsAddedToMultiple;
651 boolfoundSingle =
false;
653singleList.push_back(single);
655options, currentAlignments.front(), &singleList, &newAlignments, &nRowsAddedToMultiple,
sequenceViewer)) {
661Threader::AlignmentList::const_iterator
n,
ne= newAlignments.end();
662 for(
n=newAlignments.begin();
n!=
ne; ++
n)
663replacedList.push_back(*
n);
666replacedList.push_back((*a)->Clone());
669 "AlignmentManager::ThreadUpdate() - threaded alignment not found in update viewer!");
673 if(nRowsAddedToMultiple > 0)
681 if(currentAlignments.size() == 0)
return;
685 unsigned intnRowsAddedToMultiple;
694 if(nRowsAddedToMultiple > 0)
696RowsAdded(nRowsAddedToMultiple, currentAlignments.front());
702 if(updatesToMerge.size() == 0)
return;
704 if(currentUpdates.size() == 0)
return;
707ViewerBase::AlignmentList::const_iterator u, ue = currentUpdates.end();
711 for(u=currentUpdates.begin(); u!=ue; ++u) {
712 if(updatesToMerge.find(*u) != updatesToMerge.end()) {
718vector < unsigned int > rowOrder(newMultiple->
NRows());
719 for(
unsigned int i=0;
i<newMultiple->
NRows(); ++
i) rowOrder[
i] =
i;
740 ERRORMSG(
"Must have an alignment in the sequence viewer to merge with");
748 intnSuccessfulMerges = 0;
750 for(u=currentUpdates.begin(); u!=ue; ++u) {
751 if(*u == newMultiple)
continue;
752 boolmerged =
false;
753 if(updatesToMerge.find(*u) != updatesToMerge.end()) {
756nSuccessfulMerges += (*u)->NRows() - 1;
758 for(
unsigned int i=0;
i<(*u)->NRows(); ++
i) {
759 stringstatus = (*u)->GetRowStatusLine(
i);
760 if(status.size() > 0)
761status +=
"; merge failed!";
763status =
"Merge failed!";
764(*u)->SetRowStatusLine(
i, status);
770updatesToKeep.push_back(keep);
775 if(nSuccessfulMerges > 0) {
779 if(mergeToNeighbor && nSuccessfulMerges == 1) {
782BlockMultipleAlignment::UngappedAlignedBlockList::const_iterator
b, be =
blocks.end();
783 introwScore, bestScore = 0;
784 unsigned intcol,
row, lastRow = multiple->
NRows() - 1;
789 for(
b=
blocks.begin();
b!=be; ++
b) {
790 for(col=0; col<(*b)->width; ++col) {
792mergeSeq->
sequenceString[(*b)->GetRangeOfRow(lastRow)->from + col],
797 if(
row== 0 || rowScore > bestScore) {
799bestScore = rowScore;
802 INFOMSG(
"Closest row is #"<< (where+1) <<
", " 825updateSequences->clear();
827 if(currentUpdates.size() == 0)
return;
828ViewerBase::AlignmentList::const_iterator u, ue = currentUpdates.end();
829 for(u=currentUpdates.begin(); u!=ue; ++u)
830updateSequences->push_back((*u)->GetSequenceOfRow(1));
839 return(chains->size() > 0);
847 ERRORMSG(
"AlignmentManager::ReplaceUpdatesInASN() - can't get StructureSet");
855 if(!multiple)
return;
858vector < unsigned int > rowsToRemove;
859 for(
unsigned int i=1;
i<multiple->
NRows(); ++
i)
861rowsToRemove.push_back(
i);
863 if(rowsToRemove.size() > 0) {
872 ERRORMSG(
"AlignmentManager::PurgeSequence() - ExtractRows failed!");
879 ERRORMSG(
"AlignmentManager::PurgeSequence() - can't get SequenceDisplay!");
887 if(currentUpdates.size() == 0)
return;
888ViewerBase::AlignmentList::const_iterator u, ue = currentUpdates.end();
890 for(u=currentUpdates.begin(); u!=ue; ++u)
891 if((*u)->GetSequenceOfRow(1)->identifier == identifier)
break;
895 for(u=currentUpdates.begin(); u!=ue; ++u) {
896 if((*u)->GetSequenceOfRow(1)->identifier != identifier) {
898updatesToKeep.push_back(keep);
910 if(!currentMultiple)
return;
913 if(currentUpdates.size() == 0)
918 intnRowsAddedToMultiple;
921currentUpdates, &newAlignmentsList, &nRowsAddedToMultiple,
sequenceViewer)) {
927 if(nRowsAddedToMultiple > 0)
937 if(!currentMultiple)
return;
942 intnRowsAddedToMultiple;
943 boolfoundSingle =
false;
945singleList.push_back(single);
947currentMultiple, singleList, &newAlignments, &nRowsAddedToMultiple,
sequenceViewer)) {
953BlockAligner::AlignmentList::const_iterator
n,
ne= newAlignments.end();
954 for(
n=newAlignments.begin();
n!=
ne; ++
n)
955replacedList.push_back(*
n);
958replacedList.push_back((*a)->Clone());
961 "AlignmentManager::BlockAlignUpdate() - changed alignment not found in update viewer!");
965 if(nRowsAddedToMultiple > 0)
982 boolanyChanges =
false;
987newAlignments->clear();
988UpdateViewer::AlignmentList::const_iterator
t, te = toExtend.end();
989 for(
t=toExtend.begin();
t!=te; ++
t) {
991newAlignments->push_back(p);
995 if(pairBlocks.size() == 0)
998 typedeflist < ExtendInfo > ExtendList;
1000ExtendMap extendMap;
1004 for(
unsigned intmb=0; mb<multBlocks.size(); ++mb) {
1005 const Block::Range*multRange = multBlocks[mb]->GetRangeOfRow(0);
1006 for(
unsigned int pb=0;
pb<pairBlocks.size(); ++
pb) {
1007 const Block::Range*pairRange = pairBlocks[
pb]->GetRangeOfRow(0);
1009 if(pairRange->
from> multRange->
from&& pairRange->
from<= multRange->
to&&
1012ExtendList& el = extendMap[ub];
1013el.resize(el.size() + 1);
1014el.back().multBlock = mb;
1015el.back().pairBlock =
pb;
1016el.back().extendPairBlockLeft =
true;
1017el.back().nResidues = pairRange->
from- multRange->
from;
1018 TRACEMSG(
"block "<< (
pb+1) <<
" wants to be extended to the left");
1021 if(pairRange->
to< multRange->
to&& pairRange->
to>= multRange->
from&&
1024ExtendList& el = extendMap[ub];
1025el.resize(el.size() + 1);
1026el.back().multBlock = mb;
1027el.back().pairBlock =
pb;
1028el.back().extendPairBlockLeft =
false;
1029el.back().nResidues = multRange->
to- pairRange->
to;
1030 TRACEMSG(
"block "<< (
pb+1) <<
" wants to be extended to the right");
1035ExtendMap::const_iterator u, ue = extendMap.end();
1036 for(u=extendMap.begin(); u!=ue; ++u) {
1039 if(u->second.size() == 2 && (u->second.back().multBlock - u->second.front().multBlock > 1)) {
1040 TRACEMSG(
"can't extend with intervening block(s) in multiple between blocks " 1041<< (u->second.front().pairBlock+1) <<
" and "<< (u->second.back().pairBlock+1));
1045ExtendList::const_iterator e, ee;
1049 if(u->first->MinResidues() == u->first->width && u->second.size() == 2 &&
1050u->second.front().multBlock == u->second.back().multBlock)
1052ExtendList& modList =
const_cast<ExtendList&
>(u->second);
1053modList.front().nResidues = u->first->width;
1054modList.erase(++(modList.begin()));
1059 int available= u->first->MinResidues(), totalShifts = 0;
1060 for(e=u->second.begin(), ee=u->second.end(); e!=ee; ++e)
1061totalShifts += e->nResidues;
1063 TRACEMSG(
"inadequate residues to the " 1064<< (u->second.front().extendPairBlockLeft ?
"left":
"right")
1065<<
" of block "<< (u->second.front().pairBlock+1) <<
"; no extension performed");
1071 for(e=u->second.begin(), ee=u->second.end(); e!=ee; ++e) {
1073(e->extendPairBlockLeft ?
1074pairBlocks[e->pairBlock]->GetRangeOfRow(0)->from :
1075pairBlocks[e->pairBlock]->GetRangeOfRow(0)->to),
1077 TRACEMSG(
"extending "<< (e->extendPairBlockLeft ?
"left":
"right")
1078<<
" side of block "<< (e->pairBlock+1) <<
" by "<< e->nResidues <<
" residues");
1079 if(p->
MoveBlockBoundary(alnIdx, alnIdx + (e->extendPairBlockLeft ? -e->nResidues : e->nResidues)))
1082 ERRORMSG(
"MoveBlockBoundary() failed!");
1088vector < int > mergeIndexes;
1089 for(
unsigned int pb=0;
pb<pairBlocks.size(); ++
pb) {
1090 const Block::Range*pairRange = pairBlocks[
pb]->GetRangeOfRow(0);
1091 if(prevRange && prevRange->
to== pairRange->
from- 1 && multiple.
IsAligned(0
U, prevRange->
to)) {
1097 if(pAlnIdx1 == pAlnIdx2 - 1 &&
1100 TRACEMSG(
"merging blocks "<<
pb<<
" and "<< (
pb+1));
1102mergeIndexes.push_back(pAlnIdx1);
1105prevRange = pairRange;
1107 for(
unsigned int i=0;
i<mergeIndexes.size(); ++
i) {
1108 if(p->
MergeBlocks(mergeIndexes[
i], mergeIndexes[
i] + 1))
1111 ERRORMSG(
"MergeBlocks() failed!");
1123 if(!currentMultiple)
return;
1126 if(currentUpdates.size() == 0)
1140 if(!currentMultiple)
return;
1146singleList.push_back(single);
1148 if(newAlignments.size() != 1) {
1149 ERRORMSG(
"AlignmentManager::ExtendUpdate() - returned alignment list size != 1!");
1155 boolfoundSingle =
false;
1157 if(*
a== single) {
1158replacedList.push_back(newAlignments.front());
1159foundSingle =
true;
1161replacedList.push_back((*a)->Clone());
1164 ERRORMSG(
"AlignmentManager::ExtendUpdate() - changed alignment not found in update viewer!");
User-defined methods of the data storage class.
User-defined methods of the data storage class.
User-defined methods of the data storage class.
static int GetAlignedResidueIndexes(BlockMultipleAlignment::UngappedAlignedBlockList::const_iterator &b, BlockMultipleAlignment::UngappedAlignedBlockList::const_iterator &be, int row, int *seqIndexes, bool countHighlights=false, const BlockMultipleAlignment *multiple=NULL)
static bool NoBlockBoundariesBetween(int masterFrom, int masterTo, const AlignmentManager::PairwiseAlignmentList &alignments)
static bool AlignedToAllDependents(int masterResidue, const AlignmentManager::PairwiseAlignmentList &alignments)
static bool CreateNewPairwiseAlignmentsByBlockExtension(const BlockMultipleAlignment &multiple, const UpdateViewer::AlignmentList &toExtend, UpdateViewer::AlignmentList *newAlignments)
static bool NoDependentInsertionsBetween(int masterFrom, int masterTo, const AlignmentManager::PairwiseAlignmentList &alignments)
void NewAlignments(const SequenceSet *sSet, const AlignmentSet *aSet)
const SequenceSet * sequenceSet
void BlockAlignUpdate(BlockMultipleAlignment *single)
void ShowSequenceViewer(bool showNow) const
void ExtendAllUpdates(void)
bool IsInAlignment(const Sequence *sequence) const
void RealignAllDependentStructures(bool highlightedOnly) const
AlignmentManager(const SequenceSet *sSet, const AlignmentSet *aSet)
void CalculateRowScoresWithThreader(double weightPSSM)
std::vector< unsigned int > originalRowOrder
void PurgeSequence(const MoleculeIdentifier *identifier)
UpdateViewer * updateViewer
void RealignDependentSequences(BlockMultipleAlignment *multiple, const std::vector< unsigned int > &dependentsToRealign)
BlockMultipleAlignment * CreateMultipleFromPairwiseWithIBM(const PairwiseAlignmentList &alignments)
void BlockAlignAllUpdates(void)
void ExtendUpdate(BlockMultipleAlignment *single)
const Vector * GetAlignmentColor(const Sequence *sequence, unsigned int seqIndex, StyleSettings::eColorScheme colorScheme) const
void ShowHideCallbackFunction(const std::vector< bool > &itemsEnabled)
void ShowUpdateWindow(void) const
virtual ~AlignmentManager(void)
void GetUpdateSequences(std::list< const Sequence * > *updateSequences) const
std::map< BlockMultipleAlignment *, bool > UpdateMap
void GetAlignmentSetDependentVisibilities(std::vector< bool > *visibilities) const
std::list< ncbi::CRef< ncbi::objects::CUpdate_align > > UpdateAlignList
SequenceViewer * sequenceViewer
bool GetStructureProteins(std::vector< const Sequence * > *chains) const
BlockMultipleAlignment * originalMultiple
unsigned int NUpdates(void) const
void ThreadUpdate(const ThreaderOptions &options, BlockMultipleAlignment *single)
void SavePairwiseFromMultiple(const BlockMultipleAlignment *multiple, const std::vector< unsigned int > &rowOrder)
const BlockMultipleAlignment * GetCurrentMultipleAlignment(void) const
std::vector< bool > dependentsVisible
BlockAligner * blockAligner
void ReplaceUpdatesInASN(ncbi::objects::CCdd::TPending &newUpdates) const
bool IsAligned(const Sequence *sequence, unsigned int seqIndex) const
void NewMultipleWithRows(const std::vector< bool > &visibilities)
void MergeUpdates(const UpdateMap &updates, bool mergeToNeighbor)
const AlignmentSet * alignmentSet
std::list< const MasterDependentAlignment * > PairwiseAlignmentList
void GetAlignmentSetDependentSequences(std::vector< const Sequence * > *sequences) const
void ThreadAllUpdates(const ThreaderOptions &options)
static AlignmentSet * CreateFromMultiple(const BlockMultipleAlignment *multiple, SeqAnnotList *newAsnAlignmentData, const SequenceSet &sequenceSet, const std::vector< unsigned int > *rowOrder=NULL)
bool CreateNewPairwiseAlignmentsByBlockAlignment(BlockMultipleAlignment *multiple, const AlignmentList &toRealign, AlignmentList *newAlignments, int *nRowsAddedToMultiple, SequenceViewer *sequenceViewer)
std::list< BlockMultipleAlignment * > AlignmentList
BlockMultipleAlignment * Clone(void) const
std::vector< const Sequence * > SequenceList
const UnalignedBlock * GetUnalignedBlockBefore(const UngappedAlignedBlock *aBlock) const
bool MoveBlockBoundary(unsigned int columnFrom, unsigned int columnTo)
ncbi::CRef< ncbi::objects::CUpdate_align > updateOrigin
const Vector * GetAlignmentColor(const Sequence *sequence, unsigned int seqIndex, StyleSettings::eColorScheme colorScheme) const
const BLAST_Matrix * GetPSSM(void) const
const Sequence * GetMaster(void) const
std::vector< const UngappedAlignedBlock * > UngappedAlignedBlockList
void RemovePSSM(void) const
bool ExtractRows(const std::vector< unsigned int > &slavesToRemove, AlignmentList *pairwiseAlignments)
const Sequence * GetSequenceOfRow(unsigned int row) const
unsigned int GetAlignedBlockNumber(unsigned int alignmentIndex) const
void GetUngappedAlignedBlocks(UngappedAlignedBlockList *blocks) const
unsigned int GetAlignmentIndex(unsigned int row, unsigned int seqIndex, eUnalignedJustification justification)
unsigned int NRows(void) const
bool HasNoAlignedBlocks(void) const
bool UpdateBlockMapAndColors(bool clearRowInfo=true)
const SequenceList * GetSequences(void) const
bool MergeBlocks(unsigned int fromAlignmentIndex, unsigned int toAlignmentIndex)
bool IsAligned(unsigned int row, unsigned int seqIndex) const
bool AddUnalignedBlocks(void)
bool AddAlignedBlockAtEnd(UngappedAlignedBlock *newBlock)
bool MergeAlignment(const BlockMultipleAlignment *newAlignment)
const UnalignedBlock * GetUnalignedBlockAfter(const UngappedAlignedBlock *aBlock) const
void SetRangeOfRow(unsigned int row, int from, int to)
void PostRedrawMolecule(const Molecule *molecule)
void PostRedrawAllStructures(void)
void UnPostRedrawSequenceViewer(ViewerBase *viewer)
void RemoveSequenceViewer(const ViewerBase *sequenceViewer)
void AddSequenceViewer(ViewerBase *sequenceViewer)
void PostRedrawAllSequenceViewers(void)
static const int VALUE_NOT_SET
std::string ToString(void) const
int GetAlphaCoords(int nResidues, const int *seqIndexes, const Vector **coords) const
void GetProteinSequences(SequenceList *seqs) const
void RowsAdded(unsigned int nRowsAddedToMultiple, BlockMultipleAlignment *multiple, int where=-1)
void RowsRemoved(const std::vector< unsigned int > &rowsRemoved, const BlockMultipleAlignment *multiple)
void CreateSequenceWindow(bool showNow)
void DisplayAlignment(BlockMultipleAlignment *multipleAlignment)
void DisplaySequences(const SequenceList *sequenceList)
const Molecule * molecule
const MoleculeIdentifier * identifier
unsigned int Length(void) const
int GetOrSetMMDBLink(void) const
void Show(const StructureBase *entity, bool isShown)
bool GetParentOfType(const T **ptr, bool warnIfNotFound=true) const
static const unsigned int eRowOrderData
void InitStructureAlignments(int masterMMDBID)
void ReplaceAlignmentSet(AlignmentSet *newAlignmentSet)
void RemoveStructureAlignments(void)
ShowHideManager * showHideManager
void ReplaceUpdates(ncbi::objects::CCdd::TPending &newUpdates)
void SetDataChanged(unsigned int what) const
StyleManager * styleManager
static const unsigned int ePSSMData
std::list< BlockMultipleAlignment * > AlignmentList
bool Realign(const ThreaderOptions &options, BlockMultipleAlignment *masterMultiple, const AlignmentList *originalAlignments, AlignmentList *newAlignments, unsigned int *nRowsAddedToMultiple, SequenceViewer *sequenceViewer)
bool CalculateScores(const BlockMultipleAlignment *multiple, double weightPSSM)
void SavePendingStructures(void)
void ReplaceAlignments(const AlignmentList &alignmentList)
void AddAlignments(const AlignmentList &alignmentList)
std::list< BlockMultipleAlignment * > AlignmentList
void CreateUpdateWindow(void)
void SetInitialState(void)
std::list< BlockMultipleAlignment * > AlignmentList
SequenceDisplay * GetCurrentDisplay(void)
bool EditorIsOn(void) const
const AlignmentList & GetCurrentAlignments(void) const
Include a standard set of the NCBI C++ Toolkit most basic headers.
struct parameters_t * pb[]
EDiagSev SetDiagPostLevel(EDiagSev post_sev=eDiag_Error)
Set the threshold severity for posting the messages.
@ eDiag_Info
Informational message.
@ eDiag_Warning
Warning message.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_SCOPE(ns)
Define a new scope.
TNumRows GetNumRows(void) const
Get the NumRows member data.
bool IsSetFinalData(void) const
Final representation for the PSSM Check if a value has been assigned to FinalData data member.
TH GetH(void) const
Get the H member data.
TKappa GetKappa(void) const
Get the Kappa member data.
const TScores & GetScores(void) const
Get the Scores member data.
TScalingFactor GetScalingFactor(void) const
Get the ScalingFactor member data.
const TFinalData & GetFinalData(void) const
Get the FinalData member data.
TNumColumns GetNumColumns(void) const
Get the NumColumns member data.
TByRow GetByRow(void) const
Get the ByRow member data.
const TPssm & GetPssm(void) const
Get the Pssm member data.
TLambda GetLambda(void) const
Get the Lambda member data.
unsigned int
A callback function used to compare two keys in a database.
where boath are integers</td > n< td ></td > n</tr > n< tr > n< td > tse</td > n< td > optional</td > n< td > String</td > n< td class=\"description\"> TSE option controls what blob is smart and slim</td> n<td> orig</td> n</tr> n<tr> n<td> last_modified</td> n<td> optional</td> n<td> Integer</td> n<td class=\"description\"> The blob last modification If provided then the exact match will be requested with n the Cassandra storage corresponding field value</td> n<td> Positive integer Not provided means that the most recent match will be selected</td> n<td></td> n</tr> n<tr> n<td> use_cache</td> n<td> optional</td> n<td> String</td> n<td class=\"description\"> The option controls if the Cassandra LMDB cache and or database should be used It n affects the seq id resolution step and the blob properties lookup step The following n options are available
if(yy_accept[yy_current_state])
Messenger * GlobalMessenger(void)
const struct ncbi::grid::netcache::search::fields::SIZE size
bool ne(T x_, T y_, T round_)
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
#define row(bind, expected)
static DP_BlockInfo * blocks
static int GetBLOSUM62Score(char a, char b)
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