Mercurial > repos > aaronquinlan > multi_intersect
comparison BEDTools-Version-2.14.3/src/linksBed/linksBed.cpp @ 0:dfcd8b6c1bda
Uploaded
| author | aaronquinlan |
|---|---|
| date | Thu, 03 Nov 2011 10:25:04 -0400 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:dfcd8b6c1bda |
|---|---|
| 1 /***************************************************************************** | |
| 2 linksBed.cpp | |
| 3 | |
| 4 (c) 2009 - Aaron Quinlan | |
| 5 Hall Laboratory | |
| 6 Department of Biochemistry and Molecular Genetics | |
| 7 University of Virginia | |
| 8 aaronquinlan@gmail.com | |
| 9 | |
| 10 Licenced under the GNU General Public License 2.0 license. | |
| 11 ******************************************************************************/ | |
| 12 #include "lineFileUtilities.h" | |
| 13 #include "linksBed.h" | |
| 14 | |
| 15 // | |
| 16 // Constructor | |
| 17 // | |
| 18 BedLinks::BedLinks(string &bedFile, string &base, string &org, string &db) { | |
| 19 _bedFile = bedFile; | |
| 20 _bed = new BedFile(bedFile); | |
| 21 | |
| 22 _base = base; | |
| 23 _org = org; | |
| 24 _db = db; | |
| 25 | |
| 26 CreateLinks(); | |
| 27 } | |
| 28 | |
| 29 // | |
| 30 // Destructor | |
| 31 // | |
| 32 BedLinks::~BedLinks(void) { | |
| 33 } | |
| 34 | |
| 35 | |
| 36 void BedLinks::WriteURL(BED &bed, string &base) { | |
| 37 | |
| 38 string position = bed.chrom; | |
| 39 std::stringstream posStream; | |
| 40 posStream << ":" << bed.start << "-" << bed.end; | |
| 41 position.append(posStream.str()); | |
| 42 | |
| 43 cout << "<tr>" << endl; | |
| 44 cout << "\t<td>" << endl; | |
| 45 cout << "\t\t<a href=" << base << position << ">"; | |
| 46 cout << bed.chrom << ":" << bed.start << "-" << bed.end; | |
| 47 cout << "</a>" << endl; | |
| 48 cout << "\t</td>" << endl; | |
| 49 | |
| 50 if (_bed->bedType == 4) { | |
| 51 cout << "\t<td>" << endl; | |
| 52 cout << bed.name << endl; | |
| 53 cout << "\t</td>" << endl; | |
| 54 } | |
| 55 else if (_bed->bedType == 5) { | |
| 56 cout << "\t<td>" << endl; | |
| 57 cout << bed.name << endl; | |
| 58 cout << "\t</td>" << endl; | |
| 59 | |
| 60 cout << "\t<td>" << endl; | |
| 61 cout << bed.score << endl; | |
| 62 cout << "\t</td>" << endl; | |
| 63 } | |
| 64 else if ((_bed->bedType == 6) || (_bed->bedType == 9) || (_bed->bedType == 12)) { | |
| 65 cout << "\t<td>" << endl; | |
| 66 cout << bed.name << endl; | |
| 67 cout << "\t</td>" << endl; | |
| 68 | |
| 69 cout << "\t<td>" << endl; | |
| 70 cout << bed.score << endl; | |
| 71 cout << "\t</td>" << endl; | |
| 72 | |
| 73 cout << "\t<td>" << endl; | |
| 74 cout << bed.strand << endl; | |
| 75 cout << "\t</td>" << endl; | |
| 76 } | |
| 77 cout << "</tr>" << endl; | |
| 78 } | |
| 79 | |
| 80 | |
| 81 void BedLinks::CreateLinks() { | |
| 82 | |
| 83 | |
| 84 // construct the html base. | |
| 85 string org = _org; | |
| 86 string db = _db; | |
| 87 string base = _base; | |
| 88 base.append("/cgi-bin/hgTracks?org="); | |
| 89 base.append(org); | |
| 90 base.append("&db="); | |
| 91 base.append(db); | |
| 92 base.append("&position="); | |
| 93 | |
| 94 // create the HTML header | |
| 95 cout << "<html>" << endl <<"\t<body>" << endl; | |
| 96 cout << "<title>" << _bedFile << "</title>" << endl; | |
| 97 | |
| 98 // start the table of entries | |
| 99 cout << "<br>Firefox users: Press and hold the \"apple\" or \"alt\" key and click link to open in new tab." << endl; | |
| 100 cout << "<p style=\"font-family:courier\">" << endl; | |
| 101 cout << "<table border=\"0\" align=\"justify\"" << endl; | |
| 102 cout << "<h3>BED Entries from: stdin </h3>" << endl; | |
| 103 | |
| 104 int lineNum = 0; | |
| 105 BED bedEntry, nullBed; | |
| 106 BedLineStatus bedStatus; | |
| 107 | |
| 108 _bed->Open(); | |
| 109 while ((bedStatus = _bed->GetNextBed(bedEntry, lineNum)) != BED_INVALID) { | |
| 110 if (bedStatus == BED_VALID) { | |
| 111 WriteURL(bedEntry, base); | |
| 112 bedEntry = nullBed; | |
| 113 } | |
| 114 } | |
| 115 _bed->Close(); | |
| 116 | |
| 117 cout << "</table>" << endl; | |
| 118 cout << "</p>" << endl; | |
| 119 cout << "\t</body>" << endl <<"</html>" << endl; | |
| 120 } | |
| 121 | |
| 122 |
