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