diff --git a/Makefile b/Makefile index 8a7911fa3cc8bcbf8b5134362269704f8b8fb38f..eb2f97ae396678f8489b416ccc0327409939bec5 100644 --- a/Makefile +++ b/Makefile @@ -138,7 +138,7 @@ clean: .PHONY: clean test: all - @cd test; sh test.sh + @cd test; bash test.sh .PHONY: test diff --git a/README.md b/README.md index ddef07afe666c10eb45e78fa45b10521818f7a60..c1261c3e79de204a6f46d91f36c2d89f1282dbd9 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ bedtools - a swiss army knife for genome arithmetic =================================================== -**Current version**: 2.19.0 +**Current version**: 2.19.1 Note ------- @@ -9,6 +9,8 @@ Stable release for bedtools were formerly archived on Google Code. Unfortunately downloads facility is shutting down; so henceforth, all source code and stable releases will be maintained via this Github repository. +**Full documentation**: http://bedtools.readthedocs.org + Summary ------- Collectively, the bedtools utilities are a swiss-army knife of tools for a wide-range of genomics analysis tasks. The most widely-used tools enable genome arithmetic: that is, set theory on the genome. For example, bedtools allows one to intersect, merge, count, complement, and shuffle genomic intervals from multiple files in widely-used genomic file formats such as BAM, BED, GFF/GTF, VCF. diff --git a/docs/conf.py b/docs/conf.py index f5c2ebf95bdb8b10df40cbda68b555f152e12108..e20ce34ce32205f02aad9e96b543cb7383fd0bcc 100755 --- a/docs/conf.py +++ b/docs/conf.py @@ -51,9 +51,9 @@ copyright = u'2009 - 2013, Aaron R. Quinlan' # built documents. # # The short X.Y version. -version = '2.19.0' +version = '2.19.1' # The full version, including alpha/beta/rc tags. -release = '2.19.0' +release = '2.19.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/docs/index.rst b/docs/index.rst index c10368a53477145ef04cb34cabd48addc5c51583..7958298eae73cd76bca9e4c437bbb44f744e647d 100755 --- a/docs/index.rst +++ b/docs/index.rst @@ -7,12 +7,26 @@ for a wide-range of genomics analysis tasks. The most widely-used tools enable *genome arithmetic*: that is, set theory on the genome. For example, **bedtools** allows one to *intersect*, *merge*, *count*, *complement*, and *shuffle* genomic intervals from multiple files in widely-used -genomic file formats such as BAM, BED, GFF/GTF, VCF. - -While each individual tool is designed to do a relatively simple task (e.g., +genomic file formats such as BAM, BED, GFF/GTF, VCF. While each individual tool is designed to do a relatively simple task (e.g., *intersect* two interval files), quite sophisticated analyses can be conducted by combining multiple bedtools operations on the UNIX command line. +========================== +Interesting usage examples +========================== +To whet your appetite, here are a few examples of ways in which bedtools has been used for genome research. If you have interesteding examples, please send them our way and we will add them to the list. + + +- `Coverage analysis for targeted DNA capture <http://gettinggeneticsdone.blogspot.com/2014/03/visualize-coverage-exome-targeted-ngs-bedtools.html>`_. Thanks to `Stephen Turner <https://twitter.com/genetics_blog>`_. +- `Measuring similarity of DNase hypersensitivity among many cell types <https://github.com/arq5x/bedtools-protocols/blob/master/bedtools.md#bp6--measuring-dataset-similarity>`_ +- `Extracting promoter sequences from a genome <http://www.biostars.org/p/17162/>`_ +- `Comparing intersections among many genome interval files <http://www.biostars.org/p/13516/>`_ +- `RNA-seq coverage analysis <http://www.cureffi.org/2013/11/18/an-mrna-seq-pipeline-using-gsnap-samtools-cufflinks-and-bedtools/>`_. Thanks to `Erik Minikel <https://twitter.com/cureffi>`_. +- `Identifying targeted regions that lack coverage <https://twitter.com/aaronquinlan/status/421786507511205888>`_. Thanks to `Brent Pedersen <https://twitter.com/brent_p>`_. +- `Calculating GC content for CCDS exons <http://www.biostars.org/p/47047/>`_. +- `Making a master table of ChromHMM tracks for multiple cell types <https://gist.github.com/arq5x/3138599>`_. + + ================= Table of contents ================= diff --git a/src/nucBed/nucBed.cpp b/src/nucBed/nucBed.cpp index 9b515d277b938fd58430533b4aff8d1d6e5bd89d..ff4036930013edab4c9aceca65fa474ed61f1379 100644 --- a/src/nucBed/nucBed.cpp +++ b/src/nucBed/nucBed.cpp @@ -80,12 +80,12 @@ void NucBed::PrintHeader(void) { printf("%d_num_T\t", numOrigColumns + 6); printf("%d_num_N\t", numOrigColumns + 7); printf("%d_num_oth\t", numOrigColumns + 8); - printf("%d_seq_len\t", numOrigColumns + 9); + printf("%d_seq_len", numOrigColumns + 9); if (_printSeq) - printf("%d_seq", numOrigColumns + 10); + printf("\t%d_seq", numOrigColumns + 10); if (_hasPattern && !_printSeq) - printf("%d_user_patt_count", numOrigColumns + 10); + printf("\t%d_user_patt_count", numOrigColumns + 10); else if (_hasPattern && _printSeq) printf("\t%d_user_patt_count", numOrigColumns + 11); printf("\n"); diff --git a/src/shuffleBed/shuffleBed.cpp b/src/shuffleBed/shuffleBed.cpp index 518e23784478b2a79f1fbee1da069228ac679a2e..9d6a2d1edd0714da454b0a6cbe315efa9e63cf71 100644 --- a/src/shuffleBed/shuffleBed.cpp +++ b/src/shuffleBed/shuffleBed.cpp @@ -74,15 +74,24 @@ BedShuffle::BedShuffle(string &bedFile, string &genomeFile, if (_haveInclude) { _include = new BedFile(includeFile); - _include->loadBedFileIntoMapNoBin(); - - _numIncludeChroms = 0; - masterBedMapNoBin::const_iterator it = _include->bedMapNoBin.begin(); - masterBedMapNoBin::const_iterator itEnd = _include->bedMapNoBin.end(); - for(; it != itEnd; ++it) { - _includeChroms.push_back(it->first); - _numIncludeChroms++; + + // the user wants to choose the chromosome randomly first + if (_chooseChrom) { + _include->loadBedFileIntoMapNoBin(); + _numIncludeChroms = 0; + masterBedMapNoBin::const_iterator it = _include->bedMapNoBin.begin(); + masterBedMapNoBin::const_iterator itEnd = _include->bedMapNoBin.end(); + for(; it != itEnd; ++it) { + _includeChroms.push_back(it->first); + _numIncludeChroms++; + } } + // thue user wants the intervals shuffled accordingly to the + // chrom distribution in the -incl file. + else + { + _include->loadBedFileIntoVector(); + } } if (_haveExclude == true && _haveInclude == false) @@ -449,8 +458,14 @@ void BedShuffle::ChooseLocusFromInclusionFile(BED &bedEntry) { CHRPOS randomStart; BED includeInterval; - if (_sameChrom == false) { - + // choose an -incl interval randomly. + if (_chooseChrom == false) { + includeInterval = _include->bedList[rand() % _include->bedList.size()]; + bedEntry.chrom = includeInterval.chrom; + } + // choose a chromosome randomly from the -incl file. then choose an + // interval from that chrom randomly. + else { // grab a random chromosome from the inclusion file. randomChrom = _includeChroms[rand() % _numIncludeChroms]; // get the number of inclusion intervals for that chrom @@ -462,22 +477,6 @@ void BedShuffle::ChooseLocusFromInclusionFile(BED &bedEntry) { bedEntry.chrom = randomChrom; } - else { - if ( _include->bedMapNoBin.find(chrom) != _include->bedMapNoBin.end() ) - { - // get the number of inclusion intervals for the original chrom - size_t size = _include->bedMapNoBin[chrom].size(); - // grab a random interval on the chosen chromosome. - includeInterval = _include->bedMapNoBin[chrom][rand() % size]; - } - else { - cerr << "Error, line " << _bed->_lineNum - << ": the requested chromosome (" - << chrom - << ") cannot " - << "be found in the -incl file " << endl; - } - } randomStart = includeInterval.start + rand() % (includeInterval.size()); bedEntry.start = randomStart; bedEntry.end = randomStart + length; diff --git a/src/shuffleBed/shuffleBedMain.cpp b/src/shuffleBed/shuffleBedMain.cpp index c53dad503d77397e22c4630155c0881436dfccd3..fe49049d77943bf42960ca591976d20b1080e759 100644 --- a/src/shuffleBed/shuffleBedMain.cpp +++ b/src/shuffleBed/shuffleBedMain.cpp @@ -89,7 +89,6 @@ int shuffle_main(int argc, char* argv[]) { else if(PARAMETER_CHECK("-incl", 5, parameterLength)) { if ((i+1) < argc) { haveInclude = true; - chooseChrom = true; includeFile = argv[i + 1]; i++; } @@ -173,7 +172,6 @@ void shuffle_help(void) { cerr << "\t-incl\t" << "Instead of randomly placing features in a genome, the -incl" << endl; cerr << "\t\toptions defines a BED/GFF/VCF file of coordinates in which " << endl; cerr << "\t\tfeatures in -i should be randomly placed (e.g. genes.bed). " << endl; - cerr << "\t\t- NOTE: Forces use of -chromFirst (see below)." << endl << endl; cerr << "\t-chrom\t" << "Keep features in -i on the same chromosome."<< endl; cerr << "\t\t- By default, the chrom and position are randomly chosen." << endl; diff --git a/src/utils/bedFile/bedFile.cpp b/src/utils/bedFile/bedFile.cpp index ea993affada562802248ebfeee62c74f431b963f..7c1ae8dc1184fea620542ba4046cf1b2521fcb09 100644 --- a/src/utils/bedFile/bedFile.cpp +++ b/src/utils/bedFile/bedFile.cpp @@ -748,3 +748,17 @@ void BedFile::loadBedFileIntoMapNoBin() { sort(m->second.begin(), m->second.end(), sortByStart); } } + +void BedFile::loadBedFileIntoVector() { + + BED bedEntry; + + Open(); + while (GetNextBed(bedEntry)) { + if (_status == BED_VALID) { + bedList.push_back(bedEntry); + } + } + Close(); +} + diff --git a/src/utils/bedFile/bedFile.h b/src/utils/bedFile/bedFile.h index 37d8dda799ce0e6110eda3ec04be230dda2637f0..440986c0007fba7607d2106e58e7643f0955dccb 100644 --- a/src/utils/bedFile/bedFile.h +++ b/src/utils/bedFile/bedFile.h @@ -433,6 +433,9 @@ public: // load a BED file into a map keyed by chrom. value is vector of BEDs void loadBedFileIntoMapNoBin(); + // load a BED file into a vector of BEDs + void loadBedFileIntoVector(); + // Given a chrom, start, end and strand for a single feature, // search for all overlapping features in another BED file. // Searches through each relevant genome bin on the same chromosome @@ -487,6 +490,7 @@ public: masterBedCovMap bedCovMap; masterBedCovListMap bedCovListMap; masterBedMap bedMap; + bedVector bedList; masterBedMapNoBin bedMapNoBin; BedLineStatus _status; diff --git a/src/utils/fileType/fileType.cpp b/src/utils/fileType/fileType.cpp index 0b05acb18ffa42d7df6c33630f6bedc0d9d48b19..6c075144dc858f721146789167d85c88e0fd6337 100644 --- a/src/utils/fileType/fileType.cpp +++ b/src/utils/fileType/fileType.cpp @@ -48,24 +48,31 @@ bool isGzipFile(istream *file) { without triggering the "fail" bit. This was necessary to support FIFOs, per version 2.13.0 */ - struct { - unsigned char id1; +// struct { +// unsigned char id1; // unsigned char id2; // unsigned char cm; - } gzip_header; +// } gzip_header; - if (!file->read((char*)&gzip_header, sizeof(gzip_header))) { - return false; - } - - if ( gzip_header.id1 == 0x1f ) +// if (!file->read((char*)&gzip_header, sizeof(gzip_header))) { +// return false; +// } +// if ( gzip_header.id1 == 0x1f ) // && // gzip_header.id2 == 0x8b // && // gzip_header.cm == 8 ) + +/* + 26-Dec-2012 and again 20-Mar-2014: + Just peek at the first byte instead of reading it so that we don't + affect the istream's failbit. This modification was wisely proposed + by John Marshall in response to Issue 30: + https://github.com/arq5x/bedtools/issues/30 + */ + if (file->peek() == 0x1f) { return true; } - file->putback(gzip_header.id1); return false; } diff --git a/test/general/test-general.sh b/test/general/test-general.sh index 6028bf15ebfea397443114f1b82ee2e67ecb05ae..38b3f6e80e36c3c39659fc41da5ef9697a0049cf 100644 --- a/test/general/test-general.sh +++ b/test/general/test-general.sh @@ -96,3 +96,191 @@ check obs exp rm obs exp +########################################################### +# Test GZIP, non-GZIP, and empty file functionality. +########################################################### +echo "chr1 1 100" > a.bed +echo "chr1 75 200" > b.bed +echo -n "" > c.bed +echo "chr1 1 5000" > genome.txt +gzip -c a.bed > a.bed.gz +gzip -c b.bed > b.bed.gz +gzip -c c.bed > c.bed.gz + + +echo " general.t09...\c" +$BT intersect -a a.bed -b b.bed > obs +echo "chr1 75 100" > exp +check obs exp + +echo " general.t10...\c" +$BT intersect -a a.bed.gz -b b.bed.gz > obs +echo "chr1 75 100" > exp +check obs exp + +echo " general.t11...\c" +$BT intersect -a a.bed -b b.bed.gz > obs +echo "chr1 75 100" > exp +check obs exp + +echo " general.t12...\c" +$BT intersect -a a.bed.gz -b b.bed > obs +echo "chr1 75 100" > exp +check obs exp + +echo " general.t13...\c" +$BT intersect -a c.bed -b b.bed > obs +echo -n "" > exp +check obs exp + +echo " general.t14...\c" +$BT intersect -a c.bed.gz -b b.bed > obs +echo -n "" > exp +check obs exp + +echo " general.15...\c" +$BT intersect -a c.bed.gz -b c.bed.gz > obs +echo -n "" > exp +check obs exp + + +echo " general.t16...\c" +$BT subtract -a a.bed -b b.bed > obs +echo "chr1 1 75" > exp +check obs exp + +echo " general.t17...\c" +$BT subtract -a a.bed.gz -b b.bed.gz > obs +echo "chr1 1 75" > exp +check obs exp + +echo " general.t18...\c" +$BT subtract -a a.bed -b b.bed.gz > obs +echo "chr1 1 75" > exp +check obs exp + +echo " general.t19...\c" +$BT subtract -a a.bed.gz -b b.bed > obs +echo "chr1 1 75" > exp +check obs exp + +echo " general.t20...\c" +$BT subtract -a c.bed -b b.bed > obs +echo -n "" > exp +check obs exp + +echo " general.t21...\c" +$BT subtract -a c.bed.gz -b b.bed > obs +echo -n "" > exp +check obs exp + +echo " general.22...\c" +$BT subtract -a c.bed.gz -b c.bed.gz > obs +echo -n "" > exp +check obs exp + + +echo " general.t23...\c" +$BT window -a a.bed -b b.bed > obs +echo "chr1 1 100 chr1 75 200" > exp +check obs exp + +echo " general.t24...\c" +$BT window -a a.bed.gz -b b.bed.gz > obs +echo "chr1 1 100 chr1 75 200" > exp +check obs exp + +echo " general.t25...\c" +$BT window -a a.bed -b b.bed.gz > obs +echo "chr1 1 100 chr1 75 200" > exp +check obs exp + +echo " general.t26...\c" +$BT window -a a.bed.gz -b b.bed > obs +echo "chr1 1 100 chr1 75 200" > exp +check obs exp + +echo " general.t27...\c" +$BT window -a c.bed -b b.bed > obs +echo -n "" > exp +check obs exp + +echo " general.t28...\c" +$BT window -a c.bed.gz -b b.bed > obs +echo -n "" > exp +check obs exp + +echo " general.29...\c" +$BT window -a c.bed.gz -b c.bed.gz > obs +echo -n "" > exp +check obs exp + + +echo " general.t30...\c" +$BT closest -a a.bed -b b.bed > obs +echo "chr1 1 100 chr1 75 200" > exp +check obs exp + +echo " general.t31...\c" +$BT closest -a a.bed.gz -b b.bed.gz > obs +echo "chr1 1 100 chr1 75 200" > exp +check obs exp + +echo " general.t32...\c" +$BT closest -a a.bed -b b.bed.gz > obs +echo "chr1 1 100 chr1 75 200" > exp +check obs exp + +echo " general.t33...\c" +$BT closest -a a.bed.gz -b b.bed > obs +echo "chr1 1 100 chr1 75 200" > exp +check obs exp + +echo " general.t34...\c" +$BT closest -a c.bed -b b.bed > obs +echo -n "" > exp +check obs exp + +echo " general.t35...\c" +$BT closest -a c.bed.gz -b b.bed > obs +echo -n "" > exp +check obs exp + +echo " general.36...\c" +$BT closest -a c.bed.gz -b c.bed.gz > obs +echo -n "" > exp +check obs exp + + +echo " general.t37...\c" +$BT merge -i a.bed > obs +echo "chr1 1 100" > exp +check obs exp + +echo " general.t38...\c" +$BT merge -i a.bed.gz > obs +echo "chr1 1 100" > exp +check obs exp + +echo " general.t39...\c" +$BT merge -i b.bed > obs +echo "chr1 75 200" > exp +check obs exp + +echo " general.t40...\c" +$BT merge -i b.bed.gz > obs +echo "chr1 75 200" > exp +check obs exp + +echo " general.t41...\c" +$BT merge -i c.bed > obs +echo -n "" > exp +check obs exp + +echo " general.t42...\c" +$BT merge -i c.bed.gz > obs +echo -n "" > exp +check obs exp + +rm a.bed.gz b.bed.gz a.bed b.bed genome.txt + diff --git a/test/map/test-map.sh b/test/map/test-map.sh index d9ecbaca890ad1c25b567b97b8c42a0c9cb26604..70d550a92fcc929fccc04e09fbeea7fe86ce93cb 100644 --- a/test/map/test-map.sh +++ b/test/map/test-map.sh @@ -694,7 +694,7 @@ echo \ " ***** ***** ERROR: There are 1 columns given, but there are 2 operations." > exp -../../bin/bedtools map -a ivls.bed -b values.bed -o count,sum 2>&1 > /dev/null | head -3 > obs +$BT map -a ivls.bed -b values.bed -o count,sum 2>&1 > /dev/null | head -3 > obs check obs exp rm obs exp @@ -708,7 +708,7 @@ echo \ " ***** ***** ERROR: There are 3 columns given, but there are 2 operations." > exp -../../bin/bedtools map -a ivls.bed -b values.bed -c 5,1,2 -o count,sum 2>&1 > /dev/null | head -3 > obs +$BT map -a ivls.bed -b values.bed -c 5,1,2 -o count,sum 2>&1 > /dev/null | head -3 > obs check obs exp rm obs exp @@ -721,7 +721,7 @@ echo \ " ***** ***** ERROR: Column 1 is not a numeric field for database file values.bed." > exp -../../bin/bedtools map -a ivls.bed -b values.bed -c 1 -o sum 2>&1 > /dev/null | head -3 > obs +$BT map -a ivls.bed -b values.bed -c 1 -o sum 2>&1 > /dev/null | head -3 > obs check obs exp rm obs exp @@ -738,7 +738,7 @@ chr2 0 100 . . chr2 100 200 . . chr3 0 100 6 7 chr3 100 200 8 23" > exp -../../bin/bedtools map -a ivls.bed -b values4.bed -c 5,7 -o sum > obs +$BT map -a ivls.bed -b values4.bed -c 5,7 -o sum > obs check obs exp rm obs exp @@ -755,7 +755,7 @@ chr2 0 100 . . . chr2 100 200 . . . chr3 0 100 10 6 7 chr3 100 200 120 8 23" > exp -../../bin/bedtools map -a ivls.bed -b values4.bed -c 2,5,7 -o mean,sum,sum > obs +$BT map -a ivls.bed -b values4.bed -c 2,5,7 -o mean,sum,sum > obs check obs exp rm obs exp @@ -771,7 +771,7 @@ chr2 0 100 . chr2 100 200 . chr3 0 100 76.2222 chr3 100 200 0.25" > exp -../../bin/bedtools map -a ivls.bed -b values4.bed -c 7 -o stddev > obs +$BT map -a ivls.bed -b values4.bed -c 7 -o stddev > obs check obs exp rm obs exp @@ -786,7 +786,7 @@ chr2 0 100 . chr2 100 200 . chr3 0 100 114.333 chr3 100 200 0.5" > exp -../../bin/bedtools map -a ivls.bed -b values4.bed -c 7 -o sample_stddev > obs +$BT map -a ivls.bed -b values4.bed -c 7 -o sample_stddev > obs check obs exp rm obs exp diff --git a/test/reldist/test-reldist.sh b/test/reldist/test-reldist.sh index eebde8bda5c3608f9477bd0e91b2028d627e131b..fc315127c1f301e9484891a93c95ee5956d6e16a 100644 --- a/test/reldist/test-reldist.sh +++ b/test/reldist/test-reldist.sh @@ -1,4 +1,5 @@ BT=${BT-../../bin/bedtools} +DATA=${DATA-../../data} check() { @@ -17,8 +18,8 @@ echo " reldist.t01...\c" echo \ "reldist count total fraction 0.00 43424 43424 1.000" > exp -$BT reldist -a ../../data/refseq.chr1.exons.bed.gz \ - -b ../../data/refseq.chr1.exons.bed.gz > obs +$BT reldist -a $DATA/refseq.chr1.exons.bed.gz \ + -b $DATA/refseq.chr1.exons.bed.gz > obs check obs exp rm obs exp @@ -79,8 +80,8 @@ echo \ 0.47 850 43408 0.020 0.48 1006 43408 0.023 0.49 937 43408 0.022" > exp -$BT reldist -a ../../data/refseq.chr1.exons.bed.gz \ - -b ../../data/aluY.chr1.bed.gz > obs +$BT reldist -a $DATA/refseq.chr1.exons.bed.gz \ + -b $DATA/aluY.chr1.bed.gz > obs check obs exp rm obs exp @@ -143,7 +144,7 @@ echo \ 0.48 365 43422 0.008 0.49 336 43422 0.008 0.50 38 43422 0.001" > exp -$BT reldist -a ../../data/refseq.chr1.exons.bed.gz \ - -b ../../data/gerp.chr1.bed.gz > obs +$BT reldist -a $DATA/refseq.chr1.exons.bed.gz \ + -b $DATA/gerp.chr1.bed.gz > obs check obs exp -rm obs exp \ No newline at end of file +rm obs exp diff --git a/test/shuffle/excl.bed b/test/shuffle/excl.bed new file mode 100644 index 0000000000000000000000000000000000000000..c9300e6581aa732e3fe4264282af451a254134dc --- /dev/null +++ b/test/shuffle/excl.bed @@ -0,0 +1,9 @@ +chr1 0 10000000 +chr1 10000000 20000000 +chr1 20000000 30000000 +chr1 30000000 400000000 +chr1 40000000 500000000 +chr2 0 100000000 +chr3 0 100000000 +chr4 0 100000000 +chr5 0 100000000 diff --git a/test/shuffle/incl.bed b/test/shuffle/incl.bed new file mode 100644 index 0000000000000000000000000000000000000000..68f76c334c9088ca81d0ccc86d77fc933ea7c8eb --- /dev/null +++ b/test/shuffle/incl.bed @@ -0,0 +1,9 @@ +chr1 0 1000000 +chr1 1000000 2000000 +chr1 2000000 3000000 +chr1 3000000 4000000 +chr1 4000000 5000000 +chr2 0 1000000 +chr3 0 1000000 +chr4 0 1000000 +chr5 0 1000000 diff --git a/test/shuffle/simrep.bed b/test/shuffle/simrep.bed new file mode 100644 index 0000000000000000000000000000000000000000..7d620fcd7d4e2ddd402e4a5408331e36a0a2c8ae --- /dev/null +++ b/test/shuffle/simrep.bed @@ -0,0 +1,1000 @@ +chr1 10000 10468 trf 789 +chr1 10627 10800 trf 346 +chr1 10757 10997 trf 434 +chr1 11225 11447 trf 273 +chr1 11271 11448 trf 187 +chr1 11283 11448 trf 199 +chr1 19305 19443 trf 242 +chr1 20828 20863 trf 70 +chr1 30862 30959 trf 79 +chr1 44835 44876 trf 73 +chr1 50481 50513 trf 64 +chr1 54712 54817 trf 149 +chr1 59896 59934 trf 58 +chr1 66159 66629 trf 278 +chr1 66160 66630 trf 339 +chr1 66204 66632 trf 202 +chr1 72120 72163 trf 59 +chr1 72124 72164 trf 62 +chr1 72128 72163 trf 52 +chr1 83505 83682 trf 302 +chr1 83791 84041 trf 335 +chr1 88674 88962 trf 441 +chr1 90047 90430 trf 712 +chr1 92209 92243 trf 68 +chr1 98999 99042 trf 86 +chr1 99046 99116 trf 68 +chr1 99046 99115 trf 95 +chr1 99046 99116 trf 104 +chr1 99047 99115 trf 77 +chr1 104160 104196 trf 63 +chr1 108444 108469 trf 50 +chr1 109564 109614 trf 82 +chr1 111439 111490 trf 66 +chr1 120967 121135 trf 150 +chr1 120968 121135 trf 159 +chr1 120968 121135 trf 137 +chr1 120968 121135 trf 166 +chr1 120968 121135 trf 121 +chr1 133744 133777 trf 50 +chr1 134065 134094 trf 58 +chr1 136199 137288 trf 1683 +chr1 136199 137288 trf 1880 +chr1 136199 137288 trf 1887 +chr1 137395 137465 trf 90 +chr1 139377 139457 trf 97 +chr1 144527 144576 trf 98 +chr1 147433 147475 trf 66 +chr1 147434 147478 trf 79 +chr1 158997 159031 trf 59 +chr1 162180 162275 trf 66 +chr1 162196 162353 trf 65 +chr1 162196 162325 trf 97 +chr1 162235 162281 trf 92 +chr1 162287 162344 trf 69 +chr1 162358 162393 trf 54 +chr1 164403 164470 trf 109 +chr1 174401 174686 trf 329 +chr1 174902 174933 trf 62 +chr1 176202 176231 trf 58 +chr1 227417 227805 trf 681 +chr1 236611 236766 trf 283 +chr1 238536 238570 trf 68 +chr1 241136 241161 trf 50 +chr1 241137 241180 trf 52 +chr1 241137 241179 trf 59 +chr1 245334 245365 trf 62 +chr1 245362 245430 trf 84 +chr1 245362 245428 trf 87 +chr1 245364 245430 trf 75 +chr1 245369 245430 trf 50 +chr1 245370 245430 trf 70 +chr1 245370 245428 trf 64 +chr1 245384 245430 trf 74 +chr1 248425 248468 trf 68 +chr1 250477 250511 trf 59 +chr1 254759 254784 trf 50 +chr1 255885 255929 trf 61 +chr1 255885 255929 trf 70 +chr1 257754 257805 trf 66 +chr1 267288 267425 trf 171 +chr1 267289 267425 trf 90 +chr1 267297 267425 trf 109 +chr1 324677 324757 trf 97 +chr1 325225 325313 trf 81 +chr1 326846 327154 trf 438 +chr1 326846 327154 trf 539 +chr1 329259 329284 trf 50 +chr1 329572 329605 trf 50 +chr1 342186 342356 trf 136 +chr1 342186 342355 trf 152 +chr1 342193 342352 trf 229 +chr1 351840 351891 trf 66 +chr1 361047 361090 trf 63 +chr1 363669 363832 trf 290 +chr1 384364 386754 trf 4622 +chr1 387005 387047 trf 57 +chr1 387034 387177 trf 94 +chr1 387036 387181 trf 80 +chr1 392650 392701 trf 84 +chr1 401285 401444 trf 218 +chr1 401573 401748 trf 280 +chr1 404661 404707 trf 92 +chr1 406202 406274 trf 76 +chr1 406227 406286 trf 77 +chr1 406776 406819 trf 68 +chr1 409821 409866 trf 51 +chr1 409865 409900 trf 52 +chr1 421245 421285 trf 64 +chr1 422395 422435 trf 80 +chr1 422560 422588 trf 56 +chr1 424690 424795 trf 75 +chr1 425529 425555 trf 52 +chr1 426691 426716 trf 50 +chr1 436729 437092 trf 658 +chr1 436785 436926 trf 81 +chr1 437637 438182 trf 1018 +chr1 437785 437896 trf 92 +chr1 437793 437899 trf 79 +chr1 440818 440844 trf 52 +chr1 440878 440928 trf 75 +chr1 440878 440997 trf 112 +chr1 440885 440997 trf 98 +chr1 440946 441013 trf 93 +chr1 445172 445363 trf 292 +chr1 445172 445363 trf 292 +chr1 445177 445376 trf 184 +chr1 445177 445400 trf 171 +chr1 445401 445494 trf 154 +chr1 446414 446792 trf 738 +chr1 446414 447053 trf 1224 +chr1 446523 446656 trf 248 +chr1 446575 446923 trf 660 +chr1 446706 447054 trf 642 +chr1 446837 446975 trf 267 +chr1 446941 447668 trf 1247 +chr1 448022 448062 trf 53 +chr1 448299 448328 trf 58 +chr1 448680 448724 trf 53 +chr1 448684 448724 trf 55 +chr1 449273 450589 trf 2380 +chr1 451283 451338 trf 56 +chr1 451399 451632 trf 152 +chr1 451537 451728 trf 276 +chr1 451584 451813 trf 365 +chr1 451678 451726 trf 96 +chr1 451753 451858 trf 144 +chr1 451793 452184 trf 692 +chr1 451816 452119 trf 187 +chr1 451816 452137 trf 269 +chr1 451823 451936 trf 138 +chr1 451876 452092 trf 256 +chr1 451921 452020 trf 117 +chr1 451978 452184 trf 279 +chr1 452783 452893 trf 152 +chr1 453564 453604 trf 55 +chr1 455230 455284 trf 90 +chr1 458520 458548 trf 56 +chr1 462939 463094 trf 283 +chr1 528496 528550 trf 99 +chr1 530176 530216 trf 55 +chr1 530887 530997 trf 152 +chr1 531596 531802 trf 279 +chr1 531596 531987 trf 683 +chr1 531661 531964 trf 178 +chr1 531688 531904 trf 247 +chr1 531934 532229 trf 464 +chr1 532022 532370 trf 268 +chr1 532081 532184 trf 120 +chr1 532087 532174 trf 122 +chr1 532431 532481 trf 64 +chr1 532431 532485 trf 72 +chr1 533174 534114 trf 1835 +chr1 533191 533267 trf 61 +chr1 534667 534710 trf 50 +chr1 534667 534707 trf 52 +chr1 534667 534708 trf 57 +chr1 535062 535091 trf 58 +chr1 535328 535368 trf 53 +chr1 535722 536212 trf 818 +chr1 536099 536447 trf 651 +chr1 536178 536316 trf 267 +chr1 536230 536556 trf 607 +chr1 537589 537739 trf 158 +chr1 537602 537744 trf 221 +chr1 541894 541943 trf 59 +chr1 541894 542022 trf 102 +chr1 541910 542022 trf 93 +chr1 541910 542029 trf 112 +chr1 541979 542029 trf 75 +chr1 542063 542089 trf 52 +chr1 544720 546141 trf 2669 +chr1 546686 547869 trf 2189 +chr1 546748 546993 trf 79 +chr1 547692 547833 trf 81 +chr1 557890 557915 trf 50 +chr1 559051 559079 trf 56 +chr1 559813 559914 trf 67 +chr1 559817 559858 trf 82 +chr1 562161 562201 trf 80 +chr1 563313 563353 trf 64 +chr1 580567 580602 trf 52 +chr1 580599 580641 trf 50 +chr1 580601 580647 trf 53 +chr1 583652 583695 trf 68 +chr1 584186 584244 trf 75 +chr1 585763 585803 trf 80 +chr1 588715 588890 trf 271 +chr1 589019 589170 trf 206 +chr1 597756 597807 trf 84 +chr1 603277 603432 trf 91 +chr1 603277 603432 trf 107 +chr1 603279 603434 trf 109 +chr1 603714 605330 trf 2931 +chr1 603937 604136 trf 96 +chr1 625321 625429 trf 137 +chr1 625857 626020 trf 290 +chr1 628597 628640 trf 63 +chr1 637802 637853 trf 66 +chr1 647337 647474 trf 115 +chr1 647338 647474 trf 104 +chr1 647342 647475 trf 130 +chr1 649704 649806 trf 204 +chr1 660108 660141 trf 50 +chr1 660431 660460 trf 58 +chr1 662565 662776 trf 295 +chr1 662565 662776 trf 359 +chr1 662883 662953 trf 81 +chr1 664865 664945 trf 97 +chr1 683120 683167 trf 76 +chr1 683123 683164 trf 55 +chr1 694826 694878 trf 95 +chr1 698013 698088 trf 69 +chr1 698019 698050 trf 62 +chr1 698023 698125 trf 99 +chr1 698024 698119 trf 75 +chr1 698040 698189 trf 110 +chr1 698131 698184 trf 70 +chr1 698198 698233 trf 54 +chr1 700243 700310 trf 109 +chr1 710207 710475 trf 331 +chr1 711984 712013 trf 58 +chr1 715022 715119 trf 133 +chr1 723748 723815 trf 52 +chr1 724137 727026 trf 1878 +chr1 724137 727026 trf 1878 +chr1 724137 727053 trf 1878 +chr1 726432 726478 trf 57 +chr1 731148 731189 trf 57 +chr1 743653 743700 trf 58 +chr1 743669 743718 trf 59 +chr1 743675 743718 trf 77 +chr1 746613 746648 trf 70 +chr1 747408 747448 trf 71 +chr1 755293 759043 trf 4409 +chr1 755609 755666 trf 53 +chr1 755625 755683 trf 53 +chr1 755765 755821 trf 60 +chr1 756535 756593 trf 55 +chr1 757494 757589 trf 54 +chr1 768037 768091 trf 72 +chr1 768116 768161 trf 90 +chr1 774678 775030 trf 506 +chr1 777293 777321 trf 56 +chr1 779740 779783 trf 77 +chr1 788795 789286 trf 865 +chr1 795558 795591 trf 66 +chr1 797133 797164 trf 53 +chr1 797158 797540 trf 178 +chr1 797168 797548 trf 136 +chr1 797189 797384 trf 63 +chr1 801825 802573 trf 1028 +chr1 804833 804900 trf 71 +chr1 804842 804900 trf 59 +chr1 805547 805588 trf 66 +chr1 806066 806132 trf 87 +chr1 807883 808559 trf 1130 +chr1 807883 808559 trf 1244 +chr1 811209 811814 trf 709 +chr1 816722 816761 trf 53 +chr1 823041 823078 trf 56 +chr1 823700 823757 trf 53 +chr1 823729 823881 trf 50 +chr1 823729 823968 trf 59 +chr1 823789 823828 trf 60 +chr1 823852 824027 trf 280 +chr1 823895 823966 trf 51 +chr1 823971 824057 trf 106 +chr1 823978 824059 trf 63 +chr1 828736 828771 trf 52 +chr1 829181 829220 trf 78 +chr1 834020 834055 trf 52 +chr1 835728 835792 trf 110 +chr1 836174 836199 trf 50 +chr1 839851 840119 trf 242 +chr1 839851 840119 trf 376 +chr1 839858 839943 trf 152 +chr1 839919 840117 trf 288 +chr1 840064 840098 trf 68 +chr1 840392 840494 trf 204 +chr1 842254 842394 trf 271 +chr1 843966 844177 trf 156 +chr1 843993 844076 trf 64 +chr1 844009 844176 trf 77 +chr1 844009 844123 trf 82 +chr1 844028 844123 trf 158 +chr1 844063 844201 trf 176 +chr1 844107 844193 trf 111 +chr1 844145 844229 trf 132 +chr1 844188 844232 trf 52 +chr1 844300 845279 trf 1655 +chr1 844300 845279 trf 1653 +chr1 844300 845279 trf 1777 +chr1 850333 850370 trf 56 +chr1 850976 851057 trf 144 +chr1 850978 851045 trf 57 +chr1 851738 851811 trf 110 +chr1 856983 857083 trf 75 +chr1 857031 857115 trf 74 +chr1 857060 857105 trf 74 +chr1 857067 857105 trf 76 +chr1 865461 865532 trf 142 +chr1 869345 870342 trf 1726 +chr1 871614 871813 trf 380 +chr1 871614 871836 trf 345 +chr1 871614 871836 trf 381 +chr1 873597 873709 trf 215 +chr1 874778 874888 trf 213 +chr1 883034 883124 trf 144 +chr1 884026 884057 trf 53 +chr1 885466 885544 trf 86 +chr1 885525 885653 trf 154 +chr1 885581 885612 trf 55 +chr1 885700 885825 trf 121 +chr1 885771 885825 trf 65 +chr1 885777 885825 trf 60 +chr1 885898 885930 trf 50 +chr1 885900 885928 trf 56 +chr1 890221 890256 trf 54 +chr1 892142 892275 trf 248 +chr1 892838 892953 trf 214 +chr1 895470 895850 trf 389 +chr1 895470 895852 trf 341 +chr1 895480 895852 trf 321 +chr1 895480 895792 trf 220 +chr1 899910 899993 trf 112 +chr1 899922 900224 trf 508 +chr1 900683 900726 trf 50 +chr1 900683 900724 trf 64 +chr1 904261 904289 trf 56 +chr1 904696 904765 trf 79 +chr1 904832 904922 trf 64 +chr1 904840 904937 trf 76 +chr1 904849 904901 trf 56 +chr1 904857 904919 trf 88 +chr1 904894 904950 trf 60 +chr1 904988 905037 trf 50 +chr1 905018 905066 trf 62 +chr1 905101 905145 trf 52 +chr1 905139 905170 trf 53 +chr1 905338 905562 trf 430 +chr1 910475 910561 trf 104 +chr1 910486 910537 trf 59 +chr1 910487 910560 trf 58 +chr1 910487 910558 trf 78 +chr1 910496 910561 trf 55 +chr1 912066 913452 trf 1950 +chr1 913746 913783 trf 65 +chr1 915298 915521 trf 383 +chr1 919955 919987 trf 64 +chr1 919991 920037 trf 92 +chr1 924066 924745 trf 846 +chr1 926889 926923 trf 50 +chr1 928267 928532 trf 372 +chr1 928270 928532 trf 389 +chr1 931634 932247 trf 1043 +chr1 932994 933111 trf 207 +chr1 934123 934164 trf 73 +chr1 934653 934692 trf 51 +chr1 941137 941186 trf 80 +chr1 941138 941186 trf 71 +chr1 943126 943160 trf 68 +chr1 945179 945710 trf 663 +chr1 946284 946707 trf 446 +chr1 951148 951737 trf 781 +chr1 953089 953185 trf 156 +chr1 953143 953581 trf 727 +chr1 953199 953460 trf 171 +chr1 953250 953504 trf 255 +chr1 954849 954889 trf 64 +chr1 955321 955424 trf 77 +chr1 955321 955424 trf 59 +chr1 955366 955419 trf 63 +chr1 961126 961164 trf 58 +chr1 963851 964525 trf 1197 +chr1 964343 964441 trf 80 +chr1 964745 964826 trf 126 +chr1 964766 964864 trf 102 +chr1 964970 966672 trf 1913 +chr1 964970 966699 trf 1483 +chr1 965018 965308 trf 246 +chr1 965719 965868 trf 78 +chr1 966062 966203 trf 237 +chr1 966540 966677 trf 194 +chr1 969012 969213 trf 79 +chr1 969065 969213 trf 81 +chr1 976345 976518 trf 82 +chr1 976360 976505 trf 281 +chr1 976362 976421 trf 84 +chr1 976437 976496 trf 84 +chr1 976476 976522 trf 67 +chr1 977058 977237 trf 340 +chr1 977156 977232 trf 63 +chr1 984503 984583 trf 124 +chr1 987833 988039 trf 277 +chr1 987833 988039 trf 290 +chr1 987902 988052 trf 198 +chr1 987974 988236 trf 445 +chr1 988030 988173 trf 92 +chr1 988150 988316 trf 228 +chr1 988559 988607 trf 87 +chr1 988586 988670 trf 123 +chr1 991335 991369 trf 59 +chr1 991698 991905 trf 297 +chr1 991706 991908 trf 134 +chr1 991828 992100 trf 373 +chr1 991828 992100 trf 431 +chr1 991974 992012 trf 58 +chr1 991982 992014 trf 64 +chr1 992049 992133 trf 123 +chr1 995008 995063 trf 76 +chr1 997426 997584 trf 67 +chr1 997453 997513 trf 77 +chr1 997476 997570 trf 85 +chr1 997483 997584 trf 125 +chr1 999018 999068 trf 63 +chr1 1000223 1000702 trf 840 +chr1 1002912 1002945 trf 57 +chr1 1004112 1004214 trf 186 +chr1 1004412 1004491 trf 131 +chr1 1010238 1010295 trf 91 +chr1 1010263 1010322 trf 68 +chr1 1010278 1010363 trf 93 +chr1 1010966 1011101 trf 252 +chr1 1011232 1014805 trf 5788 +chr1 1016016 1016409 trf 750 +chr1 1019922 1020020 trf 155 +chr1 1022153 1022239 trf 93 +chr1 1023206 1023336 trf 228 +chr1 1023322 1023355 trf 57 +chr1 1023515 1023739 trf 188 +chr1 1024905 1024943 trf 67 +chr1 1027069 1027195 trf 200 +chr1 1027082 1027147 trf 58 +chr1 1027689 1027725 trf 63 +chr1 1028061 1028113 trf 86 +chr1 1034367 1035284 trf 1392 +chr1 1035608 1035699 trf 157 +chr1 1036893 1036956 trf 90 +chr1 1036893 1036956 trf 108 +chr1 1036928 1037071 trf 166 +chr1 1037451 1037476 trf 50 +chr1 1037663 1037716 trf 88 +chr1 1037994 1038029 trf 70 +chr1 1041264 1041299 trf 52 +chr1 1042610 1042845 trf 353 +chr1 1042754 1042884 trf 176 +chr1 1042995 1043052 trf 87 +chr1 1043427 1044497 trf 1479 +chr1 1043427 1044497 trf 1430 +chr1 1043429 1043671 trf 81 +chr1 1043429 1044497 trf 1439 +chr1 1044117 1044168 trf 52 +chr1 1044397 1044448 trf 52 +chr1 1044791 1044820 trf 51 +chr1 1047748 1048055 trf 422 +chr1 1050860 1051130 trf 261 +chr1 1050860 1051124 trf 292 +chr1 1050860 1051121 trf 368 +chr1 1052448 1052587 trf 103 +chr1 1052448 1052587 trf 136 +chr1 1052449 1052587 trf 125 +chr1 1056378 1056453 trf 105 +chr1 1058858 1059628 trf 382 +chr1 1058863 1059628 trf 286 +chr1 1058875 1059629 trf 301 +chr1 1058875 1059342 trf 168 +chr1 1058889 1058970 trf 72 +chr1 1058996 1059106 trf 82 +chr1 1059233 1059602 trf 250 +chr1 1059235 1059595 trf 297 +chr1 1059303 1059373 trf 59 +chr1 1061937 1062127 trf 281 +chr1 1064073 1064139 trf 96 +chr1 1065566 1065596 trf 60 +chr1 1069588 1069676 trf 131 +chr1 1070119 1070237 trf 202 +chr1 1071446 1071496 trf 91 +chr1 1074450 1076089 trf 2927 +chr1 1076480 1076690 trf 271 +chr1 1076486 1076722 trf 88 +chr1 1076486 1076920 trf 135 +chr1 1076716 1076840 trf 164 +chr1 1076793 1076877 trf 82 +chr1 1076874 1076927 trf 81 +chr1 1077426 1077535 trf 218 +chr1 1078622 1078859 trf 285 +chr1 1080780 1080986 trf 140 +chr1 1082517 1082829 trf 570 +chr1 1084221 1084448 trf 429 +chr1 1084981 1085079 trf 88 +chr1 1087203 1087264 trf 104 +chr1 1087774 1088962 trf 1640 +chr1 1091730 1091876 trf 274 +chr1 1092670 1092733 trf 101 +chr1 1092725 1092808 trf 166 +chr1 1099577 1099622 trf 90 +chr1 1101888 1101940 trf 59 +chr1 1101888 1101940 trf 68 +chr1 1101897 1101928 trf 53 +chr1 1103389 1103513 trf 239 +chr1 1105847 1105954 trf 62 +chr1 1105847 1105950 trf 84 +chr1 1105862 1105935 trf 69 +chr1 1108106 1108225 trf 68 +chr1 1108106 1108213 trf 51 +chr1 1108112 1108150 trf 51 +chr1 1108127 1108214 trf 50 +chr1 1108151 1108233 trf 56 +chr1 1108151 1108213 trf 63 +chr1 1111095 1111214 trf 193 +chr1 1111111 1111165 trf 85 +chr1 1111111 1111378 trf 444 +chr1 1111169 1111287 trf 159 +chr1 1111169 1111295 trf 207 +chr1 1111219 1111451 trf 366 +chr1 1111302 1111370 trf 127 +chr1 1111302 1111779 trf 512 +chr1 1111387 1111584 trf 159 +chr1 1111516 1111750 trf 432 +chr1 1111599 1111667 trf 136 +chr1 1111682 1111775 trf 150 +chr1 1111883 1111929 trf 83 +chr1 1112366 1112489 trf 102 +chr1 1112368 1112489 trf 80 +chr1 1112421 1112507 trf 79 +chr1 1112424 1112491 trf 71 +chr1 1112441 1112517 trf 77 +chr1 1112510 1112577 trf 98 +chr1 1112510 1112595 trf 109 +chr1 1112628 1112677 trf 50 +chr1 1112628 1112685 trf 78 +chr1 1116246 1116362 trf 123 +chr1 1116337 1116452 trf 203 +chr1 1116389 1116420 trf 53 +chr1 1119906 1119946 trf 57 +chr1 1120035 1120360 trf 650 +chr1 1122785 1123298 trf 647 +chr1 1127741 1128246 trf 803 +chr1 1129595 1129648 trf 74 +chr1 1130766 1130791 trf 50 +chr1 1133236 1133267 trf 53 +chr1 1133453 1133556 trf 138 +chr1 1137158 1138210 trf 1893 +chr1 1139627 1139677 trf 82 +chr1 1146421 1146681 trf 376 +chr1 1149568 1149616 trf 62 +chr1 1149569 1149606 trf 51 +chr1 1154541 1154589 trf 51 +chr1 1157015 1157044 trf 51 +chr1 1158300 1158549 trf 281 +chr1 1158302 1158549 trf 272 +chr1 1158313 1158393 trf 63 +chr1 1158440 1158497 trf 78 +chr1 1158459 1158518 trf 68 +chr1 1158479 1158547 trf 68 +chr1 1158509 1158569 trf 75 +chr1 1161070 1161160 trf 153 +chr1 1161136 1161175 trf 51 +chr1 1161675 1161800 trf 223 +chr1 1162663 1162879 trf 387 +chr1 1164423 1164479 trf 60 +chr1 1164443 1164568 trf 173 +chr1 1164659 1164697 trf 76 +chr1 1164664 1164705 trf 64 +chr1 1180100 1180675 trf 194 +chr1 1180105 1180674 trf 413 +chr1 1180107 1180635 trf 251 +chr1 1180259 1180635 trf 120 +chr1 1180282 1180656 trf 332 +chr1 1180392 1180518 trf 113 +chr1 1182253 1182282 trf 51 +chr1 1183472 1185067 trf 2517 +chr1 1193812 1193854 trf 59 +chr1 1194367 1194651 trf 480 +chr1 1194368 1194517 trf 232 +chr1 1194369 1194514 trf 183 +chr1 1194369 1194675 trf 201 +chr1 1194446 1194581 trf 191 +chr1 1194481 1194537 trf 96 +chr1 1194506 1194622 trf 141 +chr1 1194683 1194774 trf 101 +chr1 1200934 1201010 trf 125 +chr1 1200944 1201029 trf 102 +chr1 1202260 1202285 trf 50 +chr1 1202904 1203030 trf 180 +chr1 1204479 1204792 trf 608 +chr1 1206181 1206271 trf 155 +chr1 1207354 1207384 trf 60 +chr1 1207988 1208097 trf 182 +chr1 1214445 1214547 trf 141 +chr1 1214462 1214617 trf 265 +chr1 1214509 1214580 trf 88 +chr1 1218004 1218109 trf 120 +chr1 1218007 1218117 trf 116 +chr1 1219479 1219566 trf 61 +chr1 1219480 1219588 trf 155 +chr1 1219483 1219606 trf 109 +chr1 1219484 1219606 trf 144 +chr1 1219529 1219604 trf 51 +chr1 1219542 1219591 trf 55 +chr1 1219595 1219694 trf 119 +chr1 1219672 1219707 trf 54 +chr1 1219672 1219723 trf 50 +chr1 1219884 1220063 trf 263 +chr1 1219884 1220063 trf 295 +chr1 1223579 1225633 trf 2934 +chr1 1223750 1223820 trf 56 +chr1 1229111 1229176 trf 130 +chr1 1231706 1231814 trf 198 +chr1 1232119 1232352 trf 263 +chr1 1232456 1233167 trf 1083 +chr1 1232456 1233187 trf 1346 +chr1 1233864 1233935 trf 106 +chr1 1234790 1234859 trf 138 +chr1 1238883 1238921 trf 53 +chr1 1238973 1239134 trf 259 +chr1 1243313 1243469 trf 231 +chr1 1243333 1243466 trf 74 +chr1 1243558 1243589 trf 62 +chr1 1246148 1246273 trf 250 +chr1 1246244 1246290 trf 74 +chr1 1249896 1249978 trf 130 +chr1 1250511 1250589 trf 129 +chr1 1251042 1251100 trf 62 +chr1 1251042 1251235 trf 71 +chr1 1251117 1251169 trf 77 +chr1 1251158 1251208 trf 55 +chr1 1252775 1252800 trf 50 +chr1 1258002 1258044 trf 59 +chr1 1258018 1258073 trf 62 +chr1 1258019 1258136 trf 137 +chr1 1258477 1258512 trf 54 +chr1 1259246 1259613 trf 293 +chr1 1259288 1259640 trf 336 +chr1 1260142 1260179 trf 56 +chr1 1264919 1264962 trf 50 +chr1 1265069 1265099 trf 51 +chr1 1265182 1265220 trf 58 +chr1 1265375 1265438 trf 72 +chr1 1265502 1265556 trf 72 +chr1 1273216 1273324 trf 171 +chr1 1273220 1273271 trf 50 +chr1 1275245 1275424 trf 222 +chr1 1275260 1275326 trf 64 +chr1 1275267 1275328 trf 67 +chr1 1275281 1275347 trf 55 +chr1 1276118 1276613 trf 154 +chr1 1276118 1276612 trf 274 +chr1 1276191 1276220 trf 58 +chr1 1276263 1276486 trf 219 +chr1 1276554 1276614 trf 70 +chr1 1276776 1276984 trf 228 +chr1 1278237 1278433 trf 347 +chr1 1280317 1280443 trf 198 +chr1 1285358 1286838 trf 2870 +chr1 1290766 1290818 trf 95 +chr1 1290766 1290812 trf 60 +chr1 1290766 1290834 trf 84 +chr1 1291286 1291395 trf 121 +chr1 1291317 1291440 trf 140 +chr1 1291672 1291789 trf 139 +chr1 1291688 1291899 trf 280 +chr1 1291791 1291903 trf 122 +chr1 1296283 1296348 trf 105 +chr1 1296355 1296406 trf 75 +chr1 1296502 1296542 trf 62 +chr1 1296543 1296592 trf 64 +chr1 1296561 1296617 trf 69 +chr1 1297901 1298474 trf 866 +chr1 1298280 1298678 trf 472 +chr1 1298813 1299164 trf 452 +chr1 1299410 1299702 trf 370 +chr1 1300851 1301224 trf 482 +chr1 1301373 1301440 trf 53 +chr1 1301597 1301644 trf 52 +chr1 1301599 1301645 trf 92 +chr1 1301715 1301768 trf 58 +chr1 1301715 1301768 trf 70 +chr1 1301723 1301780 trf 91 +chr1 1301800 1301827 trf 54 +chr1 1302087 1302117 trf 51 +chr1 1302214 1302317 trf 147 +chr1 1302237 1302962 trf 128 +chr1 1302247 1302355 trf 70 +chr1 1302307 1302598 trf 347 +chr1 1302378 1302552 trf 139 +chr1 1302380 1302636 trf 361 +chr1 1302578 1302612 trf 54 +chr1 1302604 1302698 trf 111 +chr1 1302768 1303061 trf 302 +chr1 1302844 1302907 trf 74 +chr1 1302863 1302911 trf 87 +chr1 1303029 1303063 trf 50 +chr1 1303558 1303591 trf 66 +chr1 1317610 1318281 trf 1077 +chr1 1317610 1318281 trf 1077 +chr1 1320746 1321020 trf 431 +chr1 1322516 1322558 trf 84 +chr1 1326979 1327034 trf 92 +chr1 1331951 1331977 trf 52 +chr1 1331957 1332310 trf 446 +chr1 1342954 1343001 trf 58 +chr1 1347226 1347544 trf 155 +chr1 1347234 1347579 trf 215 +chr1 1347251 1347544 trf 379 +chr1 1347271 1347576 trf 182 +chr1 1347293 1347510 trf 277 +chr1 1347495 1347593 trf 160 +chr1 1356049 1356168 trf 177 +chr1 1356062 1356153 trf 89 +chr1 1362713 1362907 trf 121 +chr1 1363337 1363594 trf 218 +chr1 1363338 1363584 trf 330 +chr1 1363338 1363589 trf 369 +chr1 1364227 1364740 trf 424 +chr1 1364378 1364704 trf 402 +chr1 1366406 1366438 trf 64 +chr1 1366430 1366550 trf 192 +chr1 1368390 1368456 trf 114 +chr1 1378218 1378319 trf 193 +chr1 1379053 1379107 trf 108 +chr1 1379726 1379823 trf 185 +chr1 1380549 1380674 trf 214 +chr1 1381412 1381670 trf 329 +chr1 1383880 1383915 trf 70 +chr1 1384513 1384765 trf 98 +chr1 1384514 1384775 trf 198 +chr1 1384517 1384757 trf 100 +chr1 1384517 1384765 trf 98 +chr1 1384540 1384776 trf 63 +chr1 1384613 1384798 trf 289 +chr1 1384713 1384765 trf 70 +chr1 1388177 1388219 trf 50 +chr1 1390596 1390623 trf 54 +chr1 1396969 1397166 trf 313 +chr1 1400969 1400994 trf 50 +chr1 1402019 1402053 trf 59 +chr1 1404479 1404516 trf 74 +chr1 1409555 1409592 trf 56 +chr1 1409556 1409592 trf 58 +chr1 1412924 1413011 trf 147 +chr1 1413057 1413105 trf 89 +chr1 1414752 1414828 trf 125 +chr1 1415232 1415303 trf 83 +chr1 1417220 1417451 trf 167 +chr1 1417307 1417451 trf 189 +chr1 1422926 1423030 trf 172 +chr1 1427911 1428172 trf 353 +chr1 1429788 1429941 trf 261 +chr1 1432534 1432597 trf 126 +chr1 1433277 1433534 trf 329 +chr1 1434966 1434991 trf 50 +chr1 1434972 1435568 trf 771 +chr1 1435982 1436040 trf 73 +chr1 1435984 1436027 trf 50 +chr1 1436803 1437059 trf 322 +chr1 1437233 1437278 trf 58 +chr1 1437600 1438182 trf 757 +chr1 1439334 1439361 trf 54 +chr1 1443549 1443652 trf 161 +chr1 1445861 1445898 trf 67 +chr1 1447259 1447297 trf 76 +chr1 1447859 1447900 trf 50 +chr1 1451663 1451743 trf 151 +chr1 1453382 1453419 trf 58 +chr1 1453730 1453769 trf 51 +chr1 1453957 1454004 trf 58 +chr1 1454092 1454259 trf 196 +chr1 1454148 1454241 trf 107 +chr1 1455280 1455442 trf 189 +chr1 1455303 1455454 trf 158 +chr1 1456678 1456709 trf 62 +chr1 1463744 1463824 trf 106 +chr1 1466208 1466235 trf 54 +chr1 1467157 1467188 trf 53 +chr1 1467438 1467474 trf 56 +chr1 1468157 1468364 trf 324 +chr1 1470421 1470471 trf 100 +chr1 1470524 1470562 trf 51 +chr1 1475221 1475440 trf 282 +chr1 1475226 1475580 trf 268 +chr1 1475226 1475580 trf 273 +chr1 1475226 1475580 trf 250 +chr1 1475308 1475361 trf 54 +chr1 1475870 1475907 trf 51 +chr1 1475872 1475919 trf 51 +chr1 1475985 1476019 trf 50 +chr1 1476022 1476062 trf 53 +chr1 1478430 1478455 trf 50 +chr1 1478967 1479211 trf 431 +chr1 1479084 1479198 trf 59 +chr1 1481888 1481988 trf 121 +chr1 1484901 1484931 trf 51 +chr1 1484947 1485207 trf 310 +chr1 1489521 1489787 trf 415 +chr1 1491398 1491709 trf 324 +chr1 1491623 1491843 trf 302 +chr1 1494586 1494680 trf 143 +chr1 1497825 1498003 trf 320 +chr1 1497825 1498032 trf 290 +chr1 1499766 1499791 trf 50 +chr1 1500485 1500544 trf 118 +chr1 1504571 1504622 trf 50 +chr1 1504572 1504620 trf 60 +chr1 1506213 1506486 trf 408 +chr1 1506470 1506829 trf 456 +chr1 1506624 1506662 trf 76 +chr1 1506858 1506888 trf 60 +chr1 1508397 1508652 trf 365 +chr1 1508809 1508836 trf 54 +chr1 1508809 1508861 trf 63 +chr1 1513789 1513975 trf 261 +chr1 1519478 1520228 trf 761 +chr1 1520670 1520701 trf 53 +chr1 1520698 1521016 trf 467 +chr1 1521329 1521358 trf 58 +chr1 1523831 1523856 trf 50 +chr1 1524540 1524583 trf 86 +chr1 1527628 1528557 trf 1047 +chr1 1527898 1527923 trf 50 +chr1 1528156 1528948 trf 947 +chr1 1528653 1528683 trf 53 +chr1 1529082 1529121 trf 53 +chr1 1529082 1529122 trf 62 +chr1 1529749 1529833 trf 114 +chr1 1529791 1529908 trf 126 +chr1 1530243 1530304 trf 77 +chr1 1530261 1531368 trf 650 +chr1 1530262 1531931 trf 524 +chr1 1530262 1531949 trf 574 +chr1 1530268 1531907 trf 299 +chr1 1530268 1531741 trf 478 +chr1 1530270 1531665 trf 406 +chr1 1530290 1532197 trf 779 +chr1 1530290 1531982 trf 521 +chr1 1530290 1532197 trf 908 +chr1 1530290 1531982 trf 650 +chr1 1530314 1531741 trf 473 +chr1 1530407 1532078 trf 257 +chr1 1531184 1531743 trf 212 +chr1 1531707 1532141 trf 259 +chr1 1531787 1532197 trf 142 +chr1 1531795 1532109 trf 271 +chr1 1531800 1532183 trf 119 +chr1 1531995 1532121 trf 130 +chr1 1532114 1532197 trf 69 +chr1 1535328 1535366 trf 53 +chr1 1539673 1539702 trf 58 +chr1 1540034 1540153 trf 98 +chr1 1540782 1542016 trf 1313 +chr1 1541871 1541920 trf 63 +chr1 1543409 1543506 trf 84 +chr1 1543409 1543491 trf 105 +chr1 1543412 1543505 trf 106 +chr1 1544291 1545218 trf 999 +chr1 1545201 1545231 trf 51 +chr1 1547902 1547954 trf 52 +chr1 1547908 1547954 trf 51 +chr1 1547928 1548697 trf 928 +chr1 1551268 1551294 trf 52 +chr1 1556883 1556933 trf 100 +chr1 1557168 1557196 trf 56 +chr1 1558754 1558840 trf 154 +chr1 1562818 1562984 trf 288 +chr1 1562940 1563022 trf 110 +chr1 1563202 1563335 trf 214 +chr1 1565226 1565251 trf 50 +chr1 1565369 1565439 trf 58 +chr1 1577062 1577101 trf 60 +chr1 1577063 1577161 trf 92 +chr1 1579428 1579502 trf 121 +chr1 1585271 1585316 trf 90 +chr1 1589609 1589640 trf 53 +chr1 1589609 1589646 trf 58 +chr1 1590379 1590411 trf 55 +chr1 1596506 1596554 trf 71 +chr1 1598047 1598316 trf 252 +chr1 1598073 1598309 trf 305 +chr1 1604847 1605406 trf 716 +chr1 1605400 1605429 trf 51 +chr1 1605400 1605433 trf 50 +chr1 1605400 1605432 trf 64 +chr1 1606063 1606095 trf 64 +chr1 1610422 1610457 trf 52 +chr1 1610995 1611578 trf 737 +chr1 1611740 1611772 trf 55 +chr1 1613427 1613479 trf 104 +chr1 1614518 1614553 trf 61 +chr1 1615180 1615225 trf 72 +chr1 1616228 1616253 trf 50 +chr1 1617745 1617778 trf 59 +chr1 1618844 1618897 trf 97 +chr1 1621155 1621733 trf 655 +chr1 1623572 1623610 trf 55 +chr1 1623800 1623876 trf 68 +chr1 1623800 1623863 trf 101 +chr1 1623804 1623851 trf 67 +chr1 1623804 1623876 trf 69 +chr1 1624412 1624601 trf 188 +chr1 1624630 1624664 trf 59 +chr1 1626128 1626163 trf 70 +chr1 1626708 1627282 trf 728 +chr1 1628298 1628462 trf 258 +chr1 1631037 1631077 trf 71 +chr1 1640272 1640311 trf 60 +chr1 1640273 1640371 trf 92 +chr1 1642643 1642717 trf 121 +chr1 1648253 1648291 trf 76 +chr1 1649011 1650025 trf 1681 +chr1 1649025 1650025 trf 1051 +chr1 1649025 1650073 trf 1075 +chr1 1650374 1650511 trf 228 +chr1 1650410 1650604 trf 327 +chr1 1650517 1650656 trf 158 +chr1 1651534 1652331 trf 788 +chr1 1652685 1652952 trf 364 +chr1 1652687 1652975 trf 330 +chr1 1654927 1654962 trf 70 +chr1 1657828 1658488 trf 896 +chr1 1662429 1662576 trf 188 +chr1 1667376 1668255 trf 883 +chr1 1668240 1668285 trf 54 +chr1 1668919 1668951 trf 55 +chr1 1674425 1674996 trf 653 +chr1 1676847 1676885 trf 55 +chr1 1677075 1677138 trf 65 +chr1 1677075 1677151 trf 68 +chr1 1677079 1677126 trf 58 +chr1 1678939 1679513 trf 719 +chr1 1680020 1680104 trf 116 +chr1 1684347 1684375 trf 56 +chr1 1690703 1690818 trf 221 +chr1 1692120 1692169 trf 98 +chr1 1694198 1694233 trf 70 +chr1 1694656 1694974 trf 321 +chr1 1697849 1697889 trf 80 +chr1 1699811 1699848 trf 56 +chr1 1699811 1699848 trf 65 +chr1 1699813 1699848 trf 54 +chr1 1701408 1701454 trf 92 +chr1 1702528 1702568 trf 64 +chr1 1705115 1705169 trf 108 +chr1 1705940 1706116 trf 262 +chr1 1711106 1711131 trf 50 +chr1 1726620 1726658 trf 58 +chr1 1726620 1726665 trf 54 +chr1 1735153 1735745 trf 677 +chr1 1736315 1736878 trf 731 +chr1 1738902 1738932 trf 60 +chr1 1740063 1740101 trf 55 +chr1 1740065 1740096 trf 62 +chr1 1743832 1743868 trf 54 +chr1 1746236 1746267 trf 53 +chr1 1754681 1754706 trf 50 +chr1 1758299 1758360 trf 88 +chr1 1760313 1760352 trf 60 +chr1 1767526 1767571 trf 63 +chr1 1768694 1769300 trf 756 +chr1 1775252 1775532 trf 320 +chr1 1775633 1775681 trf 55 +chr1 1775634 1775680 trf 60 +chr1 1777017 1777054 trf 51 +chr1 1777263 1777311 trf 96 +chr1 1779796 1779838 trf 50 +chr1 1779796 1779842 trf 67 +chr1 1782427 1782710 trf 386 +chr1 1786200 1786444 trf 352 +chr1 1786470 1786774 trf 407 +chr1 1786760 1786798 trf 51 +chr1 1796430 1797029 trf 957 +chr1 1796700 1796739 trf 69 +chr1 1800624 1800650 trf 52 +chr1 1803968 1804045 trf 127 +chr1 1806044 1806071 trf 54 +chr1 1822049 1822099 trf 50 +chr1 1826194 1826271 trf 129 +chr1 1828155 1828487 trf 452 +chr1 1829604 1829693 trf 79 +chr1 1829656 1829713 trf 80 +chr1 1829745 1829936 trf 109 diff --git a/test/shuffle/test-shuffle.sh b/test/shuffle/test-shuffle.sh new file mode 100644 index 0000000000000000000000000000000000000000..606d60ce02febface901cb5c6303d1d6a8e99a38 --- /dev/null +++ b/test/shuffle/test-shuffle.sh @@ -0,0 +1,127 @@ +BT=${BT-../../bin/bedtools} +check() +{ + if diff $1 $2; then + echo ok + return 1 + else + echo fail + return 0 + fi +} + + +########################################################### +# test basic shuffle +########################################################### +echo " shuffle.t1...\c" +echo \ +"chr9 108600879 108601347 trf 789 +chr12 9186177 9186350 trf 346 +chr8 89726287 89726527 trf 434 +chr8 40323278 40323500 trf 273 +chr8 69904335 69904512 trf 187 +chr5 138240459 138240624 trf 199 +chr11 96382483 96382621 trf 242 +chr8 105834146 105834181 trf 70 +chrX 105921488 105921585 trf 79 +chrX 125331456 125331497 trf 73" > exp +$BT shuffle -seed 42 -i simrep.bed \ + -g ../../genomes/human.hg19.genome | head > obs +check obs exp +rm obs exp + + +########################################################### +# test basic shuffle with -incl (choose intervals randomly) +########################################################### +echo " shuffle.t2...\c" +echo \ +"chr3 542223 542691 trf 789 +chr5 444343 444516 trf 346 +chr1 2520601 2520841 trf 434 +chr5 194760 194982 trf 273 +chr1 2121545 2121722 trf 187 +chr1 2246343 2246508 trf 199 +chr1 2724117 2724255 trf 242 +chr4 304892 304927 trf 70 +chr2 332618 332715 trf 79 +chr5 822410 822451 trf 73 +chr1 1450982 1451014 trf 64 +chr1 3218361 3218466 trf 149 +chr4 338952 338990 trf 58 +chr3 713207 713677 trf 278 +chr1 4378307 4378777 trf 339 +chr1 4451988 4452416 trf 202 +chr1 1545567 1545610 trf 59 +chr1 573175 573215 trf 62 +chr4 931201 931236 trf 52 +chr1 4215777 4215954 trf 302" > exp +$BT shuffle -incl incl.bed -seed 42 -i simrep.bed \ + -g ../../genomes/human.hg19.genome | head -20 > obs +check obs exp +rm obs exp + +############################################################## +# test basic shuffle with -incl (choose chroms randomly first) +############################################################## +echo " shuffle.t3...\c" +echo \ +"chr5 310009 310477 trf 789 +chr4 520601 520774 trf 346 +chr2 130650 130890 trf 434 +chr1 3246343 3246565 trf 273 +chr2 968160 968337 trf 187 +chr3 332618 332783 trf 199 +chr4 638727 638865 trf 242 +chr3 218361 218396 trf 70 +chr1 2259217 2259314 trf 79 +chr3 378307 378348 trf 73 +chr4 447387 447419 trf 64 +chr3 573175 573280 trf 149 +chr2 106791 106829 trf 58 +chr3 618697 619167 trf 278 +chr2 211901 212371 trf 339 +chr5 656883 657311 trf 202 +chr2 993338 993381 trf 59 +chr2 713531 713571 trf 62 +chr2 428268 428303 trf 52 +chr4 590632 590809 trf 302" > exp +$BT shuffle -incl incl.bed -chromFirst -seed 42 -i simrep.bed \ + -g ../../genomes/human.hg19.genome | head -20 > obs +check obs exp +rm obs exp + + +############################################################## +# test basic shuffle with -excl +############################################################## +echo " shuffle.t4...\c" +echo -n "" > exp +$BT shuffle -seed 42 -i simrep.bed \ + -g ../../genomes/human.hg19.genome \ + -excl excl.bed \ +| $BT intersect -a - -b excl.bed > obs +check obs exp +rm obs exp + +############################################################## +# test basic shuffle with +############################################################## +echo " shuffle.t5...\c" +echo \ +"chr1 150415830 150415862 trf 64 +chr1 150415830 150415862 trf 64 +chr5 78078743 78079213 trf 339 +chr4 84711820 84712248 trf 202 +chr4 61777751 61777794 trf 59 +chr3 28583223 28583400 trf 302 +chr1 55933709 55934092 trf 712 +chr1 55933709 55934092 trf 712 +chr1 39686691 39686725 trf 68 +chr2 2555287 2555330 trf 86" > exp +$BT shuffle -seed 42 -i simrep.bed \ + -g ../../genomes/human.hg19.genome \ +| $BT intersect -a - -b excl.bed | head > obs +check obs exp +rm obs exp \ No newline at end of file diff --git a/test/test.sh b/test/test.sh index a8eceba9ee8051d82e4c56baf2c0615693c181a8..76ec3f1eaab175eaa543e7af68a388797676d164 100644 --- a/test/test.sh +++ b/test/test.sh @@ -49,6 +49,9 @@ cd reldist; bash test-reldist.sh; cd .. echo " Testing bedtools slop:" cd slop; bash test-slop.sh; cd .. +echo " Testing bedtools shuffle:" +cd shuffle; bash test-shuffle.sh; cd .. + echo " Testing bedtools subtract:" cd subtract; bash test-subtract.sh; cd ..