19 #include <unordered_map>
28 #include <boost/lexical_cast.hpp>
29 #include <boost/config.hpp>
30 #include <boost/graph/adjacency_list.hpp>
31 #include <boost/graph/iteration_macros.hpp>
33 #include <boost/multiprecision/gmp.hpp>
34 #include <boost/random.hpp>
37 #include "uninduced_subgraph.hpp"
43 typedef boost::multiprecision::mpf_float_50 SolutionSizeType;
44 typedef boost::random::uniform_real_distribution<boost::multiprecision::mpf_float_50> RandomDistType;
46 typedef double SolutionSizeType;
47 typedef std::uniform_real_distribution<double> RandomDistType;
55 extern bool * debug_ptr;
56 extern int construction_timeout;
57 extern int * construction_timeout_ptr;
84 A, C, G, U, R, Y, K, M, S, W, B, D, H, V, N
87 static std::unordered_map<int, std::set<int> > base_conversion ={
121 typedef std::deque< int > Sequence;
126 typedef std::pair< SolutionSizeType, SolutionSizeType > ProbabilityFraction;
129 char enum_to_char(
int intletter);
130 int char_to_enum(
char charletter);
134 template <
typename T>
135 std::ostream& operator<<(std::ostream& os, std::vector<T>& vec) {
137 for (
auto elem : vec) {
138 os <<
"(" << i++ <<
") " << elem << std::endl;
145 template <
typename U,
typename V>
146 std::ostream& operator<<(std::ostream& os, std::map<U, V>& m) {
147 for (
typename std::map<U, V>::iterator it = m.begin(); it != m.end(); it++) {
148 os << it->first <<
"," << it->second << std::endl;
155 template <
typename W>
156 std::ostream& operator<<(std::ostream& os, std::set<W>& s) {
157 for (
auto elem : s) {
164 std::ostream& operator<<(std::ostream& os, Sequence& sequence);
167 template <
class T,
size_t ROWS,
size_t COLS >
using matrix = std::array< std::array< T, COLS >, ROWS >;
All classes and functions for the RNA design library are under the design namespace.