Rosetta 3.5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
RotamerTrieBase.hh
Go to the documentation of this file.
1 // -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
2 // vi: set ts=2 noet:
3 //
4 // (c) Copyright Rosetta Commons Member Institutions.
5 // (c) This file is part of the Rosetta software suite and is made available under license.
6 // (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
7 // (c) For more information, see http://www.rosettacommons.org. Questions about this can be
8 // (c) addressed to University of Washington UW TechTransfer, email: license@u.washington.edu.
9 
10 /// @file core/scoring/trie/trie_vs_trie.hh
11 /// @brief
12 /// @author Andrew Leaver-Fay (aleaverfay@gmail.com)
13 
14 #ifndef INCLUDED_core_scoring_trie_RotamerTrieBase_hh
15 #define INCLUDED_core_scoring_trie_RotamerTrieBase_hh
16 
17 // Unit Headers
19 
22 
23 /// Package Headers
30 
33 
37 
40 
41 // Project Headers
43 
45 //XRW_B_T1
46 //#include <core/scoring/etable/CoarseEtableEnergy.fwd.hh>
47 //XRW_E_T1
48 #include <core/types.hh>
49 
50 // Utility Headers
51 #include <utility/pointer/ReferenceCount.hh>
52 #include <utility/vector1.fwd.hh>
53 
54 // ObjexxFCL Headers
55 #include <ObjexxFCL/FArray2D.fwd.hh>
56 
57 // STL Headers
58 #include <map>
59 
60 //Auto Headers
61 namespace core {
62 namespace scoring {
63 namespace trie {
64 
66 {
67 public:
68  virtual ~RotamerTrieBase() {}
69 
70  /// Useful Functions
71  virtual
72  void print() const = 0;
73 
74  //virtual
75  //void
76  //point_count_pair_data_at_residue( Size other_residue ) const = 0;
77 
78  /// The trie contains mutable data to record which peice of count-pair data it is
79  /// to use in the upcoming/current trie-vs-trie application. This data could be held
80  /// externally to the trie, and passed in as a parameter to the tvt call, but I believe
81  /// the code will be faster if there is no ambiguity over where to look for count pair
82  /// information.
83  ///
84  /// Depricated
85  //virtual
86  //void
87  //set_count_pair_data_to_use(
88  // Size connection_id
89  //) const = 0;
90 
91 public:
92  void
94  resid_2_connid_map_[ resid ] = connid - 1; // index from 0 -- adjust indices here.
95  }
96 
97  bool
99  return resid_2_connid_map_.find( resid ) != resid_2_connid_map_.end();
100  }
101 
102  Size
104  /*
105  std::cout << "map contents: " << std::endl;
106  for ( std::map< Size, Size >::const_iterator iter = resid_2_connid_map_.begin(),
107  iter_end = resid_2_connid_map_.end(); iter != iter_end; ++iter ) {
108  std::cout << iter->first << " " << iter->second << std::endl;
109  }
110  */
111  return resid_2_connid_map_.find( resid )->second;
112  }
113 
114 
115  Size
116  get_count_pair_data_for_residue( Size other_residue ) const
117  {
118  if ( ! connection_exists_to_residue( other_residue ) ) return 0;
119 
120  Size connid = connection_id_for_residue( other_residue );
121  //std::cout << "other_residue: " << other_residue << " connid: " << connid << std::endl;
122  return connid;
123  }
124 
125 private:
126 
127  std::map< Size, Size > resid_2_connid_map_;
128 
129 public:
130  // Type resolution Function
131  virtual
132  void
133  trie_vs_trie(
134  RotamerTrieBase const & other,
135  TrieCountPairBase & cp,
136  etable::TableLookupEvaluator const & sfxn,
137  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
138  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
139  ) const = 0;
140 
141  virtual
142  void
145  TrieCountPairBase & cp,
146  etable::TableLookupEvaluator const & sfxn,
147  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
148  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
149  ) const = 0;
150 
151  virtual
152  void
155  TrieCountPairBase & cp,
156  etable::TableLookupEvaluator const & sfxn,
157  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
158  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
159  ) const = 0;
160 
161  virtual
162  void
165  TrieCountPairBase & cp,
166  etable::TableLookupEvaluator const & sfxn,
167  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
168  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
169  ) const = 0;
170 
171  virtual
172  void
175  TrieCountPairBase & cp,
176  etable::TableLookupEvaluator const & sfxn,
177  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
178  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
179  ) const = 0;
180 
181 
182  /// This function is called when the etable energy function get mixed up with non-etable tries.
183  /// It produces a utility_exit call.
184  virtual
185  void
187  RotamerTrieBase const & other,
188  TrieCountPairBase & cp,
189  etable::TableLookupEvaluator const & sfxn,
190  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
191  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
192  ) const = 0;
193 
194  /// Four trie-vs-path type resolution functions
195  virtual
196  void
197  trie_vs_path(
198  RotamerTrieBase const & other,
199  TrieCountPairBase & cp,
200  etable::TableLookupEvaluator const & sfxn,
201  utility::vector1< core::PackerEnergy > & pair_energy_vector,
203  ) const = 0;
204 
205 
206  virtual
207  void
210  TrieCountPairBase & cp,
211  etable::TableLookupEvaluator const & sfxn,
212  utility::vector1< core::PackerEnergy > & pair_energy_vector,
214  ) const = 0;
215 
216 
217  virtual
218  void
221  TrieCountPairBase & cp,
222  etable::TableLookupEvaluator const & sfxn,
223  utility::vector1< core::PackerEnergy > & pair_energy_vector,
225  ) const = 0;
226 
227 
228 
229  virtual
230  void
233  TrieCountPairBase & cp,
234  etable::TableLookupEvaluator const & sfxn,
235  utility::vector1< core::PackerEnergy > & pair_energy_vector,
237  ) const = 0;
238 
239 
240  virtual
241  void
244  TrieCountPairBase & cp,
245  etable::TableLookupEvaluator const & sfxn,
246  utility::vector1< core::PackerEnergy > & pair_energy_vector,
248  ) const = 0;
249 
250  /// This function is called when the etable energy function get mixed up with non-etable tries.
251  /// It produces a utility_exit call.
252  virtual
253  void
255  RotamerTrieBase const & other,
256  TrieCountPairBase & cp,
257  etable::TableLookupEvaluator const & sfxn,
258  utility::vector1< core::PackerEnergy > & pair_energy_vector,
260  ) const = 0;
261 
262 
263  ////////////////////////////////////////////////////////////////////////////////////////////
264  //////////// the same methods again --- overloaded to accept a AnalyticEnergyEvaluator /////
265  ////////////////////////////////////////////////////////////////////////////////////////////
266 
267  virtual
268  void
269  trie_vs_trie(
270  RotamerTrieBase const & other,
271  TrieCountPairBase & cp,
272  etable::AnalyticEtableEvaluator const & sfxn,
273  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
274  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
275  ) const = 0;
276 
277  virtual
278  void
281  TrieCountPairBase & cp,
282  etable::AnalyticEtableEvaluator const & sfxn,
283  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
284  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
285  ) const = 0;
286 
287  virtual
288  void
291  TrieCountPairBase & cp,
292  etable::AnalyticEtableEvaluator const & sfxn,
293  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
294  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
295  ) const = 0;
296 
297  virtual
298  void
301  TrieCountPairBase & cp,
302  etable::AnalyticEtableEvaluator const & sfxn,
303  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
304  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
305  ) const = 0;
306 
307  virtual
308  void
311  TrieCountPairBase & cp,
312  etable::AnalyticEtableEvaluator const & sfxn,
313  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
314  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
315  ) const = 0;
316 
317 
318  /// This function is called when the coarse etable energy function get mixed up with non-etable tries.
319  /// It produces a utility_exit call.
320  virtual
321  void
323  RotamerTrieBase const & other,
324  TrieCountPairBase & cp,
325  etable::AnalyticEtableEvaluator const & sfxn,
326  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
327  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
328  ) const = 0;
329 
330  /// Four trie-vs-path type resolution functions
331  virtual
332  void
333  trie_vs_path(
334  RotamerTrieBase const & other,
335  TrieCountPairBase & cp,
336  etable::AnalyticEtableEvaluator const & sfxn,
337  utility::vector1< core::PackerEnergy > & pair_energy_vector,
339  ) const = 0;
340 
341 
342  virtual
343  void
346  TrieCountPairBase & cp,
347  etable::AnalyticEtableEvaluator const & sfxn,
348  utility::vector1< core::PackerEnergy > & pair_energy_vector,
350  ) const = 0;
351 
352 
353  virtual
354  void
357  TrieCountPairBase & cp,
358  etable::AnalyticEtableEvaluator const & sfxn,
359  utility::vector1< core::PackerEnergy > & pair_energy_vector,
361  ) const = 0;
362 
363 
364 
365  virtual
366  void
369  TrieCountPairBase & cp,
370  etable::AnalyticEtableEvaluator const & sfxn,
371  utility::vector1< core::PackerEnergy > & pair_energy_vector,
373  ) const = 0;
374 
375  virtual
376  void
379  TrieCountPairBase & cp,
380  etable::AnalyticEtableEvaluator const & sfxn,
381  utility::vector1< core::PackerEnergy > & pair_energy_vector,
383  ) const = 0;
384 
385 
386  /// This function is called when the coarse etable energy function get mixed up with non-etable tries.
387  /// It produces a utility_exit call.
388  virtual
389  void
391  RotamerTrieBase const & other,
392  TrieCountPairBase & cp,
393  etable::AnalyticEtableEvaluator const & sfxn,
394  utility::vector1< core::PackerEnergy > & pair_energy_vector,
396  ) const = 0;
397 
398  //// The same methods, again, for the HBondEnergies
399 
400  virtual
401  void
402  trie_vs_trie(
403  RotamerTrieBase const & other,
404  TrieCountPairBase & cp,
405  hbonds::HBondEnergy const & sfxn,
406  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
407  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
408  ) const = 0;
409 
410 
411  /// This function is called when hbond energy function get mixed up with non-hbond tries.
412  /// It produces a utility_exit call.
413  virtual
414  void
416  RotamerTrieBase const & other,
417  TrieCountPairBase & cp,
418  hbonds::HBondEnergy const & sfxn,
419  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
420  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
421  ) const = 0;
422 
423  virtual
424  void
427  TrieCountPairBase & cp,
428  hbonds::HBondEnergy const & sfxn,
429  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
430  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
431  ) const = 0;
432 
433  virtual
434  void
435  trie_vs_path(
436  RotamerTrieBase const & other,
437  TrieCountPairBase & cp,
438  hbonds::HBondEnergy const & sfxn,
439  utility::vector1< core::PackerEnergy > & pair_energy_vector,
441  ) const = 0;
442 
443  /// This function is called when hbond energy function gets mixed up with non-hbond tries.
444  /// It produces a utility_exit call.
445  virtual
446  void
448  RotamerTrieBase const & other,
449  TrieCountPairBase & cp,
450  hbonds::HBondEnergy const & sfxn,
451  utility::vector1< core::PackerEnergy > & pair_energy_vector,
453  ) const = 0;
454 
455 
456  virtual
457  void
460  TrieCountPairBase & cp,
461  hbonds::HBondEnergy const & sfxn,
462  utility::vector1< core::PackerEnergy > & pair_energy_vector,
464  ) const = 0;
465 
466 /// The same methods again, for Hack Elec E
467  virtual
468  void
469  trie_vs_trie(
470  RotamerTrieBase const & other,
471  TrieCountPairBase & cp,
472  hackelec::HackElecEnergy const & sfxn,
473  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
474  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
475  ) const = 0;
476 
477  virtual
478  void
481  TrieCountPairBase & cp,
482  hackelec::HackElecEnergy const & sfxn,
483  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
484  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
485  ) const = 0;
486 
487  virtual
488  void
491  TrieCountPairBase & cp,
492  hackelec::HackElecEnergy const & sfxn,
493  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
494  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
495  ) const = 0;
496 
497  virtual
498  void
501  TrieCountPairBase & cp,
502  hackelec::HackElecEnergy const & sfxn,
503  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
504  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
505  ) const = 0;
506 
507  virtual
508  void
511  TrieCountPairBase & cp,
512  hackelec::HackElecEnergy const & sfxn,
513  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
514  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
515  ) const = 0;
516 
517 
518  /// This function is called when the etable energy function get mixed up with non-etable tries.
519  /// It produces a utility_exit call.
520  virtual
521  void
523  RotamerTrieBase const & other,
524  TrieCountPairBase & cp,
525  hackelec::HackElecEnergy const & sfxn,
526  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
527  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
528  ) const = 0;
529 
530  /// Four trie-vs-path type resolution functions
531  virtual
532  void
533  trie_vs_path(
534  RotamerTrieBase const & other,
535  TrieCountPairBase & cp,
536  hackelec::HackElecEnergy const & sfxn,
537  utility::vector1< core::PackerEnergy > & pair_energy_vector,
539  ) const = 0;
540 
541 
542  virtual
543  void
546  TrieCountPairBase & cp,
547  hackelec::HackElecEnergy const & sfxn,
548  utility::vector1< core::PackerEnergy > & pair_energy_vector,
550  ) const = 0;
551 
552 
553  virtual
554  void
557  TrieCountPairBase & cp,
558  hackelec::HackElecEnergy const & sfxn,
559  utility::vector1< core::PackerEnergy > & pair_energy_vector,
561  ) const = 0;
562 
563 
564 
565  virtual
566  void
569  TrieCountPairBase & cp,
570  hackelec::HackElecEnergy const & sfxn,
571  utility::vector1< core::PackerEnergy > & pair_energy_vector,
573  ) const = 0;
574 
575  virtual
576  void
579  TrieCountPairBase & cp,
580  hackelec::HackElecEnergy const & sfxn,
581  utility::vector1< core::PackerEnergy > & pair_energy_vector,
583  ) const = 0;
584 
585 
586 
587  /// This function is called when non-hackelec tries get mixed up with the HackElecEnergy function
588  /// It produces a utility_exit call.
589  virtual
590  void
592  RotamerTrieBase const & other,
593  TrieCountPairBase & cp,
594  hackelec::HackElecEnergy const & sfxn,
595  utility::vector1< core::PackerEnergy > & pair_energy_vector,
597  ) const = 0;
598 
599 ///////////////////////////////////////////////////////////////////////////////////////
600 //////////// the same methods again --- overloaded for MMLJEnergyTable ////////////////
601 ///////////////////////////////////////////////////////////////////////////////////////
602 
603  virtual
604  void
605  trie_vs_trie(
606  RotamerTrieBase const & other,
607  TrieCountPairBase & cp,
608  methods::MMLJEnergyInter const & sfxn,
609  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
610  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
611  ) const = 0;
612 
613  virtual
614  void
617  TrieCountPairBase & cp,
618  methods::MMLJEnergyInter const & sfxn,
619  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
620  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
621  ) const = 0;
622 
623  virtual
624  void
627  TrieCountPairBase & cp,
628  methods::MMLJEnergyInter const & sfxn,
629  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
630  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
631  ) const = 0;
632 
633  virtual
634  void
637  TrieCountPairBase & cp,
638  methods::MMLJEnergyInter const & sfxn,
639  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
640  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
641  ) const = 0;
642 
643  /// This function is called when the mm lj inter energy function get mixed up with other tries.
644  /// It produces a utility_exit call.
645  virtual
646  void
648  RotamerTrieBase const & other,
649  TrieCountPairBase & cp,
650  methods::MMLJEnergyInter const & sfxn,
651  ObjexxFCL::FArray2D< core::PackerEnergy > & pair_energy_table,
652  ObjexxFCL::FArray2D< core::PackerEnergy > & temp_table
653  ) const = 0;
654 
655  /// Four trie-vs-path type resolution functions
656  virtual
657  void
658  trie_vs_path(
659  RotamerTrieBase const & other,
660  TrieCountPairBase & cp,
661  methods::MMLJEnergyInter const & sfxn,
662  utility::vector1< core::PackerEnergy > & pair_energy_vector,
664  ) const = 0;
665 
666 
667  virtual
668  void
671  TrieCountPairBase & cp,
672  methods::MMLJEnergyInter const & sfxn,
673  utility::vector1< core::PackerEnergy > & pair_energy_vector,
675  ) const = 0;
676 
677 
678  virtual
679  void
682  TrieCountPairBase & cp,
683  methods::MMLJEnergyInter const & sfxn,
684  utility::vector1< core::PackerEnergy > & pair_energy_vector,
686  ) const = 0;
687 
688 
689 
690  virtual
691  void
694  TrieCountPairBase & cp,
695  methods::MMLJEnergyInter const & sfxn,
696  utility::vector1< core::PackerEnergy > & pair_energy_vector,
698  ) const = 0;
699 
700  /// This function is called when the mm lj inter energy function get mixed up with other tries.
701  /// It produces a utility_exit call.
702  virtual
703  void
705  RotamerTrieBase const & other,
706  TrieCountPairBase & cp,
707  methods::MMLJEnergyInter const & sfxn,
708  utility::vector1< core::PackerEnergy > & pair_energy_vector,
710  ) const = 0;
711 
712 
713 };
714 
715 
716 } // namespace trie
717 } // namespace scoring
718 } // namespace core
719 
720 #endif