00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 #ifndef CGA_TOOLS_COMMAND_LIBRARYDATA_HPP_
00016 #define CGA_TOOLS_COMMAND_LIBRARYDATA_HPP_ 1
00017 
00019 
00020 #include "cgatools/core.hpp"
00021 #include "cgatools/cgdata/Dnb.hpp"
00022 #include "cgatools/cgdata/LibraryReader.hpp"
00023 
00024 #include <boost/shared_ptr.hpp>
00025 #include <boost/ptr_container/ptr_map.hpp>
00026 #include <string>
00027 
00028 namespace cgatools { namespace mapping { namespace GapEst {
00029     class GapsEstimator;
00030 }}}
00031 
00032 namespace cgatools { namespace cgdata { 
00033     class GenomeMetadata;
00034     class LibraryMetadata;
00035 }}
00036 
00037 namespace cgatools { namespace mapping {
00038 
00039     class LibraryData
00040     {
00041     public:
00042         LibraryData(const cgdata::LibraryMetadata& lm, bool loadDnbStructureOnly);
00043 
00044         boost::array<boost::shared_ptr<GapEst::GapsEstimator>,2>    gapsEstimators_;
00045         boost::shared_ptr<cgdata::MateGapTable>                     mateGapTable_;
00046         cgdata::DnbStructure                                        dnbStructure_;
00047     };
00048 
00049     class LibraryMetadataContainer 
00050     {
00051     public:
00052         
00053         
00054         typedef boost::ptr_map<const std::string,LibraryData> Libraries; 
00055         typedef std::map<std::string, std::string>      Lane2Library;
00056 
00057         LibraryMetadataContainer(const cgdata::GenomeMetadata &gm, bool loadDnbStructureOnly);
00058         
00059         const LibraryData& getLibraryData(const std::string& laneName) const;
00060 
00061         void loadLane2LibraryData(const cgdata::GenomeMetadata &gm);
00062 
00063         Libraries       libraryData_;
00064         Lane2Library    lane2libraryData_;
00065     };
00066 
00067 } } 
00068 
00069 #endif // CGA_TOOLS_COMMAND_LIBRARYDATA_HPP_