80 static_cast<unsigned char>((colorVec[0] + 0.000001) * 255),
81 static_cast<unsigned char>((colorVec[1] + 0.000001) * 255),
82 static_cast<unsigned char>((colorVec[2] + 0.000001) * 255)
95 bool *drawBackground,
Vector *cellBackgroundColor)
const
100 &isHighlighted, drawBackground, cellBackgroundColor);
104 *drawBackground =
true;
112 sequence(s), fromIndex(from), toIndex(to)
115 ERRORMSG(
"DisplayRowFromSequence::DisplayRowFromSequence() - from/to indexes out of range");
120 char *character,
Vector *
color,
bool *drawBackground,
Vector *cellBackgroundColor)
const
132 *drawBackground =
true;
135 *drawBackground =
false;
143 const Sequence **sequenceHandle,
int *seqIndex)
const
178 char *character,
Vector *
color,
bool *drawBackground,
Vector *cellBackgroundColor)
const
186 *drawBackground =
true;
189 *drawBackground =
false;
202 isEditable(editable), viewerWindow(parentViewerWindow), startingColumn(0), maxRowWidth(0)
208 for (
unsigned int i=0;
i<
rows.size(); ++
i)
delete rows[
i];
213 for (
unsigned int i=0;
i<
rows.size(); ++
i)
delete rows[
i];
223 copy->rows.push_back(
rows[
row]->Clone(newAlignments));
239 if (displayRow)
return displayRow->
alignment;
241 if (stringRow)
return stringRow->
alignment;
247 RowVector::iterator
r, re =
rows.end();
249 for (
r=
rows.begin();
r!=re; ++
r)
255 if (!fromAlignment ||
row >= fromAlignment->
NRows()) {
256 ERRORMSG(
"SequenceDisplay::AddRowFromAlignment() failed");
266 ERRORMSG(
"SequenceDisplay::AddRowFromSequence() failed");
283 if (strRow && !strRow->
title.empty()) {
284 *title = strRow->
title.c_str();
290 if (!sequence)
return false;
307 char *character, wxColour *
color,
bool *drawBackground,
308 wxColour *cellBackgroundColor)
const
311 WARNINGMSG(
"SequenceDisplay::GetCharacterTraitsAt() - row out of range");
320 Vector colorVec, bgColorVec;
323 character, &colorVec, drawBackground, &bgColorVec))
327 if (*drawBackground)
Vector2wxColor(bgColorVec, cellBackgroundColor);
334 wxString idLoc, status;
346 (*viewerWindow)->GetCurrentJustification(), &sequence, &index)) {
351 idLoc.Printf(
"%s, loc %i", title.c_str(), index + 1);
356 if (sequence && index >= 0 && sequence->
molecule) {
358 if (residue && residue->
namePDB.size() > 0) {
359 wxString
n = residue->
namePDB.c_str();
360 n =
n.Strip(wxString::both);
362 idLoc = idLoc +
" (PDB " +
n +
")";
373 for (
int r=0;
r<=
row; ++
r) {
379 status.Printf(
"Block %i, Row %i", blockNum, rowNum);
381 status.Printf(
"Row %i", rowNum);
393 idLoc.Printf(
"length %i", sequence->
Length());
399 (*viewerWindow)->SetStatusText(idLoc, 0);
400 (*viewerWindow)->SetStatusText(status, 1);
408 (*viewerWindow)->viewer->Save();
409 (*viewerWindow)->UpdateDisplay(
this);
410 if ((*viewerWindow)->AlwaysSyncStructures())
411 (*viewerWindow)->SyncStructures();
419 if (column < 0 && row >= 0 &&
row < (
int)
NRows()) {
442 if (alignment &&
column >= 0) {
445 if ((*viewerWindow)->DoSplitBlock()) {
447 if (!
controlDown) (*viewerWindow)->SplitBlockOff();
453 if ((*viewerWindow)->DoDeleteBlock()) {
455 if (!
controlDown) (*viewerWindow)->DeleteBlockOff();
463 if (sequenceWindow &&
row >= 0) {
500 if (!selectedRow || selectedRow->
row == 0 || !selectedRow->
alignment) {
501 WARNINGMSG(
"Can't delete/realign that row...");
506 vector < unsigned int > selectedDependents(1);
507 selectedDependents[0] = selectedRow->
row;
514 if (alignment->
NRows() <= 2) {
526 RowVector::iterator
r, re =
rows.end(), toDelete;
527 for (
r=
rows.begin();
r!=re; ++
r) {
532 else if (currentARow->
row > selectedRow->
row)
533 (currentARow->
row)--;
534 else if (currentARow == selectedRow)
538 rows.erase(toDelete);
552 if (updateWindow &&
row >= 0) {
566 ERRORMSG(
"Can't run threader without existing core alignment");
574 if (optDialog.ShowModal() == wxCANCEL)
return false;
576 ERRORMSG(
"Error retrieving options values from dialog");
624 if (dialog.ShowModal() == wxOK) {
627 ERRORMSG(
"RegionDialog returned OK, but values invalid");
629 TRACEMSG(
"set region (dependent): " << from <<
" to " << to);
641 single[alignment] =
true;
650 single[alignment] =
true;
669 int columnRight,
int rowBottom)
671 TRACEMSG(
"got SelectedRectangle " << columnLeft <<
',' << rowTop <<
" to "
672 << columnRight <<
',' << rowBottom);
675 (*viewerWindow)->GetCurrentJustification();
679 if (singleAlignment) {
680 if ((*viewerWindow)->DoMergeBlocks()) {
681 if (alignment->
MergeBlocks(columnLeft, columnRight)) {
682 if (!
controlDown) (*viewerWindow)->MergeBlocksOff();
687 if ((*viewerWindow)->DoCreateBlock()) {
688 if (alignment->
CreateBlock(columnLeft, columnRight, justification)) {
689 if (!
controlDown) (*viewerWindow)->CreateBlockOff();
699 if (singleAlignment && (*viewerWindow)->SelectBlocksIsOn()) {
702 for (
int i=rowTop;
i<=rowBottom; ++
i)
703 rows[
i]->SelectedRange(columnLeft, columnRight, justification,
controlDown);
708 int columnTo,
int rowTo)
711 if (columnFrom == columnTo && rowFrom == rowTo) {
715 if (alnBlockNum > 0) {
723 if (alnRow && alignment->
OptimizeBlock(alnRow->
row, columnFrom, (*viewerWindow)->GetCurrentJustification()))
732 controlDown, (*viewerWindow)->GetCurrentJustification()))
740 TRACEMSG(
"got DraggedCell " << columnFrom <<
',' << rowFrom <<
" to "
741 << columnTo <<
',' << rowTo);
742 if (rowFrom == rowTo && columnFrom == columnTo)
return;
743 if (rowFrom != rowTo && columnFrom != columnTo)
return;
745 if (columnFrom != columnTo) {
766 if (alignment->
ShiftRow(alnRow->
row, columnFrom, columnTo,
767 (*viewerWindow)->GetCurrentJustification()))
777 if (rowFrom == rowTo - 1)
return;
778 if (rowTo > rowFrom) --rowTo;
781 RowVector::iterator
r = newRows.begin();
783 for (
i=0;
i<rowFrom; ++
i) ++
r;
785 for (
r=newRows.begin(),
i=0;
i<rowTo; ++
i) ++
r;
786 newRows.insert(
r,
row);
789 bool masterOK =
true;
790 for (
i=0;
i<(
int)newRows.size(); ++
i) {
793 if (alnRow->
row != 0) {
794 WARNINGMSG(
"The first alignment row must always be the master sequence");
802 (*viewerWindow)->UpdateDisplay(
this);
803 (*viewerWindow)->viewer->Save();
810 for (
unsigned int i=0;
i<
rows.size(); ++
i) {
822 if (blockBoundaryRow->
alignment == forAlignment &&
826 blockBoundaryRow =
NULL;
829 return blockBoundaryRow;
846 RowVector::iterator
r;
849 if (!alnRow || alnRow->
row != 0 || !alnRow->
alignment ||
850 doneForAlignment.
find(alnRow->
alignment) != doneForAlignment.
end())
continue;
855 rows.insert(
r, blockBoundaryRow);
856 doneForAlignment[alnRow->
alignment] =
true;
859 }
while (
i <
rows.size());
861 if (*
viewerWindow) (*viewerWindow)->UpdateDisplay(
this);
884 blockBoundaryRow->
theString.resize(alignmentWidth);
887 int blockColumn, blockWidth;
888 for (
unsigned int i=0;
i<alignmentWidth; ++
i) {
890 if (blockColumn >= 0 && blockWidth > 0) {
893 else if (blockColumn == 0)
895 else if (blockColumn == blockWidth - 1)
907 vector < bool > toRemove(
rows.size(),
false);
908 unsigned int nToRemove = 0;
912 delete blockBoundaryRow;
913 toRemove[
row] =
true;
919 if (*
viewerWindow) (*viewerWindow)->UpdateDisplay(
this);
928 seqs->push_back(seq);
937 if (alnRow && alnRow->
alignment == forAlignment)
945 dependentRowOrder->clear();
948 if (alnRow && alnRow->
alignment == forAlignment)
949 dependentRowOrder->push_back(alnRow->
row);
951 if (dependentRowOrder->size() != forAlignment->
NRows() || dependentRowOrder->front() != 0)
952 ERRORMSG(
"SequenceDisplay::GetRowOrder() - row order vector problem");
961 a->alignment->GetSequenceOfRow(
a->row)->identifier,
962 b->alignment->GetSequenceOfRow(
b->row)->identifier);
967 return (
a->alignment->GetRowDouble(
a->row) >
b->alignment->GetRowDouble(
b->row));
972 return ((
a->alignment->GetRowDouble(
a->row) >= 0.0 &&
973 a->alignment->GetRowDouble(
a->row) <
b->alignment->GetRowDouble(
b->row)) ||
974 b->alignment->GetRowDouble(
b->row) < 0.0);
979 return (
a->alignment->GetSequenceOfRow(
a->row)->identifier->pdbID.size() > 0 &&
980 b->alignment->GetSequenceOfRow(
b->row)->identifier->pdbID.size() == 0);
985 return (
GlobalMessenger()->IsHighlightedAnywhere(
a->alignment->GetSequenceOfRow(
a->row)->identifier) &&
986 !
GlobalMessenger()->IsHighlightedAnywhere(
b->alignment->GetSequenceOfRow(
b->row)->identifier));
1031 ERRORMSG(
"SequenceDisplay::FloatGVToTop() - can't get alignment");
1035 if ((*viewerWindow)->viewer->alignmentManager->threader->
1052 (*viewerWindow)->viewer->CalculateSelfHitScores(alnRow->
alignment);
1083 ERRORMSG(
"SequenceDisplay::SortRows() - must first set comparison function");
1088 vector < DisplayRowFromAlignment * > dependents;
1092 if (alnRow && alnRow->
row > 0)
1093 dependents.push_back(alnRow);
1102 unsigned int nDependents = 0;
1105 if (alnRow && alnRow->
row > 0)
1106 newRows[
row] = dependents[nDependents++];
1110 if (nDependents == dependents.size())
1113 ERRORMSG(
"SequenceDisplay::SortRows() - internal inconsistency");
1115 (*viewerWindow)->viewer->Save();
1116 (*viewerWindow)->UpdateDisplay(
this);
1122 if (!keyRow || keyRow->
row == 0)
return false;
1125 TRACEMSG(
"doing Proximity Sort on alignment row " << keyRow->
row);
1129 BlockMultipleAlignment::UngappedAlignedBlockList::const_iterator
b, be =
blocks.end();
1131 vector < DisplayRowFromAlignment * > sortedByScore;
1136 if (!alnRow)
continue;
1137 sortedByScore.push_back(alnRow);
1139 if (alnRow == keyRow) {
1147 *
r1 = (*b)->GetRangeOfRow(keyRow->
row),
1148 *
r2 = (*b)->GetRangeOfRow(alnRow->
row);
1149 for (
unsigned int i=0;
i<(*b)->width; ++
i)
1158 ERRORMSG(
"SequenceDisplay::ProximitySort() - wrong # rows in sort list");
1167 for (
M=0;
M<sortedByScore.size(); ++
M)
if (sortedByScore[
M]->
row == 0)
break;
1170 vector < DisplayRowFromAlignment * > arrangedByProximity(sortedByScore.size(),
NULL);
1173 arrangedByProximity[0] = sortedByScore[
M];
1174 arrangedByProximity[
M] = sortedByScore[0];
1176 vector < bool > toRemove(sortedByScore.size(),
false);
1177 toRemove[
M] = toRemove[0] =
true;
1181 int i = 1, j = 1,
N;
1183 while (
R < sortedByScore.size()) {
1187 if (
N > 0 &&
N < (
int)arrangedByProximity.size())
1188 arrangedByProximity[
N] = sortedByScore[
R++];
1193 unsigned int nNewRows = 0;
1197 newRows[
row] = arrangedByProximity[nNewRows++];
1201 if (nNewRows == arrangedByProximity.size())
1204 ERRORMSG(
"SequenceDisplay::ProximitySort() - internal inconsistency");
1209 (*viewerWindow)->ScrollToRow((
M - 3) > 0 ? (
M - 3) : 0);
1210 (*viewerWindow)->viewer->Save();
1211 (*viewerWindow)->UpdateDisplay(
this);
1230 if (nRowsAddedToMultiple == 0)
return;
1233 unsigned int r,
nRows = 0, lastAlnRowIndex = 0;
1234 int displayWhere = -1;
1236 for (
r=0;
r<
rows.size(); ++
r) {
1238 if (alnRow && alnRow->
alignment == multiple) {
1239 lastAlnRow = alnRow;
1240 lastAlnRowIndex =
r;
1242 if (alnWhere >= 0 && (
int)alnRow->
row == alnWhere)
1246 if (!lastAlnRow || multiple->
NRows() !=
nRows + nRowsAddedToMultiple) {
1247 ERRORMSG(
"SequenceDisplay::RowsAdded() - inconsistent parameters");
1250 int rowToMergeAfter = (displayWhere >= 0) ? displayWhere : lastAlnRowIndex;
1251 INFOMSG(
"adding new row after display row #" << (rowToMergeAfter+1));
1254 unsigned int nRowsToMove =
rows.size() - 1 - rowToMergeAfter;
1255 rows.resize(
rows.size() + nRowsAddedToMultiple);
1256 for (
r=0;
r<nRowsToMove; ++
r)
1260 for (
r=0;
r<nRowsAddedToMultiple; ++
r)
1262 multiple->
NRows() +
r - nRowsAddedToMultiple, multiple);
1270 if (rowsRemoved.size() == 0)
return;
1274 vector < unsigned int > alnRowNumbers(multiple->
NRows() + rowsRemoved.size());
1275 vector < bool > removedAlnRows(alnRowNumbers.size(),
false);
1276 for (
i=0;
i<alnRowNumbers.size(); ++
i) alnRowNumbers[
i] =
i;
1277 for (
i=0;
i<rowsRemoved.size(); ++
i) {
1278 if (rowsRemoved[
i] < 1 || rowsRemoved[
i] >= alnRowNumbers.size()) {
1279 ERRORMSG(
"SequenceDisplay::RowsRemoved() - can't remove row " << removedAlnRows[
i]);
1282 removedAlnRows[rowsRemoved[
i]] =
true;
1286 for (
i=0;
i<alnRowNumbers.size(); ++
i) oldRowToNewRow[alnRowNumbers[
i]] =
i;
1289 vector < bool > removeDisplayRows(
rows.size(),
false);
1290 for (
i=0;
i<
rows.size(); ++
i) {
1292 if (alnRow && alnRow->
alignment == multiple) {
1293 if (removedAlnRows[alnRow->
row]) {
1295 removeDisplayRows[
i] =
true;
1297 alnRow->
row = oldRowToNewRow[alnRow->
row];
1308 if (!molecule)
return false;
1310 unsigned int displayRow;
1314 for (displayRow=0; displayRow<
NRows(); ++displayRow) {
1315 seq =
rows[displayRow]->GetSequence();
1316 if (seq && seq->
molecule == molecule) {
1327 if (seqRow && seqIndex >= seqRow->
fromIndex && seqIndex <= seqRow->toIndex) {
void BlockAlignUpdate(BlockMultipleAlignment *single)
void CalculateRowScoresWithThreader(double weightPSSM)
void RealignDependentSequences(BlockMultipleAlignment *multiple, const std::vector< unsigned int > &dependentsToRealign)
void ExtendUpdate(BlockMultipleAlignment *single)
std::map< BlockMultipleAlignment *, bool > UpdateMap
void ThreadUpdate(const ThreaderOptions &options, BlockMultipleAlignment *single)
const BlockMultipleAlignment * GetCurrentMultipleAlignment(void) const
void MergeUpdates(const UpdateMap &updates, bool mergeToNeighbor)
bool CreateBlock(unsigned int fromAlignmentIndex, unsigned int toAlignmentIndex, eUnalignedJustification justification)
void SelectBlocks(unsigned int alnIndexFrom, unsigned int alnIndexTo, bool toggle) const
bool ZipAlignResidue(unsigned int row, unsigned int alignmentIndex, bool moveRight, eUnalignedJustification justification)
unsigned int AlignmentWidth(void) const
bool MoveBlockBoundary(unsigned int columnFrom, unsigned int columnTo)
bool DeleteRow(unsigned int row)
bool MarkBlock(unsigned int column)
bool OptimizeBlock(unsigned int row, unsigned int alignmentIndex, eUnalignedJustification justification)
bool ShiftRow(unsigned int row, unsigned int fromAlignmentIndex, unsigned int toAlignmentIndex, eUnalignedJustification justification)
bool GetCharacterTraitsAt(unsigned int alignmentColumn, unsigned int row, eUnalignedJustification justification, char *character, Vector *color, bool *isHighlighted, bool *drawBackground, Vector *cellBackgroundColor) const
void SetRowDouble(unsigned int row, double value) const
void SetRowStatusLine(unsigned int row, const std::string &value) const
std::vector< const UngappedAlignedBlock * > UngappedAlignedBlockList
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
const std::string & GetRowStatusLine(unsigned int row) const
void GetAlignedBlockPosition(unsigned int alignmentIndex, unsigned int *blockColumn, unsigned int *blockWidth) const
bool DeleteBlock(unsigned int alignmentIndex)
bool MergeBlocks(unsigned int fromAlignmentIndex, unsigned int toAlignmentIndex)
bool SplitBlock(unsigned int alignmentIndex)
bool DeleteAllBlocks(void)
int GetLoopLength(unsigned int row, unsigned int alignmentIndex)
const Vector & Get(eColor which) const
bool GetCharacterTraitsAt(unsigned int column, BlockMultipleAlignment::eUnalignedJustification justification, char *character, Vector *color, bool *drawBackground, Vector *cellBackgroundColor) const
BlockMultipleAlignment *const alignment
const Sequence *const sequence
DisplayRowFromSequence(const Sequence *s, unsigned int from, unsigned int to)
bool GetCharacterTraitsAt(unsigned int column, BlockMultipleAlignment::eUnalignedJustification justification, char *character, Vector *color, bool *drawBackground, Vector *cellBackgroundColor) const
const unsigned int toIndex
bool GetSequenceAndIndexAt(unsigned int column, BlockMultipleAlignment::eUnalignedJustification justification, const Sequence **sequenceHandle, int *index) const
void SelectedRange(unsigned int from, unsigned int to, BlockMultipleAlignment::eUnalignedJustification justification, bool toggle) const
const unsigned int fromIndex
BlockMultipleAlignment *const alignment
const bool hasBackgroundColor
const Vector backgroundColor
bool GetCharacterTraitsAt(unsigned int column, BlockMultipleAlignment::eUnalignedJustification justification, char *character, Vector *color, bool *drawBackground, Vector *cellBackgroundColor) const
virtual bool GetSequenceAndIndexAt(unsigned int column, BlockMultipleAlignment::eUnalignedJustification justification, const Sequence **sequence, int *index) const =0
virtual const Sequence * GetSequence(void) const =0
virtual unsigned int Width(void) const =0
virtual bool GetCharacterTraitsAt(unsigned int column, BlockMultipleAlignment::eUnalignedJustification justification, char *character, Vector *color, bool *drawBackground, Vector *cellBackgroundColor) const =0
void ToggleHighlights(const Sequence *sequence, unsigned int seqIndexFrom, unsigned int seqIndexTo)
void PostRedrawMolecule(const Molecule *molecule)
void PostRedrawSequenceViewer(ViewerBase *viewer)
void KeepHighlightsOnlyOnSequence(const Sequence *sequence)
bool RemoveAllHighlights(bool postRedraws)
void PostRedrawAllSequenceViewers(void)
void AddHighlights(const Sequence *sequence, unsigned int seqIndexFrom, unsigned int seqIndexTo)
static bool CompareIdentifiers(const MoleculeIdentifier *a, const MoleculeIdentifier *b)
std::string ToString(void) const
Vector GetResidueColor(int sequenceIndex) const
bool GetValues(int *from, int *to)
bool GetRowTitle(unsigned int row, wxString *title, wxColour *color) const
bool GetCharacterTraitsAt(unsigned int column, unsigned int row, char *character, wxColour *color, bool *drawBackground, wxColour *cellBackgroundColor) const
bool ProximitySort(unsigned int displayRow)
bool CalculateRowScoresWithThreader(double weightPSSM)
void AddBlockBoundaryRows(void)
void FloatPDBRowsToTop(void)
BlockMultipleAlignment * GetAlignmentForRow(unsigned int row) const
DisplayRowFromString * FindBlockBoundaryRow(const BlockMultipleAlignment *forAlignment) const
void SortRowsByThreadingScore(double weightPSSM)
void AddRowFromAlignment(unsigned int row, BlockMultipleAlignment *fromAlignment)
void UpdateMaxRowWidth(void)
bool SortRowsByLoopLength(unsigned int row, unsigned int alnIndex)
unsigned int NRows(void) const
void AddRowFromString(const std::string &anyString)
void RedrawAlignedMolecules(void) const
void SortRowsBySelfHit(void)
void UpdateAfterEdit(const BlockMultipleAlignment *forAlignment)
void FloatHighlightsToTop(void)
SequenceDisplay * Clone(const Old2NewAlignmentMap &newAlignments) const
void GetProteinSequences(SequenceList *seqs) const
bool GetDisplayCoordinates(const Molecule *molecule, unsigned int seqIndex, BlockMultipleAlignment::eUnalignedJustification justification, unsigned int *column, unsigned int *row)
void RowsAdded(unsigned int nRowsAddedToMultiple, BlockMultipleAlignment *multiple, int where=-1)
SequenceDisplay(bool editable, ViewerWindowBase *const *parentViewerWindow)
virtual ~SequenceDisplay(void)
void AddRow(DisplayRow *row)
bool MouseDown(int column, int row, unsigned int controls)
void GetSequences(const BlockMultipleAlignment *forAlignment, SequenceList *seqs) const
void RemoveBlockBoundaryRows(void)
void RowsRemoved(const std::vector< unsigned int > &rowsRemoved, const BlockMultipleAlignment *multiple)
bool IsEditable(void) const
unsigned int startingColumn
void AddRowFromSequence(const Sequence *sequence, unsigned int from, unsigned int to)
ViewerWindowBase *const * viewerWindow
void GetRowOrder(const BlockMultipleAlignment *forAlignment, std::vector< unsigned int > *dependentRowOrder) const
void MouseOver(int column, int row) const
void DraggedCell(int columnFrom, int rowFrom, int columnTo, int rowTo)
std::vector< DisplayRow * > RowVector
void SortRowsByIdentifier(void)
void AddBlockBoundaryRow(BlockMultipleAlignment *forAlignment)
void UpdateBlockBoundaryRow(const BlockMultipleAlignment *forAlignment) const
std::vector< const Sequence * > SequenceList
void SelectedRectangle(int columnLeft, int rowTop, int columnRight, int rowBottom)
void RestrictHighlightsOff(void)
bool DoDeleteRow(void) const
SequenceViewer * sequenceViewer
bool DoProximitySort(void) const
bool DoRestrictHighlights(void) const
bool DoRealignRow(void) const
bool DoSortLoops(void) const
bool DoMarkBlock(void) const
void ProximitySortOff(void)
const Molecule * molecule
std::string GetDescription(void) const
const MoleculeIdentifier * identifier
unsigned int Length(void) const
void LaunchWebBrowserWithInfo(void) const
StyleManager * styleManager
const Vector & GetObjectColor(const Molecule *molecule) const
bool GetValues(ThreaderOptions *options)
std::vector< IntervalList > GeometryViolationsForRow
static unsigned int EstimateNRandomStarts(const BlockMultipleAlignment *coreAlignment, const BlockMultipleAlignment *toBeThreaded)
bool DoThreadSingle(void) const
bool DoBlastSingle(void) const
bool DoBlastPSSMSingle(void) const
void BlastPSSMSingleOff(void)
void MergeSingleOff(void)
bool DoMergeSingle(void) const
bool DoDeleteSingle(void) const
void BlockAlignSingleOff(void)
void DeleteAllBlocksOff(void)
bool DoExtendSingle(void) const
void BlastSingleOff(void)
bool DoBlockAlignSingle(void) const
UpdateViewer * updateViewer
bool DoSetRegion(void) const
bool DoBlastNeighborSingle(void) const
bool DoDeleteAllBlocks(void) const
bool DoMergeNeighbor(void) const
void BlastNeighborSingleOff(void)
void ThreadSingleOff(void)
void MergeNeighborOff(void)
void ExtendSingleOff(void)
void DeleteSingleOff(void)
void BlastUpdate(BlockMultipleAlignment *alignment, bool usePSSMFromMultiple)
void DeleteAlignment(BlockMultipleAlignment *toDelete)
void BlastNeighbor(BlockMultipleAlignment *update)
AlignmentManager * alignmentManager
bool AlwaysSyncStructures(void) const
const_iterator end() const
const_iterator find(const key_type &key) const
const Colors * GlobalColors(void)
ThreaderOptions globalThreaderOptions
Include a standard set of the NCBI C++ Toolkit most basic headers.
static const char * column
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_SCOPE(ns)
Define a new scope.
static string IntToString(int value, TNumToStringFlags flags=0, int base=10)
Convert int to string.
unsigned int
A callback function used to compare two keys in a database.
Messenger * GlobalMessenger(void)
The NCBI C++/STL use hints.
NCBI C++ stream class wrappers for triggering between "new" and "old" C++ stream libraries.
double r(size_t dimension_, const Int4 *score_, const double *prob_, double theta_)
void copy(Njn::Matrix< S > *matrix_, const Njn::Matrix< T > &matrix0_)
static bool CompareRowsFloatGV(const DisplayRowFromAlignment *a, const DisplayRowFromAlignment *b)
static DisplayRowFromString * CreateBlockBoundaryRow(BlockMultipleAlignment *forAlignment)
static const char blockRightEdgeChar
bool(* CompareRows)(const DisplayRowFromAlignment *a, const DisplayRowFromAlignment *b)
static bool CompareRowsByScore(const DisplayRowFromAlignment *a, const DisplayRowFromAlignment *b)
static bool CompareRowsByIdentifier(const DisplayRowFromAlignment *a, const DisplayRowFromAlignment *b)
static void Vector2wxColor(const Vector &colorVec, wxColor *colorWX)
static const char blockLeftEdgeChar
static const char blockOneColumnChar
static bool CompareRowsFloatHighlights(const DisplayRowFromAlignment *a, const DisplayRowFromAlignment *b)
static const string blockBoundaryStringTitle("(blocks)")
static bool CompareRowsFloatPDB(const DisplayRowFromAlignment *a, const DisplayRowFromAlignment *b)
static Threader::GeometryViolationsForRow violations
static const char blockInsideChar
static CompareRows rowComparisonFunction
static bool CompareRowsByEValue(const DisplayRowFromAlignment *a, const DisplayRowFromAlignment *b)
std::map< BlockMultipleAlignment *, BlockMultipleAlignment * > Old2NewAlignmentMap
static const sljit_gpr r1
static const sljit_gpr r2
#define row(bind, expected)
static DP_BlockInfo * blocks
static int GetBLOSUM62Score(char a, char b)
void VectorRemoveElements(std::vector< T > &v, const std::vector< bool > &remove, unsigned int nToRemove)