NCBI C++ ToolKit
epigenomics_track.cpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /* $Id: epigenomics_track.cpp 47479 2023-05-02 13:24:02Z ucko $
2  * ===========================================================================
3  *
4  * PUBLIC DOMAIN NOTICE
5  * National Center for Biotechnology Information
6  *
7  * This software/database is a "United States Government Work" under the
8  * terms of the United States Copyright Act. It was written as part of
9  * the author's official duties as a United States Government employee and
10  * thus cannot be copyrighted. This software/database is freely available
11  * to the public for use. The National Library of Medicine and the U.S.
12  * Government have not placed any restriction on its use or reproduction.
13  *
14  * Although all reasonable efforts have been taken to ensure the accuracy
15  * and reliability of the software and data, the NLM and the U.S.
16  * Government do not and cannot warrant the performance or results that
17  * may be obtained by using this software or data. The NLM and the U.S.
18  * Government disclaim all warranties, express or implied, including
19  * warranties of performance, merchantability or fitness for any particular
20  * purpose.
21  *
22  * Please cite the author in any work or product based on this material.
23  *
24  * ===========================================================================
25  *
26  * Authors: Liangshou Wu
27  *
28  * File Description:
29  *
30  */
31 
32 #include <ncbi_pch.hpp>
33 
42 #include <gui/utils/rgba_color.hpp>
43 
44 #include <objmgr/table_field.hpp>
45 #include <objmgr/annot_ci.hpp>
46 #include <wx/menu.h>
47 
50 
51 static const string kTrackTitle = "Epigenomics map";
52 
53 ///////////////////////////////////////////////////////////////////////////////
54 /// CEpigenomicsJob.
55 ///
57 {
58 public:
59  CEpigenomicsJob(const string& desc, objects::CBioseq_Handle handle,
60  const objects::SAnnotSelector& sel, const TSeqRange& range,
61  TModelUnit window, bool calc_min, bool fixed_scale)
62  : CSGAnnotJob(desc, handle, sel, range)
63  , m_Window(window)
64  , m_CalcMin(calc_min)
65  , m_FixedScale(fixed_scale)
66  {}
67 
68 protected:
69  virtual EJobState x_Execute();
70 
71 private:
73  bool m_CalcMin; ///< add min graph
74  bool m_FixedScale; ///< use global scale or dynamic scale
75 };
76 
77 
78 /// TEMPLATE STRUCT non_zero_min
79 template<class Type>
81  : public binary_functor<Type>
82 { // functor for min
83  Type operator()(const Type& left, const Type& right) const
84  { // apply operator+ to operands
85  return left == 0 ? right : (left < right ? left : right);
86  }
87 
88  virtual binary_functor<Type>* clone() const
89  {
90  return new non_zero_min<Type>;
91  }
92 };
93 
94 
96 {
97  try {
100 
101  CConstRef<CSeq_loc> loc =
102  m_Handle.GetRangeSeq_loc(m_Range.GetFrom(), m_Range.GetTo());
103  CAnnot_CI it(m_Handle.GetScope(), *loc, m_Sel);
104 
105  // we assume there will be one annotation. If not, we only pick up
106  // the very first one.
107  if (it) {
108  typedef CHistogramGlyph::TDataType TDataType;
109  CSeq_annot_Handle annot = *it;
110  size_t rows = annot.GetSeq_tableNumRows();
111 
112  double min_val;
113  double val_step;
114  vector<char> values;
115  CTableFieldHandle<double> col_val_min("value_min");
116  CTableFieldHandle<double> col_val_step("value_step");
117  CTableFieldHandle<int> col_val("values");
118  if ( !col_val_min.TryGet(annot, 0, min_val) ||
119  !col_val_step.TryGet(annot, 0, val_step) ||
120  !col_val.TryGet(annot, 0, values)) {
121  return eFailed;
122  }
123 
124  TDataType g_max = (TDataType)(255 * val_step + min_val);
125 
126  // create a look up table
127  float de_quant[256];
128  de_quant[0] = (float)min_val;
129  for (int i = 1; i < 256; ++i) {
130  de_quant[i] = de_quant[i - 1] + (float)val_step;
131  }
132 
133  TSeqPos from = m_Range.GetFrom();
134  TSeqPos to = m_Range.GetTo();
135  int span;
136  int pos;
138  CTableFieldHandle<int> col_span("span");
139 
140  // find the start row
141  int row = 0;
142  int r_start = 0;
143  int r_end = static_cast<int>(rows - 1);
144  do {
145  row = (r_start + r_end) / 2;
146  col_pos.TryGet(annot, row, pos);
147  if ((TSeqPos)pos < from ) r_start = row;
148  else r_end = row;
149  } while ((TSeqPos)pos != from && r_start < r_end - 1);
150 
152  // Create the max density map
153  CHistogramGlyph::TMap* max_data =
156  (float)m_Window, new max_func<TDataType>()))).first->second;
157 
158  // Create the min density map
159  CHistogramGlyph::TMap* min_data = NULL;
160  if (m_CalcMin) {
161  min_data = &maps.insert(CHistogramGlyph::TMaps::value_type("Min",
163  (float)m_Window, new non_zero_min<TDataType>()))).first->second;
164  }
165 
166  for (row = (r_start + r_end) / 2; (size_t)row < rows; ++row) {
167  if ( col_pos.TryGet(annot, row, pos) ) {
168  if ((TSeqPos)pos > to) break;
169  span = 1;
170  col_span.TryGet(annot, row, span);
171  TSeqPos end = pos + span - 1;
172  max_data->AddRange(TSeqRange(pos, end),
173  de_quant[(unsigned char)values[row]]);
174  if (m_CalcMin) {
175  min_data->AddRange(TSeqRange(pos, end),
176  de_quant[(unsigned char)values[row]]);
177  }
178  }
179  }
180 
181  string name = CSeqUtils::GetAnnotName(annot);
182  CHistogramGlyph *hist = new CHistogramGlyph(maps, name);
183  CRef<CSeqGlyph> fref(hist);
184  if (m_FixedScale) {
185  hist->SetAxisMaxFixed(g_max);
186  }
187  result->m_ObjectList.push_back(fref);
188  }
189  } catch (CException& ex) {
190  m_Error.Reset(new CAppJobError(ex.GetMsg()));
191  return eFailed;
192  } catch (std::exception& ex) {
193  m_Error.Reset(new CAppJobError(ex.what()));
194  return eFailed;
195  }
196 
197  return eCompleted;
198 }
199 
200 
201 ///////////////////////////////////////////////////////////////////////////////
202 /// CEpigenomicsDS
203 ///
205  : CSGGenBankDS(scope, id)
206 {}
207 
208 
210  const vector<string>& annots_allowed)
211 {
212  SAnnotSelector sel = CSeqUtils::GetAnnotSelector(annots_allowed);
215  sel.SetCollectNames();
216 
218  range, eNa_strand_unknown, &sel);
220  if (iter->IsNamed()) {
221  if (iter->GetName().find("@@") == string::npos) {
222  annots.insert(TAnnotNameTitleMap::value_type(iter->GetName(), ""));
223  }
224  } else {
227  }
228  }
229 }
230 
231 
233  TModelUnit scale, bool calc_min,
234  bool fixed_scale)
235 {
236  // create selector
237  SAnnotSelector sel =
241  CRef<CEpigenomicsJob> job( new CEpigenomicsJob("Load data",
242  m_Handle, sel, range, scale, calc_min, fixed_scale) );
243  x_LaunchJob(*job);
244 }
245 
246 
247 ///////////////////////////////////////////////////////////////////////////////
248 /// CEpigenomicsDSType
249 ///
252 {
253  const CSeq_id& id = dynamic_cast<const CSeq_id&>(object.object.GetObject());
254  return new CEpigenomicsDS(object.scope.GetObject(), id);
255 }
256 
257 
259 {
260  static string sid("epigenomics_ds_type");
261  return sid;
262 }
263 
264 
266 {
267  static string slabel("Epigenomics Data Source Type");
268  return slabel;
269 }
270 
271 
273 {
274  return false;
275 }
276 
277 
278 ///////////////////////////////////////////////////////////////////////////////
279 /// CEpigenomicsTrack
280 ///
281 
283  "Graphical View Epigenomic Track");
284 
285 
287  CRenderingContext* r_cntx)
288  : CDataTrack(r_cntx)
289  , m_DS(ds)
290  , m_CalcMin(false)
291  , m_FixedScale(false)
292 {
293  m_DS->SetJobListener(this);
296 
298  eIcon_Settings, "Settings", true, "track_settings"));
299 }
300 
301 
303 {
304  if ( !m_DS->AllJobsFinished() ) {
305  m_DS->DeleteAllJobs();
306  }
307 }
308 
309 
311 {
312  return m_TypeInfo;
313 }
314 
315 
317 {
318  const string& title = GetTitle();
319  if (title.empty()) {
320  if (m_AnnotDesc.empty()) {
321  return kTrackTitle;
322  } else {
323  return m_AnnotDesc;
324  }
325  }
326 
327  return title;
328 }
329 
330 
331 void CEpigenomicsTrack::x_LoadSettings(const string& /*preset_style*/,
332  const TKeyValuePairs& settings)
333 {
334  ITERATE (TKeyValuePairs, iter, settings) {
335  try {
336  if (NStr::EqualNocase(iter->first, "fixed_scale")) {
337  m_FixedScale = NStr::StringToBool(iter->second);
338  } else if (NStr::EqualNocase(iter->first, "min_graph")) {
339  m_CalcMin = NStr::StringToBool(iter->second);
340  }
341  } catch (CException&) {
342  LOG_POST(Error << "CGraphTrack::x_LoadSettings() invalid setting: "
343  << iter->second);
344  }
345  }
346 }
347 
348 
349 void CEpigenomicsTrack::x_SaveSettings(const string& /*preset_style*/)
350 {
352  settings["min_graph"] = NStr::BoolToString(m_CalcMin);
353  settings["fixed_scale"] = NStr::BoolToString(m_FixedScale);
355 
356 }
357 
358 
360 {
361  switch (id) {
362  case eIcon_Settings:
364  break;
365  default:
366  // use default handlers
368  }
369 }
370 
371 
373 {
375  m_DS->DeleteAllJobs();
377 }
378 
379 
381 {
382  m_DS->ClearJobID(notify.GetJobID());
383  CRef<CObject> res_obj = notify.GetResult();
384  CSGJobResult* result = dynamic_cast<CSGJobResult*>(&*res_obj);
385  if (result) {
387  } else {
388  LOG_POST(Error << "CEpigenomicsTrack::x_OnJobCompleted() "
389  "notification for job does not contain results.");
390  }
391 }
392 
393 
395 {
396  SetGroup().Clear();
397  SetMsg("");
398  SetObjects(result.m_ObjectList);
399 
401  size_t size = objs.size();
402  if ( size > 0 ) {
404  NON_CONST_ITERATE (CSeqGlyph::TObjects, iter, objs) {
405  CHistogramGlyph* hist =
406  dynamic_cast<CHistogramGlyph*>(iter->GetPointer());
407  hist->SetDialogHost(dynamic_cast<IGlyphDialogHost*>(m_LTHost));
408  const string& hist_name = hist->GetAnnotName();
409  CRef<CHistParams> hist_conf = conf_mgr->GetHistParams(hist_name);
410  if ( !conf_mgr->HasSettings(hist_name) ) {
411  hist_conf.Reset(new CHistParams(*hist_conf));
412  conf_mgr->AddSettings(hist_name, hist_conf);
413  }
414  hist_conf->m_Colors.clear();
415  hist_conf->m_Colors["Max"] = CRgbaColor(0.2f, 0.8f, 0.2f, 0.8f);
416  hist_conf->m_Colors["Min"] = CRgbaColor(0.0f, 0.0f, 1.0f, 1.0f);
417  hist_conf->m_Colors["Avg"] = CRgbaColor(0.4f, 0.4f, 0.4f, 0.8f);
418  hist->SetConfig(*x_GetGlobalConfig());
419  if (size == 1) {
420  m_AnnotDesc = hist->GetTitle();
421  }
422  }
423  }
424  x_UpdateLayout();
425 }
426 
427 
429 {
430  wxMenu menu;
431  UseDefaultMarginWidth(menu);
432  int id_base = 10000;
433  wxMenuItem* item_min = menu.AppendCheckItem(id_base, wxT("Shown min graph"));
434  if (m_CalcMin) {
435  item_min->Check();
436  }
437  wxMenuItem* item_scale = menu.AppendCheckItem(id_base + 1, wxT("Fixed scale"));
438  if (m_FixedScale) {
439  item_scale->Check();
440  }
441  m_LTHost->LTH_PopupMenu(&menu);
442 
443  if (m_CalcMin != item_min->IsChecked()) {
444  m_CalcMin = !m_CalcMin;
445  x_UpdateData();
446  } else if (m_FixedScale != item_scale->IsChecked()) {
448  x_UpdateData();
449  }
450 
451 }
452 
453 
454 ///////////////////////////////////////////////////////////////////////////////
455 /// CEpigenomicsTrackFactory
456 ///////////////////////////////////////////////////////////////////////////////
459  ISGDataSourceContext* ds_context,
460  CRenderingContext* r_cntx,
461  const SExtraParams& params,
462  const TAnnotMetaDataList& src_annots) const
463 {
464  TAnnotNameTitleMap annots;
465 
466  if (params.m_SkipGenuineCheck && !params.m_Annots.empty()) {
467  ITERATE (SExtraParams::TAnnots, iter, params.m_Annots) {
468  annots.insert(TAnnotNameTitleMap::value_type(*iter, ""));
469  }
470  } else {
471 
472  // collect non-NA tracks
474  ds_context->GetDS(typeid(CEpigenomicsDSType).name(), object);
475  CEpigenomicsDS* ds_pointer =
476  dynamic_cast<CEpigenomicsDS*>(ds.GetPointer());
477  ds_pointer->SetAdaptive(params.m_Adaptive);
478  ds_pointer->SetDepth(params.m_Level);
479  ds_pointer->GetAnnotNames(r_cntx->GetVisSeqRange(), annots, params.m_Annots);
480 
481  // collect NA tracks
482  if ( !src_annots.empty() ) {
483  GetMatchedAnnots(src_annots, params, annots);
484  }
485  }
486 
487  // create feature tracks
488  TTrackMap tracks;
489  ITERATE (TAnnotNameTitleMap, iter, annots) {
491  ds_context->GetDS(typeid(CEpigenomicsDSType).name(), object);
492  CEpigenomicsDS* ds_pointer =
493  dynamic_cast<CEpigenomicsDS*>(ds.GetPointer());
494  ds_pointer->SetDepth(params.m_Level);
495  ds_pointer->SetAdaptive(params.m_Adaptive);
496  ds_pointer->SetAnnot(iter->first);
497 
499  new CEpigenomicsTrack(ds_pointer, r_cntx));
500  if ( !iter->second.empty() ) {
501  track->SetTitle(iter->second);
502  }
503 
504  tracks[iter->first] = track.GetPointer();
505  }
506 
507  return tracks;
508 }
509 
511  const TAnnotMetaDataList& src_annots,
512  const ILayoutTrackFactory::SExtraParams& params,
513  TAnnotNameTitleMap& out_annots) const
514 {
515  ILayoutTrackFactory::GetMatchedAnnots(src_annots, params.m_Annots, "seqtable", "epignomics", out_annots); //!! check that there is not typo in the word "epignomics"
516 }
517 
518 
520 {
522 }
523 
524 
526 {
528 }
529 
530 
const TAnnotNames & GetAnnotNames(void) const
CAnnot_CI –.
Definition: annot_ci.hpp:59
CAppJobError Default implementation for IAppJobError - encapsulates a text error message.
CAppJobNotification Notification send by CAppJobEventTranslator.
CDataTrack - a abstract base class for layout tracks which need to deal with background data retrieva...
Definition: data_track.hpp:55
void x_UpdateLayout()
Definition: data_track.hpp:127
CEpigenomicsDSType - Epigenomics data source type.
virtual ISGDataSource * CreateDS(SConstScopedObject &object) const
create an instance of the layout track type using default settings.
virtual string GetExtensionLabel() const
returns a displayable label for this extension ( please capitalize the key words - "My Extension" )
virtual bool IsSharable() const
check if the data source can be shared.
virtual string GetExtensionIdentifier() const
returns the unique human-readable identifier for the extension the id should use lowercase letters se...
CEpigenomicsDS - Epigenomics data source.
void GetAnnotNames(const TSeqRange &range, TAnnotNameTitleMap &annots, const vector< string > &annots_allowed)
void LoadData(const TSeqRange &range, TModelUnit scale, bool calc_min=false, bool fixed_scale=false)
CEpigenomicsDS(objects::CScope &scope, const objects::CSeq_id &id)
CEpigenomicsDS.
void SetAnnot(const string &annot)
CEpigenomicsDS inline methods.
CEpigenomicsJob.
CEpigenomicsJob(const string &desc, objects::CBioseq_Handle handle, const objects::SAnnotSelector &sel, const TSeqRange &range, TModelUnit window, bool calc_min, bool fixed_scale)
bool m_FixedScale
use global scale or dynamic scale
virtual EJobState x_Execute()
method truly doing the job.
bool m_CalcMin
add min graph
virtual void GetMatchedAnnots(const TAnnotMetaDataList &src_annots, const ILayoutTrackFactory::SExtraParams &params, TAnnotNameTitleMap &out_annots) const
virtual string GetExtensionLabel() const
returns a displayable label for this extension ( please capitalize the key words - "My Extension" )
virtual string GetExtensionIdentifier() const
returns the unique human-readable identifier for the extension the id should use lowercase letters se...
virtual TTrackMap CreateTracks(SConstScopedObject &object, ISGDataSourceContext *ds_context, CRenderingContext *r_cntx, const SExtraParams &params=SExtraParams(), const TAnnotMetaDataList &src_annots=TAnnotMetaDataList()) const
create a layout track based on the input objects and extra parameters.
CEpigenomicsTrack – A special track for showing epigenomics map.
virtual void x_OnJobCompleted(CAppJobNotification &notify)
CRef< CEpigenomicsDS > m_DS
CEpigenomicsTrack(CEpigenomicsDS *ds, CRenderingContext *r_cntx)
string m_AnnotDesc
detailed track title
bool m_CalcMin
Superinpose min graph on top of max graph?.
virtual string GetFullTitle() const
get a more meaningful title.
virtual const CTrackTypeInfo & GetTypeInfo() const
virtual void x_UpdateData()
update track content.
virtual void x_LoadSettings(const string &preset_style, const TKeyValuePairs &settings)
load the track settings.
virtual void x_SaveSettings(const string &preset_style)
save part of settings to a profile string.
static CTrackTypeInfo m_TypeInfo
CEpigenomicsTrack.
bool m_FixedScale
Dynamic or fixed graph scale.
virtual void x_OnIconClicked(TIconID id)
Mouse left-click event handler on an icon.
void x_AddGraphs(const CSGJobResult &result)
void SetObjects(const CLayoutGroup::TObjectList &objs)
CLayoutGroup & SetGroup()
CLayoutGroup::TObjectList & SetChildren()
CRef< CSimpleLayout > m_Simple
void SetLayoutPolicy(ILayoutPolicy *policy)
Set policy on how to deploy the layout of its children.
void AddSettings(const string &name, CRef< CHistParams > hist_params)
Add a new settings for a given name.
bool HasSettings(const string &name) const
Check if there is settings for a given name.
CRef< CHistParams > GetHistParams(TFeatSubtype subtype) const
Get histogram settings using feature subtype.
File Description:
TColorSet m_Colors
const string & GetAnnotName() const
void SetDialogHost(IGlyphDialogHost *host)
void SetAxisMaxFixed(TDataType max)
const string & GetTitle() const
void SetConfig(const CSeqGraphicConfig &config)
@ eIcon_Settings
icon id for track settings
ILayoutTrackHost * m_LTHost
Top level host owning the tracks.
string GetTitle() const
get the track title.
virtual void x_OnIconClicked(TIconID id)
Mouse left-click event handler on an icon.
void SetMsg(const string &msg)
CConstRef< CSeqGraphicConfig > x_GetGlobalConfig() const
Method for getting global configuration from rendering context.
void SetProfile(const string &preset_style)
CLayoutTrack inline method implmentation.
CRef< CSeqGraphicConfig > m_gConfig
global configuration.
int TIconID
use int as TIconID instead of EIconID.
void x_RegisterIcon(const SIconInfo &icon)
register track icons.
CRenderingContext offers the basic context and utility methods for rendering layout objects in featur...
const TSeqRange & GetVisSeqRange() const
const TModelUnit & GetScale() const
class CRgbaColor provides a simple abstraction for managing colors.
Definition: rgba_color.hpp:58
objects::SAnnotSelector m_Sel
our annotation selector
TSeqRange m_Range
target range
objects::CBioseq_Handle m_Handle
target sequence
static string ComposeProfileString(const TKeyValuePairs &settings)
TJobID x_LaunchJob(IAppJob &job, int report_period=1, const string &pool="ObjManagerEngine")
Launch either a background or foreground job.
bool GetAdaptive() const
virtual bool AllJobsFinished() const
void SetJobListener(CEventHandler *listener)
Set JobDispatcher listener.
virtual void ClearJobID(TJobID job_id)
void SetDepth(int depth)
Set the annotation selector resolving depth.
virtual void DeleteAllJobs()
Remove waiting jobs from queue or cancel the unfinished jobs.
objects::CBioseq_Handle m_Handle
void SetAdaptive(bool flag)
CSGJobResult – the data structure holding the seqgraphic job results.
CScope –.
Definition: scope.hpp:92
CRenderingContext * m_Context
the rendering context
Definition: seq_glyph.hpp:346
list< CRef< CSeqGlyph > > TObjects
Definition: seq_glyph.hpp:85
CRef< CHistParamsManager > GetHistParamsManager() const
Get histogram config manager.
CRef< CObject > m_Result
CRef< CAppJobError > m_Error
CSeq_annot_Handle –.
bool TryGet(const CFeat_CI &feat_ci, Value &v) const
Definition: table_field.hpp:78
CTrackTypeInfo - holds description of a layout track type.
const string & GetDescr() const
const string & GetId() const
IGlyphDialogHost An interface used for handling issues related to any dialog pops up that requires so...
Definition: seq_glyph.hpp:399
static void GetMatchedAnnots(const TAnnotMetaDataList &src_annots, const vector< string > &target_annots, const string &annot_type, const string &track_type, TAnnotNameTitleMap &out_annots)
Help function to find matched annotations.
virtual void LTH_PopupMenu(wxMenu *menu)=0
show track-specific context menu.
ISGDSManager is seqgraphic data source manage that serves as an data source context.
virtual CIRef< ISGDataSource > GetDS(const string &type, SConstScopedObject &object)=0
Get a seqgraphic data source instance of the specified type.
File Description:
iterator_bool insert(const value_type &val)
Definition: map.hpp:165
bool empty() const
Definition: map.hpp:149
void clear()
Definition: map.hpp:169
USING_SCOPE(objects)
static const string kTrackTitle
#define false
Definition: bool.h:36
unsigned int TSeqPos
Type for sequence locations and lengths.
Definition: ncbimisc.hpp:875
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
Definition: ncbimisc.hpp:815
#define NON_CONST_ITERATE(Type, Var, Cont)
Non constant version of ITERATE macro.
Definition: ncbimisc.hpp:822
#define NULL
Definition: ncbistd.hpp:225
#define LOG_POST(message)
This macro is deprecated and it's strongly recomended to move in all projects (except tests) to macro...
Definition: ncbidiag.hpp:226
void Error(CExceptionArgs_Base &args)
Definition: ncbiexpt.hpp:1197
const string & GetMsg(void) const
Get message string.
Definition: ncbiexpt.cpp:461
virtual const char * what(void) const noexcept
Standard report (includes full backlog).
Definition: ncbiexpt.cpp:342
static objects::SAnnotSelector GetAnnotSelector(TAnnotFlags flags=0)
request an annotation selector for a given type
Definition: utils.cpp:167
static string GetAnnotName(const objects::CSeq_annot_Handle &annot_handle)
static const string & GetUnnamedAnnot()
Get the commonly used symbol representing a unnnamed annotation.
Definition: utils.hpp:531
static void SetAnnot(objects::SAnnotSelector &sel, const string &annot)
help function for setting up an annotation.
Definition: utils.cpp:320
static void SetResolveDepth(objects::SAnnotSelector &sel, bool adaptive, int depth=-1)
help function for setting selector resolve depth.
Definition: utils.cpp:405
GLdouble TModelUnit
Definition: gltypes.hpp:48
CRef< CObject > GetResult() const
returns non-null pointer only if Completed or Running and has temporary results available
virtual void AddRange(TSeqRange range, CntType score=1, bool expand=false)
EJobState
Job states (describe FSM)
Definition: app_job.hpp:86
@ eCompleted
Definition: app_job.hpp:89
@ eFailed
Definition: app_job.hpp:90
size_t GetSeq_tableNumRows(void) const
SAnnotSelector & SetCollectNames(bool value=true)
Collect available annot names rather than annots.
SAnnotSelector & SetAnnotType(TAnnotType type)
Set annotation type (feat, align, graph)
TObjectType * GetPointer(void) THROWS_NONE
Get pointer,.
Definition: ncbiobj.hpp:998
void Reset(void)
Reset reference object.
Definition: ncbiobj.hpp:773
CRange< TSeqPos > TSeqRange
typedefs for sequence ranges
Definition: range.hpp:419
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
static bool StringToBool(const CTempString str)
Convert string to bool.
Definition: ncbistr.cpp:2812
static const string BoolToString(bool value)
Convert bool to string.
Definition: ncbistr.cpp:2806
static bool EqualNocase(const CTempString s1, SIZE_TYPE pos, SIZE_TYPE n, const char *s2)
Case-insensitive equality of a substring with another string.
Definition: ncbistr.hpp:5355
TTo GetTo(void) const
Get the To member data.
Definition: Range_.hpp:269
TFrom GetFrom(void) const
Get the From member data.
Definition: Range_.hpp:222
@ eNa_strand_unknown
Definition: Na_strand_.hpp:65
int i
#define wxT(x)
Definition: muParser.cpp:41
range(_Ty, _Ty) -> range< _Ty >
const struct ncbi::grid::netcache::search::fields::SIZE size
#define row(bind, expected)
Definition: string_bind.c:73
A help struct for storing information about a icon.
extra parameter for initializing a track.
bool m_Adaptive
Adaptive/Exact selector.
TAnnots m_Annots
particular annotations the track will be looking at.
int m_Level
layout level that limits feature retrieving used by annotation selector.
bool m_SkipGenuineCheck
Flag indicating if track verification is required.
SAnnotSelector –.
TEMPLATE binary functor base struct.
Definition: density_map.hpp:59
TEMPLATE STRUCT max.
Definition: density_map.hpp:88
TEMPLATE STRUCT non_zero_min.
virtual binary_functor< Type > * clone() const
Type operator()(const Type &left, const Type &right) const
#define Type
else result
Definition: token2.c:20
void UseDefaultMarginWidth(wxMenu &menu)
Using default menu item margin width.
Definition: wx_utils.cpp:693
Modified on Mon Jul 22 05:03:20 2024 by modify_doxy.py rev. 669887