]> ruin.nu Git - germs.git/blobdiff - src/genealgorithms.h
Added more doxygen documentation
[germs.git] / src / genealgorithms.h
index 4c519a7e3167a40384893a86dea243f20d1ac6d9..a91f67ddcae2345497c24841ff93dc6d6d5ebf82 100644 (file)
 #include <vector>
 
 class GeneOrder;
+struct Component;
+
+/**
+ * Simple interval struct, holds the indexes + information if the interval is
+ * oriented or not.
+ */
+struct Interval{
+       Interval(size_t f,size_t s,bool o = false):first(f),second(s),oriented(o){}
+       bool operator==(const Interval& i){
+               return first == i.first && second == i.second && oriented == i.oriented;
+       }
+       size_t first;
+       size_t second;
+       bool oriented;
+};
 
 /**
  * Returns the length of the longest increasing sequence and the longest
@@ -32,8 +47,35 @@ class GeneOrder;
 std::pair<int,int> longestSequences(const GeneOrder& go);
 
 /**
+ * Uses the Robinson-Schensted algorithm on the gene order. Gives the longest
+ * increasing and decreasing subsequences.
  */
 std::vector<std::vector<int> > robinsonSchensted(const GeneOrder& go);
 
+/**
+ * Counts the number of cycles in the gene order.
+ */
+size_t countCycles(const GeneOrder& go);
+
+/**
+ * Calculates the inversion distance for this gene order
+ */
+size_t inversionDistance(const GeneOrder& go);
+
+/**
+ * Finds the components in the gene order.
+ */
+std::vector<Component> findComponents(const GeneOrder& go);
+
+/**
+ * Find intervals.
+ */
+std::vector<Interval> findIntervals(const GeneOrder& go);
+
+/**
+ * Creates a list with the intervals at each point.
+ */
+std::vector<Interval> findIntervalsAtPoints(const std::vector<Interval>& intervals);
+
 #endif