diff --git a/browser/js/clone.js b/browser/js/clone.js
index 64f8616a0842785211a0c8aefbbad41e1bcfbf64..0b23edca6997ed8d0d006a89d2d5521af1931773 100644
--- a/browser/js/clone.js
+++ b/browser/js/clone.js
@@ -112,7 +112,7 @@ Clone.prototype = {
* @t : tracking point (default value : current tracking point)
* */
getSize: function (time) {
- time = typeof time !== 'undefined' ? time : this.m.t;
+ time = this.m.getTime(time)
if (this.m.reads.segmented[time] == 0 ) return 0
var result = this.getReads(time) / this.m.reads.segmented[time]
@@ -124,7 +124,7 @@ Clone.prototype = {
//special getSize for scatterplot (ignore constant)
getSize2: function (time) {
- time = typeof time !== 'undefined' ? time : this.m.t;
+ time = this.m.getTime(time)
if (this.m.reads.segmented[time] == 0 ) return 0
var result = this.getReads(time) / this.m.reads.segmented[time]
@@ -139,13 +139,12 @@ Clone.prototype = {
* use scientific notation if neccesary
* */
getStrSize: function (time) {
- time = typeof time !== 'undefined' ? time : this.m.t;
- var size = this.getSize(time);
+ var size = this.getSize(this.m.getTime(time));
return this.m.formatSize(size, true)
},
getSystemSize: function (time) {
- time = typeof time !== 'undefined' ? time : this.m.t;
+ time = this.m.getTime(time)
var system_reads = this.m.reads.segmented[time]
if (this.germline in this.m.reads.germline) system_reads = this.m.reads.germline[this.germline][time]
@@ -159,16 +158,68 @@ Clone.prototype = {
},
getStrSystemSize: function (time) {
- time = typeof time !== 'undefined' ? time : this.m.t;
+ time = this.m.getTime(time)
var size = this.getSystemSize(time);
return this.m.formatSize(size, true)
},
+
+
+ /* Ratio relative to the system group */
+ getSystemGroupSize: function (time) {
+ var group_reads = this.m.systemGroupSize(this.germline, this.m.getTime(time))
+
+ if (group_reads == 0 ) return 0 ;
+ var result = this.getReads(time) / group_reads
+ if (this.norm) result = this.normalize(result, time)
+ return result
+
+ },
+
+ getStrSystemGroupSize: function (time) {
+ time = this.m.getTime(time)
+ var size = this.getSystemGroupSize(time)
+ return this.m.formatSize(size, true)
+ },
+
+ /* return a printable size such as either '26.32%' or '26.32% (33.66% of IGH)' (when there are several systems) */
+ getPrintableSize: function (time) {
+
+ var size = this.getReads(time)
+ s = size + ' read' + (size > 1 ? 's' : '') + ' '
+
+ s += '('
+ s += this.getStrSize(time)
+
+ if (this.m.system_available.length>1) {
+
+ systemGroup = this.m.systemGroup(this.germline)
+ if (systemGroup.indexOf('/') > -1) // if the system group has more than one germline
+ {
+ s += ', '
+ s += this.getStrSystemGroupSize(time) + ' of ' + systemGroup
+ }
+
+ s += ', '
+ s += this.getStrSystemSize(time) + ' of ' + this.germline
+ }
+
+ s += ')'
+ return s
+ },
+
+ getFasta: function() {
+ fasta = ''
+ fasta += '>' + this.getCode() + ' ' + this.getPrintableSize() + '\n'
+ fasta += this.getSequence() + '\n'
+
+ return fasta
+ },
/*
*
* */
getSequenceSize: function (time) {
- time = typeof time !== 'undefined' ? time : this.m.t;
+ time = this.m.getTime(time)
if (this.m.reads.segmented[time] == 0 ) return 0
var result = this.getSequenceReads(time) / this.m.reads.segmented[time]
@@ -186,7 +237,7 @@ Clone.prototype = {
* @t : tracking point (default value : current tracking point)
* */
getReads: function (time) {
- time = typeof time !== 'undefined' ? time : this.m.t;
+ time = this.m.getTime(time)
var result = 0;
var cluster = this.m.clusters[this.hash]
@@ -202,7 +253,7 @@ Clone.prototype = {
*
* */
getSequenceReads: function (time) {
- time = typeof time !== 'undefined' ? time : this.m.t;
+ time = this.m.getTime(time)
return this.reads[time];
}, //end getSequenceSize
diff --git a/browser/js/export.js b/browser/js/export.js
index ba908cff37c179d3e7cb312fb1fdac237ae286be..0063ddd945f2546edb0d56d343605606b81761c6 100644
--- a/browser/js/export.js
+++ b/browser/js/export.js
@@ -474,20 +474,10 @@ Report.prototype = {
var reads_stats = $('', {'class': 'clone_table'}).appendTo(clone);
for (var i=0; i
' for (var i=0; i' + this.clone(list[i]).getCode() + '\n' - fasta += this.clone(list[i]).getSequence() + '\n' + fasta += this.clone(list[i]).getFasta() + '\n' } var result = $('', { @@ -1833,7 +1836,7 @@ Model.prototype = { }, systemSize: function(system, time) { - time = typeof time !== 'undefined' ? time : this.t; + time = this.getTime(time) if (typeof this.reads.germline[system] != 'undefined'){ return this.reads.germline[system][time]/this.reads.segmented[time] }else{ @@ -1845,6 +1848,45 @@ Model.prototype = { } }, + + + /* Two systems are in the same group when then only differs by '+' */ + + sameSystemGroup: function(system1, system2) { + system1 = system1.replace('+', '') + system2 = system2.replace('+', '') + return (system1 == system2) + }, + + /* Representation of a system group, such as 'TRD/TRD+' */ + + systemGroup: function(system) { + list = '' + for (var germline in this.reads.germline) { + if (this.sameSystemGroup(germline, system)) { + if (list) list += '/' + list += germline + } + } + return list + }, + + /* Returns the number of reads of a given system group at a given time */ + + systemGroupSize: function(system, time) { + time = this.getTime(time) + reads = 0 + + for (var germline in this.reads.germline) { + if (this.sameSystemGroup(germline, system)) { + reads += this.reads.germline[germline][time] + } + } + + return reads + }, + + wait: function(text){ document.getElementById("waiting_screen").style.display = "block";