r1132: document misjoin output
Also additional check of centromeric breakpoints
This commit is contained in:
parent
e018caea32
commit
31de4fd1bc
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env k8
|
#!/usr/bin/env k8
|
||||||
|
|
||||||
var paftools_version = '2.24-r1122';
|
var paftools_version = '2.24-r1132-dirty';
|
||||||
|
|
||||||
/*****************************
|
/*****************************
|
||||||
***** Library functions *****
|
***** Library functions *****
|
||||||
|
|
@ -2704,6 +2704,24 @@ function paf_misjoin(args)
|
||||||
return len < (en - st) * cen_ratio? false : true;
|
return len < (en - st) * cen_ratio? false : true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function test_cen_point(cen, chr, x) {
|
||||||
|
var b = cen[chr];
|
||||||
|
if (b == null) return false;
|
||||||
|
print(x, b[0][0], b[0][1]);
|
||||||
|
for (var j = 0; j < b.length; ++j)
|
||||||
|
if (x >= b[j][0] && x < b[j][1])
|
||||||
|
return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (show_err || show_long) {
|
||||||
|
print("C\tJ inter-chromosomal misjoin");
|
||||||
|
print("C\tj inter-chromosomal misjoin with both breakpoints ending in centromeres");
|
||||||
|
print("C\tG long gap on the reference genome");
|
||||||
|
print("C\tg long gap on the reference genome with both breakpoints ending in centromeres");
|
||||||
|
print("C\tM closed inversion");
|
||||||
|
print("C");
|
||||||
|
}
|
||||||
function process(a) {
|
function process(a) {
|
||||||
var k = 0;
|
var k = 0;
|
||||||
for (var i = 0; i < a.length; ++i) {
|
for (var i = 0; i < a.length; ++i) {
|
||||||
|
|
@ -2716,14 +2734,17 @@ function paf_misjoin(args)
|
||||||
a = a.sort(function(x,y){return x[2]-y[2]});
|
a = a.sort(function(x,y){return x[2]-y[2]});
|
||||||
if (show_long) for (var i = 0; i < a.length; ++i) print(a[i].join("\t"));
|
if (show_long) for (var i = 0; i < a.length; ++i) print(a[i].join("\t"));
|
||||||
for (var i = 1; i < a.length; ++i) {
|
for (var i = 1; i < a.length; ++i) {
|
||||||
var ov = [false, false];
|
var ov = [false, false], end_cen = [false, false];
|
||||||
ov[0] = test_cen(cen, a[i-1][5], a[i-1][7], a[i-1][8]);
|
ov[0] = test_cen(cen, a[i-1][5], a[i-1][7], a[i-1][8]);
|
||||||
ov[1] = test_cen(cen, a[i][5], a[i][7], a[i][8]);
|
ov[1] = test_cen(cen, a[i][5], a[i][7], a[i][8]);
|
||||||
|
end_cen[0] = test_cen_point(cen, a[i-1][5], a[i-1][4] == '+'? a[i-1][8] : a[i-1][7]);
|
||||||
|
end_cen[1] = test_cen_point(cen, a[i][5], a[i][4] == '+'? a[i][7] : a[i][8]);
|
||||||
if (a[i-1][5] != a[i][5]) { // different chr
|
if (a[i-1][5] != a[i][5]) { // different chr
|
||||||
if (ov[0] || ov[1]) ++n_diff[1];
|
if (ov[0] || ov[1]) ++n_diff[1];
|
||||||
else if (show_err) {
|
else if (show_err) {
|
||||||
print("J", a[i-1].slice(0, 12).join("\t"));
|
var label = end_cen[0] && end_cen[1]? 'j' : 'J';
|
||||||
print("J", a[i].slice(0, 12).join("\t"));
|
print(label, a[i-1].slice(0, 12).join("\t"));
|
||||||
|
print(label, a[i].slice(0, 12).join("\t"));
|
||||||
}
|
}
|
||||||
++n_diff[0];
|
++n_diff[0];
|
||||||
} else if (a[i-1][4] == a[i][4]) { // a gap
|
} else if (a[i-1][4] == a[i][4]) { // a gap
|
||||||
|
|
@ -2733,8 +2754,9 @@ function paf_misjoin(args)
|
||||||
if (gap > max_gap) {
|
if (gap > max_gap) {
|
||||||
if (ov[0] || ov[1]) ++n_gap[1];
|
if (ov[0] || ov[1]) ++n_gap[1];
|
||||||
else if (show_err) {
|
else if (show_err) {
|
||||||
print("G", a[i-1].slice(0, 12).join("\t"));
|
var label = end_cen[0] && end_cen[1]? 'g' : 'G';
|
||||||
print("G", a[i].slice(0, 12).join("\t"));
|
print(label, a[i-1].slice(0, 12).join("\t"));
|
||||||
|
print(label, a[i].slice(0, 12).join("\t"));
|
||||||
}
|
}
|
||||||
++n_gap[0];
|
++n_gap[0];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue