diff egglib/egglib-2.1.5/include/egglib-cpp/Staden.hpp @ 1:420b57c3c185 draft

Uploaded
author dereeper
date Fri, 10 Jul 2015 04:39:30 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/egglib/egglib-2.1.5/include/egglib-cpp/Staden.hpp	Fri Jul 10 04:39:30 2015 -0400
@@ -0,0 +1,140 @@
+/*
+    Copyright 2008-2009 Stéphane De Mita, Mathieu Siol
+
+    This file is part of EggLib.
+
+    EggLib is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    EggLib is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with EggLib.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef EGGLIB_STADEN_HPP
+#define EGGLIB_STADEN_HPP
+
+#include <string>
+#include <istream>
+#include "Align.hpp"
+
+namespace egglib {
+
+    /** \brief Parser of Staden output format
+     *
+     * \ingroup core
+     *
+     * The parser is available as a static method. It takes either a
+     * stream or a string containing data formatted by the program GAP4
+     * of the Staden package (command 'dump contig to file').
+     * 
+     */
+    class Staden {
+        
+        public:
+
+
+           /** \brief Parses a string
+            * 
+            * \param string a string containing an alignment formatted
+            * by the program GAP4 of the Staden package.
+            * 
+            * \param deleteConsensus if true, the sequence named
+            * "CONSENSUS" is deleted from the file (if it is present).
+            * 
+            * \return An Align instance containing the data found in
+            * the Staden while, after recoding the character following
+            * the standard codes.
+            *
+            * This method opens a stream to the string and calls the
+            * overloaded method.
+            * 
+            * The character replacement rules assume Staden default
+            * convention, as follows:
+            *    - "-" codes for an unknown base and is replaced by "N".
+            *    - "*" codes for an alignment gap and is replaced by "-".
+            *    - A white space represents missing data and is replaced
+            * by "?".
+            * 
+            */
+            static Align parse(const std::string& string, bool deleteConsensus=true);
+            
+
+           /** \brief Parses an open stream
+            * 
+            * \param stream the open containing an alignment formatted
+            * by the program GAP4 of the Staden package.
+            * 
+            * \param deleteConsensus if true, the sequence named
+            * "CONSENSUS" is deleted from the file (if it is present).
+            * 
+            * \return An Align instance containing the data found in
+            * the Staden while, after recoding the character following
+            * the standard codes.
+            *
+            * The character replacement rules assume Staden default
+            * convention, as follows:
+            *    - "-" codes for an unknown base and is replaced by "N".
+            *    - "*" codes for an alignment gap and is replaced by "-".
+            *    - A white space represents missing data and is replaced
+            * by "?".
+            * 
+            */
+            static Align parse(std::istream& stream, bool deleteConsensus=true);
+
+
+        private:
+        
+            /// Not allowed to instantiate this class
+            Staden() { }
+            
+            /// Not allowed to instantiate this class
+            Staden(const Staden& source) { }
+            
+            /// Not allowed to instantiate this class
+            ~Staden() { }
+
+
+           /* Gets the start position of sequences
+            *
+            * The functions gives total number of characters before the start of sequences
+            * and reads through until the next backspace (ignores the first line).
+            */
+            static void getShift();
+ 
+            // Translates according to the Staden format
+            static char transforme(char);
+            
+            // Imports one sequence
+            static bool readOneSequence();
+            
+            // Imports and concatenates one sequence
+            static bool readAppendOneSequence();
+            
+            // Replaces dots by the matching character from CONSENSUS
+            static void undot(bool delete_consensus=true);
+
+            // The number of characters before the start of sequences
+            static int shift;
+            
+            // The dynamically filled container (will result in an aligment)
+            static Container container;
+            
+            // The current position
+            static int currpos;
+            
+            // The reading stream
+            static std::istream* stream;
+            
+            // Stores unique 8 characters discriminating readings
+            static std::vector<std::string> ID;
+    };
+}
+    
+#endif