libStatGen Software
1
|
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