diff --git a/examples/demos/conservation.py b/examples/demos/conservation.py index b2e206c126e32543bc297508aa6bca5740b4b7f4..e4a254448462f41a68c15ff048fa6dc67dfe09ab 100644 --- a/examples/demos/conservation.py +++ b/examples/demos/conservation.py @@ -13,8 +13,6 @@ aln.SetSequenceOffset(0, 1) # First we set all properties to zero, then let alg.Conservation assign the # conservation scores to the residues #------------------------------------------------------------------------------- -for r in m.residues: - r.SetFloatProp('cons', 0) alg.Conservation(aln) #------------------------------------------------------------------------------- diff --git a/modules/gfx/doc/entity.rst b/modules/gfx/doc/entity.rst index 4ebe5f7d8d1b1324d54cbad1e655a49639453ecb..42fa5e38b16fe4c2ba300ed85c0aafcb08787810 100644 --- a/modules/gfx/doc/entity.rst +++ b/modules/gfx/doc/entity.rst @@ -196,6 +196,9 @@ Entity API Reference the built-in properties is identical to the properties available in :doc:`query language <../mol/base/query>`. + In case a generic property is undefined for a certain element, the property + the value of min is used for that element. + :param prop: The name of the numeric property :type prop: str :param color1: Color corresponding to min value diff --git a/modules/gfx/src/impl/entity_renderer.hh b/modules/gfx/src/impl/entity_renderer.hh index 28a932abfe81aa3ff3fd47bbee41caf91200b980..b3e47c0123ed60c219db51ed11a0ecc38cab6807 100644 --- a/modules/gfx/src/impl/entity_renderer.hh +++ b/modules/gfx/src/impl/entity_renderer.hh @@ -57,7 +57,7 @@ namespace ost { namespace gfx { namespace impl { typedef enum { DIRTY_VIEW =1, - DIRTY_VA =2, + DIRTY_VA =2 } DirtyFlag; typedef char DirtyFlags; @@ -204,14 +204,14 @@ struct UniformGetCol { }; struct GradientLevelGetCol { - GradientLevelGetCol(const GradientLevelColorOp& op):property_(op.GetProperty()), + GradientLevelGetCol(const GradientLevelColorOp& op): property_(op.GetProperty()), epm_(property_, op.GetLevel()), gradient_(op.GetGradient()), minv_(op.GetMinV()), maxv_(op.GetMaxV()){} Color ColorOfAtom(mol::AtomHandle& atom) const{ try{ - float n=Normalize(epm_.Get(atom), minv_, maxv_); + float n=Normalize(epm_.Get(atom, minv_), minv_, maxv_); return gradient_.GetColorAt(n); }catch(std::exception&){ LOGN_DEBUG("property " << property_ << " not found"); diff --git a/modules/gfx/src/impl/trace_renderer_base.cc b/modules/gfx/src/impl/trace_renderer_base.cc index 46084a880b330f86fe618c86cb88e4eb315bc3d1..6a49d7c1660b0863c84fb0caf82a38272006bd87 100644 --- a/modules/gfx/src/impl/trace_renderer_base.cc +++ b/modules/gfx/src/impl/trace_renderer_base.cc @@ -34,7 +34,9 @@ void set_node_entry_color(NodeEntry& e, ColorMask mask, } template <typename T1> -inline void apply_color_op(TraceRendererBase* rend, TraceSubset& trace_subset, T1 get_col, const ColorOp& op) +inline void apply_color_op(TraceRendererBase* rend, + TraceSubset& trace_subset, T1 get_col, + const ColorOp& op) { rend->UpdateViews(); ColorMask mask = op.GetMask(); diff --git a/modules/gfx/src/surface.cc b/modules/gfx/src/surface.cc index dbf740077238e34c36356fe58e35cdeb473d8b51..00ee954a959809f860c2f17cb70bc705df6dc6b8 100644 --- a/modules/gfx/src/surface.cc +++ b/modules/gfx/src/surface.cc @@ -311,7 +311,8 @@ void Surface::Apply(const gfx::GradientLevelColorOp& op, bool store){ for(VMap::const_iterator it=vmap_.begin();it!=vmap_.end();++it) { mol::AtomHandle ah = sh_.GetVertex(it->first).atom; if(ah.IsValid()) { - va_.SetColor(it->second,gradient.GetColorAt(normalize(epm.Get(ah),minv,maxv))); + va_.SetColor(it->second,gradient.GetColorAt(normalize(epm.Get(ah, minv), + minv,maxv))); } } FlagRefresh(); diff --git a/modules/mol/base/src/entity_view.cc b/modules/mol/base/src/entity_view.cc index 6be3145f35ac93cdfe8c4432a6978098b395aa42..d81d02d986e7651354fadde6feeef814b2a4958f 100644 --- a/modules/mol/base/src/entity_view.cc +++ b/modules/mol/base/src/entity_view.cc @@ -688,9 +688,14 @@ std::pair<Real,Real> EntityView::GetMinMax(const String& prop, Real min_v=std::numeric_limits<Real>::max(); Real max_v=-std::numeric_limits<Real>::max(); for(AtomViewIter it=AtomsBegin(); it!=this->AtomsEnd(); ++it) { - Real v=epm.Get(*it); - max_v=std::max(v, max_v); - min_v=std::min(v, min_v); + try { + Real v=epm.Get(*it); + max_v=std::max(v, max_v); + min_v=std::min(v, min_v); + } catch(...) { + // do nothing in case of missing property + continue; + } } return std::make_pair(min_v,max_v); }