Mercurial > repos > aaronquinlan > multi_intersect
view 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 |
line wrap: on
line source
/***************************************************************************** linksBed.cpp (c) 2009 - Aaron Quinlan Hall Laboratory Department of Biochemistry and Molecular Genetics University of Virginia aaronquinlan@gmail.com Licenced under the GNU General Public License 2.0 license. ******************************************************************************/ #include "lineFileUtilities.h" #include "linksBed.h" // // Constructor // BedLinks::BedLinks(string &bedFile, string &base, string &org, string &db) { _bedFile = bedFile; _bed = new BedFile(bedFile); _base = base; _org = org; _db = db; CreateLinks(); } // // Destructor // BedLinks::~BedLinks(void) { } void BedLinks::WriteURL(BED &bed, string &base) { string position = bed.chrom; std::stringstream posStream; posStream << ":" << bed.start << "-" << bed.end; position.append(posStream.str()); cout << "<tr>" << endl; cout << "\t<td>" << endl; cout << "\t\t<a href=" << base << position << ">"; cout << bed.chrom << ":" << bed.start << "-" << bed.end; cout << "</a>" << endl; cout << "\t</td>" << endl; if (_bed->bedType == 4) { cout << "\t<td>" << endl; cout << bed.name << endl; cout << "\t</td>" << endl; } else if (_bed->bedType == 5) { cout << "\t<td>" << endl; cout << bed.name << endl; cout << "\t</td>" << endl; cout << "\t<td>" << endl; cout << bed.score << endl; cout << "\t</td>" << endl; } else if ((_bed->bedType == 6) || (_bed->bedType == 9) || (_bed->bedType == 12)) { cout << "\t<td>" << endl; cout << bed.name << endl; cout << "\t</td>" << endl; cout << "\t<td>" << endl; cout << bed.score << endl; cout << "\t</td>" << endl; cout << "\t<td>" << endl; cout << bed.strand << endl; cout << "\t</td>" << endl; } cout << "</tr>" << endl; } void BedLinks::CreateLinks() { // construct the html base. string org = _org; string db = _db; string base = _base; base.append("/cgi-bin/hgTracks?org="); base.append(org); base.append("&db="); base.append(db); base.append("&position="); // create the HTML header cout << "<html>" << endl <<"\t<body>" << endl; cout << "<title>" << _bedFile << "</title>" << endl; // start the table of entries cout << "<br>Firefox users: Press and hold the \"apple\" or \"alt\" key and click link to open in new tab." << endl; cout << "<p style=\"font-family:courier\">" << endl; cout << "<table border=\"0\" align=\"justify\"" << endl; cout << "<h3>BED Entries from: stdin </h3>" << endl; int lineNum = 0; BED bedEntry, nullBed; BedLineStatus bedStatus; _bed->Open(); while ((bedStatus = _bed->GetNextBed(bedEntry, lineNum)) != BED_INVALID) { if (bedStatus == BED_VALID) { WriteURL(bedEntry, base); bedEntry = nullBed; } } _bed->Close(); cout << "</table>" << endl; cout << "</p>" << endl; cout << "\t</body>" << endl <<"</html>" << endl; }