Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

gnFASSource.h

Go to the documentation of this file.
00001 /////////////////////////////////////////////////////////////////////////////
00002 // File:            gnFASSource.h
00003 // Purpose:         Implements gnBaseSource for .FAS files
00004 // Description:     
00005 // Changes:        
00006 // Version:         libGenome 0.5.1 
00007 // Author:          Aaron Darling 
00008 // Modified by:     
00009 // Copyright:       (c) Aaron Darling 
00010 // Licenses:        See COPYING file for details 
00011 /////////////////////////////////////////////////////////////////////////////
00012 #ifndef _gnFASSource_h_
00013 #define _gnFASSource_h_
00014 
00015 #include "gn/gnDefs.h"
00016 
00017 #include <string>
00018 #include <fstream>
00019 #include <vector>
00020 #include "gn/gnFileSource.h"
00021 #include "gn/gnSequence.h"
00022 
00023 #define FAS_LINE_WIDTH 80
00024 
00025 /**
00026  *      gnFASSource reads and writes FastA files.
00027  * gnFASSource is used by gnSourceFactory to read files. 
00028  * Files can be written in the FastA file format by calling
00029  * gnFASSource::Write( mySpec, "C:\\myFasFile.fas");
00030  */
00031 
00032 class GNDLLEXPORT gnFASSource : public gnFileSource
00033 {
00034 public:
00035         /**
00036          * Empty Constructor, does nothing.
00037          */
00038         gnFASSource();
00039         /**
00040          * Clone Constructor copies the specified gnFASSource.
00041          * @param s The gnFASSource to copy.
00042          */
00043         gnFASSource( const gnFASSource& s );
00044         /**
00045          * Destructor, frees memory.
00046          */
00047         ~gnFASSource();
00048         /**
00049          * Returns an exact copy of this class.
00050          */
00051         gnFASSource* Clone() const;
00052 
00053         uint32 GetContigListLength() const;
00054         boolean HasContig( const string& name ) const;
00055         uint32 GetContigID( const string& name ) const;
00056         string GetContigName( const uint32 i ) const;
00057         gnSeqI GetContigSeqLength( const uint32 i ) const;
00058         gnFileContig* GetContig( const uint32 i ) const;
00059 
00060         boolean SeqRead( const gnSeqI start, char* buf, uint32& bufLen, const uint32 contigI=ALL_CONTIGS ) ;
00061         
00062         /**
00063          * Write the given gnSequence to a FastA file.
00064          * @param sequence The gnSequence to write out.
00065          * @param filename The name of the file to write.
00066          * @param write_coords If true each entry's name will be followed by the coordinates of the entry
00067          *                     in the context of the entrire file.
00068          * @param enforce_unique_names If true each entry's name will be recorded as they are written.  Each
00069          *                              successive duplicate name that is found will have an underscore and a
00070          *                                                 number appended to it, indicating the number of entries by the same
00071          *                                                         name which have already been written.
00072          *                             Turning this off will yield a slight performance improvement when writing
00073          *                             files with a large number of entries.  (More than 1000)
00074          * @throws A FileNotOpened() exception may be thrown.
00075          */
00076         static void Write(gnSequence& sequence, const string& filename, boolean write_coords = true, boolean enforce_unique_names = true);
00077 
00078         /**
00079          * Write the given gnSequence to an ostream.
00080          * @param sequence The gnSequence to write out.
00081          * @param m_ostream The output stream to write to.
00082          * @param write_coords If true each entry's name will be followed by the coordinates of the entry
00083          *                     in the context of the entrire file.
00084          * @param enforce_unique_names If true each entry's name will be recorded as they are written.  Each
00085          *                              successive duplicate name that is found will have an underscore and a
00086          *                                                 number appended to it, indicating the number of entries by the same
00087          *                                                         name which have already been written.
00088          *                             Turning this off will yield a slight performance improvement when writing
00089          *                             files with a large number of entries.  (More than 1000)
00090          */
00091         static void Write(gnSequence& sequence, ostream& m_ostream, boolean write_coords = true, boolean enforce_unique_names = true);
00092 
00093         /**
00094          * Deprecated - do not use.
00095          * Write the given source to a FastA file.
00096          * @param source The spec to write out.
00097          * @param filename The name of the file to write.
00098          */
00099         static boolean Write(gnBaseSource *source, const string& filename);
00100         
00101         gnGenomeSpec *GetSpec() const;
00102         
00103         gnFileContig* GetFileContig( const uint32 contigI ) const;
00104 private:
00105         boolean SeqSeek( const gnSeqI start, const uint32 contigI, uint64& startPos, uint64& readableBytes );
00106         boolean SeqStartPos( const gnSeqI start, gnFileContig& contig, uint64& startPos, uint64& readableBytes );
00107         boolean ParseStream( istream& fin );
00108         
00109         vector< gnFileContig* > m_contigList;
00110 };// class gnFASSource
00111 
00112 inline
00113 gnFASSource* gnFASSource::Clone() const
00114 {
00115         return new gnFASSource( *this );
00116 }
00117 
00118 inline
00119 uint32 gnFASSource::GetContigListLength() const
00120 {
00121         return m_contigList.size();
00122 }
00123 
00124 #endif
00125         // _gnFASSource_h_

Generated on Mon Feb 3 02:34:39 2003 for libGenome by doxygen1.3-rc3