00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef CGA_TOOLS_EVIDENCE_SAM_UTIL_HPP_
00016 #define CGA_TOOLS_EVIDENCE_SAM_UTIL_HPP_ 1
00017
00019
00020 #include "cgatools/core.hpp"
00021 #include "cgatools/mapping/Cigar.hpp"
00022 #include "cgatools/mapping/SamRecord.hpp"
00023 #include "cgatools/cgdata/EvidenceReader.hpp"
00024
00025 #include <vector>
00026 #include <sstream>
00027 #include <boost/array.hpp>
00028
00029 namespace cgatools { namespace util {
00030 class DelimitedFile;
00031 }};
00032
00033 namespace cgatools { namespace mapping {
00034
00035 class SamSequenceSplitter {
00036 public:
00037 SamSequenceSplitter(const Cigar& extCigar, const std::string& dnbSequence,
00038 const std::string& dnbScore, bool negativeStrand);
00039
00040 Cigar srcExtCigar_;
00041 std::string srcSequence_;
00042 std::string srcScores_;
00043
00044 Cigar cigar_;
00045 std::stringstream sequence_;
00046 std::stringstream scores_;
00047
00048 Cigar tagCigar_;
00049 std::stringstream tagSequence_;
00050 std::stringstream tagScores_;
00051 protected:
00052 void convert();
00053 };
00054
00055 class EvidenceDnbRecord : public cgdata::EvidenceReader::DnbRecord
00056 {
00057 friend std::ostream& operator<< (std::ostream& out, const EvidenceDnbRecord& r);
00058 public:
00059 EvidenceDnbRecord() : mateMappingQuality_(-1)
00060 {}
00061 void initParser(util::DelimitedFile &delimitedFile, size_t formatVersion,
00062 const reference::CrrFile& crr);
00065 void adjustOffset(int chrLength);
00066
00067 int16_t mateMappingQuality_;
00068 };
00069
00070 class EvidenceCacheDnbRecord;
00071
00072 class EvidenceSamRecord : public SamRecord
00073 {
00074 public:
00075 EvidenceSamRecord(
00076 const EvidenceDnbRecord& evidenceRecord,
00077 bool isPrimary,
00078 uint8_t mate,
00079 size_t halfDnbSize,
00080 const reference::CrrFile& reference
00081 );
00082
00083 EvidenceSamRecord(
00084 const EvidenceCacheDnbRecord& evidenceRecord,
00085 const std::string& sequence,
00086 const std::string& scores,
00087 bool isPrimary,
00088 uint8_t mate,
00089 size_t halfDnbSize,
00090 const reference::CrrFile& reference
00091 );
00092
00093 size_t intervalId_;
00094 int alleleIndex_;
00095 double armWeight_;
00096 };
00097
00098 } }
00099
00100 #endif // CGA_TOOLS_EVIDENCE_SAM_UTIL_HPP_