CigarRoller Proposed Update

From Genome Analysis Wiki
Revision as of 11:00, 4 August 2010 by Mktrost (talk | contribs)
Jump to navigationJump to search
  • Should we rename CigarRoller to Cigar?
  • Should we be consistent in upper-case vs lower-case first letter of method names?
  • Should Cigar require a start position?
    • I would lean to say no and it just gets passed in when doing things based on positions. That way it can change external to this and really it isn't necessary for the cigar.

Public

Public Methods

Current Methods Proposed Methods Notes
CigarRoller::CigarRoller() Cigar::Cigar()
CigarRoller::CigarRoller(const char *cigarString) Cigar::Cigar(const char *cigarString)
Cigar::Cigar(const uint32_t *cigarBuffer, uint16_t cigarBufferLength)
CigarRoller & CigarRoller::operator += (CigarRoller &rhs) Cigar & Cigar::operator += (Cigar &rhs)
CigarRoller & CigarRoller::operator += (CigarOperator &rhs) Cigar & Cigar::operator += (CigarOperator &rhs)
void CigarRoller::Add(Operation operation, int count) void Cigar::add(Operation operation, int count)
void CigarRoller::Add(const char *cigarString) void Cigar::add(const char *cigarString)
void Cigar::add(const uint32_t *cigarBuffer, uint16_t cigarBufferLength) Does it make sense to add a buffer?
void CigarRoller::Set(const char *cigarString) void Cigar::set(const char *cigarString)
void Cigar::set(const uint32_t *cigarBuffer, uint16_t cigarBufferLength)
const char * CigarRoller::getString() const char * Cigar::getString() Currently user must delete the const char* do we want that? How to handle? Would it be better to pass in a std::string&?
void CigarRoller::getExpandedString(std::string &s) void Cigar::getExpandedString(std::string &s)
uint16_t Cigar::getBufferSize(uint32_t *cigarBuffer, uint16_t cigarBufferLength) Length the buffer would need to be.
void Cigar::getBuffer(uint32_t *cigarBuffer) Assumes the user properly allocated a buffer of getBufferSize - is there a better what to do this? I think there is, but I'm drawing a blank.
void CigarRoller::clear() void Cigar::clear()
CigarOperator & CigarRoller::operator [] (int i) CigarOperator & Cigar::operator [] (int i)
bool CigarRoller::operator == (CigarRoller &rhs) bool Cigar::operator == (CigarRoller &rhs) What is this for?
int CigarRoller::size() int CigarRoller::getNumOperations() I find "size" confusing - is it the number of operations, the sum of the op lengths, etc.
void CigarRoller::Dump() void CigarRoller::dump()
int CigarRoller::getExpectedQueryBaseCount() int Cigar::getNumQueryBases() Returns the expected read length
int CigarRoller::getExpectedReferenceBaseCount() int Cigar::getNumRefBases() Return how many bases in the reference are spanned by the given CIGAR string
int32_t CigarRoller::getRefOffset(int32_t queryIndex) int32_t Cigar::getRefOffset(int32_t queryIndex)
int32_t CigarRoller::getQueryIndex(int32_t refOffset) int32_t Cigar::getQueryIndex(int32_t refOffset)
int32_t CigarRoller::getRefPosition(int32_t queryIndex, int32_t queryStartPos) int32_t Cigar::getRefPosition(int32_t queryIndex, int32_t queryStartPos)
int32_t CigarRoller::getQueryIndex(int32_t refPosition, int32_t queryStartPos) int32_t Cigar::getQueryIndex(int32_t refPosition, int32_t queryStartPos)
uint32_t CigarRoller::getNumOverlaps(int32_t start, int32_t end, int32_t queryStartPos) uint32_t Cigar::getNumOverlaps(int32_t start, int32_t end, int32_t queryStartPos)

Public Member Data

CigarOperator struct

Should this be its own class?

How would this be used by SamRecord

When SamRecord needs to convert from SAM to BAM or BAM to SAM or needs alignment length or numOverlaps,e tc, it would use the appropriate Cigar::set. The conversion logic and parsing logic SAM & BAM would only be located in this Cigar class.