diff --git a/bin/coverageBed b/bin/coverageBed index 3f9086fe300f9409f985f2c0b89f7e01561c096d..6ee16e6ef711715bda3a8f81732120d8247f5115 100755 Binary files a/bin/coverageBed and b/bin/coverageBed differ diff --git a/bin/windowBed b/bin/windowBed index a8047ab1f7133f2136476956490a683761d65767..0432862f09d5d3e93a0b871ce8045ca2455eb016 100755 Binary files a/bin/windowBed and b/bin/windowBed differ diff --git a/obj/bedFile.o b/obj/bedFile.o index 677732840635a3d2c8010733f735c461e5dc04d0..63bdc5d40ec60ccd1463a783a9481ed25c825b7a 100644 Binary files a/obj/bedFile.o and b/obj/bedFile.o differ diff --git a/obj/coverageBed.o b/obj/coverageBed.o index d06f390598f3a5fd967228e9d62dcf704b6c9c67..795a5a9733910bcdedb9665c3dc359c73b829fb4 100644 Binary files a/obj/coverageBed.o and b/obj/coverageBed.o differ diff --git a/obj/coverageMain.o b/obj/coverageMain.o index 3abada83c36e08187f4d1bc9676e90c36284872e..3c9d29313fecb8571879892c04cee1fa6d346348 100644 Binary files a/obj/coverageMain.o and b/obj/coverageMain.o differ diff --git a/obj/lineFileUtilities.o b/obj/lineFileUtilities.o index 64bf51a50e59e402409a9245a6cf4d74a08f53dc..631ef944a81a79b8ab415f90d1734efd8c94ee78 100644 Binary files a/obj/lineFileUtilities.o and b/obj/lineFileUtilities.o differ diff --git a/obj/windowBed.o b/obj/windowBed.o index 035265a30a33f863bc4bc1e1507e2ddd27cabbad..facaff63abac2a58b946a155fa13dc8b45e463f3 100644 Binary files a/obj/windowBed.o and b/obj/windowBed.o differ diff --git a/obj/windowMain.o b/obj/windowMain.o index f170f6166eda2ca3cac4ac3aae49aafa5bada8ca..b9a16ed7294b69b4758ea933f2250ab8ead4d30a 100644 Binary files a/obj/windowMain.o and b/obj/windowMain.o differ diff --git a/src/closestBed/b.bed b/src/closestBed/b.bed index 807c0cd01f2c9c9841060c2adca918f19ab7c102..9b0e3730019c266cdf3a5f07ae54d772d289598b 100644 --- a/src/closestBed/b.bed +++ b/src/closestBed/b.bed @@ -1,3 +1,5 @@ chr1 20000 30000 geneA 100 + chr1 20000 30000 geneB 100 - - +chr1 19999 30000 geneC 100 + +chr1 80 90 geneD 100 + +chr1 112 1000 geneE 100 + diff --git a/src/closestBed/closestBed.cpp b/src/closestBed/closestBed.cpp index e3d0bb6997f109aa5300aebb30a61a0f1bd8ff13..07aeaa87cabb700b1c8f150718d71439c6c48758 100755 --- a/src/closestBed/closestBed.cpp +++ b/src/closestBed/closestBed.cpp @@ -83,51 +83,39 @@ void BedClosest::FindWindowOverlaps(BED &a, vector<BED> &hits) { while ((numOverlaps == 0) && (slop <= MAXSLOP)) { - if ((a.start - slop) > 0) { - aFudgeStart = a.start - slop; - } - else { - aFudgeStart = 0; - } - if ((a.start + slop) < 2 * MAXSLOP) { - aFudgeEnd = a.end + slop; - } - else { - aFudgeEnd = 2 * MAXSLOP; - } + // add some slop (starting at 0 bases) to a in hopes + // of finding a hit in B + if ((a.start - slop) > 0) aFudgeStart = a.start - slop; + else aFudgeStart = 0; + + if ((a.start + slop) < 2 * MAXSLOP) aFudgeEnd = a.end + slop; + else aFudgeEnd = 2 * MAXSLOP; - bedB->binKeeperFind(bedB->bedMap[a.chrom], aFudgeStart, aFudgeEnd, hits); + bedB->FindOverlapsPerBin(a.chrom, aFudgeStart, aFudgeEnd, a.strand, hits, this->forceStrand); - for (vector<BED>::iterator h = hits.begin(); h != hits.end(); ++h) { - - // if forcing strandedness, move on if the hit - // is not on the same strand as A. - if ((this->forceStrand) && (a.strand != h->strand)) { - continue; // continue force the next iteration of the for loop. - } - + vector<BED>::const_iterator h = hits.begin(); + vector<BED>::const_iterator hitsEnd = hits.end(); + for (; h != hitsEnd; ++h) { + numOverlaps++; // do the actual features overlap? int s = max(a.start, h->start); int e = min(a.end, h->end); - + int overlapBases = (e - s); // the number of overlapping bases b/w a and b + int aLength = (a.end - a.start); // the length of a in b.p. + if (s < e) { - // is there enough overlap (default ~ 1bp) - float overlap = (float)(e-s) / (float)(a.end - a.start); - - if ( overlap > 0 ) { - + float overlap = (float) overlapBases / (float) aLength; + if ( overlap > 0 ) { // is this hit the closest? if (overlap > maxOverlap) { closestB.clear(); closestB.push_back(*h); maxOverlap = overlap; } - else if (overlap == maxOverlap) { - closestB.push_back(*h); - } + else if (overlap == maxOverlap) closestB.push_back(*h); } } else if (h->end < a.start){ @@ -136,9 +124,7 @@ void BedClosest::FindWindowOverlaps(BED &a, vector<BED> &hits) { closestB.push_back(*h); minDistance = a.start - h->end; } - else if ((a.start - h->end) == minDistance) { - closestB.push_back(*h); - } + else if ((a.start - h->end) == minDistance) closestB.push_back(*h); } else { if ((h->start - a.end) < minDistance) { @@ -146,16 +132,11 @@ void BedClosest::FindWindowOverlaps(BED &a, vector<BED> &hits) { closestB.push_back(*h); minDistance = h->start - a.end; } - else if ((h->start - a.end) == minDistance) { - closestB.push_back(*h); - } + else if ((h->start - a.end) == minDistance) closestB.push_back(*h); } - } - /* if no overlaps were found, we'll - widen the range by SLOPGROWTH in each direction - and search again. - */ + // if no overlaps were found, we'll widen the range + // by SLOPGROWTH in each direction and search again. slop += SLOPGROWTH; } } diff --git a/src/coverageBed/a.bed b/src/coverageBed/a.bed index 85f3053569196656a50374b959849c6fa916139b..0f5d644c0ea294599ab8dd2c494404ea8243b36d 100644 --- a/src/coverageBed/a.bed +++ b/src/coverageBed/a.bed @@ -1,5 +1,5 @@ -chr1 10 20 -chr1 20 30 -chr1 30 40 -chr1 100 200 +chr1 10 20 a1 1 - +chr1 20 30 a2 1 - +chr1 30 40 a3 1 - +chr1 100 200 a4 1 + diff --git a/src/coverageBed/b.bed b/src/coverageBed/b.bed index 771446e580ea023462e0dd0c72efb1a06aef6b64..d881601d94bd1bca15c0760d353537965c164cf7 100644 --- a/src/coverageBed/b.bed +++ b/src/coverageBed/b.bed @@ -1,3 +1,3 @@ -chr1 0 100 -chr1 100 200 -chr2 0 100 +chr1 0 100 b1 1 + +chr1 100 200 b2 1 - +chr2 0 100 b3 1 + diff --git a/src/coverageBed/coverageBed.cpp b/src/coverageBed/coverageBed.cpp index 388122e49c7601b11bc06496858e4648a6ebaef8..d7d6f94954faf74fbe595f986e7c45aa3329bc80 100755 --- a/src/coverageBed/coverageBed.cpp +++ b/src/coverageBed/coverageBed.cpp @@ -40,7 +40,6 @@ void BedCoverage::GetCoverage(istream &bedInput) { string bedLine; int lineNum = 0; // current input line number vector<string> bedFields; // vector for a BED entry - bedFields.reserve(12); // process each entry in A @@ -49,55 +48,76 @@ void BedCoverage::GetCoverage(istream &bedInput) { lineNum++; Tokenize(bedLine,bedFields); BED a; - - // find the overlaps with B if it's a valid BED entry. - if (bedA->parseLine(a, bedFields, lineNum)) { - - // increment the count of overlaps for each feature in B that - // overlaps the current A interval - bedB->countHits(bedB->bedMap[a.chrom], a, this->forceStrand); + + if (bedA->parseLine(a, bedFields, lineNum)) { + // count a as a hit with all the relevant features in B + bedB->countHits(a, this->forceStrand); } // reset for the next input line bedFields.clear(); } - // now, report the count of hist for each feature in B. - for (masterBedMap::iterator c = bedB->bedMap.begin(); c != bedB->bedMap.end(); ++c) { - map<int, vector<BED> > bin2Beds = c->second; - - for (map<int, vector<BED> >::iterator b = bin2Beds.begin(); b != bin2Beds.end(); ++b) { - - vector<BED> beds = b->second; - for (unsigned int i = 0; i < beds.size(); i++) { - + //vector<int> depths; // track the discrete depths for each base in B + // used to calculate, min, max, median, etc. + + // now, report the count of hits for each feature in B. + masterBedMap::const_iterator chromItr = bedB->bedMap.begin(); + masterBedMap::const_iterator chromEnd = bedB->bedMap.end(); + for (; chromItr != chromEnd; ++chromItr) { + + binsToBeds::const_iterator binItr = chromItr->second.begin(); + binsToBeds::const_iterator binEnd = chromItr->second.end(); + for (; binItr != binEnd; ++binItr) { + + vector<BED>::const_iterator bedItr = binItr->second.begin(); + vector<BED>::const_iterator bedEnd = binItr->second.end(); + for (; bedItr != bedEnd; ++bedItr) { + int zeroDepthCount = 0; int depth = 0; + int start = min(bedItr->minOverlapStart, bedItr->start); - int start = min(beds[i].minOverlapStart, beds[i].start); - - for (int pos = start+1; pos <= beds[i].end; pos++) { - - if (beds[i].depthMap.find(pos) != beds[i].depthMap.end()) { - depth += beds[i].depthMap[pos].starts; + for (int pos = start+1; pos <= bedItr->end; pos++) { + + if (bedItr->depthMap.find(pos) != bedItr->depthMap.end()) { + + map<unsigned int, DEPTH> dMap = bedItr->depthMap; + depth += dMap[pos].starts; + //depths.push_back(depth); - if ((depth == 0) && (pos > beds[i].start) && (pos <= beds[i].end)) { + if ((depth == 0) && (pos > bedItr->start) && (pos <= bedItr->end)) { zeroDepthCount++; } - depth = depth - beds[i].depthMap[pos].ends; + depth = depth - dMap[pos].ends; } else { - if ((depth == 0) && (pos > beds[i].start) && (pos <= beds[i].end)) { + if ((depth == 0) && (pos > bedItr->start) && (pos <= bedItr->end)) { zeroDepthCount++; } + //depths.push_back(depth); } } // Report the coverage for the current interval. - int length = beds[i].end - beds[i].start; - - bedB->reportBedTab(beds[i]); - printf("%d\t%d\t%d\t%0.7f\n", beds[i].count, (length-zeroDepthCount), length, (float) (length-zeroDepthCount)/length); + int length = bedItr->end - bedItr->start; + int nonZeroBases = (length-zeroDepthCount); + float fractCovered = (float) nonZeroBases /length; + //sort(depths.begin(), depths.end()); + + bedB->reportBedTab(*bedItr); + printf("%d\t%d\t%d\t%0.7f\n", bedItr->count, nonZeroBases, length, fractCovered); + /* + cout << bedItr->count << "\t"; + cout << (length-zeroDepthCount) << "\t"; + cout << length << "\t"; + cout << setw (10); + cout << fractCovered << "\t"; + cout << *min_element(depths.begin(), depths.end()) << "\t"; + cout << *max_element(depths.begin(), depths.end()) << "\t"; + cout << *(depths.begin()+depths.size()/2) << "\n"; + depths.clear(); + */ } } } diff --git a/src/coverageBed/coverageBed.h b/src/coverageBed/coverageBed.h index e4654e646e2b0936b8f8922f356243b58e77c8e5..25d340a0a033e643344272701aa419d788b69604 100755 --- a/src/coverageBed/coverageBed.h +++ b/src/coverageBed/coverageBed.h @@ -14,7 +14,9 @@ #include "bedFile.h" #include <vector> +#include <algorithm> #include <iostream> +#include <iomanip> #include <fstream> #include <stdlib.h> diff --git a/src/coverageBed/coverageMain.cpp b/src/coverageBed/coverageMain.cpp index 7fb04ef2b886ac1768960a573f4135342366c278..81b6f230a10acadeaae4d59483a22ed510509355 100755 --- a/src/coverageBed/coverageMain.cpp +++ b/src/coverageBed/coverageMain.cpp @@ -103,6 +103,11 @@ void ShowHelp(void) { cerr << "Usage: " << PROGRAM_NAME << " [OPTIONS] -a <a.bed> -b <b.bed>" << endl << endl; + cerr << "Options: " << endl; + cerr << "\t-s\t" << "Force strandedness. That is, only include hits in A that" << endl; + cerr << "\t\toverlap B on the same strand." << endl; + cerr << "\t\t- By default, hits are included without respect to strand." << endl << endl; + cerr << "Output: " << endl; cerr << "\t" << " After each entry in B, reports: " << endl; cerr << "\t 1) The number of features in A that overlapped the B interval." << endl; diff --git a/src/coverageBed/new b/src/coverageBed/new new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/intersectBed/chr21.genes.bed b/src/intersectBed/chr21.genes.bed new file mode 100644 index 0000000000000000000000000000000000000000..73d1706a4f45c164f05860a00d5edecaffe4fdaf --- /dev/null +++ b/src/intersectBed/chr21.genes.bed @@ -0,0 +1,828 @@ +chr21 9928613 10012791 uc002yip.1 24 - +chr21 9928613 10012791 uc002yiq.1 23 - +chr21 9928613 10012791 uc002yir.1 22 - +chr21 9928613 10012791 uc010gkv.1 19 - +chr21 9928613 10061300 uc002yis.1 33 - +chr21 10042683 10120808 uc002yiu.1 9 - +chr21 10042683 10120796 uc002yit.1 10 - +chr21 10079666 10120808 uc002yiv.1 4 - +chr21 10080031 10081687 uc002yiw.1 2 - +chr21 10081660 10120796 uc002yix.2 3 - +chr21 13332351 13346202 uc002yiy.2 5 + +chr21 13336975 13346202 uc002yiz.2 4 + +chr21 13361138 13412440 uc002yja.2 3 + +chr21 13904368 13935777 uc002yjb.1 11 + +chr21 13944438 13944477 uc002yjc.1 1 + +chr21 13945076 13945106 uc002yjd.1 1 + +chr21 13973491 13975330 uc002yje.1 1 - +chr21 14137333 14142556 uc002yjf.1 6 - +chr21 14200023 14200052 uc002yjg.1 1 + +chr21 14202070 14202096 uc002yjh.1 1 - +chr21 14237966 14274631 uc002yji.1 6 - +chr21 14270940 14274631 uc002yjj.2 2 - +chr21 14321612 14438647 uc002yjk.2 3 + +chr21 14321612 14438730 uc002yjl.2 3 + +chr21 14403005 14501125 uc002yjm.1 10 - +chr21 14459414 14483611 uc010gkw.1 4 - +chr21 14510336 14522564 uc002yjp.2 4 + +chr21 14510336 14522564 uc002yjn.2 5 + +chr21 14510336 14522564 uc002yjo.2 5 + +chr21 14567990 14585577 uc002yjq.1 5 + +chr21 14567990 14595563 uc002yjr.1 6 + +chr21 14567990 14595563 uc010gkx.1 5 + +chr21 14567990 14632206 uc002yjs.2 14 + +chr21 14665307 14677380 uc002yjt.1 5 - +chr21 14779419 14877594 uc002yjv.1 9 - +chr21 14779419 14840535 uc010gky.1 4 - +chr21 14779419 14840535 uc002yju.1 8 - +chr21 15117160 15151900 uc002yjw.1 3 - +chr21 15255426 15262718 uc002yjx.1 1 - +chr21 15258731 15358997 uc010gkz.1 4 - +chr21 16024366 16174248 uc010gla.1 11 + +chr21 16024366 16174248 uc002yjz.1 25 + +chr21 16024366 16174248 uc002yjy.1 24 + +chr21 16085691 16113036 uc010glb.1 5 + +chr21 16364712 16901413 uc002yka.1 8 + +chr21 16364712 16901413 uc002ykb.1 8 + +chr21 16365304 16365529 uc010glc.1 1 + +chr21 16488569 16901413 uc002ykc.1 6 + +chr21 16833279 16833360 uc002ykd.1 1 + +chr21 16834014 16834106 uc002yke.1 1 + +chr21 16884427 16884516 uc002ykf.1 1 + +chr21 17733107 17743132 uc002ykg.1 4 + +chr21 17807200 17861137 uc002yki.1 7 + +chr21 17807200 17859800 uc010gle.1 3 + +chr21 17807200 17859800 uc010gld.1 4 + +chr21 17807200 17859800 uc002ykh.1 5 + +chr21 17841215 17887768 uc002ykj.1 7 + +chr21 17887841 17907033 uc002ykk.1 5 - +chr21 17887841 17907033 uc002ykl.1 6 - +chr21 18071593 18086697 uc002ykn.2 3 - +chr21 18071593 18086697 uc002ykm.2 4 - +chr21 18083154 18113574 uc002ykq.2 5 - +chr21 18083154 18113574 uc002yko.2 5 - +chr21 18083154 18113574 uc002ykp.2 4 - +chr21 18195450 18561558 uc002ykr.1 7 + +chr21 18211407 18561558 uc002yku.1 5 + +chr21 18211407 18561558 uc002ykt.1 6 + +chr21 18211407 18561558 uc002yks.1 7 + +chr21 18539020 18561558 uc002ykv.1 6 + +chr21 18563560 18697844 uc002ykw.1 25 - +chr21 18855455 19032214 uc010glf.1 4 - +chr21 18855455 19054001 uc002ykx.2 4 - +chr21 21036784 21097287 uc002ylc.2 7 - +chr21 21036784 21097287 uc002ylb.2 7 - +chr21 21036784 21097287 uc002yla.2 7 - +chr21 21036784 21097287 uc002ykz.2 8 - +chr21 21036784 21097287 uc002yky.2 8 - +chr21 21292503 21833085 uc002yld.1 18 + +chr21 22041175 22091604 uc002yle.2 5 + +chr21 22303349 22392649 uc002ylf.2 6 - +chr21 22392806 22410718 uc002ylg.1 6 + +chr21 22462158 22462605 uc002ylh.1 1 - +chr21 24722924 24784492 uc002yli.1 6 + +chr21 25134734 25351923 uc002ylj.2 4 + +chr21 25680009 25725884 uc002ylk.1 5 - +chr21 25680009 25725884 uc010glg.1 4 - +chr21 25856312 25869344 uc002ylm.2 3 + +chr21 25856375 25869344 uc002yll.1 1 + +chr21 25879838 25901672 uc002yln.1 11 - +chr21 25879838 25901672 uc002ylo.1 10 - +chr21 25933459 26009106 uc010gli.1 8 + +chr21 25933459 26009106 uc010glh.1 10 + +chr21 25933459 26009106 uc002ylr.1 9 + +chr21 25933459 26009106 uc002ylq.1 10 + +chr21 25933459 26009106 uc002ylp.1 10 + +chr21 26018661 26029836 uc002yls.1 4 - +chr21 26018661 26029836 uc002ylt.1 4 - +chr21 26018661 26029836 uc002ylu.1 4 - +chr21 26018661 26029836 uc002ylv.1 4 - +chr21 26018661 26029836 uc002ylw.1 4 - +chr21 26028751 26066642 uc002ylx.2 10 + +chr21 26029199 26066642 uc002yly.2 10 + +chr21 26174731 26465003 uc010glj.1 15 - +chr21 26174731 26465003 uc002ylz.1 18 - +chr21 26174731 26465003 uc002yma.1 17 - +chr21 26174731 26465003 uc002ymb.1 16 - +chr21 26316026 26434649 uc010glk.1 6 - +chr21 26460085 26461513 uc002ymc.1 1 - +chr21 26760398 26867452 uc002ymd.1 4 - +chr21 26762117 26867452 uc002yme.2 4 - +chr21 27130476 27139599 uc002ymf.1 9 - +chr21 27212111 27260703 uc002ymg.1 8 - +chr21 27653075 27742769 uc002ymh.2 4 - +chr21 28307571 28317143 uc002ymj.2 2 + +chr21 28342603 28431799 uc002ymk.1 5 + +chr21 28410287 28522857 uc002yml.2 6 - +chr21 28833510 28834547 uc002ymm.2 2 + +chr21 28833510 28834547 uc002ymn.2 2 + +chr21 29166383 29179564 uc002ymp.1 5 - +chr21 29166383 29179564 uc002ymo.1 6 - +chr21 29166384 29179564 uc002ymq.1 7 - +chr21 29222336 29287095 uc002ymr.1 30 - +chr21 29260562 29281126 uc010gll.1 10 - +chr21 29299950 29313554 uc002ymv.1 4 - +chr21 29299950 29313554 uc002ymu.1 4 - +chr21 29299950 29313554 uc002ymt.1 6 - +chr21 29299950 29313554 uc002yms.1 5 - +chr21 29318808 29348678 uc002ymw.1 19 + +chr21 29318808 29348678 uc002ymy.1 18 + +chr21 29318808 29348678 uc002ymx.1 18 + +chr21 29350518 29367881 uc010glm.1 14 - +chr21 29350518 29367881 uc002ync.1 15 - +chr21 29350518 29367881 uc002ynb.1 15 - +chr21 29350518 29367827 uc002yna.1 15 - +chr21 29350518 29357059 uc002ymz.1 5 - +chr21 29371824 29470073 uc002ynd.1 10 + +chr21 29371824 29470073 uc010gln.1 9 + +chr21 29371824 29470073 uc002yne.1 8 + +chr21 29374743 29470073 uc002ynf.1 9 + +chr21 29416245 29470073 uc010glo.1 4 + +chr21 29424835 29470073 uc002yng.1 5 + +chr21 29439770 29470073 uc010glp.1 4 + +chr21 29487671 29582396 uc002ynh.2 4 + +chr21 29487685 29582396 uc002yni.2 2 + +chr21 29593090 29640340 uc002ynj.1 5 + +chr21 29593607 29640340 uc002ynk.1 5 + +chr21 29599430 29656086 uc002ynl.1 8 + +chr21 29831124 30234153 uc002ynn.1 16 - +chr21 29847736 30234153 uc002yno.1 17 - +chr21 29875615 30234153 uc010glq.1 10 - +chr21 29890230 29924938 uc002ynp.1 3 + +chr21 29892990 30234153 uc002ynr.2 8 - +chr21 30043127 30058182 uc002yns.1 3 + +chr21 30460131 30460806 uc002ynt.1 1 - +chr21 30508200 30510189 uc002ynu.1 1 - +chr21 30575497 30577147 uc002ynv.1 1 - +chr21 30583333 30583703 uc010glr.1 1 - +chr21 30613320 30614478 uc002ynw.1 1 - +chr21 30631201 30631883 uc002ynx.1 1 - +chr21 30642587 30642795 uc002yny.1 1 - +chr21 30665579 30666428 uc002ynz.2 1 - +chr21 30690262 30691009 uc002yoa.1 1 + +chr21 30719581 30720101 uc002yob.1 1 - +chr21 30724464 30724947 uc002yoc.1 1 + +chr21 30734516 30734969 uc002yod.1 1 + +chr21 30774234 30774507 uc002yoe.1 1 - +chr21 30781379 30781538 uc002yof.1 1 - +chr21 30785652 30786146 uc002yog.1 1 - +chr21 30791044 30791299 uc002yoh.1 1 - +chr21 30796060 30796279 uc002yoi.1 1 - +chr21 30835724 30836052 uc002yok.1 1 - +chr21 30855287 30855479 uc002yol.1 1 - +chr21 30886629 30887245 uc002yom.1 1 + +chr21 30892875 30893064 uc002yon.1 1 - +chr21 30895310 30895457 uc002yoo.1 1 + +chr21 30907875 30908094 uc002yop.1 1 - +chr21 30910644 30910815 uc002yoq.1 1 + +chr21 30929453 30929651 uc002yor.1 1 + +chr21 30937053 30937326 uc010gls.1 1 + +chr21 31041139 31041391 uc002yos.1 1 - +chr21 31049327 31049567 uc002yot.1 1 - +chr21 31106885 31107441 uc002you.1 1 - +chr21 31174834 31175745 uc002yov.1 1 - +chr21 31332348 31332666 uc010glt.1 1 - +chr21 31412606 31853161 uc002yow.1 29 - +chr21 31506817 31854161 uc002yox.1 9 - +chr21 31853428 31854471 uc002yoy.2 2 + +chr21 31948741 31953684 uc002yoz.1 3 - +chr21 31953805 31963114 uc002ypa.1 5 + +chr21 31953849 31963114 uc002ypb.1 5 + +chr21 31953892 31963114 uc002ypc.1 5 + +chr21 31965417 32026133 uc002ypd.1 20 - +chr21 31965417 32026133 uc002ype.1 20 - +chr21 31965417 32026133 uc010glu.1 19 - +chr21 31978178 31996102 uc002ypf.1 14 - +chr21 31994942 32026133 uc002ypg.1 7 - +chr21 32167498 32298248 uc002yph.1 11 + +chr21 32562400 32573247 uc002ypi.1 5 - +chr21 32585994 32608965 uc002ypk.1 5 + +chr21 32585994 32606470 uc002ypj.1 5 + +chr21 32585994 32606470 uc010glv.1 4 + +chr21 32593031 32606470 uc002ypl.1 3 + +chr21 32600647 32602916 uc002ypm.2 2 - +chr21 32607648 32687021 uc002ypn.1 39 - +chr21 32671366 32671502 uc002ypo.1 1 - +chr21 32706622 32809568 uc002ypt.1 6 + +chr21 32706622 32809568 uc010glw.1 8 + +chr21 32706622 32809568 uc002yps.1 7 + +chr21 32706622 32809568 uc002ypr.1 8 + +chr21 32706622 32762234 uc002ypq.1 4 + +chr21 32746363 32809568 uc002ypu.1 7 + +chr21 32866419 32870062 uc002ypv.1 4 - +chr21 32870732 32879714 uc002ypw.2 5 - +chr21 32876380 32906537 uc002ypz.1 6 - +chr21 32876380 32906537 uc002ypy.1 7 - +chr21 32876380 32901897 uc002ypx.1 3 - +chr21 32895854 32898694 uc002yqa.2 2 - +chr21 32895854 32906537 uc002yqb.2 5 - +chr21 32895977 32906537 uc002yqc.1 7 - +chr21 32895977 32906537 uc002yqd.1 6 - +chr21 32895977 32906537 uc010glx.1 6 - +chr21 32922943 33022148 uc002yqi.1 33 - +chr21 32922943 33022148 uc002yqh.1 32 - +chr21 32922943 33022105 uc002yqg.1 28 - +chr21 32922943 33022105 uc002yqf.1 32 - +chr21 32922943 32936331 uc002yqe.2 6 - +chr21 33022296 33027093 uc002yqj.1 2 + +chr21 33022296 33037303 uc002yqk.2 4 + +chr21 33028080 33066040 uc002yqo.1 18 - +chr21 33028080 33066040 uc002yqn.1 18 - +chr21 33028080 33050976 uc002yqm.1 11 - +chr21 33028080 33046092 uc002yql.1 10 - +chr21 33035520 33066040 uc002yqp.1 16 - +chr21 33049593 33066040 uc002yqq.1 8 - +chr21 33053537 33066040 uc002yqr.2 6 - +chr21 33066281 33091884 uc002yqs.2 4 + +chr21 33066306 33091884 uc002yqt.2 2 + +chr21 33066387 33091884 uc002yqu.2 4 + +chr21 33084854 33107876 uc010gly.1 4 - +chr21 33084854 33107876 uc002yqv.1 3 - +chr21 33084854 33107876 uc002yqw.1 2 - +chr21 33087858 33088602 uc010glz.1 1 - +chr21 33320108 33323370 uc002yqx.1 2 + +chr21 33321040 33322012 uc002yqy.2 1 + +chr21 33364442 33366596 uc002yqz.1 1 + +chr21 33459786 33464411 uc002yra.1 4 - +chr21 33524100 33558690 uc002yrf.1 8 + +chr21 33524100 33558690 uc002yre.1 9 + +chr21 33524100 33558690 uc002yrd.1 9 + +chr21 33524100 33556932 uc002yrc.1 9 + +chr21 33524100 33556932 uc002yrb.1 9 + +chr21 33539667 33556932 uc002yrg.1 6 + +chr21 33542883 33577416 uc002yrh.1 6 + +chr21 33542883 33577416 uc002yri.1 5 + +chr21 33558047 33560435 uc002yrj.1 2 - +chr21 33560541 33591390 uc002yrk.1 7 + +chr21 33562102 33591390 uc002yrl.1 6 + +chr21 33619083 33653998 uc002yrn.1 11 + +chr21 33697071 33731698 uc002yrp.2 7 + +chr21 33697071 33731698 uc002yrq.2 8 + +chr21 33697071 33731698 uc010gma.1 8 + +chr21 33709055 33731698 uc002yrr.2 6 + +chr21 33726662 33774151 uc002yrs.1 9 - +chr21 33742958 33774151 uc002yrt.1 7 - +chr21 33742958 33774151 uc010gmb.1 8 - +chr21 33782107 33785660 uc002yrv.1 2 - +chr21 33782107 33785893 uc002yrw.1 2 - +chr21 33782403 33783570 uc010gmc.1 1 - +chr21 33798141 33837065 uc010gmd.1 22 - +chr21 33798141 33837006 uc002yrz.1 22 - +chr21 33798141 33836995 uc002yry.1 22 - +chr21 33798141 33836286 uc002yrx.1 22 - +chr21 33818186 33836286 uc002ysa.1 11 - +chr21 33837219 33851844 uc002ysb.1 5 + +chr21 33837219 33854843 uc002ysc.1 7 + +chr21 33837219 33871654 uc002ysd.2 13 + +chr21 33837219 33871682 uc002ysf.1 11 + +chr21 33837219 33871682 uc002yse.1 12 + +chr21 33846423 33861642 uc002ysg.2 5 + +chr21 33866544 33871654 uc002ysh.2 5 + +chr21 33869652 33880357 uc002ysi.1 9 - +chr21 33872080 33889790 uc002ysm.1 13 - +chr21 33872080 33883137 uc002ysl.1 9 - +chr21 33872080 33883137 uc002ysk.1 10 - +chr21 33872080 33883137 uc010gme.1 9 - +chr21 33872080 33881778 uc002ysj.1 8 - +chr21 33878765 34206573 uc002ysn.1 5 - +chr21 33883517 33936030 uc010gmf.1 13 - +chr21 33888837 33889792 uc002ysp.2 1 - +chr21 33889437 33891577 uc002ysq.2 2 - +chr21 33889906 33936030 uc002yst.1 10 - +chr21 33889906 33936030 uc002yss.1 11 - +chr21 33889906 33936030 uc002ysr.1 12 - +chr21 33910469 33936030 uc002ysu.2 6 - +chr21 33933921 33936030 uc002ysv.2 3 - +chr21 33936653 34183479 uc002ytb.1 39 + +chr21 33936653 34183479 uc002yta.1 40 + +chr21 33936653 34132672 uc002ysx.1 29 + +chr21 33936653 34132672 uc002ysy.1 29 + +chr21 33936653 34132672 uc010gmj.1 28 + +chr21 33936653 34132672 uc010gmi.1 30 + +chr21 33936653 34132672 uc002ysw.1 30 + +chr21 33936653 34132672 uc010gmh.1 26 + +chr21 33936653 34132672 uc010gmg.1 27 + +chr21 33936653 34132672 uc002ysz.1 27 + +chr21 33936653 34132672 uc002yth.2 28 + +chr21 34012971 34111788 uc002ytc.1 21 + +chr21 34012971 34183479 uc010gmm.1 37 + +chr21 34012971 34183479 uc002ytj.2 37 + +chr21 34012971 34132672 uc010gml.1 25 + +chr21 34012971 34132672 uc010gmk.1 27 + +chr21 34012971 34132672 uc002ytd.1 29 + +chr21 34016762 34132672 uc002yte.1 25 + +chr21 34096603 34111788 uc002ytf.1 4 + +chr21 34112440 34123224 uc002ytg.1 4 + +chr21 34123141 34151031 uc002yti.1 5 + +chr21 34169527 34180634 uc010gmn.1 5 + +chr21 34169527 34179696 uc002ytk.1 3 + +chr21 34197626 34210028 uc002ytl.1 7 - +chr21 34206462 34209898 uc002ytm.1 3 - +chr21 34225295 34265357 uc002ytn.2 3 + +chr21 34367692 34437204 uc002ytp.2 3 + +chr21 34367692 34400431 uc002yto.1 2 + +chr21 34389367 34391524 uc002ytq.2 1 + +chr21 34474917 34477415 uc002ytr.2 2 + +chr21 34474917 34484090 uc002yts.1 2 + +chr21 34658192 34665310 uc002ytt.1 2 + +chr21 34664647 34665019 uc010gmo.1 1 + +chr21 34669618 34696944 uc002ytw.2 5 + +chr21 34669618 34696944 uc002ytv.2 4 + +chr21 34669618 34683322 uc002ytu.2 4 + +chr21 34712882 34718134 uc002yty.1 2 - +chr21 34740857 34806443 uc002yua.1 4 - +chr21 34740857 34805483 uc010gmr.1 3 - +chr21 34740857 34753772 uc010gmq.1 3 - +chr21 34740857 34753772 uc002ytz.1 3 - +chr21 34740857 34749933 uc010gmp.1 2 - +chr21 34743412 34743802 uc010gms.1 1 - +chr21 34810653 34909252 uc002yue.1 4 - +chr21 34810653 34908615 uc002yud.1 4 - +chr21 34810653 34908012 uc002yuc.1 4 - +chr21 34810653 34821131 uc002yub.1 4 - +chr21 34963557 35012389 uc002yuf.1 6 + +chr21 34963557 35012389 uc010gmt.1 7 + +chr21 35040013 35079036 uc002yug.2 3 + +chr21 35081967 35343437 uc010gmu.1 9 - +chr21 35081967 35343465 uc010gmv.1 9 - +chr21 35081967 35343465 uc002yuj.2 7 - +chr21 35081967 35343511 uc002yuk.2 8 - +chr21 35081967 35182857 uc002yui.1 5 - +chr21 35081967 35182857 uc002yuh.1 6 - +chr21 35091579 35343125 uc002yum.1 5 - +chr21 35091579 35128768 uc002yul.1 3 - +chr21 35115443 35124138 uc002yun.1 2 - +chr21 35115443 35182857 uc002yuo.1 5 - +chr21 35117630 35120573 uc002yup.1 1 - +chr21 35127127 35343465 uc010gmw.1 7 - +chr21 35153500 35174880 uc002yur.1 2 - +chr21 35153640 35153741 uc002yus.1 1 + +chr21 35181009 36278917 uc002yut.1 11 - +chr21 36328708 36358576 uc002yuv.1 14 - +chr21 36328708 36354789 uc002yuu.1 11 - +chr21 36328709 36354789 uc002yux.1 12 - +chr21 36328709 36354429 uc002yuw.1 10 - +chr21 36337851 36354481 uc002yuz.1 8 - +chr21 36337851 36354481 uc002yuy.1 7 - +chr21 36337851 36373557 uc002yva.1 8 - +chr21 36364154 36367334 uc010gmy.1 3 + +chr21 36364154 36367332 uc002yvb.1 3 + +chr21 36364154 36365751 uc010gmx.1 2 + +chr21 36425934 36450475 uc002yvc.1 4 - +chr21 36425934 36450475 uc002yvd.1 3 - +chr21 36429132 36440730 uc002yve.1 3 + +chr21 36435563 36450475 uc002yvf.1 3 - +chr21 36458708 36588442 uc002yvg.1 37 + +chr21 36539215 36556078 uc002yvh.2 6 + +chr21 36614375 36670814 uc002yvi.1 17 + +chr21 36632941 36633667 uc010gmz.1 1 + +chr21 36679558 36710995 uc002yvj.1 14 + +chr21 36754789 36870737 uc002yvo.1 3 - +chr21 36754789 36836768 uc002yvn.1 3 - +chr21 36754789 36774258 uc002yvm.1 2 - +chr21 36754789 36774258 uc002yvl.1 3 - +chr21 36754789 36760595 uc002yvk.1 2 - +chr21 36755143 36755863 uc010gna.1 1 - +chr21 36993860 37004772 uc002yvp.2 2 + +chr21 36993860 37040485 uc002yvq.1 10 + +chr21 36993860 37044088 uc002yvr.1 11 + +chr21 37045058 37284373 uc002yvs.1 12 - +chr21 37045058 37256340 uc010gnb.1 11 - +chr21 37224420 37260808 uc010gnc.1 5 - +chr21 37300319 37313828 uc002yvu.1 4 + +chr21 37300319 37313828 uc010gnd.1 3 + +chr21 37300732 37313828 uc002yvv.1 4 + +chr21 37359533 37367328 uc002yvy.1 6 - +chr21 37359533 37367328 uc002yvx.1 5 - +chr21 37359533 37366973 uc002yvw.1 4 - +chr21 37367440 37497278 uc002yvz.1 46 + +chr21 37367444 37438815 uc010gne.1 21 + +chr21 37377116 37497278 uc002ywa.1 46 + +chr21 37379959 37497278 uc010gnf.1 44 + +chr21 37379959 37497278 uc002ywb.1 45 + +chr21 37401907 37497278 uc002ywc.1 36 + +chr21 37450826 37480250 uc002ywd.1 10 + +chr21 37502673 37514868 uc010gng.1 5 + +chr21 37502673 37514868 uc010gnh.1 4 + +chr21 37502673 37514868 uc010gni.1 4 + +chr21 37502673 37514868 uc010gnj.1 3 + +chr21 37514496 37515910 uc010gnk.1 1 + +chr21 37517595 37534810 uc010gnl.1 6 - +chr21 37517595 37561703 uc002ywf.1 8 - +chr21 37517595 37561703 uc010gnm.1 10 - +chr21 37517595 37561703 uc010gnn.1 9 - +chr21 37661728 37809549 uc002ywi.1 13 + +chr21 37661728 37780786 uc002ywh.1 5 + +chr21 37661728 37767052 uc002ywg.1 3 + +chr21 37661728 37767052 uc010gno.1 4 + +chr21 37713076 37809549 uc002ywj.1 11 + +chr21 37714470 37809549 uc002ywl.1 11 + +chr21 37714470 37809549 uc002ywm.1 10 + +chr21 37714470 37809549 uc002ywk.1 11 + +chr21 37901635 37904535 uc002ywn.1 1 - +chr21 37918656 38210566 uc002ywo.1 4 - +chr21 38348182 38415324 uc002ywp.1 3 - +chr21 38415436 38450474 uc010gns.1 3 + +chr21 38415436 38450474 uc010gnr.1 3 + +chr21 38415436 38450474 uc010gnq.1 4 + +chr21 38415436 38450474 uc010gnp.1 4 + +chr21 38415436 38450474 uc002ywt.2 4 + +chr21 38500119 38502606 uc010gnt.1 3 + +chr21 38550533 38595616 uc002ywv.1 4 + +chr21 38550739 38595616 uc002yww.1 3 + +chr21 38566298 38595616 uc002ywx.1 3 + +chr21 38567267 38569311 uc002ywy.2 1 + +chr21 38593053 38594181 uc010gnu.1 1 + +chr21 38661052 38955488 uc002ywz.1 12 - +chr21 38675670 38792267 uc002yxa.1 10 - +chr21 38675670 38878739 uc010gnv.1 9 - +chr21 38675670 38954461 uc010gnw.1 12 - +chr21 38675670 38954461 uc010gnx.1 11 - +chr21 38675670 38955488 uc002yxb.1 11 - +chr21 38686167 38697501 uc010gny.1 2 - +chr21 38693868 38955488 uc002yxc.2 8 - +chr21 38764567 38955488 uc010gnz.1 5 - +chr21 39032820 39046051 uc010goa.1 4 - +chr21 39032820 39067271 uc002yxd.2 7 - +chr21 39099100 39118748 uc002yxf.1 11 + +chr21 39099718 39118748 uc002yxg.1 10 + +chr21 39171084 39232223 uc002yxh.1 4 - +chr21 39469253 39477310 uc010gob.1 6 - +chr21 39469253 39477310 uc002yxj.1 6 - +chr21 39469253 39477310 uc002yxi.1 7 - +chr21 39479273 39558815 uc010goc.1 26 - +chr21 39479273 39607426 uc002yxk.1 42 - +chr21 39484017 39607426 uc002yxl.1 42 - +chr21 39496120 39523232 uc010god.1 12 - +chr21 39530390 39574044 uc010goi.1 14 - +chr21 39530390 39574044 uc010goh.1 14 - +chr21 39530390 39574044 uc010gog.1 15 - +chr21 39530390 39574044 uc010gof.1 15 - +chr21 39530390 39574044 uc010goe.1 15 - +chr21 39590234 39607426 uc002yxm.1 5 - +chr21 39636110 39642917 uc002yxo.1 6 - +chr21 39636110 39642917 uc002yxp.1 8 - +chr21 39636110 39642917 uc002yxq.1 7 - +chr21 39636110 39643140 uc002yxr.1 8 - +chr21 39674139 39691486 uc002yxs.1 5 + +chr21 39681560 39691486 uc010goj.1 5 + +chr21 39681560 39691486 uc002yxt.2 5 + +chr21 39699639 39737997 uc002yxu.1 10 - +chr21 39699639 39739529 uc002yxv.1 10 - +chr21 39715354 39739601 uc002yxw.1 5 - +chr21 39715354 39739601 uc002yxx.1 4 - +chr21 39715868 39732732 uc002yxy.2 4 - +chr21 39739666 39809303 uc002yxz.1 7 + +chr21 39745649 39809303 uc002yya.1 7 + +chr21 39850238 39956685 uc002yyb.1 5 + +chr21 39890946 39906618 uc010gok.1 3 - +chr21 39899406 39906618 uc002yyd.2 3 - +chr21 39906841 39953709 uc002yyf.1 4 + +chr21 39906841 39956685 uc002yye.2 3 + +chr21 39924087 39953709 uc010gol.1 2 + +chr21 39924087 39953709 uc002yyg.1 3 + +chr21 39936181 39953709 uc002yyh.1 3 + +chr21 39936181 39953709 uc010gom.1 2 + +chr21 39951123 39956685 uc002yym.1 2 + +chr21 39951123 39956685 uc002yyl.1 3 + +chr21 39951123 39956685 uc002yyk.1 3 + +chr21 39951123 39956685 uc002yyj.1 3 + +chr21 39951123 39956685 uc002yyi.1 4 + +chr21 39954356 39955289 uc010gon.1 1 + +chr21 40021551 40024477 uc002yyn.1 3 + +chr21 40039203 40095893 uc002yyo.1 9 + +chr21 40161216 40223192 uc002yyp.1 3 + +chr21 40306212 41140909 uc002yyq.1 33 - +chr21 40306212 41140909 uc002yyr.1 33 - +chr21 40676879 40679152 uc002yys.2 3 + +chr21 40676879 40679152 uc002yyt.2 3 + +chr21 40676879 40679152 uc002yyu.2 2 + +chr21 41435296 41441861 uc002yyv.1 2 - +chr21 41461597 41570394 uc002yyw.1 9 + +chr21 41461597 41570394 uc002yyx.1 8 + +chr21 41461597 41570394 uc002yyy.1 8 + +chr21 41469027 41479036 uc002yyz.1 1 - +chr21 41539758 41570394 uc010goo.1 2 + +chr21 41598067 41651524 uc002yza.1 10 + +chr21 41610530 41651524 uc002yzb.1 8 + +chr21 41610530 41651524 uc002yzc.1 7 + +chr21 41616616 41651524 uc002yzd.1 7 + +chr21 41655819 41661103 uc002yze.1 2 + +chr21 41655819 41702739 uc002yzf.1 14 + +chr21 41683339 41702739 uc002yzg.1 9 + +chr21 41692693 41702739 uc010gop.1 5 + +chr21 41714311 41753008 uc002yzh.1 19 + +chr21 41720023 41753008 uc002yzi.1 17 + +chr21 41720023 41753008 uc010goq.1 15 + +chr21 41758350 41801779 uc010gor.1 14 - +chr21 41758350 41801948 uc002yzj.1 14 - +chr21 41761530 41824913 uc010gos.1 14 - +chr21 42004748 42009004 uc010got.1 7 - +chr21 42009664 42010809 uc002yzm.1 3 + +chr21 42032597 42060318 uc002yzn.1 8 - +chr21 42091453 42172660 uc002yzo.1 24 - +chr21 42091453 42172660 uc002yzp.1 25 - +chr21 42094222 42172660 uc002yzq.1 31 - +chr21 42094222 42172660 uc002yzr.1 25 - +chr21 42178287 42247068 uc002yzw.1 14 - +chr21 42178287 42219868 uc002yzv.1 13 - +chr21 42178287 42212211 uc002yzu.1 11 - +chr21 42178287 42201421 uc002yzt.1 6 - +chr21 42178287 42194927 uc002yzs.1 3 - +chr21 42194130 42219868 uc002yzx.1 11 - +chr21 42280008 42303565 uc002zaa.2 4 - +chr21 42280008 42303565 uc002yzy.2 2 - +chr21 42280008 42303565 uc002zab.2 3 - +chr21 42280008 42303565 uc002yzz.2 4 - +chr21 42284072 42287273 uc010gou.1 1 - +chr21 42285670 42303565 uc010gov.1 4 - +chr21 42285670 42303565 uc002zac.2 4 - +chr21 42356136 42436174 uc002zae.1 22 + +chr21 42356136 42436174 uc002zad.1 23 + +chr21 42364494 42436174 uc002zag.1 22 + +chr21 42364494 42436174 uc002zaf.1 23 + +chr21 42368072 42370042 uc002zah.1 1 - +chr21 42378469 42397266 uc002zaj.1 7 + +chr21 42378469 42397266 uc010gow.1 7 + +chr21 42378469 42397266 uc002zai.1 8 + +chr21 42378469 42397266 uc010gox.1 7 + +chr21 42378469 42397266 uc010goy.1 7 + +chr21 42378481 42397266 uc010goz.1 5 + +chr21 42395312 42401630 uc002zak.1 2 - +chr21 42413697 42436174 uc002zal.1 9 + +chr21 42420850 42430820 uc010gpa.1 4 + +chr21 42492867 42590423 uc002zam.1 17 + +chr21 42492867 42590423 uc002zan.1 16 + +chr21 42509255 42590423 uc002zao.1 15 + +chr21 42512335 42590423 uc002zaq.1 15 + +chr21 42512335 42590423 uc002zap.1 15 + +chr21 42513076 42590423 uc002zar.1 15 + +chr21 42579058 42588512 uc010gpb.1 6 + +chr21 42592172 42593987 uc002zau.2 1 + +chr21 42605231 42608775 uc002zav.1 3 - +chr21 42639535 42644176 uc002zaw.1 4 - +chr21 42655459 42659713 uc002zax.1 3 - +chr21 42665067 42689269 uc002zbc.1 13 - +chr21 42665067 42689269 uc002zbb.1 13 - +chr21 42665067 42683596 uc002zba.1 11 - +chr21 42665067 42682296 uc002zaz.1 10 - +chr21 42665067 42676929 uc002zay.1 5 - +chr21 42675053 42689269 uc002zbd.1 9 - +chr21 42697087 42740843 uc010gpe.1 12 + +chr21 42697087 42740843 uc010gpd.1 14 + +chr21 42697087 42740843 uc010gpc.1 14 + +chr21 42697087 42740843 uc002zbf.1 14 + +chr21 42697087 42740843 uc002zbe.1 15 + +chr21 42765665 42789470 uc002zbg.1 9 - +chr21 42789186 42811689 uc002zbh.1 3 + +chr21 42792810 42874619 uc002zbi.1 21 + +chr21 42807092 42874619 uc002zbj.1 20 + +chr21 42892458 42908237 uc002zbk.1 2 - +chr21 42941483 42944423 uc002zbl.2 2 - +chr21 42946930 43068687 uc002zbx.1 19 + +chr21 42946930 43068687 uc002zby.1 14 + +chr21 42946930 43068687 uc002zbz.1 20 + +chr21 42946930 43068687 uc002zca.1 19 + +chr21 42946930 43068687 uc002zcb.1 19 + +chr21 42946930 43068687 uc002zcc.1 18 + +chr21 42946930 43068687 uc002zcd.1 18 + +chr21 42946930 43068687 uc002zce.1 18 + +chr21 42946930 43068687 uc002zcf.1 18 + +chr21 42946930 43068687 uc002zcg.1 18 + +chr21 42946930 43068687 uc002zbw.1 15 + +chr21 42946930 43068687 uc002zbv.1 15 + +chr21 42946930 43068687 uc002zbm.1 20 + +chr21 42946930 43068687 uc002zbn.1 17 + +chr21 42946930 43068687 uc002zbo.1 19 + +chr21 42946930 43068687 uc002zbp.1 17 + +chr21 42946930 43068687 uc002zbq.1 17 + +chr21 42946930 43068687 uc002zbs.1 17 + +chr21 42946930 43068687 uc002zbr.1 16 + +chr21 42946930 43068687 uc002zbt.1 16 + +chr21 42946930 43068687 uc002zbu.1 16 + +chr21 43024936 43068687 uc002zch.1 15 + +chr21 43036742 43059157 uc010gpf.1 9 + +chr21 43136272 43172747 uc002zci.1 12 - +chr21 43136869 43139149 uc002zcj.1 1 - +chr21 43142404 43172747 uc002zcl.1 11 - +chr21 43142404 43172747 uc010gpg.1 11 - +chr21 43142404 43172747 uc002zck.1 11 - +chr21 43143219 43172747 uc010gph.1 11 - +chr21 43186446 43202842 uc002zcm.1 4 + +chr21 43186446 43202842 uc002zcn.1 3 + +chr21 43209994 43218800 uc002zco.1 2 - +chr21 43267711 43326757 uc002zcq.1 11 + +chr21 43267711 43322136 uc002zcp.1 10 + +chr21 43297504 43311226 uc002zcr.2 5 + +chr21 43346369 43361583 uc002zcs.1 14 - +chr21 43346369 43369020 uc002zct.1 17 - +chr21 43346369 43369020 uc002zcu.1 17 - +chr21 43346369 43369493 uc002zcv.1 17 - +chr21 43346371 43369493 uc002zcw.2 18 - +chr21 43348252 43353725 uc002zcx.1 6 - +chr21 43386134 43398431 uc002zcy.1 7 - +chr21 43386134 43400757 uc002zcz.1 9 - +chr21 43386134 43400757 uc002zda.1 8 - +chr21 43386134 43400757 uc002zdb.1 8 - +chr21 43386141 43400757 uc010gpi.1 7 - +chr21 43390818 43400757 uc002zdc.1 3 - +chr21 43462209 43465982 uc002zdd.1 3 + +chr21 43658826 43671430 uc002zdf.1 14 - +chr21 43694331 43698210 uc002zdg.1 3 + +chr21 43706401 43722531 uc002zdh.1 4 - +chr21 43773499 43903802 uc002zdi.1 9 - +chr21 43809497 43809957 uc002zdj.1 1 + +chr21 43903859 43940388 uc002zdk.1 16 + +chr21 43930440 43940388 uc002zdl.1 5 + +chr21 43963405 44006616 uc002zdn.2 10 + +chr21 43963405 44006616 uc010gpj.1 10 + +chr21 43963405 44006616 uc002zdm.2 11 + +chr21 43973208 43983169 uc002zdp.2 4 + +chr21 43973208 43983140 uc002zdo.1 4 + +chr21 43985728 44006616 uc002zdq.2 10 + +chr21 44018258 44020687 uc002zdr.1 3 - +chr21 44033845 44048411 uc002zds.2 13 + +chr21 44033845 44048411 uc010gpk.1 12 + +chr21 44037239 44048411 uc010gpl.1 10 + +chr21 44041669 44048411 uc010gpm.1 8 + +chr21 44050068 44054670 uc002zdt.1 4 - +chr21 44050068 44054670 uc010gpn.1 2 - +chr21 44050068 44056876 uc002zdu.1 2 - +chr21 44109543 44231903 uc002zdv.1 10 + +chr21 44169706 44231903 uc002zdw.1 9 + +chr21 44191238 44231903 uc002zdx.1 11 + +chr21 44203942 44231903 uc002zdy.1 9 + +chr21 44256633 44304536 uc002zdz.2 7 + +chr21 44256633 44350860 uc002zea.1 23 + +chr21 44256633 44350860 uc010gpo.1 24 + +chr21 44351635 44375491 uc002zeb.1 21 + +chr21 44377921 44390033 uc002zed.2 6 + +chr21 44377921 44390033 uc002zec.2 7 + +chr21 44471149 44485262 uc002zee.1 7 - +chr21 44471149 44485262 uc002zef.1 6 - +chr21 44473907 44485262 uc010gpp.1 6 - +chr21 44490650 44506527 uc002zeh.1 12 - +chr21 44490650 44506527 uc002zeg.1 12 - +chr21 44530190 44542530 uc002zei.1 14 + +chr21 44534575 44542530 uc002zej.1 8 + +chr21 44534575 44542530 uc010gpq.1 9 + +chr21 44534701 44542530 uc010gpr.1 7 + +chr21 44544357 44571684 uc002zek.1 25 + +chr21 44544357 44571684 uc002zel.1 22 + +chr21 44563661 44571684 uc002zen.1 10 + +chr21 44563661 44571684 uc002zem.1 11 + +chr21 44573254 44583713 uc002zer.2 7 - +chr21 44573254 44583713 uc002zeq.2 7 - +chr21 44573254 44583713 uc002zep.2 7 - +chr21 44573254 44583095 uc002zeo.1 8 - +chr21 44573254 44578835 uc010gps.1 4 - +chr21 44578846 44583095 uc002zes.1 3 - +chr21 44594473 44687392 uc002zet.1 33 + +chr21 44597566 44687392 uc002zeu.1 32 + +chr21 44597911 44687392 uc002zew.1 32 + +chr21 44597911 44687392 uc010gpt.1 33 + +chr21 44613431 44687392 uc002zex.1 28 + +chr21 44635582 44687392 uc002zey.1 21 + +chr21 44658905 44661051 uc002zez.1 2 - +chr21 44699820 44703167 uc002zfa.1 2 + +chr21 44700955 44701729 uc010gpu.1 1 + +chr21 44722649 44722699 uc002zfb.1 1 - +chr21 44728608 44728644 uc002zfc.1 1 - +chr21 44737584 44737655 uc002zfd.1 1 - +chr21 44742202 44955923 uc010gpv.1 13 - +chr21 44742202 44955923 uc002zfe.1 12 - +chr21 44761525 44765140 uc002zfg.2 2 + +chr21 44761525 44765140 uc002zff.2 3 + +chr21 44783495 44784506 uc002zfh.1 1 - +chr21 44794745 44795816 uc002zfi.1 1 - +chr21 44802333 44803071 uc002zfj.1 1 - +chr21 44818033 44819415 uc002zfk.1 1 + +chr21 44823991 44824909 uc002zfl.1 1 - +chr21 44835576 44836814 uc002zfm.1 1 - +chr21 44844924 44846519 uc002zfn.2 2 + +chr21 44856423 44857299 uc002zfo.1 1 + +chr21 44871467 44872723 uc002zfp.2 1 + +chr21 44881700 44882800 uc002zfq.1 1 + +chr21 44890758 44891994 uc002zfr.2 1 + +chr21 44898557 44899004 uc002zfs.1 1 - +chr21 44902276 44902686 uc002zft.1 1 + +chr21 44910533 44911272 uc002zfu.1 1 - +chr21 44925918 44926506 uc002zfv.1 1 - +chr21 44941514 44942387 uc002zfw.1 1 + +chr21 45013382 45046166 uc002zfy.1 6 - +chr21 45013382 45046166 uc002zfx.1 7 - +chr21 45049959 45062472 uc002zfz.1 4 - +chr21 45049959 45062472 uc002zga.1 4 - +chr21 45093940 45118169 uc002zgb.1 6 - +chr21 45130296 45173181 uc002zgg.1 16 - +chr21 45130296 45165393 uc010gpw.1 15 - +chr21 45130296 45165393 uc002zgf.2 16 - +chr21 45130296 45155785 uc002zge.1 16 - +chr21 45130296 45155169 uc002zgd.1 15 - +chr21 45165393 45174016 uc002zgh.2 4 + +chr21 45177156 45179316 uc002zgi.1 2 - +chr21 45179070 45184188 uc002zgk.2 3 - +chr21 45179070 45184188 uc002zgj.2 4 - +chr21 45184382 45221316 uc002zgl.1 6 + +chr21 45184382 45221316 uc002zgm.1 6 + +chr21 45235614 45238429 uc002zgn.1 2 - +chr21 45243556 45249070 uc002zgo.2 2 - +chr21 45318942 45470902 uc002zgu.1 12 + +chr21 45318942 45470902 uc002zgw.1 12 + +chr21 45318942 45470902 uc002zgv.1 12 + +chr21 45318942 45470902 uc002zgt.1 11 + +chr21 45318942 45470902 uc002zgs.1 13 + +chr21 45318942 45470902 uc002zgr.1 13 + +chr21 45318942 45470902 uc010gpx.1 11 + +chr21 45318942 45470902 uc002zgq.1 13 + +chr21 45318942 45390638 uc002zgp.1 10 + +chr21 45415952 45470902 uc002zgy.1 10 + +chr21 45478694 45503073 uc002zgz.1 3 + +chr21 45508270 45532239 uc002zhd.1 8 - +chr21 45508270 45532239 uc002zhc.1 9 - +chr21 45508270 45532239 uc002zhb.1 10 - +chr21 45508270 45521753 uc002zha.1 6 - +chr21 45532394 45536081 uc002zhe.1 3 + +chr21 45539291 45541696 uc002zhf.1 1 + +chr21 45649524 45758062 uc002zhg.1 42 + +chr21 45664058 45669413 uc002zhh.1 3 - +chr21 45699851 45758062 uc002zhi.1 41 + +chr21 45742542 45788753 uc010gpy.1 6 - +chr21 45748757 45758062 uc002zhj.1 9 + +chr21 45751841 45758062 uc002zhk.1 5 + +chr21 45759056 45786779 uc002zhl.1 6 - +chr21 45759056 45786779 uc010gpz.1 6 - +chr21 45759056 45786779 uc002zhm.1 6 - +chr21 45837995 45841691 uc002zhn.1 2 + +chr21 45877516 45878815 uc010gqa.1 1 + +chr21 45888110 46180046 uc010gqb.1 14 + +chr21 46072302 46080761 uc002zho.1 3 - +chr21 46092504 46186795 uc002zhp.1 14 + +chr21 46094302 46162867 uc010gqc.1 8 + +chr21 46094302 46186795 uc002zhq.1 14 + +chr21 46094302 46186795 uc002zhr.1 14 + +chr21 46094302 46186795 uc002zhs.1 13 + +chr21 46140549 46186795 uc002zht.1 13 + +chr21 46226090 46249391 uc002zhu.1 35 + +chr21 46242041 46249391 uc010gqd.1 13 + +chr21 46245538 46249391 uc002zhv.1 6 + +chr21 46246830 46249391 uc002zhw.1 3 + +chr21 46281393 46283633 uc002zhx.1 2 + +chr21 46342460 46377191 uc002zib.1 9 + +chr21 46342460 46377191 uc002zia.1 28 + +chr21 46342460 46374147 uc002zhz.1 28 + +chr21 46342460 46374147 uc002zhy.1 28 + +chr21 46370831 46377191 uc002zic.1 2 + +chr21 46374170 46377189 uc010gqe.1 1 + +chr21 46380603 46399909 uc002zig.1 15 - +chr21 46380603 46399909 uc002zif.1 15 - +chr21 46380603 46387083 uc002zie.1 5 - +chr21 46381121 46399909 uc002zih.1 14 - +chr21 46381121 46399909 uc010gqf.1 13 - +chr21 46381326 46399909 uc010gqg.1 14 - +chr21 46405497 46428729 uc002zii.1 4 - +chr21 46432787 46473119 uc002zij.1 23 - +chr21 46433466 46473079 uc002zik.1 21 - +chr21 46433466 46473119 uc002zil.1 22 - +chr21 46473585 46496032 uc002zim.2 3 + +chr21 46473585 46496032 uc002zin.2 4 + +chr21 46479475 46529664 uc002zir.1 28 - +chr21 46479475 46511294 uc002ziq.1 18 - +chr21 46479475 46503607 uc002zip.1 13 - +chr21 46479475 46491502 uc002zio.1 7 - +chr21 46480565 46496171 uc002zis.1 3 + +chr21 46530694 46542093 uc010gqh.1 4 + +chr21 46530694 46542093 uc002ziy.1 4 + +chr21 46530694 46542093 uc002zix.1 5 + +chr21 46530694 46542093 uc002ziw.1 5 + +chr21 46530694 46542093 uc002ziv.1 5 + +chr21 46530694 46536539 uc002ziu.1 3 + +chr21 46530694 46536539 uc002zit.1 3 + +chr21 46537349 46539139 uc010gqi.1 2 + +chr21 46544772 46565167 uc002zja.2 9 - +chr21 46544772 46562562 uc002ziz.2 7 - +chr21 46545474 46563479 uc002zjc.1 7 - +chr21 46545474 46568213 uc002zjf.1 8 - +chr21 46545477 46568213 uc010gqj.1 9 - +chr21 46559057 46568213 uc002zjg.1 6 - +chr21 46568463 46690110 uc002zji.2 47 + +chr21 46569229 46690110 uc002zjj.1 47 + +chr21 46578738 46594162 uc010gqk.1 6 + +chr21 46699327 46703021 uc002zjk.1 2 - +chr21 46703317 46790647 uc002zjl.1 20 + +chr21 46703317 46791548 uc002zjm.1 21 + +chr21 46703317 46791548 uc010gql.1 20 + +chr21 46703317 46813028 uc002zjo.1 38 + +chr21 46703317 46794451 uc002zjn.1 22 + +chr21 46748653 46789614 uc002zjp.1 14 + +chr21 46783075 46791548 uc002zjq.1 5 + +chr21 46797251 46803437 uc002zjr.2 7 + +chr21 46805625 46813028 uc002zjs.1 5 + +chr21 46808123 46813028 uc002zjt.1 4 + +chr21 46842958 46849463 uc002zjv.1 4 - +chr21 46842958 46849463 uc002zju.1 3 - +chr21 46879954 46904483 uc002zjw.2 7 + +chr21 46879954 46909291 uc002zjx.1 12 + +chr21 46879954 46909291 uc002zjy.1 11 + +chr21 46879954 46909291 uc010gqm.1 9 + +chr21 46887625 46906276 uc002zjz.1 6 + diff --git a/src/intersectBed/chr21.genes.txt b/src/intersectBed/chr21.genes.txt new file mode 100644 index 0000000000000000000000000000000000000000..841b687392be9648a34cb16319bf60dae3471665 --- /dev/null +++ b/src/intersectBed/chr21.genes.txt @@ -0,0 +1,828 @@ +uc002yip.1 chr21 - 9928613 10012791 24 +uc002yiq.1 chr21 - 9928613 10012791 23 +uc002yir.1 chr21 - 9928613 10012791 22 +uc010gkv.1 chr21 - 9928613 10012791 19 +uc002yis.1 chr21 - 9928613 10061300 33 +uc002yiu.1 chr21 - 10042683 10120808 9 +uc002yit.1 chr21 - 10042683 10120796 10 +uc002yiv.1 chr21 - 10079666 10120808 4 +uc002yiw.1 chr21 - 10080031 10081687 2 +uc002yix.2 chr21 - 10081660 10120796 3 +uc002yiy.2 chr21 + 13332351 13346202 5 +uc002yiz.2 chr21 + 13336975 13346202 4 +uc002yja.2 chr21 + 13361138 13412440 3 +uc002yjb.1 chr21 + 13904368 13935777 11 +uc002yjc.1 chr21 + 13944438 13944477 1 +uc002yjd.1 chr21 + 13945076 13945106 1 +uc002yje.1 chr21 - 13973491 13975330 1 +uc002yjf.1 chr21 - 14137333 14142556 6 +uc002yjg.1 chr21 + 14200023 14200052 1 +uc002yjh.1 chr21 - 14202070 14202096 1 +uc002yji.1 chr21 - 14237966 14274631 6 +uc002yjj.2 chr21 - 14270940 14274631 2 +uc002yjk.2 chr21 + 14321612 14438647 3 +uc002yjl.2 chr21 + 14321612 14438730 3 +uc002yjm.1 chr21 - 14403005 14501125 10 +uc010gkw.1 chr21 - 14459414 14483611 4 +uc002yjp.2 chr21 + 14510336 14522564 4 +uc002yjn.2 chr21 + 14510336 14522564 5 +uc002yjo.2 chr21 + 14510336 14522564 5 +uc002yjq.1 chr21 + 14567990 14585577 5 +uc002yjr.1 chr21 + 14567990 14595563 6 +uc010gkx.1 chr21 + 14567990 14595563 5 +uc002yjs.2 chr21 + 14567990 14632206 14 +uc002yjt.1 chr21 - 14665307 14677380 5 +uc002yjv.1 chr21 - 14779419 14877594 9 +uc010gky.1 chr21 - 14779419 14840535 4 +uc002yju.1 chr21 - 14779419 14840535 8 +uc002yjw.1 chr21 - 15117160 15151900 3 +uc002yjx.1 chr21 - 15255426 15262718 1 +uc010gkz.1 chr21 - 15258731 15358997 4 +uc010gla.1 chr21 + 16024366 16174248 11 +uc002yjz.1 chr21 + 16024366 16174248 25 +uc002yjy.1 chr21 + 16024366 16174248 24 +uc010glb.1 chr21 + 16085691 16113036 5 +uc002yka.1 chr21 + 16364712 16901413 8 +uc002ykb.1 chr21 + 16364712 16901413 8 +uc010glc.1 chr21 + 16365304 16365529 1 +uc002ykc.1 chr21 + 16488569 16901413 6 +uc002ykd.1 chr21 + 16833279 16833360 1 +uc002yke.1 chr21 + 16834014 16834106 1 +uc002ykf.1 chr21 + 16884427 16884516 1 +uc002ykg.1 chr21 + 17733107 17743132 4 +uc002yki.1 chr21 + 17807200 17861137 7 +uc010gle.1 chr21 + 17807200 17859800 3 +uc010gld.1 chr21 + 17807200 17859800 4 +uc002ykh.1 chr21 + 17807200 17859800 5 +uc002ykj.1 chr21 + 17841215 17887768 7 +uc002ykk.1 chr21 - 17887841 17907033 5 +uc002ykl.1 chr21 - 17887841 17907033 6 +uc002ykn.2 chr21 - 18071593 18086697 3 +uc002ykm.2 chr21 - 18071593 18086697 4 +uc002ykq.2 chr21 - 18083154 18113574 5 +uc002yko.2 chr21 - 18083154 18113574 5 +uc002ykp.2 chr21 - 18083154 18113574 4 +uc002ykr.1 chr21 + 18195450 18561558 7 +uc002yku.1 chr21 + 18211407 18561558 5 +uc002ykt.1 chr21 + 18211407 18561558 6 +uc002yks.1 chr21 + 18211407 18561558 7 +uc002ykv.1 chr21 + 18539020 18561558 6 +uc002ykw.1 chr21 - 18563560 18697844 25 +uc010glf.1 chr21 - 18855455 19032214 4 +uc002ykx.2 chr21 - 18855455 19054001 4 +uc002ylc.2 chr21 - 21036784 21097287 7 +uc002ylb.2 chr21 - 21036784 21097287 7 +uc002yla.2 chr21 - 21036784 21097287 7 +uc002ykz.2 chr21 - 21036784 21097287 8 +uc002yky.2 chr21 - 21036784 21097287 8 +uc002yld.1 chr21 + 21292503 21833085 18 +uc002yle.2 chr21 + 22041175 22091604 5 +uc002ylf.2 chr21 - 22303349 22392649 6 +uc002ylg.1 chr21 + 22392806 22410718 6 +uc002ylh.1 chr21 - 22462158 22462605 1 +uc002yli.1 chr21 + 24722924 24784492 6 +uc002ylj.2 chr21 + 25134734 25351923 4 +uc002ylk.1 chr21 - 25680009 25725884 5 +uc010glg.1 chr21 - 25680009 25725884 4 +uc002ylm.2 chr21 + 25856312 25869344 3 +uc002yll.1 chr21 + 25856375 25869344 1 +uc002yln.1 chr21 - 25879838 25901672 11 +uc002ylo.1 chr21 - 25879838 25901672 10 +uc010gli.1 chr21 + 25933459 26009106 8 +uc010glh.1 chr21 + 25933459 26009106 10 +uc002ylr.1 chr21 + 25933459 26009106 9 +uc002ylq.1 chr21 + 25933459 26009106 10 +uc002ylp.1 chr21 + 25933459 26009106 10 +uc002yls.1 chr21 - 26018661 26029836 4 +uc002ylt.1 chr21 - 26018661 26029836 4 +uc002ylu.1 chr21 - 26018661 26029836 4 +uc002ylv.1 chr21 - 26018661 26029836 4 +uc002ylw.1 chr21 - 26018661 26029836 4 +uc002ylx.2 chr21 + 26028751 26066642 10 +uc002yly.2 chr21 + 26029199 26066642 10 +uc010glj.1 chr21 - 26174731 26465003 15 +uc002ylz.1 chr21 - 26174731 26465003 18 +uc002yma.1 chr21 - 26174731 26465003 17 +uc002ymb.1 chr21 - 26174731 26465003 16 +uc010glk.1 chr21 - 26316026 26434649 6 +uc002ymc.1 chr21 - 26460085 26461513 1 +uc002ymd.1 chr21 - 26760398 26867452 4 +uc002yme.2 chr21 - 26762117 26867452 4 +uc002ymf.1 chr21 - 27130476 27139599 9 +uc002ymg.1 chr21 - 27212111 27260703 8 +uc002ymh.2 chr21 - 27653075 27742769 4 +uc002ymj.2 chr21 + 28307571 28317143 2 +uc002ymk.1 chr21 + 28342603 28431799 5 +uc002yml.2 chr21 - 28410287 28522857 6 +uc002ymm.2 chr21 + 28833510 28834547 2 +uc002ymn.2 chr21 + 28833510 28834547 2 +uc002ymp.1 chr21 - 29166383 29179564 5 +uc002ymo.1 chr21 - 29166383 29179564 6 +uc002ymq.1 chr21 - 29166384 29179564 7 +uc002ymr.1 chr21 - 29222336 29287095 30 +uc010gll.1 chr21 - 29260562 29281126 10 +uc002ymv.1 chr21 - 29299950 29313554 4 +uc002ymu.1 chr21 - 29299950 29313554 4 +uc002ymt.1 chr21 - 29299950 29313554 6 +uc002yms.1 chr21 - 29299950 29313554 5 +uc002ymw.1 chr21 + 29318808 29348678 19 +uc002ymy.1 chr21 + 29318808 29348678 18 +uc002ymx.1 chr21 + 29318808 29348678 18 +uc010glm.1 chr21 - 29350518 29367881 14 +uc002ync.1 chr21 - 29350518 29367881 15 +uc002ynb.1 chr21 - 29350518 29367881 15 +uc002yna.1 chr21 - 29350518 29367827 15 +uc002ymz.1 chr21 - 29350518 29357059 5 +uc002ynd.1 chr21 + 29371824 29470073 10 +uc010gln.1 chr21 + 29371824 29470073 9 +uc002yne.1 chr21 + 29371824 29470073 8 +uc002ynf.1 chr21 + 29374743 29470073 9 +uc010glo.1 chr21 + 29416245 29470073 4 +uc002yng.1 chr21 + 29424835 29470073 5 +uc010glp.1 chr21 + 29439770 29470073 4 +uc002ynh.2 chr21 + 29487671 29582396 4 +uc002yni.2 chr21 + 29487685 29582396 2 +uc002ynj.1 chr21 + 29593090 29640340 5 +uc002ynk.1 chr21 + 29593607 29640340 5 +uc002ynl.1 chr21 + 29599430 29656086 8 +uc002ynn.1 chr21 - 29831124 30234153 16 +uc002yno.1 chr21 - 29847736 30234153 17 +uc010glq.1 chr21 - 29875615 30234153 10 +uc002ynp.1 chr21 + 29890230 29924938 3 +uc002ynr.2 chr21 - 29892990 30234153 8 +uc002yns.1 chr21 + 30043127 30058182 3 +uc002ynt.1 chr21 - 30460131 30460806 1 +uc002ynu.1 chr21 - 30508200 30510189 1 +uc002ynv.1 chr21 - 30575497 30577147 1 +uc010glr.1 chr21 - 30583333 30583703 1 +uc002ynw.1 chr21 - 30613320 30614478 1 +uc002ynx.1 chr21 - 30631201 30631883 1 +uc002yny.1 chr21 - 30642587 30642795 1 +uc002ynz.2 chr21 - 30665579 30666428 1 +uc002yoa.1 chr21 + 30690262 30691009 1 +uc002yob.1 chr21 - 30719581 30720101 1 +uc002yoc.1 chr21 + 30724464 30724947 1 +uc002yod.1 chr21 + 30734516 30734969 1 +uc002yoe.1 chr21 - 30774234 30774507 1 +uc002yof.1 chr21 - 30781379 30781538 1 +uc002yog.1 chr21 - 30785652 30786146 1 +uc002yoh.1 chr21 - 30791044 30791299 1 +uc002yoi.1 chr21 - 30796060 30796279 1 +uc002yok.1 chr21 - 30835724 30836052 1 +uc002yol.1 chr21 - 30855287 30855479 1 +uc002yom.1 chr21 + 30886629 30887245 1 +uc002yon.1 chr21 - 30892875 30893064 1 +uc002yoo.1 chr21 + 30895310 30895457 1 +uc002yop.1 chr21 - 30907875 30908094 1 +uc002yoq.1 chr21 + 30910644 30910815 1 +uc002yor.1 chr21 + 30929453 30929651 1 +uc010gls.1 chr21 + 30937053 30937326 1 +uc002yos.1 chr21 - 31041139 31041391 1 +uc002yot.1 chr21 - 31049327 31049567 1 +uc002you.1 chr21 - 31106885 31107441 1 +uc002yov.1 chr21 - 31174834 31175745 1 +uc010glt.1 chr21 - 31332348 31332666 1 +uc002yow.1 chr21 - 31412606 31853161 29 +uc002yox.1 chr21 - 31506817 31854161 9 +uc002yoy.2 chr21 + 31853428 31854471 2 +uc002yoz.1 chr21 - 31948741 31953684 3 +uc002ypa.1 chr21 + 31953805 31963114 5 +uc002ypb.1 chr21 + 31953849 31963114 5 +uc002ypc.1 chr21 + 31953892 31963114 5 +uc002ypd.1 chr21 - 31965417 32026133 20 +uc002ype.1 chr21 - 31965417 32026133 20 +uc010glu.1 chr21 - 31965417 32026133 19 +uc002ypf.1 chr21 - 31978178 31996102 14 +uc002ypg.1 chr21 - 31994942 32026133 7 +uc002yph.1 chr21 + 32167498 32298248 11 +uc002ypi.1 chr21 - 32562400 32573247 5 +uc002ypk.1 chr21 + 32585994 32608965 5 +uc002ypj.1 chr21 + 32585994 32606470 5 +uc010glv.1 chr21 + 32585994 32606470 4 +uc002ypl.1 chr21 + 32593031 32606470 3 +uc002ypm.2 chr21 - 32600647 32602916 2 +uc002ypn.1 chr21 - 32607648 32687021 39 +uc002ypo.1 chr21 - 32671366 32671502 1 +uc002ypt.1 chr21 + 32706622 32809568 6 +uc010glw.1 chr21 + 32706622 32809568 8 +uc002yps.1 chr21 + 32706622 32809568 7 +uc002ypr.1 chr21 + 32706622 32809568 8 +uc002ypq.1 chr21 + 32706622 32762234 4 +uc002ypu.1 chr21 + 32746363 32809568 7 +uc002ypv.1 chr21 - 32866419 32870062 4 +uc002ypw.2 chr21 - 32870732 32879714 5 +uc002ypz.1 chr21 - 32876380 32906537 6 +uc002ypy.1 chr21 - 32876380 32906537 7 +uc002ypx.1 chr21 - 32876380 32901897 3 +uc002yqa.2 chr21 - 32895854 32898694 2 +uc002yqb.2 chr21 - 32895854 32906537 5 +uc002yqc.1 chr21 - 32895977 32906537 7 +uc002yqd.1 chr21 - 32895977 32906537 6 +uc010glx.1 chr21 - 32895977 32906537 6 +uc002yqi.1 chr21 - 32922943 33022148 33 +uc002yqh.1 chr21 - 32922943 33022148 32 +uc002yqg.1 chr21 - 32922943 33022105 28 +uc002yqf.1 chr21 - 32922943 33022105 32 +uc002yqe.2 chr21 - 32922943 32936331 6 +uc002yqj.1 chr21 + 33022296 33027093 2 +uc002yqk.2 chr21 + 33022296 33037303 4 +uc002yqo.1 chr21 - 33028080 33066040 18 +uc002yqn.1 chr21 - 33028080 33066040 18 +uc002yqm.1 chr21 - 33028080 33050976 11 +uc002yql.1 chr21 - 33028080 33046092 10 +uc002yqp.1 chr21 - 33035520 33066040 16 +uc002yqq.1 chr21 - 33049593 33066040 8 +uc002yqr.2 chr21 - 33053537 33066040 6 +uc002yqs.2 chr21 + 33066281 33091884 4 +uc002yqt.2 chr21 + 33066306 33091884 2 +uc002yqu.2 chr21 + 33066387 33091884 4 +uc010gly.1 chr21 - 33084854 33107876 4 +uc002yqv.1 chr21 - 33084854 33107876 3 +uc002yqw.1 chr21 - 33084854 33107876 2 +uc010glz.1 chr21 - 33087858 33088602 1 +uc002yqx.1 chr21 + 33320108 33323370 2 +uc002yqy.2 chr21 + 33321040 33322012 1 +uc002yqz.1 chr21 + 33364442 33366596 1 +uc002yra.1 chr21 - 33459786 33464411 4 +uc002yrf.1 chr21 + 33524100 33558690 8 +uc002yre.1 chr21 + 33524100 33558690 9 +uc002yrd.1 chr21 + 33524100 33558690 9 +uc002yrc.1 chr21 + 33524100 33556932 9 +uc002yrb.1 chr21 + 33524100 33556932 9 +uc002yrg.1 chr21 + 33539667 33556932 6 +uc002yrh.1 chr21 + 33542883 33577416 6 +uc002yri.1 chr21 + 33542883 33577416 5 +uc002yrj.1 chr21 - 33558047 33560435 2 +uc002yrk.1 chr21 + 33560541 33591390 7 +uc002yrl.1 chr21 + 33562102 33591390 6 +uc002yrn.1 chr21 + 33619083 33653998 11 +uc002yrp.2 chr21 + 33697071 33731698 7 +uc002yrq.2 chr21 + 33697071 33731698 8 +uc010gma.1 chr21 + 33697071 33731698 8 +uc002yrr.2 chr21 + 33709055 33731698 6 +uc002yrs.1 chr21 - 33726662 33774151 9 +uc002yrt.1 chr21 - 33742958 33774151 7 +uc010gmb.1 chr21 - 33742958 33774151 8 +uc002yrv.1 chr21 - 33782107 33785660 2 +uc002yrw.1 chr21 - 33782107 33785893 2 +uc010gmc.1 chr21 - 33782403 33783570 1 +uc010gmd.1 chr21 - 33798141 33837065 22 +uc002yrz.1 chr21 - 33798141 33837006 22 +uc002yry.1 chr21 - 33798141 33836995 22 +uc002yrx.1 chr21 - 33798141 33836286 22 +uc002ysa.1 chr21 - 33818186 33836286 11 +uc002ysb.1 chr21 + 33837219 33851844 5 +uc002ysc.1 chr21 + 33837219 33854843 7 +uc002ysd.2 chr21 + 33837219 33871654 13 +uc002ysf.1 chr21 + 33837219 33871682 11 +uc002yse.1 chr21 + 33837219 33871682 12 +uc002ysg.2 chr21 + 33846423 33861642 5 +uc002ysh.2 chr21 + 33866544 33871654 5 +uc002ysi.1 chr21 - 33869652 33880357 9 +uc002ysm.1 chr21 - 33872080 33889790 13 +uc002ysl.1 chr21 - 33872080 33883137 9 +uc002ysk.1 chr21 - 33872080 33883137 10 +uc010gme.1 chr21 - 33872080 33883137 9 +uc002ysj.1 chr21 - 33872080 33881778 8 +uc002ysn.1 chr21 - 33878765 34206573 5 +uc010gmf.1 chr21 - 33883517 33936030 13 +uc002ysp.2 chr21 - 33888837 33889792 1 +uc002ysq.2 chr21 - 33889437 33891577 2 +uc002yst.1 chr21 - 33889906 33936030 10 +uc002yss.1 chr21 - 33889906 33936030 11 +uc002ysr.1 chr21 - 33889906 33936030 12 +uc002ysu.2 chr21 - 33910469 33936030 6 +uc002ysv.2 chr21 - 33933921 33936030 3 +uc002ytb.1 chr21 + 33936653 34183479 39 +uc002yta.1 chr21 + 33936653 34183479 40 +uc002ysx.1 chr21 + 33936653 34132672 29 +uc002ysy.1 chr21 + 33936653 34132672 29 +uc010gmj.1 chr21 + 33936653 34132672 28 +uc010gmi.1 chr21 + 33936653 34132672 30 +uc002ysw.1 chr21 + 33936653 34132672 30 +uc010gmh.1 chr21 + 33936653 34132672 26 +uc010gmg.1 chr21 + 33936653 34132672 27 +uc002ysz.1 chr21 + 33936653 34132672 27 +uc002yth.2 chr21 + 33936653 34132672 28 +uc002ytc.1 chr21 + 34012971 34111788 21 +uc010gmm.1 chr21 + 34012971 34183479 37 +uc002ytj.2 chr21 + 34012971 34183479 37 +uc010gml.1 chr21 + 34012971 34132672 25 +uc010gmk.1 chr21 + 34012971 34132672 27 +uc002ytd.1 chr21 + 34012971 34132672 29 +uc002yte.1 chr21 + 34016762 34132672 25 +uc002ytf.1 chr21 + 34096603 34111788 4 +uc002ytg.1 chr21 + 34112440 34123224 4 +uc002yti.1 chr21 + 34123141 34151031 5 +uc010gmn.1 chr21 + 34169527 34180634 5 +uc002ytk.1 chr21 + 34169527 34179696 3 +uc002ytl.1 chr21 - 34197626 34210028 7 +uc002ytm.1 chr21 - 34206462 34209898 3 +uc002ytn.2 chr21 + 34225295 34265357 3 +uc002ytp.2 chr21 + 34367692 34437204 3 +uc002yto.1 chr21 + 34367692 34400431 2 +uc002ytq.2 chr21 + 34389367 34391524 1 +uc002ytr.2 chr21 + 34474917 34477415 2 +uc002yts.1 chr21 + 34474917 34484090 2 +uc002ytt.1 chr21 + 34658192 34665310 2 +uc010gmo.1 chr21 + 34664647 34665019 1 +uc002ytw.2 chr21 + 34669618 34696944 5 +uc002ytv.2 chr21 + 34669618 34696944 4 +uc002ytu.2 chr21 + 34669618 34683322 4 +uc002yty.1 chr21 - 34712882 34718134 2 +uc002yua.1 chr21 - 34740857 34806443 4 +uc010gmr.1 chr21 - 34740857 34805483 3 +uc010gmq.1 chr21 - 34740857 34753772 3 +uc002ytz.1 chr21 - 34740857 34753772 3 +uc010gmp.1 chr21 - 34740857 34749933 2 +uc010gms.1 chr21 - 34743412 34743802 1 +uc002yue.1 chr21 - 34810653 34909252 4 +uc002yud.1 chr21 - 34810653 34908615 4 +uc002yuc.1 chr21 - 34810653 34908012 4 +uc002yub.1 chr21 - 34810653 34821131 4 +uc002yuf.1 chr21 + 34963557 35012389 6 +uc010gmt.1 chr21 + 34963557 35012389 7 +uc002yug.2 chr21 + 35040013 35079036 3 +uc010gmu.1 chr21 - 35081967 35343437 9 +uc010gmv.1 chr21 - 35081967 35343465 9 +uc002yuj.2 chr21 - 35081967 35343465 7 +uc002yuk.2 chr21 - 35081967 35343511 8 +uc002yui.1 chr21 - 35081967 35182857 5 +uc002yuh.1 chr21 - 35081967 35182857 6 +uc002yum.1 chr21 - 35091579 35343125 5 +uc002yul.1 chr21 - 35091579 35128768 3 +uc002yun.1 chr21 - 35115443 35124138 2 +uc002yuo.1 chr21 - 35115443 35182857 5 +uc002yup.1 chr21 - 35117630 35120573 1 +uc010gmw.1 chr21 - 35127127 35343465 7 +uc002yur.1 chr21 - 35153500 35174880 2 +uc002yus.1 chr21 + 35153640 35153741 1 +uc002yut.1 chr21 - 35181009 36278917 11 +uc002yuv.1 chr21 - 36328708 36358576 14 +uc002yuu.1 chr21 - 36328708 36354789 11 +uc002yux.1 chr21 - 36328709 36354789 12 +uc002yuw.1 chr21 - 36328709 36354429 10 +uc002yuz.1 chr21 - 36337851 36354481 8 +uc002yuy.1 chr21 - 36337851 36354481 7 +uc002yva.1 chr21 - 36337851 36373557 8 +uc010gmy.1 chr21 + 36364154 36367334 3 +uc002yvb.1 chr21 + 36364154 36367332 3 +uc010gmx.1 chr21 + 36364154 36365751 2 +uc002yvc.1 chr21 - 36425934 36450475 4 +uc002yvd.1 chr21 - 36425934 36450475 3 +uc002yve.1 chr21 + 36429132 36440730 3 +uc002yvf.1 chr21 - 36435563 36450475 3 +uc002yvg.1 chr21 + 36458708 36588442 37 +uc002yvh.2 chr21 + 36539215 36556078 6 +uc002yvi.1 chr21 + 36614375 36670814 17 +uc010gmz.1 chr21 + 36632941 36633667 1 +uc002yvj.1 chr21 + 36679558 36710995 14 +uc002yvo.1 chr21 - 36754789 36870737 3 +uc002yvn.1 chr21 - 36754789 36836768 3 +uc002yvm.1 chr21 - 36754789 36774258 2 +uc002yvl.1 chr21 - 36754789 36774258 3 +uc002yvk.1 chr21 - 36754789 36760595 2 +uc010gna.1 chr21 - 36755143 36755863 1 +uc002yvp.2 chr21 + 36993860 37004772 2 +uc002yvq.1 chr21 + 36993860 37040485 10 +uc002yvr.1 chr21 + 36993860 37044088 11 +uc002yvs.1 chr21 - 37045058 37284373 12 +uc010gnb.1 chr21 - 37045058 37256340 11 +uc010gnc.1 chr21 - 37224420 37260808 5 +uc002yvu.1 chr21 + 37300319 37313828 4 +uc010gnd.1 chr21 + 37300319 37313828 3 +uc002yvv.1 chr21 + 37300732 37313828 4 +uc002yvy.1 chr21 - 37359533 37367328 6 +uc002yvx.1 chr21 - 37359533 37367328 5 +uc002yvw.1 chr21 - 37359533 37366973 4 +uc002yvz.1 chr21 + 37367440 37497278 46 +uc010gne.1 chr21 + 37367444 37438815 21 +uc002ywa.1 chr21 + 37377116 37497278 46 +uc010gnf.1 chr21 + 37379959 37497278 44 +uc002ywb.1 chr21 + 37379959 37497278 45 +uc002ywc.1 chr21 + 37401907 37497278 36 +uc002ywd.1 chr21 + 37450826 37480250 10 +uc010gng.1 chr21 + 37502673 37514868 5 +uc010gnh.1 chr21 + 37502673 37514868 4 +uc010gni.1 chr21 + 37502673 37514868 4 +uc010gnj.1 chr21 + 37502673 37514868 3 +uc010gnk.1 chr21 + 37514496 37515910 1 +uc010gnl.1 chr21 - 37517595 37534810 6 +uc002ywf.1 chr21 - 37517595 37561703 8 +uc010gnm.1 chr21 - 37517595 37561703 10 +uc010gnn.1 chr21 - 37517595 37561703 9 +uc002ywi.1 chr21 + 37661728 37809549 13 +uc002ywh.1 chr21 + 37661728 37780786 5 +uc002ywg.1 chr21 + 37661728 37767052 3 +uc010gno.1 chr21 + 37661728 37767052 4 +uc002ywj.1 chr21 + 37713076 37809549 11 +uc002ywl.1 chr21 + 37714470 37809549 11 +uc002ywm.1 chr21 + 37714470 37809549 10 +uc002ywk.1 chr21 + 37714470 37809549 11 +uc002ywn.1 chr21 - 37901635 37904535 1 +uc002ywo.1 chr21 - 37918656 38210566 4 +uc002ywp.1 chr21 - 38348182 38415324 3 +uc010gns.1 chr21 + 38415436 38450474 3 +uc010gnr.1 chr21 + 38415436 38450474 3 +uc010gnq.1 chr21 + 38415436 38450474 4 +uc010gnp.1 chr21 + 38415436 38450474 4 +uc002ywt.2 chr21 + 38415436 38450474 4 +uc010gnt.1 chr21 + 38500119 38502606 3 +uc002ywv.1 chr21 + 38550533 38595616 4 +uc002yww.1 chr21 + 38550739 38595616 3 +uc002ywx.1 chr21 + 38566298 38595616 3 +uc002ywy.2 chr21 + 38567267 38569311 1 +uc010gnu.1 chr21 + 38593053 38594181 1 +uc002ywz.1 chr21 - 38661052 38955488 12 +uc002yxa.1 chr21 - 38675670 38792267 10 +uc010gnv.1 chr21 - 38675670 38878739 9 +uc010gnw.1 chr21 - 38675670 38954461 12 +uc010gnx.1 chr21 - 38675670 38954461 11 +uc002yxb.1 chr21 - 38675670 38955488 11 +uc010gny.1 chr21 - 38686167 38697501 2 +uc002yxc.2 chr21 - 38693868 38955488 8 +uc010gnz.1 chr21 - 38764567 38955488 5 +uc010goa.1 chr21 - 39032820 39046051 4 +uc002yxd.2 chr21 - 39032820 39067271 7 +uc002yxf.1 chr21 + 39099100 39118748 11 +uc002yxg.1 chr21 + 39099718 39118748 10 +uc002yxh.1 chr21 - 39171084 39232223 4 +uc010gob.1 chr21 - 39469253 39477310 6 +uc002yxj.1 chr21 - 39469253 39477310 6 +uc002yxi.1 chr21 - 39469253 39477310 7 +uc010goc.1 chr21 - 39479273 39558815 26 +uc002yxk.1 chr21 - 39479273 39607426 42 +uc002yxl.1 chr21 - 39484017 39607426 42 +uc010god.1 chr21 - 39496120 39523232 12 +uc010goi.1 chr21 - 39530390 39574044 14 +uc010goh.1 chr21 - 39530390 39574044 14 +uc010gog.1 chr21 - 39530390 39574044 15 +uc010gof.1 chr21 - 39530390 39574044 15 +uc010goe.1 chr21 - 39530390 39574044 15 +uc002yxm.1 chr21 - 39590234 39607426 5 +uc002yxo.1 chr21 - 39636110 39642917 6 +uc002yxp.1 chr21 - 39636110 39642917 8 +uc002yxq.1 chr21 - 39636110 39642917 7 +uc002yxr.1 chr21 - 39636110 39643140 8 +uc002yxs.1 chr21 + 39674139 39691486 5 +uc010goj.1 chr21 + 39681560 39691486 5 +uc002yxt.2 chr21 + 39681560 39691486 5 +uc002yxu.1 chr21 - 39699639 39737997 10 +uc002yxv.1 chr21 - 39699639 39739529 10 +uc002yxw.1 chr21 - 39715354 39739601 5 +uc002yxx.1 chr21 - 39715354 39739601 4 +uc002yxy.2 chr21 - 39715868 39732732 4 +uc002yxz.1 chr21 + 39739666 39809303 7 +uc002yya.1 chr21 + 39745649 39809303 7 +uc002yyb.1 chr21 + 39850238 39956685 5 +uc010gok.1 chr21 - 39890946 39906618 3 +uc002yyd.2 chr21 - 39899406 39906618 3 +uc002yyf.1 chr21 + 39906841 39953709 4 +uc002yye.2 chr21 + 39906841 39956685 3 +uc010gol.1 chr21 + 39924087 39953709 2 +uc002yyg.1 chr21 + 39924087 39953709 3 +uc002yyh.1 chr21 + 39936181 39953709 3 +uc010gom.1 chr21 + 39936181 39953709 2 +uc002yym.1 chr21 + 39951123 39956685 2 +uc002yyl.1 chr21 + 39951123 39956685 3 +uc002yyk.1 chr21 + 39951123 39956685 3 +uc002yyj.1 chr21 + 39951123 39956685 3 +uc002yyi.1 chr21 + 39951123 39956685 4 +uc010gon.1 chr21 + 39954356 39955289 1 +uc002yyn.1 chr21 + 40021551 40024477 3 +uc002yyo.1 chr21 + 40039203 40095893 9 +uc002yyp.1 chr21 + 40161216 40223192 3 +uc002yyq.1 chr21 - 40306212 41140909 33 +uc002yyr.1 chr21 - 40306212 41140909 33 +uc002yys.2 chr21 + 40676879 40679152 3 +uc002yyt.2 chr21 + 40676879 40679152 3 +uc002yyu.2 chr21 + 40676879 40679152 2 +uc002yyv.1 chr21 - 41435296 41441861 2 +uc002yyw.1 chr21 + 41461597 41570394 9 +uc002yyx.1 chr21 + 41461597 41570394 8 +uc002yyy.1 chr21 + 41461597 41570394 8 +uc002yyz.1 chr21 - 41469027 41479036 1 +uc010goo.1 chr21 + 41539758 41570394 2 +uc002yza.1 chr21 + 41598067 41651524 10 +uc002yzb.1 chr21 + 41610530 41651524 8 +uc002yzc.1 chr21 + 41610530 41651524 7 +uc002yzd.1 chr21 + 41616616 41651524 7 +uc002yze.1 chr21 + 41655819 41661103 2 +uc002yzf.1 chr21 + 41655819 41702739 14 +uc002yzg.1 chr21 + 41683339 41702739 9 +uc010gop.1 chr21 + 41692693 41702739 5 +uc002yzh.1 chr21 + 41714311 41753008 19 +uc002yzi.1 chr21 + 41720023 41753008 17 +uc010goq.1 chr21 + 41720023 41753008 15 +uc010gor.1 chr21 - 41758350 41801779 14 +uc002yzj.1 chr21 - 41758350 41801948 14 +uc010gos.1 chr21 - 41761530 41824913 14 +uc010got.1 chr21 - 42004748 42009004 7 +uc002yzm.1 chr21 + 42009664 42010809 3 +uc002yzn.1 chr21 - 42032597 42060318 8 +uc002yzo.1 chr21 - 42091453 42172660 24 +uc002yzp.1 chr21 - 42091453 42172660 25 +uc002yzq.1 chr21 - 42094222 42172660 31 +uc002yzr.1 chr21 - 42094222 42172660 25 +uc002yzw.1 chr21 - 42178287 42247068 14 +uc002yzv.1 chr21 - 42178287 42219868 13 +uc002yzu.1 chr21 - 42178287 42212211 11 +uc002yzt.1 chr21 - 42178287 42201421 6 +uc002yzs.1 chr21 - 42178287 42194927 3 +uc002yzx.1 chr21 - 42194130 42219868 11 +uc002zaa.2 chr21 - 42280008 42303565 4 +uc002yzy.2 chr21 - 42280008 42303565 2 +uc002zab.2 chr21 - 42280008 42303565 3 +uc002yzz.2 chr21 - 42280008 42303565 4 +uc010gou.1 chr21 - 42284072 42287273 1 +uc010gov.1 chr21 - 42285670 42303565 4 +uc002zac.2 chr21 - 42285670 42303565 4 +uc002zae.1 chr21 + 42356136 42436174 22 +uc002zad.1 chr21 + 42356136 42436174 23 +uc002zag.1 chr21 + 42364494 42436174 22 +uc002zaf.1 chr21 + 42364494 42436174 23 +uc002zah.1 chr21 - 42368072 42370042 1 +uc002zaj.1 chr21 + 42378469 42397266 7 +uc010gow.1 chr21 + 42378469 42397266 7 +uc002zai.1 chr21 + 42378469 42397266 8 +uc010gox.1 chr21 + 42378469 42397266 7 +uc010goy.1 chr21 + 42378469 42397266 7 +uc010goz.1 chr21 + 42378481 42397266 5 +uc002zak.1 chr21 - 42395312 42401630 2 +uc002zal.1 chr21 + 42413697 42436174 9 +uc010gpa.1 chr21 + 42420850 42430820 4 +uc002zam.1 chr21 + 42492867 42590423 17 +uc002zan.1 chr21 + 42492867 42590423 16 +uc002zao.1 chr21 + 42509255 42590423 15 +uc002zaq.1 chr21 + 42512335 42590423 15 +uc002zap.1 chr21 + 42512335 42590423 15 +uc002zar.1 chr21 + 42513076 42590423 15 +uc010gpb.1 chr21 + 42579058 42588512 6 +uc002zau.2 chr21 + 42592172 42593987 1 +uc002zav.1 chr21 - 42605231 42608775 3 +uc002zaw.1 chr21 - 42639535 42644176 4 +uc002zax.1 chr21 - 42655459 42659713 3 +uc002zbc.1 chr21 - 42665067 42689269 13 +uc002zbb.1 chr21 - 42665067 42689269 13 +uc002zba.1 chr21 - 42665067 42683596 11 +uc002zaz.1 chr21 - 42665067 42682296 10 +uc002zay.1 chr21 - 42665067 42676929 5 +uc002zbd.1 chr21 - 42675053 42689269 9 +uc010gpe.1 chr21 + 42697087 42740843 12 +uc010gpd.1 chr21 + 42697087 42740843 14 +uc010gpc.1 chr21 + 42697087 42740843 14 +uc002zbf.1 chr21 + 42697087 42740843 14 +uc002zbe.1 chr21 + 42697087 42740843 15 +uc002zbg.1 chr21 - 42765665 42789470 9 +uc002zbh.1 chr21 + 42789186 42811689 3 +uc002zbi.1 chr21 + 42792810 42874619 21 +uc002zbj.1 chr21 + 42807092 42874619 20 +uc002zbk.1 chr21 - 42892458 42908237 2 +uc002zbl.2 chr21 - 42941483 42944423 2 +uc002zbx.1 chr21 + 42946930 43068687 19 +uc002zby.1 chr21 + 42946930 43068687 14 +uc002zbz.1 chr21 + 42946930 43068687 20 +uc002zca.1 chr21 + 42946930 43068687 19 +uc002zcb.1 chr21 + 42946930 43068687 19 +uc002zcc.1 chr21 + 42946930 43068687 18 +uc002zcd.1 chr21 + 42946930 43068687 18 +uc002zce.1 chr21 + 42946930 43068687 18 +uc002zcf.1 chr21 + 42946930 43068687 18 +uc002zcg.1 chr21 + 42946930 43068687 18 +uc002zbw.1 chr21 + 42946930 43068687 15 +uc002zbv.1 chr21 + 42946930 43068687 15 +uc002zbm.1 chr21 + 42946930 43068687 20 +uc002zbn.1 chr21 + 42946930 43068687 17 +uc002zbo.1 chr21 + 42946930 43068687 19 +uc002zbp.1 chr21 + 42946930 43068687 17 +uc002zbq.1 chr21 + 42946930 43068687 17 +uc002zbs.1 chr21 + 42946930 43068687 17 +uc002zbr.1 chr21 + 42946930 43068687 16 +uc002zbt.1 chr21 + 42946930 43068687 16 +uc002zbu.1 chr21 + 42946930 43068687 16 +uc002zch.1 chr21 + 43024936 43068687 15 +uc010gpf.1 chr21 + 43036742 43059157 9 +uc002zci.1 chr21 - 43136272 43172747 12 +uc002zcj.1 chr21 - 43136869 43139149 1 +uc002zcl.1 chr21 - 43142404 43172747 11 +uc010gpg.1 chr21 - 43142404 43172747 11 +uc002zck.1 chr21 - 43142404 43172747 11 +uc010gph.1 chr21 - 43143219 43172747 11 +uc002zcm.1 chr21 + 43186446 43202842 4 +uc002zcn.1 chr21 + 43186446 43202842 3 +uc002zco.1 chr21 - 43209994 43218800 2 +uc002zcq.1 chr21 + 43267711 43326757 11 +uc002zcp.1 chr21 + 43267711 43322136 10 +uc002zcr.2 chr21 + 43297504 43311226 5 +uc002zcs.1 chr21 - 43346369 43361583 14 +uc002zct.1 chr21 - 43346369 43369020 17 +uc002zcu.1 chr21 - 43346369 43369020 17 +uc002zcv.1 chr21 - 43346369 43369493 17 +uc002zcw.2 chr21 - 43346371 43369493 18 +uc002zcx.1 chr21 - 43348252 43353725 6 +uc002zcy.1 chr21 - 43386134 43398431 7 +uc002zcz.1 chr21 - 43386134 43400757 9 +uc002zda.1 chr21 - 43386134 43400757 8 +uc002zdb.1 chr21 - 43386134 43400757 8 +uc010gpi.1 chr21 - 43386141 43400757 7 +uc002zdc.1 chr21 - 43390818 43400757 3 +uc002zdd.1 chr21 + 43462209 43465982 3 +uc002zdf.1 chr21 - 43658826 43671430 14 +uc002zdg.1 chr21 + 43694331 43698210 3 +uc002zdh.1 chr21 - 43706401 43722531 4 +uc002zdi.1 chr21 - 43773499 43903802 9 +uc002zdj.1 chr21 + 43809497 43809957 1 +uc002zdk.1 chr21 + 43903859 43940388 16 +uc002zdl.1 chr21 + 43930440 43940388 5 +uc002zdn.2 chr21 + 43963405 44006616 10 +uc010gpj.1 chr21 + 43963405 44006616 10 +uc002zdm.2 chr21 + 43963405 44006616 11 +uc002zdp.2 chr21 + 43973208 43983169 4 +uc002zdo.1 chr21 + 43973208 43983140 4 +uc002zdq.2 chr21 + 43985728 44006616 10 +uc002zdr.1 chr21 - 44018258 44020687 3 +uc002zds.2 chr21 + 44033845 44048411 13 +uc010gpk.1 chr21 + 44033845 44048411 12 +uc010gpl.1 chr21 + 44037239 44048411 10 +uc010gpm.1 chr21 + 44041669 44048411 8 +uc002zdt.1 chr21 - 44050068 44054670 4 +uc010gpn.1 chr21 - 44050068 44054670 2 +uc002zdu.1 chr21 - 44050068 44056876 2 +uc002zdv.1 chr21 + 44109543 44231903 10 +uc002zdw.1 chr21 + 44169706 44231903 9 +uc002zdx.1 chr21 + 44191238 44231903 11 +uc002zdy.1 chr21 + 44203942 44231903 9 +uc002zdz.2 chr21 + 44256633 44304536 7 +uc002zea.1 chr21 + 44256633 44350860 23 +uc010gpo.1 chr21 + 44256633 44350860 24 +uc002zeb.1 chr21 + 44351635 44375491 21 +uc002zed.2 chr21 + 44377921 44390033 6 +uc002zec.2 chr21 + 44377921 44390033 7 +uc002zee.1 chr21 - 44471149 44485262 7 +uc002zef.1 chr21 - 44471149 44485262 6 +uc010gpp.1 chr21 - 44473907 44485262 6 +uc002zeh.1 chr21 - 44490650 44506527 12 +uc002zeg.1 chr21 - 44490650 44506527 12 +uc002zei.1 chr21 + 44530190 44542530 14 +uc002zej.1 chr21 + 44534575 44542530 8 +uc010gpq.1 chr21 + 44534575 44542530 9 +uc010gpr.1 chr21 + 44534701 44542530 7 +uc002zek.1 chr21 + 44544357 44571684 25 +uc002zel.1 chr21 + 44544357 44571684 22 +uc002zen.1 chr21 + 44563661 44571684 10 +uc002zem.1 chr21 + 44563661 44571684 11 +uc002zer.2 chr21 - 44573254 44583713 7 +uc002zeq.2 chr21 - 44573254 44583713 7 +uc002zep.2 chr21 - 44573254 44583713 7 +uc002zeo.1 chr21 - 44573254 44583095 8 +uc010gps.1 chr21 - 44573254 44578835 4 +uc002zes.1 chr21 - 44578846 44583095 3 +uc002zet.1 chr21 + 44594473 44687392 33 +uc002zeu.1 chr21 + 44597566 44687392 32 +uc002zew.1 chr21 + 44597911 44687392 32 +uc010gpt.1 chr21 + 44597911 44687392 33 +uc002zex.1 chr21 + 44613431 44687392 28 +uc002zey.1 chr21 + 44635582 44687392 21 +uc002zez.1 chr21 - 44658905 44661051 2 +uc002zfa.1 chr21 + 44699820 44703167 2 +uc010gpu.1 chr21 + 44700955 44701729 1 +uc002zfb.1 chr21 - 44722649 44722699 1 +uc002zfc.1 chr21 - 44728608 44728644 1 +uc002zfd.1 chr21 - 44737584 44737655 1 +uc010gpv.1 chr21 - 44742202 44955923 13 +uc002zfe.1 chr21 - 44742202 44955923 12 +uc002zfg.2 chr21 + 44761525 44765140 2 +uc002zff.2 chr21 + 44761525 44765140 3 +uc002zfh.1 chr21 - 44783495 44784506 1 +uc002zfi.1 chr21 - 44794745 44795816 1 +uc002zfj.1 chr21 - 44802333 44803071 1 +uc002zfk.1 chr21 + 44818033 44819415 1 +uc002zfl.1 chr21 - 44823991 44824909 1 +uc002zfm.1 chr21 - 44835576 44836814 1 +uc002zfn.2 chr21 + 44844924 44846519 2 +uc002zfo.1 chr21 + 44856423 44857299 1 +uc002zfp.2 chr21 + 44871467 44872723 1 +uc002zfq.1 chr21 + 44881700 44882800 1 +uc002zfr.2 chr21 + 44890758 44891994 1 +uc002zfs.1 chr21 - 44898557 44899004 1 +uc002zft.1 chr21 + 44902276 44902686 1 +uc002zfu.1 chr21 - 44910533 44911272 1 +uc002zfv.1 chr21 - 44925918 44926506 1 +uc002zfw.1 chr21 + 44941514 44942387 1 +uc002zfy.1 chr21 - 45013382 45046166 6 +uc002zfx.1 chr21 - 45013382 45046166 7 +uc002zfz.1 chr21 - 45049959 45062472 4 +uc002zga.1 chr21 - 45049959 45062472 4 +uc002zgb.1 chr21 - 45093940 45118169 6 +uc002zgg.1 chr21 - 45130296 45173181 16 +uc010gpw.1 chr21 - 45130296 45165393 15 +uc002zgf.2 chr21 - 45130296 45165393 16 +uc002zge.1 chr21 - 45130296 45155785 16 +uc002zgd.1 chr21 - 45130296 45155169 15 +uc002zgh.2 chr21 + 45165393 45174016 4 +uc002zgi.1 chr21 - 45177156 45179316 2 +uc002zgk.2 chr21 - 45179070 45184188 3 +uc002zgj.2 chr21 - 45179070 45184188 4 +uc002zgl.1 chr21 + 45184382 45221316 6 +uc002zgm.1 chr21 + 45184382 45221316 6 +uc002zgn.1 chr21 - 45235614 45238429 2 +uc002zgo.2 chr21 - 45243556 45249070 2 +uc002zgu.1 chr21 + 45318942 45470902 12 +uc002zgw.1 chr21 + 45318942 45470902 12 +uc002zgv.1 chr21 + 45318942 45470902 12 +uc002zgt.1 chr21 + 45318942 45470902 11 +uc002zgs.1 chr21 + 45318942 45470902 13 +uc002zgr.1 chr21 + 45318942 45470902 13 +uc010gpx.1 chr21 + 45318942 45470902 11 +uc002zgq.1 chr21 + 45318942 45470902 13 +uc002zgp.1 chr21 + 45318942 45390638 10 +uc002zgy.1 chr21 + 45415952 45470902 10 +uc002zgz.1 chr21 + 45478694 45503073 3 +uc002zhd.1 chr21 - 45508270 45532239 8 +uc002zhc.1 chr21 - 45508270 45532239 9 +uc002zhb.1 chr21 - 45508270 45532239 10 +uc002zha.1 chr21 - 45508270 45521753 6 +uc002zhe.1 chr21 + 45532394 45536081 3 +uc002zhf.1 chr21 + 45539291 45541696 1 +uc002zhg.1 chr21 + 45649524 45758062 42 +uc002zhh.1 chr21 - 45664058 45669413 3 +uc002zhi.1 chr21 + 45699851 45758062 41 +uc010gpy.1 chr21 - 45742542 45788753 6 +uc002zhj.1 chr21 + 45748757 45758062 9 +uc002zhk.1 chr21 + 45751841 45758062 5 +uc002zhl.1 chr21 - 45759056 45786779 6 +uc010gpz.1 chr21 - 45759056 45786779 6 +uc002zhm.1 chr21 - 45759056 45786779 6 +uc002zhn.1 chr21 + 45837995 45841691 2 +uc010gqa.1 chr21 + 45877516 45878815 1 +uc010gqb.1 chr21 + 45888110 46180046 14 +uc002zho.1 chr21 - 46072302 46080761 3 +uc002zhp.1 chr21 + 46092504 46186795 14 +uc010gqc.1 chr21 + 46094302 46162867 8 +uc002zhq.1 chr21 + 46094302 46186795 14 +uc002zhr.1 chr21 + 46094302 46186795 14 +uc002zhs.1 chr21 + 46094302 46186795 13 +uc002zht.1 chr21 + 46140549 46186795 13 +uc002zhu.1 chr21 + 46226090 46249391 35 +uc010gqd.1 chr21 + 46242041 46249391 13 +uc002zhv.1 chr21 + 46245538 46249391 6 +uc002zhw.1 chr21 + 46246830 46249391 3 +uc002zhx.1 chr21 + 46281393 46283633 2 +uc002zib.1 chr21 + 46342460 46377191 9 +uc002zia.1 chr21 + 46342460 46377191 28 +uc002zhz.1 chr21 + 46342460 46374147 28 +uc002zhy.1 chr21 + 46342460 46374147 28 +uc002zic.1 chr21 + 46370831 46377191 2 +uc010gqe.1 chr21 + 46374170 46377189 1 +uc002zig.1 chr21 - 46380603 46399909 15 +uc002zif.1 chr21 - 46380603 46399909 15 +uc002zie.1 chr21 - 46380603 46387083 5 +uc002zih.1 chr21 - 46381121 46399909 14 +uc010gqf.1 chr21 - 46381121 46399909 13 +uc010gqg.1 chr21 - 46381326 46399909 14 +uc002zii.1 chr21 - 46405497 46428729 4 +uc002zij.1 chr21 - 46432787 46473119 23 +uc002zik.1 chr21 - 46433466 46473079 21 +uc002zil.1 chr21 - 46433466 46473119 22 +uc002zim.2 chr21 + 46473585 46496032 3 +uc002zin.2 chr21 + 46473585 46496032 4 +uc002zir.1 chr21 - 46479475 46529664 28 +uc002ziq.1 chr21 - 46479475 46511294 18 +uc002zip.1 chr21 - 46479475 46503607 13 +uc002zio.1 chr21 - 46479475 46491502 7 +uc002zis.1 chr21 + 46480565 46496171 3 +uc010gqh.1 chr21 + 46530694 46542093 4 +uc002ziy.1 chr21 + 46530694 46542093 4 +uc002zix.1 chr21 + 46530694 46542093 5 +uc002ziw.1 chr21 + 46530694 46542093 5 +uc002ziv.1 chr21 + 46530694 46542093 5 +uc002ziu.1 chr21 + 46530694 46536539 3 +uc002zit.1 chr21 + 46530694 46536539 3 +uc010gqi.1 chr21 + 46537349 46539139 2 +uc002zja.2 chr21 - 46544772 46565167 9 +uc002ziz.2 chr21 - 46544772 46562562 7 +uc002zjc.1 chr21 - 46545474 46563479 7 +uc002zjf.1 chr21 - 46545474 46568213 8 +uc010gqj.1 chr21 - 46545477 46568213 9 +uc002zjg.1 chr21 - 46559057 46568213 6 +uc002zji.2 chr21 + 46568463 46690110 47 +uc002zjj.1 chr21 + 46569229 46690110 47 +uc010gqk.1 chr21 + 46578738 46594162 6 +uc002zjk.1 chr21 - 46699327 46703021 2 +uc002zjl.1 chr21 + 46703317 46790647 20 +uc002zjm.1 chr21 + 46703317 46791548 21 +uc010gql.1 chr21 + 46703317 46791548 20 +uc002zjo.1 chr21 + 46703317 46813028 38 +uc002zjn.1 chr21 + 46703317 46794451 22 +uc002zjp.1 chr21 + 46748653 46789614 14 +uc002zjq.1 chr21 + 46783075 46791548 5 +uc002zjr.2 chr21 + 46797251 46803437 7 +uc002zjs.1 chr21 + 46805625 46813028 5 +uc002zjt.1 chr21 + 46808123 46813028 4 +uc002zjv.1 chr21 - 46842958 46849463 4 +uc002zju.1 chr21 - 46842958 46849463 3 +uc002zjw.2 chr21 + 46879954 46904483 7 +uc002zjx.1 chr21 + 46879954 46909291 12 +uc002zjy.1 chr21 + 46879954 46909291 11 +uc010gqm.1 chr21 + 46879954 46909291 9 +uc002zjz.1 chr21 + 46887625 46906276 6 diff --git a/src/intersectBed/intersectBed.cpp b/src/intersectBed/intersectBed.cpp index 7b4fde87e2b30b098f0eeab7b7458a35c7fa4e0b..8971ff974f66f6735008fcf06e57bec38963abb6 100755 --- a/src/intersectBed/intersectBed.cpp +++ b/src/intersectBed/intersectBed.cpp @@ -1,5 +1,5 @@ /***************************************************************************** - intersectBed.h + intersectBed.cpp (c) 2009 - Aaron Quinlan Hall Laboratory @@ -45,47 +45,61 @@ BedIntersect::~BedIntersect(void) { void BedIntersect::FindOverlaps(BED &a, vector<BED> &hits) { - // find all of the overlaps between a and B. - //bedB->binKeeperFind(bedB->bedMap[a.chrom], a.start, a.end, hits); - bedB->binKeeperFind(a.chrom, a.start, a.end, hits); - - int numOverlaps = 0; + // grab _all_ of the features in B that overlap with a. + bedB->FindOverlapsPerBin(a.chrom, a.start, a.end, a.strand, hits, this->forceStrand); + + // how many overlaps are there b/w a and B? + int numOverlaps = 0; - // should we print each overlap, or does the - // user want summary information? + // should we print each overlap, or does the user want summary information? bool printable = true; if (anyHit || noHit || writeCount) { printable = false; } - for (vector<BED>::const_iterator h = hits.begin(); h != hits.end(); ++h) { + // loop through the hits and report those that meet the user's criteria + vector<BED>::const_iterator h = hits.begin(); + vector<BED>::const_iterator hitsEnd = hits.end(); + for (; h != hitsEnd; ++h) { - // if forcing strandedness, move on if the hit - // is not on the same strand as A. - if ((this->forceStrand) && (a.strand != h->strand)) { - continue; // continue force the next iteration of the for loop. - } - else { - int s = max(a.start, h->start); - int e = min(a.end, h->end); + int s = max(a.start, h->start); + int e = min(a.end, h->end); + int overlapBases = (e - s); // the number of overlapping bases b/w a and b + int aLength = (a.end - a.start); // the length of a in b.p. + + // is there enough overlap relative to the user's request? (default ~ 1bp) + if ( ( (float) overlapBases / (float) aLength ) >= this->overlapFraction ) { + + // Report the hit if the user doesn't care about reciprocal overlap between A and B. + if (!reciprocal) { - // is there enough overlap relative to the user's request? - // (default ~ 1bp) - if ( ((float)(e-s) / (float)(a.end - a.start)) >= this->overlapFraction ) { + numOverlaps++; // we have another hit for A + if (!writeB && printable) { + if (writeA) bedA->reportBedNewLine(a); + else bedA->reportBedRangeNewLine(a,s,e); + } + else if (printable) { + if (writeA) { + bedA->reportBedTab(a); + bedB->reportBedNewLine(*h); + } + else { + bedA->reportBedRangeTab(a,s,e); + bedB->reportBedNewLine(*h); + } + } + } + else { // the user wants there to be sufficient reciprocal overlap + int bLength = (h->end - h->start); + float bOverlap = ( (float) overlapBases / (float) bLength ); - // Report the hit if the user doesn't care about reciprocal overlap - // between A and B. - if (!reciprocal) { + if (bOverlap >= this->overlapFraction) { numOverlaps++; // we have another hit for A if (!writeB && printable) { - if (writeA) { - bedA->reportBedNewLine(a); - } - else { - bedA->reportBedRangeNewLine(a,s,e); - } + if (writeA) bedA->reportBedNewLine(a); + else bedA->reportBedRangeNewLine(a,s,e); } else if (printable) { if (writeA) { @@ -98,34 +112,6 @@ void BedIntersect::FindOverlaps(BED &a, vector<BED> &hits) { } } } - else { - - float bOverlap = ((float)(e-s) / (float)(h->end - h->start)); - - if (bOverlap >= this->overlapFraction) { - - numOverlaps++; // we have another hit for A - - if (!writeB && printable) { - if (writeA) { - bedA->reportBedNewLine(a); - } - else { - bedA->reportBedRangeNewLine(a,s,e); - } - } - else if (printable) { - if (writeA) { - bedA->reportBedTab(a); - bedB->reportBedNewLine(*h); - } - else { - bedA->reportBedRangeTab(a,s,e); - bedB->reportBedNewLine(*h); - } - } - } - } } } } diff --git a/src/pairToBed/pairToBed.cpp b/src/pairToBed/pairToBed.cpp index 6913b8cc22b16e8995f39b26c50aa9611db4e2f6..f0317bd0e7f2c71ae475074b948af61d459fa76f 100755 --- a/src/pairToBed/pairToBed.cpp +++ b/src/pairToBed/pairToBed.cpp @@ -99,7 +99,7 @@ void BedIntersectPE::FindOverlaps(BEDPE &a, vector<BED> &hits1, vector<BED> &hit /* Find the quality hits between ***end1*** of the BEDPE and the B BED file */ - bedB->binKeeperFind(bedB->bedMap[a.chrom1], a.start1, a.end1, hits1); + bedB->binKeeperFind(a.chrom1, a.start1, a.end1, hits1); for (vector<BED>::iterator h = hits1.begin(); h != hits1.end(); ++h) { @@ -127,7 +127,7 @@ void BedIntersectPE::FindOverlaps(BEDPE &a, vector<BED> &hits1, vector<BED> &hit /* Now find the quality hits between ***end2*** of the BEDPE and the B BED file */ - bedB->binKeeperFind(bedB->bedMap[a.chrom2], a.start2, a.end2, hits2); + bedB->binKeeperFind(a.chrom2, a.start2, a.end2, hits2); for (vector<BED>::iterator h = hits2.begin(); h != hits2.end(); ++h) { @@ -218,7 +218,7 @@ void BedIntersectPE::FindSpanningOverlaps(BEDPE &a, vector<BED> &hits, string &t } spanLength = spanEnd - spanStart; - bedB->binKeeperFind(bedB->bedMap[a.chrom1], spanStart, spanEnd, hits); + bedB->binKeeperFind(a.chrom1, spanStart, spanEnd, hits); for (vector<BED>::iterator h = hits.begin(); h != hits.end(); ++h) { diff --git a/src/pairToPair/pairToPair.cpp b/src/pairToPair/pairToPair.cpp index c3fde14003edb3cb2ab13b183b6128d79b4d4366..1ef5a402a6330f1a0aca7076a15b166d2f070bd8 100755 --- a/src/pairToPair/pairToPair.cpp +++ b/src/pairToPair/pairToPair.cpp @@ -117,10 +117,10 @@ void PairToPair::FindOverlaps(BEDPE &a, vector<BED> &hitsA1B1, vector<BED> &hits // Find the _potential_ hits between each end of A and B - bedB->binKeeperFind(bedB->bedMapEnd1[a.chrom1], a.start1, a.end1, hitsA1B1); // hits between A1 to B1 - bedB->binKeeperFind(bedB->bedMapEnd1[a.chrom2], a.start2, a.end2, hitsA2B1); // hits between A2 to B1 - bedB->binKeeperFind(bedB->bedMapEnd2[a.chrom1], a.start1, a.end1, hitsA1B2); // hits between A1 to B2 - bedB->binKeeperFind(bedB->bedMapEnd2[a.chrom2], a.start2, a.end2, hitsA2B2); // hits between A2 to B2 + bedB->binKeeperFind(a.chrom1, a.start1, a.end1, hitsA1B1); // hits between A1 to B1 + bedB->binKeeperFind(a.chrom2, a.start2, a.end2, hitsA2B1); // hits between A2 to B1 + bedB->binKeeperFind(a.chrom1, a.start1, a.end1, hitsA1B2); // hits between A1 to B2 + bedB->binKeeperFind(a.chrom2, a.start2, a.end2, hitsA2B2); // hits between A2 to B2 // Now, reduce to the set of hits on each end of A and B that meet the required overlap fraction and orientation. diff --git a/src/shuffleBed/shuffleBed.cpp b/src/shuffleBed/shuffleBed.cpp index 91633b270a2a100deea4a247ddd994acfa8c852e..51ff1a298fbe3bdcf11286cc1cde13a03c49a79d 100755 --- a/src/shuffleBed/shuffleBed.cpp +++ b/src/shuffleBed/shuffleBed.cpp @@ -145,7 +145,7 @@ void BedShuffle::ShuffleWithExclusions(istream &bedInput) { // test to see if the chosen locus overlaps // with an exclude region - exclude->binKeeperFind(exclude->bedMap[bedEntry.chrom], bedEntry.start, bedEntry.end, hits); + exclude->binKeeperFind(bedEntry.chrom, bedEntry.start, bedEntry.end, hits); bool haveOverlap = false; for (vector<BED>::const_iterator h = hits.begin(); h != hits.end(); ++h) { diff --git a/src/subtractBed/new b/src/subtractBed/new new file mode 100644 index 0000000000000000000000000000000000000000..d2d55542572008f381df6d247f7e7b2e2941ccec --- /dev/null +++ b/src/subtractBed/new @@ -0,0 +1 @@ +chr1 100 180 diff --git a/src/subtractBed/old b/src/subtractBed/old new file mode 100644 index 0000000000000000000000000000000000000000..d2d55542572008f381df6d247f7e7b2e2941ccec --- /dev/null +++ b/src/subtractBed/old @@ -0,0 +1 @@ +chr1 100 180 diff --git a/src/subtractBed/subtractBed.cpp b/src/subtractBed/subtractBed.cpp index d2ceff8b7eef683ebfe35eda139adc53504741f6..8380428dccddf9287d6cbe2a93b416328de06caf 100755 --- a/src/subtractBed/subtractBed.cpp +++ b/src/subtractBed/subtractBed.cpp @@ -39,7 +39,7 @@ BedSubtract::~BedSubtract(void) { void BedSubtract::FindOverlaps(BED &a, vector<BED> &hits) { // find all of the overlaps between a and B. - bedB->binKeeperFind(bedB->bedMap[a.chrom], a.start, a.end, hits); + bedB->FindOverlapsPerBin(a.chrom, a.start, a.end, a.strand, hits, this->forceStrand); // is A completely spanned by an entry in B? // if so, A should not be reported. @@ -47,21 +47,19 @@ void BedSubtract::FindOverlaps(BED &a, vector<BED> &hits) { int numOverlaps = 0; vector<BED> bOverlaps; // list of hits in B. Special processing if there are multiple. - for (vector<BED>::iterator h = hits.begin(); h != hits.end(); ++h) { + vector<BED>::const_iterator h = hits.begin(); + vector<BED>::const_iterator hitsEnd = hits.end(); + for (; h != hitsEnd; ++h) { - // if forcing strandedness, move on if the hit - // is not on the same strand as A. - if ((this->forceStrand) && (a.strand != h->strand)) { - continue; // continue force the next iteration of the for loop. - } - int s = max(a.start, h->start); - int e = min(a.end, h->end); - + int e = min(a.end, h->end); + int overlapBases = (e - s); // the number of overlapping bases b/w a and b + int aLength = (a.end - a.start); // the length of a in b.p. + if (s < e) { // is there enough overlap (default ~ 1bp) - float overlap = ((float)(e-s) / (float)(a.end - a.start)); + float overlap = ((float) overlapBases / (float) aLength); if (overlap >= 1.0) { numOverlaps++; diff --git a/src/utils/bedFile/bedFile.cpp b/src/utils/bedFile/bedFile.cpp index 0cc6b2b58bb15ee53613edc3e760b097641c58b7..bbec52f4cd091dca05d7166b44e7dfb595222d11 100755 --- a/src/utils/bedFile/bedFile.cpp +++ b/src/utils/bedFile/bedFile.cpp @@ -1,92 +1,29 @@ -// -// bedFile.cpp -// BEDTools -// -// Created by Aaron Quinlan Spring 2009. -// Copyright 2009 Aaron Quinlan. All rights reserved. -// -// Summary: Contains common functions for finding BED overlaps. -// -// Acknowledgments: Much of the code herein is taken from Jim Kent's -// BED processing code. I am grateful for his elegant -// genome binning algorithm and therefore use it extensively. +/***************************************************************************** + bedFile.cpp + (c) 2009 - Aaron Quinlan + Hall Laboratory + Department of Biochemistry and Molecular Genetics + University of Virginia + aaronquinlan@gmail.com + + Licensed under the GNU General Public License 2.0+ license. +******************************************************************************/ #include "lineFileUtilities.h" #include "bedFile.h" -// return the amount of overlap between two features. Negative if none. -int overlaps(const int aS, const int aE, const int bS, const int bE) { - return min(aE, bE) - max(aS, bS); -} - - -bool leftOf(const int a, const int b) { - return (a < b); -} - -// return the lesser of two values. -int min(const int a, int b) { - if (a <= b) { - return a; - } - else { - return b; - } -} - -// return the greater of two values. -int max(const int a, int b) { - if (a >= b) { - return a; - } - else { - return b; - } -} - - -int getBin(int start, int end) -/* - NOTE: Taken ~verbatim from kent source. - - Given start,end in chromosome coordinates assign it - * a bin. There's a bin for each 128k segment, for each - * 1M segment, for each 8M segment, for each 64M segment, - * and for each chromosome (which is assumed to be less than - * 512M.) A range goes into the smallest bin it will fit in. */ -{ - int startBin = start; - int endBin = end-1; - startBin >>= _binFirstShift; - endBin >>= _binFirstShift; - - for (int i=0; i<6; ++i) { - if (startBin == endBin) { - return binOffsetsExtended[i] + startBin; - } - startBin >>= _binNextShift; - endBin >>= _binNextShift; - } - - cerr << "start " << start << ", end " << end << " out of range in findBin (max is 512M)" << endl; - return 0; -} - -//********************************************* -// Sorting functions -//********************************************* -bool sortByChrom(BED const & a, BED const & b){ +bool sortByChrom(BED const & a, BED const & b) { if (a.chrom < b.chrom) return true; else return false; }; -bool sortByStart(const BED &a, const BED &b){ +bool sortByStart(const BED &a, const BED &b) { if (a.start < b.start) return true; else return false; }; -bool sortBySizeAsc(const BED &a, const BED &b){ +bool sortBySizeAsc(const BED &a, const BED &b) { unsigned int aLen = a.end - a.start; unsigned int bLen = b.end - b.start; @@ -95,7 +32,7 @@ bool sortBySizeAsc(const BED &a, const BED &b){ else return false; }; -bool sortBySizeDesc(const BED &a, const BED &b){ +bool sortBySizeDesc(const BED &a, const BED &b) { unsigned int aLen = a.end - a.start; unsigned int bLen = b.end - b.start; @@ -104,18 +41,18 @@ bool sortBySizeDesc(const BED &a, const BED &b){ else return false; }; -bool sortByScoreAsc(const BED &a, const BED &b){ +bool sortByScoreAsc(const BED &a, const BED &b) { if (a.score < b.score) return true; else return false; }; -bool sortByScoreDesc(const BED &a, const BED &b){ +bool sortByScoreDesc(const BED &a, const BED &b) { if (a.score > b.score) return true; else return false; }; -bool byChromThenStart(BED const & a, BED const & b){ +bool byChromThenStart(BED const & a, BED const & b) { if (a.chrom < b.chrom) return true; else if (a.chrom > b.chrom) return false; @@ -126,31 +63,64 @@ bool byChromThenStart(BED const & a, BED const & b){ return false; }; - -/* +int getBin(int start, int end) +/* NOTE: Taken ~verbatim from kent source. - Return a list of all items in binKeeper that intersect range. - Free this list with slFreeList. + Given start,end in chromosome coordinates assign it + * a bin. There's a bin for each 128k segment, for each + * 1M segment, for each 8M segment, for each 64M segment, + * and for each chromosome (which is assumed to be less than + * 512M.) A range goes into the smallest bin it will fit in. */ +{ + int startBin = start; + int endBin = end-1; + startBin >>= _binFirstShift; + endBin >>= _binFirstShift; + + for (int i=0; i<6; ++i) { + if (startBin == endBin) { + return binOffsetsExtended[i] + startBin; + } + startBin >>= _binNextShift; + endBin >>= _binNextShift; + } + + cerr << "start " << start << ", end " << end << " out of range in findBin (max is 512M)" << endl; + return 0; +} + +/* + Adapted from kent source "binKeeperFind" */ -void BedFile::binKeeperFind(string chrom, const int start, const int end, vector<BED> &hits) { +void BedFile::FindOverlapsPerBin(string chrom, int start, int end, string strand, vector<BED> &hits, bool forceStrand) { int startBin, endBin; - startBin = (start >>_binFirstShift); - endBin = ((end-1) >>_binFirstShift); + startBin = (start >> _binFirstShift); + endBin = ((end-1) >> _binFirstShift); + // loop through each bin "level" in the binning hierarchy for (int i = 0; i < 6; ++i) { + + // loop through each bin at this level of the hierarchy int offset = binOffsetsExtended[i]; - for (int j = (startBin+offset); j <= (endBin+offset); ++j) { + // loop through each feature in this chrom/bin and see if it overlaps + // with the feature that was passed in. if so, add the feature to + // the list of hits. vector<BED>::const_iterator bedItr = bedMap[chrom][j].begin(); vector<BED>::const_iterator bedEnd = bedMap[chrom][j].end(); - for (; bedItr != bedEnd; ++bedItr) { - if (overlaps(bedItr->start, bedItr->end, start, end) > 0) { - hits.push_back(*bedItr); - } + + // skip the hit if not on the same strand (and we care) + if (forceStrand && (strand != bedItr->strand)) { + continue; + } + else if (overlaps(bedItr->start, bedItr->end, start, end) > 0) { + hits.push_back(*bedItr); // it's a hit, add it. + } + } } startBin >>= _binNextShift; @@ -159,34 +129,40 @@ void BedFile::binKeeperFind(string chrom, const int start, const int end, vector } +void BedFile::countHits(const BED &a, bool forceStrand) { -void BedFile::countHits(map<int, vector<BED>, std::less<int> > &bk, BED &a, bool &forceStrand) { int startBin, endBin; - int i,j; + startBin = (a.start >> _binFirstShift); + endBin = ((a.end-1) >> _binFirstShift); - startBin = (a.start>>_binFirstShift); - endBin = ((a.end-1)>>_binFirstShift); - for (i=0; i<6; ++i) { + // loop through each bin "level" in the binning hierarchy + for (int i = 0; i < 6; ++i) { + + // loop through each bin at this level of the hierarchy int offset = binOffsetsExtended[i]; - - for (j = (startBin+offset); j <= (endBin+offset); ++j) { + for (int j = (startBin+offset); j <= (endBin+offset); ++j) { - for (vector<BED>::iterator el = bk[j].begin(); el != bk[j].end(); ++el) { + // loop through each feature in this chrom/bin and see if it overlaps + // with the feature that was passed in. if so, add the feature to + // the list of hits. + vector<BED>::iterator bedItr = bedMap[a.chrom][j].begin(); + vector<BED>::iterator bedEnd = bedMap[a.chrom][j].end(); + for (; bedItr != bedEnd; ++bedItr) { - if (forceStrand && (a.strand != el->strand)) { - continue; // continue force the next iteration of the for loop. + // skip the hit if not on the same strand (and we care) + if (forceStrand && (a.strand != bedItr->strand)) { + continue; } - else if (overlaps(el->start, el->end, a.start, a.end) > 0) { + else if (overlaps(bedItr->start, bedItr->end, a.start, a.end) > 0) { - el->count++; - el->depthMap[a.start+1].starts++; - el->depthMap[a.end].ends++; + bedItr->count++; + bedItr->depthMap[a.start+1].starts++; + bedItr->depthMap[a.end].ends++; - if (a.start < el->minOverlapStart) { - el->minOverlapStart = a.start; + if (a.start < bedItr->minOverlapStart) { + bedItr->minOverlapStart = a.start; } } - } } startBin >>= _binNextShift; diff --git a/src/utils/bedFile/bedFile.h b/src/utils/bedFile/bedFile.h index e9743f0bef9574cfbbe2d9e6fe379e07c2a9daca..327a1eec9646d1e776a787b905f8622a6e6caa24 100755 --- a/src/utils/bedFile/bedFile.h +++ b/src/utils/bedFile/bedFile.h @@ -1,3 +1,14 @@ +/***************************************************************************** + bedFile.h + + (c) 2009 - Aaron Quinlan + Hall Laboratory + Department of Biochemistry and Molecular Genetics + University of Virginia + aaronquinlan@gmail.com + + Licensed under the GNU General Public License 2.0+ license. +******************************************************************************/ #ifndef BEDFILE_H #define BEDFILE_H @@ -11,7 +22,7 @@ #include <algorithm> #include <limits.h> #include <cstdio> - +#include <tr1/unordered_map> using namespace std; //************************************************* @@ -58,23 +69,29 @@ struct BED { }; - -//************************************************* -// Common functions -//************************************************* - -int getBin(int, int); +// return the genome "bin" for a feature with this start and end +int getBin(int start, int end); -// BED sorting -bool sortByChrom(BED const &, BED const &); -bool sortByStart(const BED &, const BED &); -bool byChromThenStart(BED const &, BED const &); +// return the amount of overlap between two features. Negative if none and the the +// number of negative bases is the distance between the two. +inline +int overlaps(int aS, int aE, int bS, int bE) { + return min(aE, bE) - max(aS, bS); +} -// BED comparsions -int overlaps(const int, const int, const int, const int); -bool leftOf(const int, const int); -int min(const int, int); -int max(const int, int); +// return the lesser of two values. +inline +int min(int a, int b) { + if (a <= b) return a; + else return b; +} + +// return the greater of two values. +inline +int max(int a, int b) { + if (a >= b) return a; + else return b; +} // templated function to convert objects to strings @@ -88,20 +105,25 @@ std::string ToString(const T & value) // BED Sorting Methods -bool sortByChrom(BED const &, BED const &); -bool sortByStart(const BED &, const BED &); -bool sortBySizeAsc(const BED &, const BED &); -bool sortBySizeDesc(const BED &, const BED &); -bool sortByScoreAsc(const BED &, const BED &); -bool sortByScoreDesc(const BED &, const BED &); -bool byChromThenStart(BED const &, BED const &); +bool sortByChrom(const BED &a, const BED &b); +bool sortByStart(const BED &a, const BED &b); +bool sortBySizeAsc(const BED &a, const BED &b); +bool sortBySizeDesc(const BED &a, const BED &b); +bool sortByScoreAsc(const BED &a, const BED &b); +bool sortByScoreDesc(const BED &a, const BED &b); +bool byChromThenStart(BED const &a, BED const &b); + + //************************************************* // Common typedefs //************************************************* - typedef map<int, vector<BED>, std::less<int> > binsToBeds; +//typedef tr1::unordered_map<int, vector<BED> > binsToBeds; + typedef map<string, binsToBeds, std::less<string> > masterBedMap; +//typedef tr1::unordered_map<string, binsToBeds> masterBedMap; + typedef map<string, vector<BED>, std::less<string> > masterBedMapNoBin; @@ -118,36 +140,35 @@ public: // Destructor ~BedFile(void); - // parse an input line and determine how it should be handled - bool parseLine (BED &bed, const vector<string> &lineVector, int &lineNum); - // parse a BED line - bool parseBedLine (BED &bed, const vector<string> &lineVector, int lineNum); - // parse a GFF line - bool parseGffLine (BED &bed, const vector<string> &lineVector, int lineNum); - + // load a BED file into a map keyed by chrom, then bin. + // value is vector of BEDs void loadBedFileIntoMap(); + + // load a BED file into a map keyed by chrom + // value is vector of BEDs void loadBedFileIntoMapNoBin(); //void binKeeperFind(map<int, vector<BED>, std::less<int> > &, const int, const int, vector<BED> &); - void binKeeperFind(string chrom, const int start, const int end, vector<BED> &); - - - void countHits(map<int, vector<BED>, std::less<int> > &, BED &, bool &); + void FindOverlapsPerBin(string chrom, int start, int end, string strand, vector<BED> &hits, bool forceStrand); + //void countHits(map<int, vector<BED>, std::less<int> > &, BED &, bool &); + void countHits(const BED &a, bool forceStrand); + // printing methods void reportBedTab(const BED &); - void reportBedNewLine(const BED &); - + void reportBedNewLine(const BED &); void reportBedRangeTab(const BED &bed, int start, int end); void reportBedRangeNewLine(const BED &bed, int start, int end); - + // parse an input line and determine how it should be handled + bool parseLine (BED &bed, const vector<string> &lineVector, int &lineNum); + map<string, int> minPosMap; map<string, int> maxPosMap; // the bedfile with which this instance is associated string bedFile; - unsigned int bedType; // 3 -6 for BED + unsigned int bedType; // 3-6, 12 for BED // 9 for GFF vector<BED> bedVector; @@ -155,9 +176,11 @@ public: masterBedMapNoBin bedMapNoBin; private: - - + // parse a BED line + bool parseBedLine (BED &bed, const vector<string> &lineVector, int lineNum); + // parse a GFF line + bool parseGffLine (BED &bed, const vector<string> &lineVector, int lineNum); }; #endif /* BEDFILE_H */ diff --git a/src/utils/lineFileUtilities/lineFileUtilities.cpp b/src/utils/lineFileUtilities/lineFileUtilities.cpp index e99267fc2d45ab0a1a69d94b8deca9b414a82dc4..f21cbc6fdc4cd0a5d1b1926c3af83a926bcddd84 100755 --- a/src/utils/lineFileUtilities/lineFileUtilities.cpp +++ b/src/utils/lineFileUtilities/lineFileUtilities.cpp @@ -15,7 +15,7 @@ // Common Functions //*********************************************** -void Tokenize(const string& str, vector<string>& tokens) +void Tokenize(string str, vector<string>& tokens) { /* method to tokenize on any whitespace @@ -42,7 +42,6 @@ void Tokenize(const string& str, vector<string>& tokens) // Find next "non-delimiter" pos = str.find_first_of("\t", lastPos); } - } diff --git a/src/utils/lineFileUtilities/lineFileUtilities.h b/src/utils/lineFileUtilities/lineFileUtilities.h index 53080b225dbd3683175a47c5f13dc1432c62d957..e384dc392d007d84b8c4e039a682548df4080240 100755 --- a/src/utils/lineFileUtilities/lineFileUtilities.h +++ b/src/utils/lineFileUtilities/lineFileUtilities.h @@ -9,7 +9,7 @@ using namespace std; // split a line from a file into a vector of strings. token = "\t" -void Tokenize(const string& str, vector<string>& tokens); +void Tokenize(string str, vector<string>& tokens); #endif /* LINEFILEUTILITIES_H */ diff --git a/src/windowBed/new b/src/windowBed/new new file mode 100644 index 0000000000000000000000000000000000000000..e0d2ddede71d9849c7799c1832e4f3a92f18e5d7 --- /dev/null +++ b/src/windowBed/new @@ -0,0 +1,4 @@ +chr1 10000 20000 A.forward 1 + chr1 1000 8000 B1 +chr1 10000 20000 A.forward 1 + chr1 24000 32000 B2 +chr1 10000 20000 A.reverse 1 - chr1 1000 8000 B1 +chr1 10000 20000 A.reverse 1 - chr1 24000 32000 B2 diff --git a/src/windowBed/old b/src/windowBed/old new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/windowBed/windowBed.cpp b/src/windowBed/windowBed.cpp index 05d9ff449cdd6c62dc20aa830e66696f9b063976..d6d48b55ec3d9d9bc00ddc2e0e85737a547a0c3b 100755 --- a/src/windowBed/windowBed.cpp +++ b/src/windowBed/windowBed.cpp @@ -47,64 +47,60 @@ BedWindow::~BedWindow(void) { void BedWindow::FindWindowOverlaps(BED &a, vector<BED> &hits) { + /* + Adjust the start and end of a based on the requested window + */ + // update the current feature's start and end // according to the slop requested (slop = 0 by default) int aFudgeStart = 0; int aFudgeEnd; - // Does the user want to treat the windows based on strand? // If so, // if "+", then left is left and right is right // if "-", the left is right and right is left. if (this->strandWindows) { - if (a.strand == "+") { - if ((a.start - this->leftSlop) > 0) { - aFudgeStart = a.start - this->leftSlop; - } - else { - aFudgeStart = 0; - } + if ((a.start - this->leftSlop) > 0) aFudgeStart = a.start - this->leftSlop; + else aFudgeStart = 0; aFudgeEnd = a.end + this->rightSlop; } else { - if ((a.start - this->rightSlop) > 0) { - aFudgeStart = a.start - this->rightSlop; - } - else { - aFudgeStart = 0; - } + if ((a.start - this->rightSlop) > 0) aFudgeStart = a.start - this->rightSlop; + else aFudgeStart = 0; aFudgeEnd = a.end + this->leftSlop; } } + // If not, add the windows irrespective of strand else { - if ((a.start - this->leftSlop) > 0) { - aFudgeStart = a.start - this->leftSlop; - } - else { - aFudgeStart = 0; - } + if ((a.start - this->leftSlop) > 0) aFudgeStart = a.start - this->leftSlop; + else aFudgeStart = 0; aFudgeEnd = a.end + this->rightSlop; } - bedB->binKeeperFind(bedB->bedMap[a.chrom], aFudgeStart, aFudgeEnd, hits); + + /* + Now report the hits (if any) based on the window around a. + */ + // get the hits in B for the A feature + bedB->FindOverlapsPerBin(a.chrom, aFudgeStart, aFudgeEnd, a.strand, hits, this->matchOnStrand); int numOverlaps = 0; - for (vector<BED>::iterator h = hits.begin(); h != hits.end(); ++h) { - // if forcing strandedness, move on if the hit - // is not on the same strand as A. - if ((this->matchOnStrand) && (a.strand != h->strand)) { - continue; // continue force the next iteration of the for loop. - } + // loop through the hits and report those that meet the user's criteria + vector<BED>::const_iterator h = hits.begin(); + vector<BED>::const_iterator hitsEnd = hits.end(); + for (; h != hitsEnd; ++h) { int s = max(aFudgeStart, h->start); int e = min(aFudgeEnd, h->end); - + int overlapBases = (e - s); // the number of overlapping bases b/w a and b + int aLength = (a.end - a.start); // the length of a in b.p. + if (s < e) { // is there enough overlap (default ~ 1bp) - if ( ((float)(e-s) / (float)(a.end - a.start)) > 0 ) { + if ( ((float) overlapBases / (float) aLength) > 0 ) { numOverlaps++; if (!anyHit && !noHit && !writeCount) { bedA->reportBedTab(a); @@ -146,7 +142,7 @@ void BedWindow::WindowIntersectBed(istream &bedInput) { Tokenize(bedLine,bedFields); BED a; - // find the overlaps with B if it's a valid BED entry. + // find the overlaps between "a" and "B" if "a" is a valid BED entry. if (bedA->parseLine(a, bedFields, lineNum)) { FindWindowOverlaps(a, hits); hits.clear(); diff --git a/src/windowBed/windowMain.cpp b/src/windowBed/windowMain.cpp index dbe92896623841918014036725e85de43dc3837e..2507bc5833193d2b32584a74126b3801b66424b0 100755 --- a/src/windowBed/windowMain.cpp +++ b/src/windowBed/windowMain.cpp @@ -191,7 +191,6 @@ void ShowHelp(void) { cerr << "\t\t- Default is 1000 bp." << endl; cerr << "\t\t- (INTEGER)" << endl << endl; - cerr << "\t-sw\t" << "Define -l and -r based on strand. For example if used, -l 500" << endl; cerr << "\t\tfor a negative-stranded feature will add 500 bp downstream." << endl; cerr << "\t\t- Default = disabled." << endl << endl;