Line 1: |
Line 1: |
− | === Review Sept 17th ===
| + | [[Category:libStatGen]] |
− | *InputFile should not use <code>long int</code>. Should instead use: <code>long long</code>
| + | [[Category:libStatGen BAM]] |
− | *Anytime have an error could call handleError which would have a switch to return the error, throw exception, or abort. Call it with an error code and a string. Maybe an error handler class where you could use everywhere. Each class would have a member of that class type that would contain that information.
| |
| | | |
− | ==== Review Discussion Topics ==== | + | == Review Sept 20th == |
− | http://genome.sph.umich.edu/wiki/SAM/BAM_Library_FAQs
| + | === Notes === |
| + | * returning const char* |
| + | * SamFileHeader change referenceContigs, etc to private from public |
| + | * Add way to copy a SAM record. |
| | | |
− | http://www.sph.umich.edu/csg/mktrost/doxygen/html/
| + | == Review Sept 17th == |
| + | === Topics Discussed === |
| + | * [[#Return Statuses|Checking if methods succeeded/failed (checking return values/return statuses)]] |
| + | * [[#Accessing String Values|Strings as return values]] |
| | | |
− | Example of using the library to set values: http://www.sph.umich.edu/csg/mktrost/doxygen/html/WriteFiles_8cpp-source.html
| + | === NOTES From Meeting === |
− | ===== Return Statuses ===== | + | * General Notes: |
| + | **InputFile should not use <code>long int</code>. Should instead use: <code>long long</code> |
| + | * Error Handling Notes: |
| + | **Anytime have an error could call handleError which would have a switch to return the error, throw exception, or abort. Call it with an error code and a string. Maybe an error handler class where you could use everywhere. Each class would have a member of that class type that would contain that information. |
| + | *Returning values of Strings Notes: |
| + | ** Problems with returning const char* |
| + | *** If the pointer is stored when returned, it becomes invalid if the class modifies the underlying string. |
| + | ** Problems with passing in std::string& as a parameter to be set. |
| + | *** people typically want to operate on the return of the method. |
| + | ** One idea was returning a reference to a string |
| + | *** Does that solve the problem? Won't the contents change when a new one is read? Is that what we want? |
| + | |
| + | |
| + | === Useful Links === |
| + | BAM Library FAQs: http://genome.sph.umich.edu/wiki/SAM/BAM_Library_FAQs |
| + | |
| + | Source Code: http://csg.sph.umich.edu//mktrost/doxygen/html/ |
| + | |
| + | Test code for setting values in the library: http://csg.sph.umich.edu//mktrost/doxygen/html/WriteFiles_8cpp-source.html |
| + | |
| + | === Topics for Discussion === |
| + | ==== Return Statuses ==== |
| Currently anytime you do anything on a SAM/BAM file, you have to check the status for failure: | | Currently anytime you do anything on a SAM/BAM file, you have to check the status for failure: |
| <source lang="cpp"> | | <source lang="cpp"> |
Line 67: |
Line 93: |
| | | |
| | | |
− | ===== Accessing String Values =====
| + | ==== Accessing String Values ==== |
| SAM/BAM files have strings in them that people will want to read out. | | SAM/BAM files have strings in them that people will want to read out. |
| How should we handle this interface? | | How should we handle this interface? |
Line 83: |
Line 109: |
| return mySequence.c_str(); | | return mySequence.c_str(); |
| } | | } |
| + | const std::string& SamRecord::getSequence() |
| + | { |
| + | myStatus = SamStatus::SUCCESS; |
| + | if(mySequence.Length() == 0) |
| + | { |
| + | // 0 Length, means that it is in the buffer, but has not yet |
| + | // been synced to the string, so do the sync. |
| + | setSequenceAndQualityFromBuffer(); |
| + | } |
| + | return &mySequence; |
| + | } |
| + | |
| </source> | | </source> |
| and passing in references to strings, like: | | and passing in references to strings, like: |
Line 120: |
Line 158: |
| </source> | | </source> |
| | | |
− | http://www.sph.umich.edu/csg/mktrost/doxygen/html/SamRecord_8h-source.html | + | http://csg.sph.umich.edu//mktrost/doxygen/html/SamRecord_8h-source.html |
| | | |
− | ===== SamFileHeader =====
| + | ==== SamFileHeader ==== |
| *Should this be renamed to SamHeader? | | *Should this be renamed to SamHeader? |
| *Do we like the classes being named starting with Sam? Should it be Bam? | | *Do we like the classes being named starting with Sam? Should it be Bam? |
Line 162: |
Line 200: |
| Should these also be added to SamHeaderRG, SamHeaderSQ, etc as appropriate.... | | Should these also be added to SamHeaderRG, SamHeaderSQ, etc as appropriate.... |
| | | |
− | === Review June 7th ===
| + | == Review June 7th == |
| | | |
| * <S>Move the examples from the SamFile wiki page to their own page</s> | | * <S>Move the examples from the SamFile wiki page to their own page</s> |
| ** <S>include links from the main library page and the SamFile page.</s> | | ** <S>include links from the main library page and the SamFile page.</s> |
| ** <S>look into why the one example have two if checks on SamIn status</s> <span style="color:blue">- one was printing the result and one was setting the return value - cleaned up to be in one if statement.</span> | | ** <S>look into why the one example have two if checks on SamIn status</s> <span style="color:blue">- one was printing the result and one was setting the return value - cleaned up to be in one if statement.</span> |
− | * Create 1 library for all of our library code rather than having libcsg, libbam, libfqf separated. | + | * <S>Create 1 library for all of our library code rather than having libcsg, libbam, libfqf separated.</s> |
− | ** What should this library be called? | + | ** <S>What should this library be called?</s> <span style="color:blue">- Created library: libstatgen and reorganized into a new repository: statgen.</span> |
− | *** libdna | + | *** <S>libdna</s> |
− | *** libdna++ | + | *** <S>libdna++</s> |
− | *** libsequence++ | + | *** <S>libsequence++</s> |
− | *** libDNA | + | *** <S>libDNA</s> |
− | *** libgenotype | + | *** <S>libgenotype</s> |
| * Add an option by class that says whether or not to abort on failure. (or even an option on each method) | | * Add an option by class that says whether or not to abort on failure. (or even an option on each method) |
| ** This allows calling code to set that option and then not have to check for failures since the code it calls would abort on a failure. | | ** This allows calling code to set that option and then not have to check for failures since the code it calls would abort on a failure. |