gtDMMB / pmfe

Generate the branching polytope for a specified RNA sequence
1 stars 0 forks source link

Verify correct functionality after source code changes made for pull request #2 #3

Closed maxieds closed 4 years ago

maxieds commented 4 years ago

Overview

As requested by @ceheitsch, this issue documents the main changes to the source code in the fall of 2020 in pull request #2 . The motivation for these changes is to make the previously historical PMFE code compile for use on the newer GA Tech math machines for scientific computing and testing work. Note that there is also a separate branch created around this time to enable the same source code base to compile on a modern MacOS desktop (10.14 -- Mojave era release). The changes to the latter branch are only to documentation and the Makefile for that branch, and did not require any substantial modifications to be noticed in the C++ source code, e.g., only changes were made to the build process and not to any possible functionality that the code logic performs.

Summary of changes made to support / merge the pull request

The following is a brief overview of changes required to make pull request #2 happen:

Notes on testing the modifications

Why (I surmise) that the C++ source code modifications were necessary

It appears based on inspection of the most recent CGAL library sources, which are these days all header based aside from requisite Boost library support being enabled, that the historical PMFE code took an older version of one of the CGAL headers and made custom modifications to it. For comparison, a copy of the most recent header file contents is reproduced below to emphasize the difference with the customizations (location: Convex_hull_d/include/CGAL/Regular_complex_d.h):

template <class Refs>
class RC_simplex_d
{ typedef RC_simplex_d<Refs>  Self;
  typedef typename Refs::Point_d Point_d;
  typedef typename Refs::Vertex_handle Vertex_handle;
  typedef typename Refs::Simplex_handle Simplex_handle;
  typedef typename Refs::R R;
  friend class Regular_complex_d<R>;
  friend class Convex_hull_d<R>;
protected:
  std::vector<Vertex_handle>   vertices;    // array of vertices
  std::vector<Simplex_handle>  neighbors;   // opposite simplices
  std::vector<int>             opposite_vertices;
                               // indices of opposite vertices

  //------ only for convex hulls ------------------
  typedef typename R::Hyperplane_d Hyperplane_d;
  Hyperplane_d h_base;   // hyperplane supporting base facet
  bool         visited_; // visited mark when traversing
  //------ only for convex hulls ------------------

  Vertex_handle  vertex(int i) const { return vertices[i]; }
  Simplex_handle neighbor(int i) const { return neighbors[i]; }
  int opposite_vertex_index(int i) const { return opposite_vertices[i]; }

  void set_vertex(int i, Vertex_handle v) { vertices[i] = v; }
  void set_neighbor(int i, Simplex_handle s) { neighbors[i]=s; }
  void set_opposite_vertex_index(int i, int index)
  { opposite_vertices[i]=index; }

  //------ only for convex hulls ------------------
  Hyperplane_d hyperplane_of_base_facet() const { return h_base; }
  void set_hyperplane_of_base_facet(const Hyperplane_d& h) { h_base = h; }
  bool& visited() { return visited_; }
  //------ only for convex hulls ------------------

public:
  typedef typename std::vector<Vertex_handle>::const_iterator
          VIV_iterator;
  struct Point_from_VIV_iterator {
    typedef Vertex_handle argument_type;
    typedef Point_d      result_type;
    result_type& operator()(argument_type& x) const
    { return x->point(); }
    const result_type& operator()(const argument_type& x) const
    { return x->point(); }
  };

  typedef CGAL::Iterator_project<VIV_iterator,Point_from_VIV_iterator,
    const Point_d&, const Point_d*> Point_const_iterator;

  Point_const_iterator points_begin() const
  { return Point_const_iterator(vertices.begin()); }
  Point_const_iterator points_end() const
  { return Point_const_iterator(vertices.end()); }

  void* pp;
  void*   for_compact_container() const { return pp; }
  void for_compact_container(void *p) { pp = p; }

And then, here is the PMFE version (cf. reproduced // ----- Added for iB4e comment markers):

template <class Refs>
class RC_simplex_d
{ typedef RC_simplex_d<Refs>  Self;
  typedef typename Refs::Point_d Point_d;
  typedef typename Refs::Vertex_handle Vertex_handle;
  typedef typename Refs::Simplex_handle Simplex_handle;
  typedef typename Refs::R R;
  friend class Regular_complex_d<R>;
  friend class Convex_hull_d<R>;
protected:
  std::vector<Vertex_handle>   vertices;    // array of vertices
  std::vector<Simplex_handle>  neighbors;   // opposite simplices
  std::vector<int>             opposite_vertices;
                               // indices of opposite vertices

  //------ only for convex hulls ------------------
  typedef typename R::Hyperplane_d Hyperplane_d;
  Hyperplane_d h_base;   // hyperplane supporting base facet
  bool         visited_; // visited mark when traversing
  //------ only for convex hulls ------------------

  // ----- Added for iB4e
  bool confirmed_;
  // ----- Added for iB4e

  Vertex_handle  vertex(int i) const { return vertices[i]; }
  Simplex_handle neighbor(int i) const { return neighbors[i]; }
  int opposite_vertex_index(int i) const { return opposite_vertices[i]; }

  void set_vertex(int i, Vertex_handle v) { vertices[i] = v; }
  void set_neighbor(int i, Simplex_handle s) { neighbors[i]=s; }
  void set_opposite_vertex_index(int i, int index)
  { opposite_vertices[i]=index; }

  //------ only for convex hulls ------------------
  Hyperplane_d hyperplane_of_base_facet() const { return h_base; }
  void set_hyperplane_of_base_facet(const Hyperplane_d& h) { h_base = h; }
  bool& visited() { return visited_; }
  //------ only for convex hulls ------------------

public:
  typedef typename std::vector<Vertex_handle>::const_iterator
          VIV_iterator;
  struct Point_from_VIV_iterator {
    typedef Vertex_handle argument_type;
    typedef Point_d      result_type;
    result_type& operator()(argument_type& x) const
    { return x->point(); }
    const result_type& operator()(const argument_type& x) const
    { return x->point(); }
  };

  typedef CGAL::Iterator_project<VIV_iterator,Point_from_VIV_iterator,
    const Point_d&, const Point_d*> Point_const_iterator;

  Point_const_iterator points_begin() const
  { return Point_const_iterator(vertices.begin()); }
  Point_const_iterator points_end() const
  { return Point_const_iterator(vertices.end()); }

  void* pp;
  void*   for_compact_container() const { return pp; }
  void* & for_compact_container(void *ppPtr)       { pp = ppPtr; return pp; }

  // ----- Added for iB4e
  bool& is_confirmed() { return confirmed_; };
  void confirm() { confirmed_ = true; };
  // ----- Added for iB4e

Note the form of the calls to void* & for_compact_container(void *) function (now with the custom parameter defined in the header file).

Preliminary testing and verification of PMFE output consistency

When the PMFE sources are compiled, a SageMath specific object file to support a Python library is built. Several standalone binaries are also produced. One of these binaries is called pmfe-test (source file is here). Based on my read of the contents, this implementation is provided as a unit test functionality added to maintain consistency of the outputs produced by the PMFE code over time. Here is the output of running that sub-utility on math-mulberry (using the custom local wrapper script I created):

$ ./RunPMFECommand.sh pmfe-tests -l
All available test cases:
  A. tabira 5S MFE
      [5S][atabira][biological][mfe]
  C. diphtheriae tRNA MFE
      [biological][cdiphtheriae][mfe][tRNA]
  D. mobilis 5S MFE
      [5S][biological][dmobilis][mfe]
  E. coli 5S MFE
      [5S][biological][ecoli][mfe]
  G. arboreum 5S MFE
      [5S][biological][garboreum][mfe]
  H. sapiens tRNA MFE
      [biological][hsapiens][mfe][tRNA]
  L. delbrueckii tRNA MFE
      [biological][ldelbrueckii][mfe][tRNA]
  O. nivara tRNA MFE
      [biological][mfe][onivara][tRNA]
  R. norvegicus 5S MFE
      [5S][biological][mfe][rnorvegicus]
  S. tokodaii tRNA MFE
      [biological][mfe][stokodaii][tRNA]
  A. suum 16S MFE
      [16S][asuum][biological][mfe]
  B. bigemina 16S MFE
      [16S][bbigemina][biological][mfe]
  C. elegans 16S MFE
      [16S][biological][celegans][mfe]
  E. cuniculu 16S MFE
      [16S][biological][ecuniculi][mfe]
  E. hexamita 16S MFE
      [16S][biological][ehexamita][mfe]
  G. ardaea 16S MFE
      [16S][biological][gardaea][mfe]
  G. intestinalis 16S MFE
      [16S][biological][gintestinalis][mfe]
  G. muris 16S MFE
      [16S][biological][gmuris][mfe]
  H. volcanii 16S MFE
      [16S][biological][hvolcanii][mfe]
  V. necatrix 16S MFE
      [16S][biological][mfe][vnecatrix]
  Z. mays 16S MFE
      [16S][biological][mfe][zmays]
  Combinatorial sequence MFE
      [combinatorial][mfe][synthetic]
  Randomly generated sequence MFE
      [mfe][random][synthetic]
  O. nivara tRNA (old) MFE
      [biological][mfe][onivara-old][trna]
24 test cases

$ ./RunPMFECommand.sh pmfe-tests -s -a
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
pmfe-tests is a Catch v1.1 b14 (develop) host application.
Run with -? for options

-------------------------------------------------------------------------------
A. tabira 5S MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:14
...............................................................................

src/test-pmfe.cc:20: 
PASSED:
  REQUIRE( seq.len() == 120 )
with expansion:
  120 == 120

-------------------------------------------------------------------------------
A. tabira 5S MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:14
...............................................................................

src/test-pmfe.cc:30: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-533, 10) )
with expansion:
  -533/10 == -533/10

src/test-pmfe.cc:34: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((((.....((((((((((...((.((((......))))..))..)))...)))))))..(((((((...(.((..(..((....))..)..)))..)))))))))))))))).." )
with expansion:
  "(((((((((.....((((((((((...((.((((......))))..))..)))...)))))))..(((((((...(
  .((..(..((....))..)..)))..)))))))))))))))).."
  ==
  "(((((((((.....((((((((((...((.((((......))))..))..)))...)))))))..(((((((...(
  .((..(..((....))..)..)))..)))))))))))))))).."

-------------------------------------------------------------------------------
C. diphtheriae tRNA MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:39
...............................................................................

src/test-pmfe.cc:45: 
PASSED:
  REQUIRE( seq.len() == 74 )
with expansion:
  74 == 74

-------------------------------------------------------------------------------
C. diphtheriae tRNA MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:39
...............................................................................

src/test-pmfe.cc:55: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-35) )
with expansion:
  -35 == -35

src/test-pmfe.cc:59: 
PASSED:
  REQUIRE( scored_structure.old_string() == "((((((((((.(.(.((((...((.(((.(((((((....)))).))).))).)))))).))))).)))))))." )
with expansion:
  "((((((((((.(.(.((((...((.(((.(((((((....)))).))).))).)))))).))))).)))))))."
  ==
  "((((((((((.(.(.((((...((.(((.(((((((....)))).))).))).)))))).))))).)))))))."

-------------------------------------------------------------------------------
D. mobilis 5S MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:64
...............................................................................

src/test-pmfe.cc:70: 
PASSED:
  REQUIRE( seq.len() == 133 )
with expansion:
  133 == 133

-------------------------------------------------------------------------------
D. mobilis 5S MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:64
...............................................................................

src/test-pmfe.cc:80: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-463, 5) )
with expansion:
  -463/5 == -463/5

src/test-pmfe.cc:84: 
PASSED:
  REQUIRE( scored_structure.old_string() == "..(((((((((((((((....((((((((..(((..((((..(((...)))..))))..)))...)))))))).((((((((((.((((((.((....)))))))).)))))))))))))))).)))))))))" )
with expansion:
  "..(((((((((((((((....((((((((..(((..((((..(((...)))..))))..)))...)))))))).((
  ((((((((.((((((.((....)))))))).)))))))))))))))).)))))))))"
  ==
  "..(((((((((((((((....((((((((..(((..((((..(((...)))..))))..)))...)))))))).((
  ((((((((.((((((.((....)))))))).)))))))))))))))).)))))))))"

-------------------------------------------------------------------------------
E. coli 5S MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:89
...............................................................................

src/test-pmfe.cc:95: 
PASSED:
  REQUIRE( seq.len() == 120 )
with expansion:
  120 == 120

-------------------------------------------------------------------------------
E. coli 5S MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:89
...............................................................................

src/test-pmfe.cc:105: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-549,10) )
with expansion:
  -549/10 == -549/10

src/test-pmfe.cc:109: 
PASSED:
  REQUIRE( scored_structure.old_string() == "((((((((((.........((((....)))).((((((((((.....(((....)))...(((((.......))))).))))))))))..(((.(((....))))))..))))))))))." )
with expansion:
  "((((((((((.........((((....)))).((((((((((.....(((....)))...(((((......
  .))))).))))))))))..(((.(((....))))))..))))))))))."
  ==
  "((((((((((.........((((....)))).((((((((((.....(((....)))...(((((......
  .))))).))))))))))..(((.(((....))))))..))))))))))."

-------------------------------------------------------------------------------
G. arboreum 5S MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:114
...............................................................................

src/test-pmfe.cc:120: 
PASSED:
  REQUIRE( seq.len() == 120 )
with expansion:
  120 == 120

-------------------------------------------------------------------------------
G. arboreum 5S MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:114
...............................................................................

src/test-pmfe.cc:130: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-407, 10) )
with expansion:
  -407/10 == -407/10

src/test-pmfe.cc:134: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((((...((.((.(((....................(((((..(.((((((....)))))).).)))))...((((((.((....))))))))..))).)).))))))))))).." )
with expansion:
  "(((((((((...((.((.(((....................(((((..(.((((((....)))))).).)))))..
  .((((((.((....))))))))..))).)).))))))))))).."
  ==
  "(((((((((...((.((.(((....................(((((..(.((((((....)))))).).)))))..
  .((((((.((....))))))))..))).)).))))))))))).."

-------------------------------------------------------------------------------
H. sapiens tRNA MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:139
...............................................................................

src/test-pmfe.cc:145: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
H. sapiens tRNA MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:139
...............................................................................

src/test-pmfe.cc:155: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-263, 10) )
with expansion:
  -263/10 == -263/10

src/test-pmfe.cc:159: 
PASSED:
  REQUIRE( scored_structure.old_string() == "((((.....)))).((((((.((.(((((((((..((((....))))..))).))))))))...)))))).." )
with expansion:
  "((((.....)))).((((((.((.(((((((((..((((....))))..))).))))))))...)))))).."
  ==
  "((((.....)))).((((((.((.(((((((((..((((....))))..))).))))))))...)))))).."

-------------------------------------------------------------------------------
L. delbrueckii tRNA MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:164
...............................................................................

src/test-pmfe.cc:170: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
L. delbrueckii tRNA MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:164
...............................................................................

src/test-pmfe.cc:180: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-239, 10) )
with expansion:
  -239/10 == -239/10

src/test-pmfe.cc:184: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((...............(((.(((((.......))))).)))..(((.......)))..)))))))." )
with expansion:
  "(((((((...............(((.(((((.......))))).)))..(((.......)))..)))))))."
  ==
  "(((((((...............(((.(((((.......))))).)))..(((.......)))..)))))))."

-------------------------------------------------------------------------------
O. nivara tRNA MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:189
...............................................................................

src/test-pmfe.cc:195: 
PASSED:
  REQUIRE( seq.len() == 73 )
with expansion:
  73 == 73

-------------------------------------------------------------------------------
O. nivara tRNA MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:189
...............................................................................

src/test-pmfe.cc:205: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-271, 10) )
with expansion:
  -271/10 == -271/10

src/test-pmfe.cc:209: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((..((((........))))((((((.......))))))....(((((.......))))))))))))." )
with expansion:
  "(((((((..((((........))))((((((.......))))))....(((((.......))))))))))))."
  ==
  "(((((((..((((........))))((((((.......))))))....(((((.......))))))))))))."

-------------------------------------------------------------------------------
R. norvegicus 5S MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:214
...............................................................................

src/test-pmfe.cc:220: 
PASSED:
  REQUIRE( seq.len() == 123 )
with expansion:
  123 == 123

-------------------------------------------------------------------------------
R. norvegicus 5S MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:214
...............................................................................

src/test-pmfe.cc:230: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-539, 10) )
with expansion:
  -539/10 == -539/10

src/test-pmfe.cc:234: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((((....((((((((...((..((((..((....))..))))..))....)))))).))(((((((...(.((..(.(((....))).)..)))..))))))))))))))))....." )
with expansion:
  "(((((((((....((((((((...((..((((..((....))..))))..))....)))))).))(((((((...(
  .((..(.(((....))).)..)))..))))))))))))))))....."
  ==
  "(((((((((....((((((((...((..((((..((....))..))))..))....)))))).))(((((((...(
  .((..(.(((....))).)..)))..))))))))))))))))....."

-------------------------------------------------------------------------------
S. tokodaii tRNA MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:239
...............................................................................

src/test-pmfe.cc:245: 
PASSED:
  REQUIRE( seq.len() == 74 )
with expansion:
  74 == 74

-------------------------------------------------------------------------------
S. tokodaii tRNA MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:239
...............................................................................

src/test-pmfe.cc:255: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-79, 2) )
with expansion:
  -79/2 == -79/2

src/test-pmfe.cc:259: 
PASSED:
  REQUIRE( scored_structure.old_string() == "((((((((.((((.((...)).))))..((((.(((.((((((.......)))))).))).))))))))))))." )
with expansion:
  "((((((((.((((.((...)).))))..((((.(((.((((((.......)))))).))).))))))))))))."
  ==
  "((((((((.((((.((...)).))))..((((.(((.((((((.......)))))).))).))))))))))))."

-------------------------------------------------------------------------------
A. suum 16S MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:264
...............................................................................

src/test-pmfe.cc:270: 
PASSED:
  REQUIRE( seq.len() == 701 )
with expansion:
  701 == 701

-------------------------------------------------------------------------------
A. suum 16S MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:264
...............................................................................

src/test-pmfe.cc:280: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-149) )
with expansion:
  -149 == -149

src/test-pmfe.cc:284: 
PASSED:
  REQUIRE( scored_structure.old_string() == "..((((.....))))...(((((((((((..............((((((..((.....))..))))))))))))))))).........((.(((((((....((((((..(((((..(((((.((((((((((((((......(((((.((((.((((......)))).)))).)))))(((..(((((..((((((...((.((((((....((((((((..(((((.........)))))..))))))))....)))))).)).......((((((........))))))..)))))).)))))..))).))))))))))).))).)))))..))))).....((((.((((((((((...(((..(((((..(((.((...((((....))))...))..(((((((.(((.((.((.((((....(((((((((.....((.(((..((((.((......)).))))..))).)))))))))))..)))).)))).)))))))))).....)))..))))......((((.((((.((.(((((((((....))))))).....)).)).)))).))))...................)..)))...))))))))))((..........))......)))).))))))....))))))).))..(.((((((((((....)))))))))).)....." )
with expansion:
  "..((((.....))))...(((((((((((..............((((((..((.....)).
  .))))))))))))))))).........((.(((((((....((((((..(((((..(((((.((((((((((((((.
  .....(((((.((((.((((......)))).)))).)))))(((..(((((..((((((...((.((((((....((
  ((((((..(((((.........)))))..))))))))....)))))).)).......((((((........))))))
  ..)))))).)))))..))).))))))))))).))).)))))..))))).....((((.((((((((((...(((..(
  ((((..(((.((...((((....))))...))..(((((((.(((.((.((.((((....(((((((((.....((.
  (((..((((.((......)).))))..))).)))))))))))..)))).)))).)))))))))).....))).
  .))))......((((.((((.((.(((((((((....))))))).....)).)).)))).)))).............
  ......)..)))...))))))))))((..........))......)))).))))))....))))))).))..(.(((
  (((((((....)))))))))).)....."
  ==
  "..((((.....))))...(((((((((((..............((((((..((.....)).
  .))))))))))))))))).........((.(((((((....((((((..(((((..(((((.((((((((((((((.
  .....(((((.((((.((((......)))).)))).)))))(((..(((((..((((((...((.((((((....((
  ((((((..(((((.........)))))..))))))))....)))))).)).......((((((........))))))
  ..)))))).)))))..))).))))))))))).))).)))))..))))).....((((.((((((((((...(((..(
  ((((..(((.((...((((....))))...))..(((((((.(((.((.((.((((....(((((((((.....((.
  (((..((((.((......)).))))..))).)))))))))))..)))).)))).)))))))))).....))).
  .))))......((((.((((.((.(((((((((....))))))).....)).)).)))).)))).............
  ......)..)))...))))))))))((..........))......)))).))))))....))))))).))..(.(((
  (((((((....)))))))))).)....."

-------------------------------------------------------------------------------
B. bigemina 16S MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:289
...............................................................................

src/test-pmfe.cc:295: 
PASSED:
  REQUIRE( seq.len() == 1701 )
with expansion:
  1701 == 1701

-------------------------------------------------------------------------------
B. bigemina 16S MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:289
...............................................................................

src/test-pmfe.cc:305: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-573) )
with expansion:
  -573 == -573

src/test-pmfe.cc:309: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((......((((..(((((((((((((((.((.(((((.((.((((.....)))).)).))))).....((.((((((......(((((((((..((((((..(((..(((((((((..((((((.(((((......))))).))).))).....))))))).(((((((((......((..(((....)))..))..)))))))))................((((((((.(((.....))).))))))))..))..)))..)))))).)))))).))).....))))))))....)).))))))).(((((((((.(((((((((.....(((((((........((((..((((((((((........)))).)).).)))..))))(((.((.(((((....((((((...(((((...))))).))))))...................((((((..(((((.(((((((.((..((((((.(.....).))))))..)).))))))).))))))))))).))))).)).)))....))))))).(((.....))).........))))))))).(((......((((.(((........((((..(((......(((.......)))......))).))))........))).)))).......(((((((.(((((((....))).))))))))))).)))..((((((((((((((((((....))))))))))))).)))))..))))))))).((((((((..(((((......(((((((((.((((((.(((.((((......)))).)))..)))))).)))))....(((....)))..)))).....)))))..))))))))..(((....)))..)))))))).(((..((((((..(((((((.((((..(((..((((.....((((.((..(((((((..(((.......))).)))))))..))....((....))..))))....)))).))).)))).))))).))...))))))......(((((((..(.((((((((.((..(((((.....))))).)).((((((((.........((....))......(((((..((...))..)))))..))))))))..)))))))))..)))))))(((((((((((((.(((.((..((((((((..(.((.....((((.(((.....((....))))).))))....)))..))))))))..))..((((((..(((((((.(((..(((((.....((((..(((.....)))..))))..((((((((((...(((....)))..)).))))))))...)))))..))).((((((((....((((....)))).((.((..((...(((....)))..))..)).)).)))))))).(((((...(((((((.......)))))))....))))))))))))..........(((((((((.....)))))))))....))))))..)))...))))).))))))))....(((((.((....(((((((..(((..((....(...((..(((....((((....))))....)))..))...)....))..)))..)))))))...)).)))))..)))......))))(((((((((....)))))))))...)))..." )
with expansion:
  "(((......((((..(((((((((((((((.((.(((((.((.((((.....)))).)).))))).....((.(((
  (((......(((((((((..((((((..(((..(((((((((..((((((.(((((......))))).))).)))..
  ...))))))).(((((((((......((..(((....)))..))..)))))))))................((((((
  ((.(((.....))).))))))))..))..)))..)))))).)))))).))).....))))))))....))
  .))))))).(((((((((.(((((((((.....(((((((........((((..((((((((((........))))
  .)).).)))..))))(((.((.(((((....((((((...(((((...))))).)))))).................
  ..((((((..(((((.(((((((.((..((((((.(.....).))))))..)).))))))).)))))))))))
  .))))).)).)))....))))))).(((.....))).........))))))))).(((......((((.(((.....
  ...((((..(((......(((.......)))......))).))))........))).)))).......(((((((.(
  ((((((....))).))))))))))).)))..((((((((((((((((((....))))))))))))).))))).
  .))))))))).((((((((..(((((......(((((((((.((((((.(((.((((......)))).))).
  .)))))).)))))....(((....)))..)))).....)))))..))))))))..(((....)))..)))))))).(
  ((..((((((..(((((((.((((..(((..((((.....((((.((..(((((((..(((.......)))
  .)))))))..))....((....))..))))....)))).))).)))).))))).))...))))))......((((((
  (..(.((((((((.((..(((((.....))))).)).((((((((.........((....))......(((((..((
  ...))..)))))..))))))))..)))))))))..)))))))(((((((((((((.(((.((..((((((((..(.(
  (.....((((.(((.....((....))))).))))....)))..))))))))..))..((((((..(((((((.(((
  ..(((((.....((((..(((.....)))..))))..((((((((((...(((....)))..)).))))))))..
  .)))))..))).((((((((....((((....)))).((.((..((...(((....)))..))..)).))
  .)))))))).(((((...(((((((.......)))))))....))))))))))))..........(((((((((...
  ..)))))))))....))))))..)))...))))).))))))))....(((((.((....(((((((..(((..((..
  ..(...((..(((....((((....))))....)))..))...)....))..)))..)))))))...)).))))).
  .)))......))))(((((((((....)))))))))...)))..."
  ==
  "(((......((((..(((((((((((((((.((.(((((.((.((((.....)))).)).))))).....((.(((
  (((......(((((((((..((((((..(((..(((((((((..((((((.(((((......))))).))).)))..
  ...))))))).(((((((((......((..(((....)))..))..)))))))))................((((((
  ((.(((.....))).))))))))..))..)))..)))))).)))))).))).....))))))))....))
  .))))))).(((((((((.(((((((((.....(((((((........((((..((((((((((........))))
  .)).).)))..))))(((.((.(((((....((((((...(((((...))))).)))))).................
  ..((((((..(((((.(((((((.((..((((((.(.....).))))))..)).))))))).)))))))))))
  .))))).)).)))....))))))).(((.....))).........))))))))).(((......((((.(((.....
  ...((((..(((......(((.......)))......))).))))........))).)))).......(((((((.(
  ((((((....))).))))))))))).)))..((((((((((((((((((....))))))))))))).))))).
  .))))))))).((((((((..(((((......(((((((((.((((((.(((.((((......)))).))).
  .)))))).)))))....(((....)))..)))).....)))))..))))))))..(((....)))..)))))))).(
  ((..((((((..(((((((.((((..(((..((((.....((((.((..(((((((..(((.......)))
  .)))))))..))....((....))..))))....)))).))).)))).))))).))...))))))......((((((
  (..(.((((((((.((..(((((.....))))).)).((((((((.........((....))......(((((..((
  ...))..)))))..))))))))..)))))))))..)))))))(((((((((((((.(((.((..((((((((..(.(
  (.....((((.(((.....((....))))).))))....)))..))))))))..))..((((((..(((((((.(((
  ..(((((.....((((..(((.....)))..))))..((((((((((...(((....)))..)).))))))))..
  .)))))..))).((((((((....((((....)))).((.((..((...(((....)))..))..)).))
  .)))))))).(((((...(((((((.......)))))))....))))))))))))..........(((((((((...
  ..)))))))))....))))))..)))...))))).))))))))....(((((.((....(((((((..(((..((..
  ..(...((..(((....((((....))))....)))..))...)....))..)))..)))))))...)).))))).
  .)))......))))(((((((((....)))))))))...)))..."

-------------------------------------------------------------------------------
C. elegans 16S MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:314
...............................................................................

src/test-pmfe.cc:320: 
PASSED:
  REQUIRE( seq.len() == 697 )
with expansion:
  697 == 697

-------------------------------------------------------------------------------
C. elegans 16S MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:314
...............................................................................

src/test-pmfe.cc:330: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-285, 2) )
with expansion:
  -285/2 == -285/2

src/test-pmfe.cc:334: 
PASSED:
  REQUIRE( scored_structure.old_string() == "...((((..(.....)..)))).......(((((.((((((.((((((..........)))))))))))))))))..........(((((....(((..(((.(((((((....((((....(((..(((((((((..(((((.(((..((..((....))..))..((((((.(((.((((((((((((((((((..........((((((((..........))))))))...))))))..)))))))))..))).))).))))))...))).)))))....))))...)))))..)))....)))).(((......(((((((....(((..((....))..)))...(((((.((.(((((..(((((..(((.((...((((....)))).......(((((.((...(((.((.(((((...((((((((((...(((((((((.........))))))))).....)))))))))).))))).)))))...)).)))))..)))))..)))..........(((((((.(((((((...(((((....)))))....(((((.....)))))..))))))).)))))))..))..))))).)).)))))..)))))))....)))...)))))))...)))..)))..))))).....(.((((((((((....)))))))))).)...." )
with expansion:
  "...((((..(.....)..)))).......(((((.((((((.((((((..........))))))))))))))))).
  .........(((((....(((..(((.(((((((....((((....(((..(((((((((..(((((.(((..((..
  ((....))..))..((((((.(((.((((((((((((((((((..........((((((((.........
  .))))))))...))))))..)))))))))..))).))).))))))...))).)))))....))))...))))).
  .)))....)))).(((......(((((((....(((..((....))..)))...(((((.((.(((((..(((((..
  (((.((...((((....)))).......(((((.((...(((.((.(((((...((((((((((...(((((((((.
  ........))))))))).....)))))))))).))))).)))))...)).)))))..)))))..)))..........
  (((((((.(((((((...(((((....)))))....(((((.....)))))..))))))).)))))))..)).
  .))))).)).)))))..)))))))....)))...)))))))...)))..)))..))))).....(.((((((((((.
  ...)))))))))).)...."
  ==
  "...((((..(.....)..)))).......(((((.((((((.((((((..........))))))))))))))))).
  .........(((((....(((..(((.(((((((....((((....(((..(((((((((..(((((.(((..((..
  ((....))..))..((((((.(((.((((((((((((((((((..........((((((((.........
  .))))))))...))))))..)))))))))..))).))).))))))...))).)))))....))))...))))).
  .)))....)))).(((......(((((((....(((..((....))..)))...(((((.((.(((((..(((((..
  (((.((...((((....)))).......(((((.((...(((.((.(((((...((((((((((...(((((((((.
  ........))))))))).....)))))))))).))))).)))))...)).)))))..)))))..)))..........
  (((((((.(((((((...(((((....)))))....(((((.....)))))..))))))).)))))))..)).
  .))))).)).)))))..)))))))....)))...)))))))...)))..)))..))))).....(.((((((((((.
  ...)))))))))).)...."

-------------------------------------------------------------------------------
E. cuniculu 16S MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:339
...............................................................................

src/test-pmfe.cc:345: 
PASSED:
  REQUIRE( seq.len() == 1295 )
with expansion:
  1295 == 1295

-------------------------------------------------------------------------------
E. cuniculu 16S MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:339
...............................................................................

src/test-pmfe.cc:355: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-487) )
with expansion:
  -487 == -487

src/test-pmfe.cc:359: 
PASSED:
  REQUIRE( scored_structure.old_string() == "........(((((((((.(((.((...(((.((((((((((((((((.....(((((((.((((((..(..((((....((((((((.((((((....)))..))).)))))))).....((.((.((.((((((....)))))).)).)).))..))))..))))))).)))))))..(((((..((..((.((...((((((((.......))))))))...)).))..)).)))))........))))))))))))))))((.((((((...(((((.(((((((((((.(.(..((.(((.(((((..((((((((..(((....))))))).........))))..))))).)))..(..((((((.((((((...(((((..(((((..(..(.(((.((((.((((.(((((((...........)))).))).)))).))))))).)..)..))))).)))))...)))).)).))))))..)............))..).).)))))))))))..(((((((.((((((((.((((((((.(((...((.(.(....).).))..(((....((((.((.((.((.(((((((((..(((..((((((.(((((((.(((.(......))))...((.((...(((((....)))))...))))...))))))).)).))))......)))...(((((((.((.....)).)))))))......((((...((((((...(((((..((((((..((((....))))...))).......)))..))))).....((((.....)))).(((((((((((.......((((.(.(((((((.....((.((((((.((((((((...((((.((((.(((..(....(((((.(((...))).)))))......)..))).)))).)))).((((((.....(....)...))))))........)))))))).))))))..)).(((..((........))..)))....))))))).).))))..)))))))))))))))))...))))..))))))))).)))))).))))..((((((.(....).))))))....))).....))).......(((((((.....)))))))......)))))))))))))))))))))))...)))))..(((((.(..((((((.(.((((..(((((....)))))..)))).).))))))..).)))))..........)).)))).))..)))....)).))))))))))))..." )
with expansion:
  "........(((((((((.(((.((...(((.((((((((((((((((.....(((((((.((((((..(..((((.
  ...((((((((.((((((....)))..))).)))))))).....((.((.((.((((((....)))))).)).))
  .))..))))..))))))).)))))))..(((((..((..((.((...((((((((.......))))))))...))
  .))..)).)))))........))))))))))))))))((.((((((...(((((.(((((((((((.(.(..((.((
  (.(((((..((((((((..(((....))))))).........))))..))))).)))..(..((((((.((((((..
  .(((((..(((((..(..(.(((.((((.((((.(((((((...........)))).))).)))).))))))).).
  .)..))))).)))))...)))).)).))))))..)............))..).).)))))))))))..(((((((.(
  (((((((.((((((((.(((...((.(.(....).).))..(((....((((.((.((.((.(((((((((..(((.
  .((((((.(((((((.(((.(......))))...((.((...(((((....)))))...))))...))))))).))
  .))))......)))...(((((((.((.....)).)))))))......((((...((((((...(((((..((((((
  ..((((....))))...))).......)))..))))).....((((.....)))).(((((((((((.......(((
  (.(.(((((((.....((.((((((.((((((((...((((.((((.(((..(....(((((.(((...)))
  .)))))......)..))).)))).)))).((((((.....(....)...))))))........))))))))
  .))))))..)).(((..((........))..)))....))))))).).))))..)))))))))))))))))..
  .))))..))))))))).)))))).))))..((((((.(....).))))))....))).....))).......(((((
  ((.....)))))))......)))))))))))))))))))))))...)))))..(((((.(..((((((.(.((((..
  (((((....)))))..)))).).))))))..).)))))..........)).)))).))..)))....))
  .))))))))))))..."
  ==
  "........(((((((((.(((.((...(((.((((((((((((((((.....(((((((.((((((..(..((((.
  ...((((((((.((((((....)))..))).)))))))).....((.((.((.((((((....)))))).)).))
  .))..))))..))))))).)))))))..(((((..((..((.((...((((((((.......))))))))...))
  .))..)).)))))........))))))))))))))))((.((((((...(((((.(((((((((((.(.(..((.((
  (.(((((..((((((((..(((....))))))).........))))..))))).)))..(..((((((.((((((..
  .(((((..(((((..(..(.(((.((((.((((.(((((((...........)))).))).)))).))))))).).
  .)..))))).)))))...)))).)).))))))..)............))..).).)))))))))))..(((((((.(
  (((((((.((((((((.(((...((.(.(....).).))..(((....((((.((.((.((.(((((((((..(((.
  .((((((.(((((((.(((.(......))))...((.((...(((((....)))))...))))...))))))).))
  .))))......)))...(((((((.((.....)).)))))))......((((...((((((...(((((..((((((
  ..((((....))))...))).......)))..))))).....((((.....)))).(((((((((((.......(((
  (.(.(((((((.....((.((((((.((((((((...((((.((((.(((..(....(((((.(((...)))
  .)))))......)..))).)))).)))).((((((.....(....)...))))))........))))))))
  .))))))..)).(((..((........))..)))....))))))).).))))..)))))))))))))))))..
  .))))..))))))))).)))))).))))..((((((.(....).))))))....))).....))).......(((((
  ((.....)))))))......)))))))))))))))))))))))...)))))..(((((.(..((((((.(.((((..
  (((((....)))))..)))).).))))))..).)))))..........)).)))).))..)))....))
  .))))))))))))..."

-------------------------------------------------------------------------------
E. hexamita 16S MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:364
...............................................................................

src/test-pmfe.cc:370: 
PASSED:
  REQUIRE( seq.len() == 1550 )
with expansion:
  1550 == 1550

-------------------------------------------------------------------------------
E. hexamita 16S MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:364
...............................................................................

src/test-pmfe.cc:380: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-2824, 5) )
with expansion:
  -2824/5 == -2824/5

src/test-pmfe.cc:384: 
PASSED:
  REQUIRE( scored_structure.old_string() == "...(((((.......)))))...(((..(((((((((........((((.((((((((..((((.((((..(((....)))..(((((((((((..((((...((....))))))..)))).......))))))).)))).))))(((((((((.((.....((((((......))).(((((((...((((((...(((((.(.....(((.(((.(((.(((.....(((((((((((...((((.(((((((.((....(((((((((.....(((((((....(((((..(((...((..((((((.(((......))).....((((((.((.....))))))))))))))..))..(((.((.(((((.(..((((((...(((((....))))).))))))..)............((((((....)))))).....(((..((((((.(......)))))))...(((.....)))....)))...))))).)).))))))..))))).......))))))))))))))))..)).))).))))..)))))))).)))...(((((((((((((..((((((((.....)))))))).(((((...((....))((((.......))))....)))))...(((((((((....))))))))).((.......((((((((...((((((.((.(((((((((...................))))))))).))........((....)).))))))..))))))))..(((((((((((((....((((((((..(((((............)))))..))))))))......(((((((.....(((.(((((((....))))))).)))...((....)).((((((((((.(..((.((.........)).))..)))))))))))..)))))))......((((.((((.....)))).))))...))))...))))).))))............)).(.((((((((.((((.((.((((((((((....(((....((((((.((((((.((((..(((((.((.((.....))..)).))))).)))).)))))).))))))..)))..((.((((((((((((((.....)))))...(((((((.....))))).))....)))))).))).)).)))))))..))))).)))))).)))))).)..((((...((((.((((((((..((((.((..(((.(((....)))..)))....))))))....)))))))).)))).((((.......(((...(((((((....)))))))..)))....)))).)))).....)))))))))))))..))))...))).))).))))))).))))))))))))))))))....))).....)).)))))))))..............)))))))).((..((((.(...(((((.....))).))..).)))).)).......))))((((((((....))))))))..)))).))))))))" )
with expansion:
  "...(((((.......)))))...(((..(((((((((........((((.((((((((..((((.((((..(((..
  ..)))..(((((((((((..((((...((....))))))..)))).......))))))).)))).))))((((((((
  (.((.....((((((......))).(((((((...((((((...(((((.(.....(((.(((.(((.(((.....(
  ((((((((((...((((.(((((((.((....(((((((((.....(((((((....(((((..(((...((..(((
  (((.(((......))).....((((((.((.....))))))))))))))..))..(((.((.(((((.(..((((((
  ...(((((....))))).))))))..)............((((((....)))))).....(((..((((((.(....
  ..)))))))...(((.....)))....)))...))))).)).))))))..)))))......
  .))))))))))))))))..)).))).))))..)))))))).)))...(((((((((((((..((((((((....
  .)))))))).(((((...((....))((((.......))))....)))))...(((((((((....))))))))).(
  (.......((((((((...((((((.((.(((((((((...................))))))))).))........
  ((....)).))))))..))))))))..(((((((((((((....((((((((..(((((............))))).
  .))))))))......(((((((.....(((.(((((((....))))))).)))...((....)).((((((((((.(
  ..((.((.........)).))..)))))))))))..)))))))......((((.((((.....)))).))))..
  .))))...))))).))))............)).(.((((((((.((((.((.((((((((((....(((....((((
  ((.((((((.((((..(((((.((.((.....))..)).))))).)))).)))))).))))))..)))..((.((((
  ((((((((((.....)))))...(((((((.....))))).))....)))))).))).)).)))))))..)))))
  .)))))).)))))).)..((((...((((.((((((((..((((.((..(((.(((....)))..)))...
  .))))))....)))))))).)))).((((.......(((...(((((((....)))))))..)))....))))
  .)))).....)))))))))))))..))))...))).))).))))))).))))))))))))))))))....)))....
  .)).)))))))))..............)))))))).((..((((.(...(((((.....))).))..).)))).)).
  ......))))((((((((....))))))))..)))).))))))))"
  ==
  "...(((((.......)))))...(((..(((((((((........((((.((((((((..((((.((((..(((..
  ..)))..(((((((((((..((((...((....))))))..)))).......))))))).)))).))))((((((((
  (.((.....((((((......))).(((((((...((((((...(((((.(.....(((.(((.(((.(((.....(
  ((((((((((...((((.(((((((.((....(((((((((.....(((((((....(((((..(((...((..(((
  (((.(((......))).....((((((.((.....))))))))))))))..))..(((.((.(((((.(..((((((
  ...(((((....))))).))))))..)............((((((....)))))).....(((..((((((.(....
  ..)))))))...(((.....)))....)))...))))).)).))))))..)))))......
  .))))))))))))))))..)).))).))))..)))))))).)))...(((((((((((((..((((((((....
  .)))))))).(((((...((....))((((.......))))....)))))...(((((((((....))))))))).(
  (.......((((((((...((((((.((.(((((((((...................))))))))).))........
  ((....)).))))))..))))))))..(((((((((((((....((((((((..(((((............))))).
  .))))))))......(((((((.....(((.(((((((....))))))).)))...((....)).((((((((((.(
  ..((.((.........)).))..)))))))))))..)))))))......((((.((((.....)))).))))..
  .))))...))))).))))............)).(.((((((((.((((.((.((((((((((....(((....((((
  ((.((((((.((((..(((((.((.((.....))..)).))))).)))).)))))).))))))..)))..((.((((
  ((((((((((.....)))))...(((((((.....))))).))....)))))).))).)).)))))))..)))))
  .)))))).)))))).)..((((...((((.((((((((..((((.((..(((.(((....)))..)))...
  .))))))....)))))))).)))).((((.......(((...(((((((....)))))))..)))....))))
  .)))).....)))))))))))))..))))...))).))).))))))).))))))))))))))))))....)))....
  .)).)))))))))..............)))))))).((..((((.(...(((((.....))).))..).)))).)).
  ......))))((((((((....))))))))..)))).))))))))"

-------------------------------------------------------------------------------
G. ardaea 16S MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:389
...............................................................................

src/test-pmfe.cc:395: 
PASSED:
  REQUIRE( seq.len() == 1435 )
with expansion:
  1435 == 1435

-------------------------------------------------------------------------------
G. ardaea 16S MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:389
...............................................................................

src/test-pmfe.cc:405: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-7619, 10) )
with expansion:
  -7619/10 == -7619/10

src/test-pmfe.cc:409: 
PASSED:
  REQUIRE( scored_structure.old_string() == "..(((..(.((.((((((.((((((..((..((((((..(....)..(((.(((.(((....)))))).)))...))))))..))..........((..((.(.(((.(((.(((((((..(((..(((((((..((((((....))))))....(((..((((....)))).((.(.((.((((.((((((((........((((.((((..(((((((((.....(((.((((((((.......)))))))))))......((.(((((..(((((....((((((((((((..(((((((........)))))))...)))......((..(((((.......))))))).(((((.(((((.....((.((.(((...((((((((...))))))))..))).))))...))))).)))))))))))))).....)))))..))))))).))))))).))..))))..))))..)))))))))))).)).).)).))).....)))))))))).))))))).))).))).).))..))..))))))..)))))).)))..)))..(((.((.((((.(((.(.(..(((.((((((((((..((((((((...(((((((((.................))))....)))))(((((.((((((((((..(((((..((((((((..(((.(((((..((((((((..(.((((((.((..(.((((((((....((((.(((....(((((((.((((((.(((((.((((..(((..((....))...)))..).))).))))).)))))).((((.(((((....)))))..))))...)))))))(((((((.(((((..(((((.....)))))(((((....(((((((..((((..(.(((....)))...)..))))..)))..)))).)))))))))).)))))))...))).))))))))))))))).))).))).).((.((((((....)))(((.((......))))).))).))....))))))))...((((....))))..)))).).)))..))))))))...(((((.(.......).)))))...))))))))))).)))).))))).)).))))))(((.(((((((...(((.((((.(((((....))))).))).).)))....)))))))))).(((((.(((((((..((....))))))))).)))))..(((((....(((((((((.....)))))))))))))).)))))))))))))...).).)))))))...(((((.((..(..(((((((.(((..(((.(((...((.....))...))).)))..))).)))))))..).)).)))))..)).)))...(((((((((((((....))))))))))....))).." )
with expansion:
  "..(((..(.((.((((((.((((((..((..((((((..(....)..(((.(((.(((....)))))).)))..
  .))))))..))..........((..((.(.(((.(((.(((((((..(((..(((((((..((((((....))))))
  ....(((..((((....)))).((.(.((.((((.((((((((........((((.((((..(((((((((.....(
  ((.((((((((.......)))))))))))......((.(((((..(((((....((((((((((((..(((((((..
  ......)))))))...)))......((..(((((.......))))))).(((((.(((((.....((.((.(((...
  ((((((((...))))))))..))).))))...))))).)))))))))))))).....)))))..)))))))
  .))))))).))..))))..))))..)))))))))))).)).).)).))).....)))))))))).))))))).)))
  .))).).))..))..))))))..)))))).)))..)))..(((.((.((((.(((.(.(..(((.((((((((((..
  ((((((((...(((((((((.................))))....)))))(((((.((((((((((..(((((..((
  ((((((..(((.(((((..((((((((..(.((((((.((..(.((((((((....((((.(((....(((((((.(
  (((((.(((((.((((..(((..((....))...)))..).))).))))).)))))).((((.(((((....)))))
  ..))))...)))))))(((((((.(((((..(((((.....)))))(((((....(((((((..((((..(.(((..
  ..)))...)..))))..)))..)))).)))))))))).)))))))...))).))))))))))))))).))).))).)
  .((.((((((....)))(((.((......))))).))).))....))))))))...((((....))))..)))).)
  .)))..))))))))...(((((.(.......).)))))...))))))))))).)))).))))).)).))))))(((.
  (((((((...(((.((((.(((((....))))).))).).)))....)))))))))).(((((.(((((((..((..
  ..))))))))).)))))..(((((....(((((((((.....)))))))))))))).)))))))))))))...).)
  .)))))))...(((((.((..(..(((((((.(((..(((.(((...((.....))...))).)))..)))
  .)))))))..).)).)))))..)).)))...(((((((((((((....))))))))))....))).."
  ==
  "..(((..(.((.((((((.((((((..((..((((((..(....)..(((.(((.(((....)))))).)))..
  .))))))..))..........((..((.(.(((.(((.(((((((..(((..(((((((..((((((....))))))
  ....(((..((((....)))).((.(.((.((((.((((((((........((((.((((..(((((((((.....(
  ((.((((((((.......)))))))))))......((.(((((..(((((....((((((((((((..(((((((..
  ......)))))))...)))......((..(((((.......))))))).(((((.(((((.....((.((.(((...
  ((((((((...))))))))..))).))))...))))).)))))))))))))).....)))))..)))))))
  .))))))).))..))))..))))..)))))))))))).)).).)).))).....)))))))))).))))))).)))
  .))).).))..))..))))))..)))))).)))..)))..(((.((.((((.(((.(.(..(((.((((((((((..
  ((((((((...(((((((((.................))))....)))))(((((.((((((((((..(((((..((
  ((((((..(((.(((((..((((((((..(.((((((.((..(.((((((((....((((.(((....(((((((.(
  (((((.(((((.((((..(((..((....))...)))..).))).))))).)))))).((((.(((((....)))))
  ..))))...)))))))(((((((.(((((..(((((.....)))))(((((....(((((((..((((..(.(((..
  ..)))...)..))))..)))..)))).)))))))))).)))))))...))).))))))))))))))).))).))).)
  .((.((((((....)))(((.((......))))).))).))....))))))))...((((....))))..)))).)
  .)))..))))))))...(((((.(.......).)))))...))))))))))).)))).))))).)).))))))(((.
  (((((((...(((.((((.(((((....))))).))).).)))....)))))))))).(((((.(((((((..((..
  ..))))))))).)))))..(((((....(((((((((.....)))))))))))))).)))))))))))))...).)
  .)))))))...(((((.((..(..(((((((.(((..(((.(((...((.....))...))).)))..)))
  .)))))))..).)).)))))..)).)))...(((((((((((((....))))))))))....))).."

-------------------------------------------------------------------------------
G. intestinalis 16S MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:414
...............................................................................

src/test-pmfe.cc:420: 
PASSED:
  REQUIRE( seq.len() == 1452 )
with expansion:
  1452 == 1452

-------------------------------------------------------------------------------
G. intestinalis 16S MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:414
...............................................................................

src/test-pmfe.cc:430: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-8027, 10) )
with expansion:
  -8027/10 == -8027/10

src/test-pmfe.cc:434: 
PASSED:
  REQUIRE( scored_structure.old_string() == ".....((..(((((.(((...((((.(..(((((((((..(.((.((((......((((((((...((((..(((((((.(((((((((...((.(((((.......))))).)).))))..)))))....))))).))..))))((((((.....)).))))..)))))))).(((..(((((.((.(((.(((((.(((.(((((.(((((..((((((((((.....((....))....(((((((((((((..(((((....((((((.(..((((....))))..(((((((..(((((((........)))))))...)))..((.((((....((((((((.(((((((..(((((...))))).(((..((.(((....(((....))).((.((((.....)))))).)))))..)))..))))))).))).)))))..((((..(((......(((((((((.((((((....)))))))))).)))))......)))..)))).......))))))....(....).))))..).)))))).)))))...((.(((((.(((((....))))).)))))))))))))))))))).)))))).))))..)))))((((((((((....((((((((((..((((.....(..(((((((....((.((.((((((..((((....))))......((((..((.....))..))))..)))))).))))....)).)))))..)..))))...))))))))))....))))))).)))...))))).)))..))))).)))..))))))).((....))))).)))).))..)..)))))))))..).).)))..))).....((((..(((...((((((((((((....((((....((((.....))))..)))).......(((((..(((....))).((((.(((((((.((.......((((((..((((((((((((.(.(((((((((.((((((((..((.....)))))).))))..))))))))).).)))))))....)))))....)))))).(((((((((((((((((.(((((....)))))...(((((((((........(.((((((.((.((((....(((...)))....((((((((...(((((...)))))..)))))))).)))).)))))))).))))))))))..((.((..((((((..((....))))))))..)).))..)))))))).)))))))))..)).))))))))))).)))))...)))))))............))))).(((((.((..(..(((((((.(((..((((((((......))..))).)))..))).)))))))..).)).)))))..)))....))))....((((((((....)))))))).))))))).." )
with expansion:
  ".....((..(((((.(((...((((.(..(((((((((..(.((.((((......((((((((...((((..((((
  (((.(((((((((...((.(((((.......))))).)).))))..)))))....))))).))..))))((((((..
  ...)).))))..)))))))).(((..(((((.((.(((.(((((.(((.(((((.(((((..((((((((((.....
  ((....))....(((((((((((((..(((((....((((((.(..((((....))))..(((((((..(((((((.
  .......)))))))...)))..((.((((....((((((((.(((((((..(((((...))))).(((..((.(((.
  ...(((....))).((.((((.....)))))).)))))..)))..))))))).))).)))))..((((..(((....
  ..(((((((((.((((((....)))))))))).)))))......)))..)))).......))))))....(....)
  .))))..).)))))).)))))...((.(((((.(((((....))))).)))))))))))))))))))).))))))
  .))))..)))))((((((((((....((((((((((..((((.....(..(((((((....((.((.((((((..((
  ((....))))......((((..((.....))..))))..)))))).))))....)).)))))..)..))))..
  .))))))))))....))))))).)))...))))).)))..))))).)))..))))))).((....))))).))))
  .))..)..)))))))))..).).)))..))).....((((..(((...((((((((((((....((((....((((.
  ....))))..)))).......(((((..(((....))).((((.(((((((.((.......((((((..((((((((
  ((((.(.(((((((((.((((((((..((.....)))))).))))..))))))))).).)))))))....)))))..
  ..)))))).(((((((((((((((((.(((((....)))))...(((((((((........(.((((((.((.((((
  ....(((...)))....((((((((...(((((...)))))..)))))))).)))).)))))))).)))))))))).
  .((.((..((((((..((....))))))))..)).))..)))))))).)))))))))..)).)))))))))))
  .)))))...)))))))............))))).(((((.((..(..(((((((.(((..((((((((......)).
  .))).)))..))).)))))))..).)).)))))..)))....))))....((((((((....))))))))
  .))))))).."
  ==
  ".....((..(((((.(((...((((.(..(((((((((..(.((.((((......((((((((...((((..((((
  (((.(((((((((...((.(((((.......))))).)).))))..)))))....))))).))..))))((((((..
  ...)).))))..)))))))).(((..(((((.((.(((.(((((.(((.(((((.(((((..((((((((((.....
  ((....))....(((((((((((((..(((((....((((((.(..((((....))))..(((((((..(((((((.
  .......)))))))...)))..((.((((....((((((((.(((((((..(((((...))))).(((..((.(((.
  ...(((....))).((.((((.....)))))).)))))..)))..))))))).))).)))))..((((..(((....
  ..(((((((((.((((((....)))))))))).)))))......)))..)))).......))))))....(....)
  .))))..).)))))).)))))...((.(((((.(((((....))))).)))))))))))))))))))).))))))
  .))))..)))))((((((((((....((((((((((..((((.....(..(((((((....((.((.((((((..((
  ((....))))......((((..((.....))..))))..)))))).))))....)).)))))..)..))))..
  .))))))))))....))))))).)))...))))).)))..))))).)))..))))))).((....))))).))))
  .))..)..)))))))))..).).)))..))).....((((..(((...((((((((((((....((((....((((.
  ....))))..)))).......(((((..(((....))).((((.(((((((.((.......((((((..((((((((
  ((((.(.(((((((((.((((((((..((.....)))))).))))..))))))))).).)))))))....)))))..
  ..)))))).(((((((((((((((((.(((((....)))))...(((((((((........(.((((((.((.((((
  ....(((...)))....((((((((...(((((...)))))..)))))))).)))).)))))))).)))))))))).
  .((.((..((((((..((....))))))))..)).))..)))))))).)))))))))..)).)))))))))))
  .)))))...)))))))............))))).(((((.((..(..(((((((.(((..((((((((......)).
  .))).)))..))).)))))))..).)).)))))..)))....))))....((((((((....))))))))
  .))))))).."

-------------------------------------------------------------------------------
G. muris 16S MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:439
...............................................................................

src/test-pmfe.cc:445: 
PASSED:
  REQUIRE( seq.len() == 1432 )
with expansion:
  1432 == 1432

-------------------------------------------------------------------------------
G. muris 16S MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:439
...............................................................................

src/test-pmfe.cc:455: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-582) )
with expansion:
  -582 == -582

src/test-pmfe.cc:459: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((....((((((..(((((((..((((((((..((......(((((((...((....))..)).....)))))....((((((.(((....)))))))))...)).)))))...))).....((....((((((....))))))))......)))))))....)))))).......((((((......)))..))))))))))....(((((((((((((((..((.(((((.......))))).)).))).))))))))..))))(((((...((((((((((.....(((((((........)))))))...((((((...((((.(((((.((....(((((..((((......))))..)))))...)).....((((.(((..((......((((((.........))))))..))..))).))))...))))).))))......((((((......((((((((((.((((....)))))))))).))))....(((((....(((...(((((..(((((((.....(((((((.....(((((.((((((((((....((((((((.((..(((........)))..(((((((((.....(((((.(((...................))).))))).((((((...(..((..((.((..((....((((..........(((((...(((((.(.((((..((((((.((..(.((((((((.......((((.....(((((((.((.((((.((((((.((((.....))))...((....))......))).))).)))).))..((((.(((((....)))))..))))...)))))))..((..((((.......(.(((.(((((.............))))).))))....))))..))..))))...(((((((.....(((.((((.....)))).)))...)))))))..))))))))))).))).)))...)))).)))))).....(((((((((..........))))).)))).....)))))))))..((.(((((.....))))).))..))..)))).))..)..)))))).)))))))))..)).)))))))).....)))))).))))((((((.(((...(.(((((((((....))))))))).).)))..))))))..(((.((((.((((.((((((...(((..(....)..)))...)))))).(((((((((.....)))))))))...)))))))).)))...........)))))...)))))))..((.(..((...))..)))..)))))))...)))))...)))....))))).))))))...))))))....)))...)))).)))....((((((((((....)))))))))))))))...." )
with expansion:
  "(((((((....((((((..(((((((..((((((((..((......(((((((...((....))..))....
  .)))))....((((((.(((....)))))))))...)).)))))...))).....((....((((((...
  .))))))))......)))))))....)))))).......((((((......)))..))))))))))....(((((((
  ((((((((..((.(((((.......))))).)).))).))))))))..))))(((((...((((((((((.....((
  (((((........)))))))...((((((...((((.(((((.((....(((((..((((......))))..)))))
  ...)).....((((.(((..((......((((((.........))))))..))..))).))))...))))).)))).
  .....((((((......((((((((((.((((....)))))))))).))))....(((((....(((...(((((..
  (((((((.....(((((((.....(((((.((((((((((....((((((((.((..(((........)))..((((
  (((((.....(((((.(((...................))).))))).((((((...(..((..((.((..((....
  ((((..........(((((...(((((.(.((((..((((((.((..(.((((((((.......((((.....((((
  (((.((.((((.((((((.((((.....))))...((....))......))).))).)))).))..((((.(((((.
  ...)))))..))))...)))))))..((..((((.......(.(((.(((((.............))))).))))..
  ..))))..))..))))...(((((((.....(((.((((.....)))).)))...)))))))..)))))))))))
  .))).)))...)))).)))))).....(((((((((..........))))).)))).....)))))))))..((.((
  (((.....))))).))..))..)))).))..)..)))))).)))))))))..)).)))))))).....))))))
  .))))((((((.(((...(.(((((((((....))))))))).).)))..))))))..(((.((((.((((.(((((
  (...(((..(....)..)))...)))))).(((((((((.....)))))))))...)))))))).))).........
  ..)))))...)))))))..((.(..((...))..)))..)))))))...)))))...)))....))))).)))))).
  ..))))))....)))...)))).)))....((((((((((....)))))))))))))))...."
  ==
  "(((((((....((((((..(((((((..((((((((..((......(((((((...((....))..))....
  .)))))....((((((.(((....)))))))))...)).)))))...))).....((....((((((...
  .))))))))......)))))))....)))))).......((((((......)))..))))))))))....(((((((
  ((((((((..((.(((((.......))))).)).))).))))))))..))))(((((...((((((((((.....((
  (((((........)))))))...((((((...((((.(((((.((....(((((..((((......))))..)))))
  ...)).....((((.(((..((......((((((.........))))))..))..))).))))...))))).)))).
  .....((((((......((((((((((.((((....)))))))))).))))....(((((....(((...(((((..
  (((((((.....(((((((.....(((((.((((((((((....((((((((.((..(((........)))..((((
  (((((.....(((((.(((...................))).))))).((((((...(..((..((.((..((....
  ((((..........(((((...(((((.(.((((..((((((.((..(.((((((((.......((((.....((((
  (((.((.((((.((((((.((((.....))))...((....))......))).))).)))).))..((((.(((((.
  ...)))))..))))...)))))))..((..((((.......(.(((.(((((.............))))).))))..
  ..))))..))..))))...(((((((.....(((.((((.....)))).)))...)))))))..)))))))))))
  .))).)))...)))).)))))).....(((((((((..........))))).)))).....)))))))))..((.((
  (((.....))))).))..))..)))).))..)..)))))).)))))))))..)).)))))))).....))))))
  .))))((((((.(((...(.(((((((((....))))))))).).)))..))))))..(((.((((.((((.(((((
  (...(((..(....)..)))...)))))).(((((((((.....)))))))))...)))))))).))).........
  ..)))))...)))))))..((.(..((...))..)))..)))))))...)))))...)))....))))).)))))).
  ..))))))....)))...)))).)))....((((((((((....)))))))))))))))...."

-------------------------------------------------------------------------------
H. volcanii 16S MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:464
...............................................................................

src/test-pmfe.cc:470: 
PASSED:
  REQUIRE( seq.len() == 1474 )
with expansion:
  1474 == 1474

-------------------------------------------------------------------------------
H. volcanii 16S MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:464
...............................................................................

src/test-pmfe.cc:480: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-687) )
with expansion:
  -687 == -687

src/test-pmfe.cc:484: 
PASSED:
  REQUIRE( scored_structure.old_string() == ".....(((.(((((.......((((((..((.(((((((((......(((.((((..((((((((((....)))))).))))....(((.......((..((((......(((((((.((((..((.((((((....)))))).))...))))....(((((((..((......)).))))))).....(((....))))))))))...))))..))(((((((((((..((((((((.......)))))))))))..)))))))).((((((((....)))...)))))))).((((((((......)))))))).((((....))))..)))))))......((((.....(((((....)))))..)))))))))))))..((((((((.....)))))))).(((((((((((.....)))))))))))...((((((.......((((((...((((...))))..)))))))))))).))..))))))...........((((....(((((.(.((((((((((..(((((((((((...((((((((.....))))))))..))))))))..))).))))))...((((((.....((((((((((.((((((((((.(((......)))....)))))))))).))).......((....)).)))))))....))).)))..)))).).)))))..((((((((.((....((((.........))))..))))))))))....((((((((((((.((((..((((((((.....))))))))..))))...((....))....)))))))..(((...((((.(((((....)))))..))))..)))....((((((((((((....(((((.((....)).))))).....((((....(((((.((.(((..(((((((...((((((((.((..(((.(((((...))))).))).)).))))))))...((.((((..((((((((((..((((((.((....)).(.((((......))))).))))))..(.((((..(((((((((((((((..((((....))))))).)))).))))))))..((.(((((.....))))).))......))))).))))).)))))...))))))....))))))).......(((((((((.(((((((((.....(((((((..((((....))))..)).)))))......))))))))).((((((..(((((((........))))))).....))))))...)))))..))))........))))).))))).....)))).)))))))........))))).....((((.(((..(((((((((((((..(((((((....)))))))..)))))))))))))..))).))))..)))))....)))).((((((((....)))))))).))))))))....." )
with expansion:
  ".....(((.(((((.......((((((..((.(((((((((......(((.((((..((((((((((...
  .)))))).))))....(((.......((..((((......(((((((.((((..((.((((((....)))))).)).
  ..))))....(((((((..((......)).))))))).....(((....))))))))))...))))..))(((((((
  ((((..((((((((.......)))))))))))..)))))))).((((((((....)))...)))))))).(((((((
  (......)))))))).((((....))))..)))))))......((((.....(((((....))))).
  .)))))))))))))..((((((((.....)))))))).(((((((((((.....)))))))))))...((((((...
  ....((((((...((((...))))..)))))))))))).))..))))))...........((((....(((((.(.(
  (((((((((..(((((((((((...((((((((.....))))))))..))))))))..))).))))))...((((((
  .....((((((((((.((((((((((.(((......)))....)))))))))).))).......((....))
  .)))))))....))).)))..)))).).)))))..((((((((.((....((((.........)))).
  .))))))))))....((((((((((((.((((..((((((((.....))))))))..))))...((....))...
  .)))))))..(((...((((.(((((....)))))..))))..)))....((((((((((((....(((((.((...
  .)).))))).....((((....(((((.((.(((..(((((((...((((((((.((..(((.(((((...)))))
  .))).)).))))))))...((.((((..((((((((((..((((((.((....)).(.((((......)))))
  .))))))..(.((((..(((((((((((((((..((((....))))))).)))).))))))))..((.(((((....
  .))))).))......))))).))))).)))))...))))))....))))))).......(((((((((.((((((((
  (.....(((((((..((((....))))..)).)))))......))))))))).((((((..(((((((.......
  .))))))).....))))))...)))))..))))........))))).))))).....)))).))))))).......
  .))))).....((((.(((..(((((((((((((..(((((((....)))))))..)))))))))))))..)))
  .))))..)))))....)))).((((((((....)))))))).))))))))....."
  ==
  ".....(((.(((((.......((((((..((.(((((((((......(((.((((..((((((((((...
  .)))))).))))....(((.......((..((((......(((((((.((((..((.((((((....)))))).)).
  ..))))....(((((((..((......)).))))))).....(((....))))))))))...))))..))(((((((
  ((((..((((((((.......)))))))))))..)))))))).((((((((....)))...)))))))).(((((((
  (......)))))))).((((....))))..)))))))......((((.....(((((....))))).
  .)))))))))))))..((((((((.....)))))))).(((((((((((.....)))))))))))...((((((...
  ....((((((...((((...))))..)))))))))))).))..))))))...........((((....(((((.(.(
  (((((((((..(((((((((((...((((((((.....))))))))..))))))))..))).))))))...((((((
  .....((((((((((.((((((((((.(((......)))....)))))))))).))).......((....))
  .)))))))....))).)))..)))).).)))))..((((((((.((....((((.........)))).
  .))))))))))....((((((((((((.((((..((((((((.....))))))))..))))...((....))...
  .)))))))..(((...((((.(((((....)))))..))))..)))....((((((((((((....(((((.((...
  .)).))))).....((((....(((((.((.(((..(((((((...((((((((.((..(((.(((((...)))))
  .))).)).))))))))...((.((((..((((((((((..((((((.((....)).(.((((......)))))
  .))))))..(.((((..(((((((((((((((..((((....))))))).)))).))))))))..((.(((((....
  .))))).))......))))).))))).)))))...))))))....))))))).......(((((((((.((((((((
  (.....(((((((..((((....))))..)).)))))......))))))))).((((((..(((((((.......
  .))))))).....))))))...)))))..))))........))))).))))).....)))).))))))).......
  .))))).....((((.(((..(((((((((((((..(((((((....)))))))..)))))))))))))..)))
  .))))..)))))....)))).((((((((....)))))))).))))))))....."

-------------------------------------------------------------------------------
V. necatrix 16S MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:489
...............................................................................

src/test-pmfe.cc:495: 
PASSED:
  REQUIRE( seq.len() == 1244 )
with expansion:
  1244 == 1244

-------------------------------------------------------------------------------
V. necatrix 16S MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:489
...............................................................................

src/test-pmfe.cc:505: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-1628, 5) )
with expansion:
  -1628/5 == -1628/5

src/test-pmfe.cc:509: 
PASSED:
  REQUIRE( scored_structure.old_string() == "........((((((((((((((((...((((....(((.........(((.(((((((((((.((((((......(((((((((((.((((.((((((.(((((....)))))..(((((.((((((....(((....(((....(((((((..((...((((.(((..((((((..((((((((.......)))))))))))..)))..)))...(((((((((((.((....(((......)))((((.(((.....(((.((.(((.(((..((((.......))))..)))))).)))))......))).)))).....)).)))))))))))........))))....))...)))))))..)))....))).(..((((.......))))..)...)))))).))))).......)))))).))))....))))).))))))......)))))).......(((((((((..((((.((((((((.((.((((..((.....................))..)))).)).......(((....)))))))))))))))...))))))))))))))))))..))))))))))))...))).)))).......((...((((((((((((.(((((...(((((.(((((...)))))..((((((((((...........(((((....)))))...(((((((..((((....))))................(((((.......((....)).((((...(((((((((((..((.((....((..(((....(((((.((((((((((..(((.(.....)..)))..)))))).)))).)))))....)))......(((((((.((((..............((((((......)))))).((((((.((..((.((.((.....)).)).))..)).))))))......)))))))))))..))....)).))..)))))))))))......(((((..........((((((((..(.......)..)).))))))....((((..(((..(((.....(((((((((.....)))))))))....))))))..)))).)))))....))))))))))))))))....(((((((((((((..((.((((....)))).))..))))))))))))).)))))))))).)))))..)))))))))))))))))...))...)))))))))..." )
with expansion:
  "........((((((((((((((((...((((....(((.........(((.(((((((((((.((((((......(
  ((((((((((.((((.((((((.(((((....)))))..(((((.((((((....(((....(((....(((((((.
  .((...((((.(((..((((((..((((((((.......)))))))))))..)))..)))...(((((((((((.((
  ....(((......)))((((.(((.....(((.((.(((.(((..((((.......))))..)))))).)))))...
  ...))).)))).....)).)))))))))))........))))....))...)))))))..)))....))).(..(((
  (.......))))..)...)))))).))))).......)))))).))))....))))).))))))......)))))).
  ......(((((((((..((((.((((((((.((.((((..((.....................))..)))).))...
  ....(((....)))))))))))))))...))))))))))))))))))..))))))))))))...))).)))).....
  ..((...((((((((((((.(((((...(((((.(((((...)))))..((((((((((...........(((((..
  ..)))))...(((((((..((((....))))................(((((.......((....)).((((...((
  (((((((((..((.((....((..(((....(((((.((((((((((..(((.(.....)..)))..))))))
  .)))).)))))....)))......(((((((.((((..............((((((......)))))).((((((.(
  (..((.((.((.....)).)).))..)).))))))......)))))))))))..))....)).)).
  .)))))))))))......(((((..........((((((((..(.......)..)).))))))....((((..(((.
  .(((.....(((((((((.....)))))))))....))))))..)))).)))))....))))))))))))))))...
  .(((((((((((((..((.((((....)))).))..))))))))))))).)))))))))).))))).
  .)))))))))))))))))...))...)))))))))..."
  ==
  "........((((((((((((((((...((((....(((.........(((.(((((((((((.((((((......(
  ((((((((((.((((.((((((.(((((....)))))..(((((.((((((....(((....(((....(((((((.
  .((...((((.(((..((((((..((((((((.......)))))))))))..)))..)))...(((((((((((.((
  ....(((......)))((((.(((.....(((.((.(((.(((..((((.......))))..)))))).)))))...
  ...))).)))).....)).)))))))))))........))))....))...)))))))..)))....))).(..(((
  (.......))))..)...)))))).))))).......)))))).))))....))))).))))))......)))))).
  ......(((((((((..((((.((((((((.((.((((..((.....................))..)))).))...
  ....(((....)))))))))))))))...))))))))))))))))))..))))))))))))...))).)))).....
  ..((...((((((((((((.(((((...(((((.(((((...)))))..((((((((((...........(((((..
  ..)))))...(((((((..((((....))))................(((((.......((....)).((((...((
  (((((((((..((.((....((..(((....(((((.((((((((((..(((.(.....)..)))..))))))
  .)))).)))))....)))......(((((((.((((..............((((((......)))))).((((((.(
  (..((.((.((.....)).)).))..)).))))))......)))))))))))..))....)).)).
  .)))))))))))......(((((..........((((((((..(.......)..)).))))))....((((..(((.
  .(((.....(((((((((.....)))))))))....))))))..)))).)))))....))))))))))))))))...
  .(((((((((((((..((.((((....)))).))..))))))))))))).)))))))))).))))).
  .)))))))))))))))))...))...)))))))))..."

-------------------------------------------------------------------------------
Z. mays 16S MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:514
...............................................................................

src/test-pmfe.cc:520: 
PASSED:
  REQUIRE( seq.len() == 1962 )
with expansion:
  1962 == 1962

-------------------------------------------------------------------------------
Z. mays 16S MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:514
...............................................................................

src/test-pmfe.cc:530: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-7419, 10) )
with expansion:
  -7419/10 == -7419/10

src/test-pmfe.cc:534: 
PASSED:
  REQUIRE( scored_structure.old_string() == "....((((((((.......)))))))).((((((((.((.....))....(((..(((((.(((..(((((((((((((.(((((....((((.......(((((..(((...((((((.(((((((....))))))).).)))))..............((((((((((((((((...((((.((((((...((((.((((((..(.(.(((((..(.((((((..((....))..((((((((((..((((.(((((.((((.....((((.((((...))))..)))).(((((((((..((((((((.......)))))))))))..))))))..))))..)))))..))))..((((((......)).)))).....)))))))))))))))).)..)).))).).).......((((...(((((....))))).))))((....((((....))))......))..))))))))))...(((..(((.((((((.(............).)))))).)))..)))..))))))..))))..)))))).(((.(((...((((.(.((((...((((((((.......((.(((((..(((.(((......(((((((.((.((((.((((....((((((.....))))))..)))).))))..)).)))))))...))).(((...(((((((((..((((((((.((.(((.....))).)).))..)))))).....))....((....)).)))))))..))))))....))))).)).(((....))).))))))))..((((.........))))...)))).).)))).......(((((((.(((((((((((((.((.((...)))).)))))))))))))...((....))....))))))).)))))).((((.(((((....)))))..)))).........))))))))))......)))...))))).(((((((...........))).))))...)))).))))))))))).....)))))))....(((((.....)))))......(((...((((((((((((((....(((.(((.(((((.((((((....)))....((......))....))).(((((((....)))))))...)))))))).....(((((((.(((((...((..((((..(((.((((((..(((((.(.........))))))..)))))).)))..))))..)).....))))).)).))))).)))....)))))))....)))))))...)))))).)))))...........((((((((((((((((..(((((........(((((((.((((((((.(((((((((..((((.(...((((...))))....((((((.(((.....))).))....(((((((...(((((.((((((..(((..(((((....((((..(((..(((((...............(((.(((((.((((((..((((.((.((((((...)))))).))...(((.((((........)))).)))..))))..)))).)))).))).))).((((.....)))).........)).)))..)))......((((((..((((((((..((.....))..))))))))...))))))..((((((.(((((...(((......)))...(((((((.........)))))))...))))).))))))....))))..))))).))))))))))))))..)))))))))))).))))....)))))..))))..))))).)))))).)))))))))((((((..((((((......))))))..)))))).......))).)))))))))..))))))).)).)))..(((..((((((((((....))))))))))..)))..)))..." )
with expansion:
  "....((((((((.......)))))))).((((((((.((.....))....(((..(((((.(((..((((((((((
  (((.(((((....((((.......(((((..(((...((((((.(((((((....))))))).).))))).......
  .......((((((((((((((((...((((.((((((...((((.((((((..(.(.(((((..(.((((((..((.
  ...))..((((((((((..((((.(((((.((((.....((((.((((...))))..)))).(((((((((..((((
  ((((.......)))))))))))..))))))..))))..)))))..))))..((((((......)).))))....
  .)))))))))))))))).)..)).))).).).......((((...(((((....))))).))))((....((((...
  .))))......))..))))))))))...(((..(((.((((((.(............).)))))).)))..))).
  .))))))..))))..)))))).(((.(((...((((.(.((((...((((((((.......((.(((((..(((.((
  (......(((((((.((.((((.((((....((((((.....))))))..)))).))))..)).)))))))...)))
  .(((...(((((((((..((((((((.((.(((.....))).)).))..)))))).....))....((....))
  .)))))))..))))))....))))).)).(((....))).))))))))..((((.........))))...)))).)
  .)))).......(((((((.(((((((((((((.((.((...)))).)))))))))))))...((....))...
  .))))))).)))))).((((.(((((....)))))..)))).........))))))))))......)))...)))))
  .(((((((...........))).))))...)))).))))))))))).....)))))))....(((((.....)))))
  ......(((...((((((((((((((....(((.(((.(((((.((((((....)))....((......))...
  .))).(((((((....)))))))...)))))))).....(((((((.(((((...((..((((..(((.((((((..
  (((((.(.........))))))..)))))).)))..))))..)).....))))).)).))))).)))...
  .)))))))....)))))))...)))))).)))))...........((((((((((((((((..(((((........(
  ((((((.((((((((.(((((((((..((((.(...((((...))))....((((((.(((.....))).))....(
  ((((((...(((((.((((((..(((..(((((....((((..(((..(((((...............(((.(((((
  .((((((..((((.((.((((((...)))))).))...(((.((((........)))).)))..))))..))))
  .)))).))).))).((((.....)))).........)).)))..)))......((((((..((((((((..((....
  .))..))))))))...))))))..((((((.(((((...(((......)))...(((((((.........)))))))
  ...))))).))))))....))))..))))).))))))))))))))..)))))))))))).))))....))))).
  .))))..))))).)))))).)))))))))((((((..((((((......))))))..)))))).......)))
  .)))))))))..))))))).)).)))..(((..((((((((((....))))))))))..)))..)))..."
  ==
  "....((((((((.......)))))))).((((((((.((.....))....(((..(((((.(((..((((((((((
  (((.(((((....((((.......(((((..(((...((((((.(((((((....))))))).).))))).......
  .......((((((((((((((((...((((.((((((...((((.((((((..(.(.(((((..(.((((((..((.
  ...))..((((((((((..((((.(((((.((((.....((((.((((...))))..)))).(((((((((..((((
  ((((.......)))))))))))..))))))..))))..)))))..))))..((((((......)).))))....
  .)))))))))))))))).)..)).))).).).......((((...(((((....))))).))))((....((((...
  .))))......))..))))))))))...(((..(((.((((((.(............).)))))).)))..))).
  .))))))..))))..)))))).(((.(((...((((.(.((((...((((((((.......((.(((((..(((.((
  (......(((((((.((.((((.((((....((((((.....))))))..)))).))))..)).)))))))...)))
  .(((...(((((((((..((((((((.((.(((.....))).)).))..)))))).....))....((....))
  .)))))))..))))))....))))).)).(((....))).))))))))..((((.........))))...)))).)
  .)))).......(((((((.(((((((((((((.((.((...)))).)))))))))))))...((....))...
  .))))))).)))))).((((.(((((....)))))..)))).........))))))))))......)))...)))))
  .(((((((...........))).))))...)))).))))))))))).....)))))))....(((((.....)))))
  ......(((...((((((((((((((....(((.(((.(((((.((((((....)))....((......))...
  .))).(((((((....)))))))...)))))))).....(((((((.(((((...((..((((..(((.((((((..
  (((((.(.........))))))..)))))).)))..))))..)).....))))).)).))))).)))...
  .)))))))....)))))))...)))))).)))))...........((((((((((((((((..(((((........(
  ((((((.((((((((.(((((((((..((((.(...((((...))))....((((((.(((.....))).))....(
  ((((((...(((((.((((((..(((..(((((....((((..(((..(((((...............(((.(((((
  .((((((..((((.((.((((((...)))))).))...(((.((((........)))).)))..))))..))))
  .)))).))).))).((((.....)))).........)).)))..)))......((((((..((((((((..((....
  .))..))))))))...))))))..((((((.(((((...(((......)))...(((((((.........)))))))
  ...))))).))))))....))))..))))).))))))))))))))..)))))))))))).))))....))))).
  .))))..))))).)))))).)))))))))((((((..((((((......))))))..)))))).......)))
  .)))))))))..))))))).)).)))..(((..((((((((((....))))))))))..)))..)))..."

-------------------------------------------------------------------------------
Combinatorial sequence MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:539
...............................................................................

src/test-pmfe.cc:545: 
PASSED:
  REQUIRE( seq.len() == 60 )
with expansion:
  60 == 60

-------------------------------------------------------------------------------
Combinatorial sequence MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:539
...............................................................................

src/test-pmfe.cc:555: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-149, 5) )
with expansion:
  -149/5 == -149/5

src/test-pmfe.cc:559: 
PASSED:
  REQUIRE( scored_structure.old_string() == "((((....((((....))))....((((....((((....))))....))))....))))" )
with expansion:
  "((((....((((....))))....((((....((((....))))....))))....))))"
  ==
  "((((....((((....))))....((((....((((....))))....))))....))))"

-------------------------------------------------------------------------------
Randomly generated sequence MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:564
...............................................................................

src/test-pmfe.cc:570: 
PASSED:
  REQUIRE( seq.len() == 75 )
with expansion:
  75 == 75

-------------------------------------------------------------------------------
Randomly generated sequence MFE
  Turner99 published parameters
-------------------------------------------------------------------------------
src/test-pmfe.cc:564
...............................................................................

src/test-pmfe.cc:580: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-81, 5) )
with expansion:
  -81/5 == -81/5

src/test-pmfe.cc:584: 
PASSED:
  REQUIRE( scored_structure.old_string() == ".(((.(((....(((....((.....))..))).....))))))................((......))....." )
with expansion:
  ".(((.(((....(((....((.....))..))).....))))))................((......))....."
  ==
  ".(((.(((....(((....((.....))..))).....))))))................((......))....."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_classical, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:605: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-283, 10) )
with expansion:
  -283/10 == -283/10

src/test-pmfe.cc:609: 
PASSED:
  REQUIRE( scored_structure.old_string() == "((((((((..(((.((....)))))(((((.......))))).((((....))))........))))))))." )
with expansion:
  "((((((((..(((.((....)))))(((((.......))))).((((....))))........))))))))."
  ==
  "((((((((..(((.((....)))))(((((.......))))).((((....))))........))))))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_1, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:622: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-239, 10) )
with expansion:
  -239/10 == -239/10

src/test-pmfe.cc:626: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((.(((.((((....)).))(((((.......)))))..)))(((((.......))))))))))))." )
with expansion:
  "(((((((.(((.((((....)).))(((((.......)))))..)))(((((.......))))))))))))."
  ==
  "(((((((.(((.((((....)).))(((((.......)))))..)))(((((.......))))))))))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_2, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:639: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-279,10) )
with expansion:
  -279/10 == -279/10

src/test-pmfe.cc:643: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((.(((.((((....)).))(((((.......)))))..)))(((((.......))))))))))))." )
with expansion:
  "(((((((.(((.((((....)).))(((((.......)))))..)))(((((.......))))))))))))."
  ==
  "(((((((.(((.((((....)).))(((((.......)))))..)))(((((.......))))))))))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_3, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:656: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-167,5) )
with expansion:
  -167/5 == -167/5

src/test-pmfe.cc:660: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))." )
with expansion:
  "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))."
  ==
  "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_4, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:673: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-207,5) )
with expansion:
  -207/5 == -207/5

src/test-pmfe.cc:677: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))." )
with expansion:
  "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))."
  ==
  "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_5, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:690: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-323,10) )
with expansion:
  -323/10 == -323/10

src/test-pmfe.cc:694: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((.(((.((((....)).))(((((.......)))))..)))(((((.......))))))))))))." )
with expansion:
  "(((((((.(((.((((....)).))(((((.......)))))..)))(((((.......))))))))))))."
  ==
  "(((((((.(((.((((....)).))(((((.......)))))..)))(((((.......))))))))))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_6, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:707: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-137,5) )
with expansion:
  -137/5 == -137/5

src/test-pmfe.cc:711: 
PASSED:
  REQUIRE( scored_structure.old_string() == "((((((((..(((.((....)))))(((((.......))))).((((....))))........))))))))." )
with expansion:
  "((((((((..(((.((....)))))(((((.......))))).((((....))))........))))))))."
  ==
  "((((((((..(((.((....)))))(((((.......))))).((((....))))........))))))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_7, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:724: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-108, 5) )
with expansion:
  -108/5 == -108/5

src/test-pmfe.cc:728: 
PASSED:
  REQUIRE( scored_structure.old_string() == "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...." )
with expansion:
  "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...."
  ==
  "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_8, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:741: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-65, 2) )
with expansion:
  -65/2 == -65/2

src/test-pmfe.cc:745: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))." )
with expansion:
  "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))."
  ==
  "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_9, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:758: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-73, 2) )
with expansion:
  -73/2 == -73/2

src/test-pmfe.cc:762: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))." )
with expansion:
  "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))."
  ==
  "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_10, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:775: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-247,10) )
with expansion:
  -247/10 == -247/10

src/test-pmfe.cc:779: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))." )
with expansion:
  "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))."
  ==
  "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_11, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:792: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-55, 2) )
with expansion:
  -55/2 == -55/2

src/test-pmfe.cc:796: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((((((((.((....)))))(((((.......))))).((((....))))....))..))))))))." )
with expansion:
  "(((((((((((((.((....)))))(((((.......))))).((((....))))....))..))))))))."
  ==
  "(((((((((((((.((....)))))(((((.......))))).((((....))))....))..))))))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_12, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:810: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-27, 1) )
with expansion:
  -27 == -27

src/test-pmfe.cc:814: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((((((((.((....)))))(((((.......))))).((((....))))....))..))))))))." )
with expansion:
  "(((((((((((((.((....)))))(((((.......))))).((((....))))....))..))))))))."
  ==
  "(((((((((((((.((....)))))(((((.......))))).((((....))))....))..))))))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_13, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:827: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-136, 5) )
with expansion:
  -136/5 == -136/5

src/test-pmfe.cc:831: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((((((((.((....)))))(((((.......))))).((((....))))....))..))))))))." )
with expansion:
  "(((((((((((((.((....)))))(((((.......))))).((((....))))....))..))))))))."
  ==
  "(((((((((((((.((....)))))(((((.......))))).((((....))))....))..))))))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_14, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:844: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-143, 5) )
with expansion:
  -143/5 == -143/5

src/test-pmfe.cc:848: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))." )
with expansion:
  "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))."
  ==
  "(((((((.(((...((....))...(((((.......)))))..)))(((((.......))))))))))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_15, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:861: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-2019, 10) )
with expansion:
  -2019/10 == -2019/10

src/test-pmfe.cc:865: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((...)((...)(((....)(...))(....).)))(((...)(...)((...)(....)))(...)).)." )
with expansion:
  "(((...)((...)(((....)(...))(....).)))(((...)(...)((...)(....)))(...)).)."
  ==
  "(((...)((...)(((....)(...))(....).)))(((...)(...)((...)(....)))(...)).)."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_16, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:878: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-1776,5) )
with expansion:
  -1776/5 == -1776/5

src/test-pmfe.cc:882: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(..........(...)..................................(...)...............)." )
with expansion:
  "(..........(...)..................................(...)...............)."
  ==
  "(..........(...)..................................(...)...............)."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_17, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:895: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-1036,5) )
with expansion:
  -1036/5 == -1036/5

src/test-pmfe.cc:899: 
PASSED:
  REQUIRE( scored_structure.old_string() == "((....)((((...)(....))((...)((.......)((...)))))(((...)(....))(....))))." )
with expansion:
  "((....)((((...)(....))((...)((.......)((...)))))(((...)(....))(....))))."
  ==
  "((....)((((...)(....))((...)((.......)((...)))))(((...)(....))(....))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_18, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:912: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-3729, 10) )
with expansion:
  -3729/10 == -3729/10

src/test-pmfe.cc:916: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(..........(...)..................................(...)...............)." )
with expansion:
  "(..........(...)..................................(...)...............)."
  ==
  "(..........(...)..................................(...)...............)."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_19, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:929: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-194,5) )
with expansion:
  -194/5 == -194/5

src/test-pmfe.cc:933: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(((((((((((((.((....)))))(((....)))(.((....)))))((((.......))))))))))))." )
with expansion:
  "(((((((((((((.((....)))))(((....)))(.((....)))))((((.......))))))))))))."
  ==
  "(((((((((((((.((....)))))(((....)))(.((....)))))((((.......))))))))))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_20, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:946: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-108, 5) )
with expansion:
  -108/5 == -108/5

src/test-pmfe.cc:950: 
PASSED:
  REQUIRE( scored_structure.old_string() == "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...." )
with expansion:
  "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...."
  ==
  "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_21, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:963: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-195,2) )
with expansion:
  -195/2 == -195/2

src/test-pmfe.cc:967: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(...(.........((....)).....(....)......)...(....).....................)." )
with expansion:
  "(...(.........((....)).....(....)......)...(....).....................)."
  ==
  "(...(.........((....)).....(....)......)...(....).....................)."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_22, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:980: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-128,5) )
with expansion:
  -128/5 == -128/5

src/test-pmfe.cc:984: 
PASSED:
  REQUIRE( scored_structure.old_string() == "((((((((......((....))...(((((.......))))).((((....))))........))))))))." )
with expansion:
  "((((((((......((....))...(((((.......))))).((((....))))........))))))))."
  ==
  "((((((((......((....))...(((((.......))))).((((....))))........))))))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_23, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:997: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-108, 5) )
with expansion:
  -108/5 == -108/5

src/test-pmfe.cc:1001: 
PASSED:
  REQUIRE( scored_structure.old_string() == "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...." )
with expansion:
  "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...."
  ==
  "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_24, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:1014: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-108, 5) )
with expansion:
  -108/5 == -108/5

src/test-pmfe.cc:1018: 
PASSED:
  REQUIRE( scored_structure.old_string() == "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...." )
with expansion:
  "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...."
  ==
  "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_25, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:1031: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-4887,10) )
with expansion:
  -4887/10 == -4887/10

src/test-pmfe.cc:1035: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(..........(...)..................................(...)...............)." )
with expansion:
  "(..........(...)..................................(...)...............)."
  ==
  "(..........(...)..................................(...)...............)."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_26, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:1048: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-108, 5) )
with expansion:
  -108/5 == -108/5

src/test-pmfe.cc:1052: 
PASSED:
  REQUIRE( scored_structure.old_string() == "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...." )
with expansion:
  "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...."
  ==
  "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_27, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:1065: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-108, 5) )
with expansion:
  -108/5 == -108/5

src/test-pmfe.cc:1069: 
PASSED:
  REQUIRE( scored_structure.old_string() == "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...." )
with expansion:
  "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...."
  ==
  "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_28, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:1082: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-108,5) )
with expansion:
  -108/5 == -108/5

src/test-pmfe.cc:1086: 
PASSED:
  REQUIRE( scored_structure.old_string() == "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...." )
with expansion:
  "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...."
  ==
  "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_29, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:1099: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-108, 5) )
with expansion:
  -108/5 == -108/5

src/test-pmfe.cc:1103: 
PASSED:
  REQUIRE( scored_structure.old_string() == "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...." )
with expansion:
  "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...."
  ==
  "..........(((.((....)))))(((((.......))))).((..(((((.......)))))..))...."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_30, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:1116: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-5341,10) )
with expansion:
  -5341/10 == -5341/10

src/test-pmfe.cc:1120: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(..........(...)..................................(...)...............)." )
with expansion:
  "(..........(...)..................................(...)...............)."
  ==
  "(..........(...)..................................(...)...............)."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_31, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:1133: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-393,5) )
with expansion:
  -393/5 == -393/5

src/test-pmfe.cc:1137: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(.............((....)).....................(....).....................)." )
with expansion:
  "(.............((....)).....................(....).....................)."
  ==
  "(.............((....)).....................(....).....................)."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_32, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:1150: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-231,5) )
with expansion:
  -231/5 == -231/5

src/test-pmfe.cc:1154: 
PASSED:
  REQUIRE( scored_structure.old_string() == "((((((((......((....))..((.(((.......)))...((((....))))....))..))))))))." )
with expansion:
  "((((((((......((....))..((.(((.......)))...((((....))))....))..))))))))."
  ==
  "((((((((......((....))..((.(((.......)))...((((....))))....))..))))))))."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_33, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:1167: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-861, 5) )
with expansion:
  -861/5 == -861/5

src/test-pmfe.cc:1171: 
PASSED:
  REQUIRE( scored_structure.old_string() == "(.....(...)....(....).................................................)." )
with expansion:
  "(.....(...)....(....).................................................)."
  ==
  "(.....(...)....(....).................................................)."

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:595: 
PASSED:
  REQUIRE( seq.len() == 72 )
with expansion:
  72 == 72

-------------------------------------------------------------------------------
O. nivara tRNA (old) MFE
  onivara_old_34, d1
-------------------------------------------------------------------------------
src/test-pmfe.cc:589
...............................................................................

src/test-pmfe.cc:1184: 
PASSED:
  REQUIRE( energy == pmfe::Rational(-567,10) )
with expansion:
  -567/10 == -567/10

src/test-pmfe.cc:1188: 
PASSED:
  REQUIRE( scored_structure.old_string() == "((((((((......((....)).....................(....)..............))))))))." )
with expansion:
  "((((((((......((....)).....................(....)..............))))))))."
  ==
  "((((((((......((....)).....................(....)..............))))))))."

===============================================================================
All tests passed (174 assertions in 24 test cases)

Thus, based on preliminary inspection of the testing output, I think that the minor changes to the C++ source documented above should be fine. Please verify with additional external testing: @spoznan.

maxieds commented 4 years ago

This has been referenced in the relevant pull requests. Closing to keep the active issues page tidy.