From 4642a149fad27264b2751e8288fffdfb4493e7ba Mon Sep 17 00:00:00 2001
From: arq5x <arq5x@virginia.edu>
Date: Wed, 9 Apr 2014 10:02:47 -0400
Subject: [PATCH] [ENH] all shuffle with -incl to follow data distribution

---
 Makefile                          |    2 +-
 src/shuffleBed/shuffleBed.cpp     |   51 +-
 src/shuffleBed/shuffleBedMain.cpp |    2 -
 src/utils/bedFile/bedFile.cpp     |   14 +
 src/utils/bedFile/bedFile.h       |    4 +
 test/shuffle/excl.bed             |    9 +
 test/shuffle/incl.bed             |    9 +
 test/shuffle/simrep.bed           | 1000 +++++++++++++++++++++++++++++
 test/shuffle/test-shuffle.sh      |  127 ++++
 9 files changed, 1189 insertions(+), 29 deletions(-)
 create mode 100644 test/shuffle/excl.bed
 create mode 100644 test/shuffle/incl.bed
 create mode 100644 test/shuffle/simrep.bed
 create mode 100644 test/shuffle/test-shuffle.sh

diff --git a/Makefile b/Makefile
index 26767488..1890fa26 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/src/shuffleBed/shuffleBed.cpp b/src/shuffleBed/shuffleBed.cpp
index 518e2378..9d6a2d1e 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 c53dad50..fe49049d 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 ea993aff..7c1ae8dc 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 37d8dda7..440986c0 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/test/shuffle/excl.bed b/test/shuffle/excl.bed
new file mode 100644
index 00000000..c9300e65
--- /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 00000000..68f76c33
--- /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 00000000..7d620fcd
--- /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 00000000..606d60ce
--- /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
-- 
GitLab