libStatGen Software  1
bam.h
00001 /* The MIT License
00002 
00003    Copyright (c) 2008-2010 Genome Research Ltd (GRL).
00004 
00005    Permission is hereby granted, free of charge, to any person obtaining
00006    a copy of this software and associated documentation files (the
00007    "Software"), to deal in the Software without restriction, including
00008    without limitation the rights to use, copy, modify, merge, publish,
00009    distribute, sublicense, and/or sell copies of the Software, and to
00010    permit persons to whom the Software is furnished to do so, subject to
00011    the following conditions:
00012 
00013    The above copyright notice and this permission notice shall be
00014    included in all copies or substantial portions of the Software.
00015 
00016    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
00017    EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00018    MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
00019    NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
00020    BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
00021    ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
00022    CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
00023    SOFTWARE.
00024 */
00025 
00026 /* Contact: Heng Li <lh3@sanger.ac.uk> */
00027 
00028 #ifndef BAM_BAM_H
00029 #define BAM_BAM_H
00030 
00031 /*!
00032   @header
00033 
00034   BAM library provides I/O and various operations on manipulating files
00035   in the BAM (Binary Alignment/Mapping) or SAM (Sequence Alignment/Map)
00036   format. It now supports importing from or exporting to SAM, sorting,
00037   merging, generating pileup, and quickly retrieval of reads overlapped
00038   with a specified region.
00039 
00040   @copyright Genome Research Ltd.
00041  */
00042 
00043 
00044 #include <stdint.h>
00045 
00046 /*
00047  * Only small section is pulled out that we use.
00048  * 4/29/2011 - Mary Kate Trost
00049  */
00050 
00051 
00052 /*!
00053   @abstract    Calculate the minimum bin that contains a region [beg,end).
00054   @param  beg  start of the region, 0-based
00055   @param  end  end of the region, 0-based
00056   @return      bin
00057  */
00058 static inline int bam_reg2bin(uint32_t beg, uint32_t end)
00059 {
00060     --end;
00061     if (beg>>14 == end>>14) return 4681 + (beg>>14);
00062     if (beg>>17 == end>>17) return  585 + (beg>>17);
00063     if (beg>>20 == end>>20) return   73 + (beg>>20);
00064     if (beg>>23 == end>>23) return    9 + (beg>>23);
00065     if (beg>>26 == end>>26) return    1 + (beg>>26);
00066     return 0;
00067 }
00068 
00069 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends