Skip to content

Commit

Permalink
Better GFF3 display #69
Browse files Browse the repository at this point in the history
  • Loading branch information
kcleal committed Feb 3, 2025
1 parent 2fe9c46 commit 49a50a3
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 20 deletions.
11 changes: 9 additions & 2 deletions src/drawing.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1845,9 +1845,16 @@ namespace Drawing {
}
assert (i < trk.drawThickness.size());
uint8_t thickness = trk.drawThickness[i];
if (thickness && s < rgn.end && e > rgn.start) {
// if (trk.name == "DDX11L1") {
// std::cerr << " " << trk.name << " " << (int)thickness << " " << s << "-" << e << std::endl;
// }

if (s < rgn.end && e > rgn.start) {
int left_cds = std::min(trk.coding_start, trk.coding_end);
int right_cds = std::max(trk.coding_start, trk.coding_end);
// if (trk.name == "DDX11L1") {
// std::cerr << (s < right_cds && e > right_cds) << " " << (s < left_cds && e > left_cds) << std::endl;
// }
if (s < right_cds && e > right_cds) { //overlaps, split into two blocks!
drawTrackBlock(right_cds, e, trk.name, rgn, rect, path, padX, padY, y + (h * 0.25), h * 0.5, stepX, stepY, gap,
gap2, xScaling, opts, canvas, fonts, false, true, true, labelsEnd, empty_str, 0, text, false, false, shadedFaceColour, pointSlop / 2, strand);
Expand All @@ -1862,7 +1869,7 @@ namespace Drawing {
continue;
}

if (thickness == 1) {
if (thickness <= 1) {
drawTrackBlock(s, e, trk.name, rgn, rect, path, padX, padY, y + (h * 0.25), h * 0.5, stepX, stepY, gap, gap2, xScaling,
opts, canvas, fonts, false, true, true, labelsEnd, empty_str, 0, text, false, false, shadedFaceColour, pointSlop / 2, strand);
} else if (thickness == 2) {
Expand Down
62 changes: 47 additions & 15 deletions src/hts_funcs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1511,19 +1511,33 @@ namespace HGW {
for (const auto &item : Utils::split(b.parts[8], ';')) {
if (kind == GFF3_NOI) {
std::vector<std::string> keyval = Utils::split(item, '=');
// if (keyval[0] == "Name" || keyval[0] == "gene_name") {
// b.name = keyval[1];
// if (!b.parent.empty()) {
// break;
// }
// } else if (b.name.empty() && keyval[0] == "ID") {
// b.name = keyval[1];
// if (b.parent.empty()) {
// b.parent = keyval[1];
// }
// } else if (keyval[0] == "Parent") {
// b.parent = keyval[1];
// b.name = keyval[1];
// }
if (keyval[0] == "Name" || keyval[0] == "gene_name") {
b.name = keyval[1];
if (!b.parent.empty()) {
break;
}
} else if (b.name.empty() && keyval[0] == "ID") {
b.parent = keyval[1];
break;
}
else if (b.name.empty() && keyval[0] == "ID") {
b.name = keyval[1];
if (b.parent.empty()) {
b.parent = keyval[1];
}
} else if (keyval[0] == "Parent") {
}
else if (b.parent.empty() && keyval[0] == "Parent") {
b.parent = keyval[1];
b.name = keyval[1];
}
} else { // GTF_NOI
std::vector<std::string> keyval = Utils::split(item, ' ');
Expand Down Expand Up @@ -1892,19 +1906,37 @@ namespace HGW {
for (const auto &item : Utils::split(parts[8], ';')) {
if (kind == GFF3_IDX) {
std::vector<std::string> keyval = Utils::split(item, '=');
if (keyval[0] == "Name") {
parent = keyval[1];
if (keyval[0] == "Name" || keyval[0] == "gene_name") {
rid = keyval[1];
break;
}
else if (keyval[0] == "ID") {
if (!parent.empty()) {
break;
}
} else if (rid.empty() && keyval[0] == "ID") {
rid = keyval[1];
}
else if (keyval[0] == "Parent") {
if (parent.empty()) {
parent = keyval[1];
}
} else if (keyval[0] == "Parent") {
parent = keyval[1];
break;
rid = keyval[1];
}
} else {

// if (keyval[0] == "Name" || keyval[0] == "gene_name") {
// rid = keyval[1];
// parent = keyval[1];
// break;
// }
// else if (rid.empty() && keyval[0] == "ID") {
// rid = keyval[1];
// if (parent.empty()) {
// parent = keyval[1];
// }
// }
// else if (parent.empty() && keyval[0] == "Parent") {
// parent = keyval[1];
// }

} else { // GTF_IDX
std::vector<std::string> keyval = Utils::split(item, ' ');
if (keyval[0] == "gene_name") {
parent = keyval[1];
Expand Down
9 changes: 6 additions & 3 deletions src/term_out.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1421,7 +1421,7 @@ namespace Term {
}

#if !defined(__EMSCRIPTEN__)
const char* CURRENT_VERSION = "v1.1.3";
const char* CURRENT_VERSION = "v1.1.0";

size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp) {
((std::string*)userp)->append((char*)contents, size * nmemb);
Expand Down Expand Up @@ -1462,8 +1462,11 @@ namespace Term {
void checkVersion() {
std::string latestVersion = getLatestVersion();
if (!latestVersion.empty()) {
if (latestVersion != CURRENT_VERSION) {
std::cout << "\nVersion " << latestVersion << " is available: " << "https://github.com/kcleal/gw" << std::endl;
std::vector<std::string> partsLatest = Utils::split(latestVersion, '.');
std::vector<std::string> partsCurrent = Utils::split(CURRENT_VERSION, '.');
if ( std::stoi(partsLatest[1]) > std::stoi(partsCurrent[1]) ||
std::stoi(partsLatest[2]) > std::stoi(partsCurrent[2]) ) {
std::cout << "\nA new update is available: https://github.com/kcleal/gw/releases/tag/" << latestVersion << std::endl;
}
}
}
Expand Down

0 comments on commit 49a50a3

Please sign in to comment.