Skip to content
Snippets Groups Projects
Commit 465e7bb7 authored by stefan's avatar stefan
Browse files

New SequenceViewer, added new DisplayMode "Conservation 2"

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2346 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent 2a66098d
No related branches found
No related tags found
No related merge requests found
......@@ -480,7 +480,7 @@ module(NAME gui SOURCES ${OST_GUI_MOCS} ${OST_GUI_SOURCES}
${OST_GUI_INPUT_HEADERS}
${OST_GUI_DATA_VIEWER_HEADERS}
${OST_GUI_HEADERS}
DEPENDS_ON gfx io mol_alg
DEPENDS_ON gfx io mol_alg seq_alg
LINK ${QT_LIBRARIES} ${PYTHON_LIBRARIES} ${BOOST_PYTHON_LIBRARIES} ${SPNAV_LIBRARIES})
include_directories(${PYTHON_INCLUDE_PATH})
qt4_add_resources(OST_QT_RESOURCE dngr.qrc)
......
......@@ -28,6 +28,7 @@
#include <ost/mol/view_op.hh>
#include <ost/seq/aligned_region.hh>
#include <ost/seq/alg/conservation.hh>
#include "sequence_row.hh"
#include "secstr_row.hh"
......@@ -83,10 +84,11 @@ QColor GetForeGroundColor(QColor background){
}
QMap<QString,int> AlignmentViewObject::group_map_ = GetGroupMap();
const QString AlignmentViewObject::conservation_mode = "Highlight conservation";
const QString AlignmentViewObject::conservation_mode_1 = "Highlight conservation 1";
const QString AlignmentViewObject::conservation_mode_2 = "Highlight conservation 2";
AlignmentViewObject::AlignmentViewObject(const seq::AlignmentHandle& alignment, QObject* parent): SequenceViewObject(parent), alignment_(alignment)
{
......@@ -95,6 +97,18 @@ AlignmentViewObject::AlignmentViewObject(const seq::AlignmentHandle& alignment,
this->AddSequence(seq_handle, seq_handle.GetName().c_str());
}
std::vector<Real> values = seq::alg::Conservation(alignment,false);
gradient_.SetColorAt(0,gfx::Color(0,0,1));
gradient_.SetColorAt(0.5,gfx::Color(1,1,1));
gradient_.SetColorAt(1,gfx::Color(1,0,0));
//Calculate Conservation Mode 1
for(unsigned int i=0; i<values.size(); i++){
gfx::Color color = gradient_.GetColorAt(values[i]);
conservation_1_[i] = QColor(color.Red()*255,color.Green()*255,color.Blue()*255);
}
//Calculate Conservation Mode 2
for(int j=0; j<alignment.GetLength(); j++){
int group = 0;
QString element = "";
......@@ -120,49 +134,71 @@ AlignmentViewObject::AlignmentViewObject(const seq::AlignmentHandle& alignment,
}
if(element.size()==1){
conservation_[j] = QColor(175,175,175);
conservation_2_[j] = QColor(175,175,175);
}
else if(group > 0){
conservation_[j] = QColor(200,200,200);
conservation_2_[j] = QColor(200,200,200);
}
else{
conservation_[j] = Qt::transparent;
conservation_2_[j] = Qt::transparent;
}
}
this->AddDisplayMode(conservation_mode);
this->AddDisplayMode(conservation_mode_1);
this->AddDisplayMode(conservation_mode_2);
}
QVariant AlignmentViewObject::GetData(int row, int column, int role)
{
if(column > 0 && this->GetCurrentDisplayMode() == conservation_mode){
if(role == Qt::UserRole+3 ){
if(column -1 < conservation_.size()){
return QVariant(conservation_[column-1]);
if(column > 0){
if(this->GetCurrentDisplayMode() == conservation_mode_1){
if(role == Qt::UserRole+3 ){
if(column -1 < conservation_1_.size()){
return QVariant(conservation_1_[column-1]);
}
return QVariant(Qt::transparent);
}
if(role == Qt::ForegroundRole){
if(column -1 < conservation_1_.size()){
if(conservation_1_[column-1].red()>128){
return QVariant(Qt::black);
}
else{
return QVariant(Qt::white);
}
}
return QVariant(Qt::transparent);
}
}
if(role == Qt::ForegroundRole){
if(column -1 < conservation_.size()){
return QVariant(Qt::black);
else if(this->GetCurrentDisplayMode() == conservation_mode_2){
if(role == Qt::UserRole+3 ){
if(column -1 < conservation_2_.size()){
return QVariant(conservation_2_[column-1]);
}
return QVariant(Qt::transparent);
}
if(role == Qt::ForegroundRole){
if(column -1 < conservation_2_.size()){
return QVariant(Qt::black);
}
return QVariant(Qt::transparent);
}
}
}
return BaseViewObject::GetData(row,column,role);
}
void AlignmentViewObject::SetDisplayMode(const QString& mode)
{
if(this->display_modes_.contains(mode) && mode == conservation_mode){
for(int i=0 ; i<this->GetRowCount(); i++){
BaseRow* row = this->GetRow(i);
row->RemovePainter(seq_secondary_structure_painter);
row->RemovePainter(align_properties_painter);
row->InsertPainter(conservation_painter,1);
if(this->display_modes_.contains(mode)){
if(mode == conservation_mode_1 || mode == conservation_mode_2){
for(int i=0 ; i<this->GetRowCount(); i++){
BaseRow* row = this->GetRow(i);
row->RemovePainter(seq_secondary_structure_painter);
row->RemovePainter(align_properties_painter);
row->InsertPainter(conservation_painter,1);
}
}
}
SequenceViewObject::SetDisplayMode(mode);
......
......@@ -25,6 +25,8 @@
#include <ost/seq/alignment_handle.hh>
#include <ost/gfx/gradient.hh>
#include "sequence_view_object.hh"
namespace ost { namespace gui {
......@@ -37,18 +39,20 @@ public:
AlignmentViewObject(const seq::AlignmentHandle& alignment, QObject* parent = 0);
QVariant GetData(int row, int column, int role);
const seq::AlignmentHandle& GetAlignment();
void SetDisplayMode(const QString& mode);
private:
gfx::Gradient gradient_;
seq::AlignmentHandle alignment_;
QMap<int, QColor> conservation_;
QMap<int, QColor> conservation_1_;
QMap<int, QColor> conservation_2_;
static QMap<QString,int> group_map_;
static const QString conservation_mode;
static const QString conservation_mode_1;
static const QString conservation_mode_2;
};
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment