00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifdef HAVE_CONFIG_H
00010 #include "config.h"
00011 #endif
00012
00013 #include "libGenome/gnSequence.h"
00014 #include "libGenome/gnFilter.h"
00015 #include "libMems/DNAFileSML.h"
00016
00017 using namespace std;
00018 using namespace genome;
00019 namespace mems {
00020
00021 DNAFileSML::DNAFileSML() : FileSML(){
00022 FileSML::header.version = FormatVersion();
00023 }
00024
00025 DNAFileSML::~DNAFileSML(){
00026 }
00027
00028 DNAFileSML::DNAFileSML(const string& fname, const uint8* table, const uint32 alpha_bits){
00029 header.alphabet_bits = alpha_bits;
00030 memcpy(header.translation_table, table, UINT8_MAX);
00031 filename = fname;
00032 header.version = FormatVersion();
00033 }
00034
00035 DNAFileSML& DNAFileSML::operator=(const DNAFileSML& msa ){
00036 FileSML::operator=(msa);
00037 return *this;
00038 }
00039
00040 DNAFileSML* DNAFileSML::Clone() const{
00041 DNAFileSML *bdsa = new DNAFileSML();
00042 (*bdsa) = *this;
00043 return bdsa;
00044 }
00045
00046 uint64 DNAFileSML::GetNeededMemory(gnSeqI len){
00047 uint64 neededmem = (len * FileSML::header.alphabet_bits) / 8;
00048
00049 neededmem += len * 2;
00050 neededmem += sizeof(bmer) * len;
00051 return neededmem;
00052 }
00053
00054 uint32 DNAFileSML::CalculateMaxMerSize() const{
00055 return 62 / header.alphabet_bits;
00056 }
00057
00058 uint64 DNAFileSML::GetMer(gnSeqI position) const{
00059 return GetDnaMer( position );
00060 }
00061
00062 uint64 DNAFileSML::GetSeedMer( gnSeqI offset ) const{
00063 return GetDnaSeedMer( offset );
00064 }
00065
00066 void DNAFileSML::FillSML(const gnSequence& seq, vector<bmer>& sml_array)
00067 {
00068 FillDnaSML(seq, sml_array);
00069 }
00070
00071 }