14 SeqDB(const SeqDB &rhs);
\r
15 SeqDB &operator=(const SeqDB &rhs);
\r
21 unsigned *m_SeqLengths;
\r
22 unsigned m_SeqCount;
\r
32 void Clear(bool ctor = false);
\r
33 void InitEmpty(bool Nucleo);
\r
35 unsigned AddSeq(const char *Label, const byte *Seq, unsigned L);
\r
37 byte *GetSeq(unsigned SeqIndex) const
\r
39 asserta(SeqIndex < m_SeqCount);
\r
40 return m_Seqs[SeqIndex];
\r
43 const char *GetLabel(unsigned SeqIndex) const
\r
45 asserta(SeqIndex < m_SeqCount);
\r
46 return m_Labels[SeqIndex];
\r
49 unsigned GetSeqLength(unsigned SeqIndex) const
\r
51 asserta(SeqIndex < m_SeqCount);
\r
52 return m_SeqLengths[SeqIndex];
\r
55 unsigned GetSeqCount() const
\r
60 unsigned GetPairCount() const
\r
62 unsigned SeqCount = GetSeqCount();
\r
63 return (SeqCount*(SeqCount - 1))/2;
\r
66 unsigned GetPairIndex(unsigned SeqIndex1, unsigned SeqIndex2) const
\r
68 if (SeqIndex1 > SeqIndex2)
\r
69 return (SeqIndex1*(SeqIndex1 - 1))/2 + SeqIndex2;
\r
70 return (SeqIndex2*(SeqIndex2 - 1))/2 + SeqIndex1;
\r
73 unsigned GetColCount() const
\r
76 Die("SeqDB::GetColCount, not aligned");
\r
77 if (m_SeqCount == 0)
\r
78 Die("SeqDB::GetColCount, empty");
\r
79 return m_SeqLengths[0];
\r
82 bool IsNucleo() const
\r
84 asserta(m_IsNucleoSet);
\r
88 void GetSeqData(unsigned Id, SeqData &Buffer) const;
\r
90 unsigned GetMaxLabelLength() const;
\r
91 unsigned GetMaxSeqLength() const;
\r
93 unsigned GetIndex(const char *Label) const;
\r
94 void MakeLabelToIndex(map<string, unsigned> &LabelToIndex);
\r
97 void FromFasta(const string &FileName, bool AllowGaps = false);
\r
99 void ToFasta(const string &FileName) const;
\r
100 void ToFasta(FILE *f, unsigned SeqIndex) const;
\r
101 void SeqToFasta(FILE *f, unsigned SeqIndex, bool WithLabel = false) const;
\r
103 unsigned GetTotalLength() const;
\r
106 bool isgap(byte c);
\r