bio-rocker 0.1.0 → 0.1.01
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/ROCker +2 -0
- data/lib/rocker.rb +22 -13
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6bf7fe40cc80fa1ef63124c73b82edee4df9c57
|
4
|
+
data.tar.gz: e91da1b61e6e07d45444238fd682a312b84a0ddc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2efa7d40badd0975e31c23e26c8912fb4c27c07cd8394cc79fc66780623bb2e30aac89eded1a58248d8d214cf416dfcc1a50ecc46b2ca913bc4c8d9e3def6b48
|
7
|
+
data.tar.gz: 84b9c0f7f089327c7b56f92299ba0f6d8eb967300b00ebbff688b7fe7cb75b10cdc132fb6aaf1bd09faab2551a718a2230e6ed10ca7b602b845e7b7ea8c69232
|
data/bin/ROCker
CHANGED
@@ -125,7 +125,9 @@ opts = OptionParser.new do |opt|
|
|
125
125
|
opt.separator "+ ADVANCED PLOTTING ARGUMENTS"
|
126
126
|
opt.on("-t", "--table PATH", "Formated tabular file to be created (or reused). Required unless -b is provided."){ |v| o[:table]=v }
|
127
127
|
opt.on( "--color", "Color alignment by amino acid."){ o[:color]=true }
|
128
|
+
opt.on( "--no-transparency", "Do not use (semi-)transparencies."){ |v| o[:transparency] = v }
|
128
129
|
opt.on( "--min-score NUMBER", "Minimum Bit-Score to consider a hit. By default: #{ROCker.default :minscore}"){ |v| o[:minscore]=v.to_f }
|
130
|
+
opt.on( "--stats-impact", "Plot impact on statistics, instead of absolute values per window."){ o[:impact]=true }
|
129
131
|
opt.on("-s", "--subject SBJ1,SBJ2,...", Array,
|
130
132
|
"Plot only information regarding this(ese) subject(s). If multiple, separate by comma. By default, all hits are plotted."){ |v| o[:sbj]=v }
|
131
133
|
opt.on("-f", "--plot-format STRING",
|
data/lib/rocker.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# @author Luis M. Rodriguez-R <lmrodriguezr at gmail dot com>
|
3
3
|
# @author Luis (Coto) Orellana
|
4
4
|
# @license artistic license 2.0
|
5
|
-
# @update
|
5
|
+
# @update Feb-04-2015
|
6
6
|
#
|
7
7
|
|
8
8
|
require 'rocker/blasthit'
|
@@ -27,7 +27,7 @@ class ROCker
|
|
27
27
|
# Filter
|
28
28
|
:sbj=>[],
|
29
29
|
# Plot
|
30
|
-
:color=>false, :gformat=>'pdf', :width=>9, :height=>9
|
30
|
+
:color=>false, :gformat=>'pdf', :width=>9, :height=>9, :impact=>false, :transparency=>true,
|
31
31
|
}
|
32
32
|
@@HAS_BUILD_GEMS = nil
|
33
33
|
def self.eutils() @@EUTILS end
|
@@ -409,8 +409,8 @@ class ROCker
|
|
409
409
|
data.rrun "par(mar=c(0,4,0,0.5)+.1);"
|
410
410
|
data.rrun "plot(1, t='n', xlim=c(0.5,#{data.aln.cols}+0.5), ylim=range(x$V4)+c(-0.04,0.04)*diff(range(x$V4)), xlab='', ylab='Bit score', xaxs='i', xaxt='n');"
|
411
411
|
data.rrun "noise <- runif(ncol(x),-.2,.2)"
|
412
|
-
data.rrun "arrows(x0=x$V2, x1=x$V3, y0=x$V4+noise, col=ifelse(x$V5==1, rgb(0,0,.5
|
413
|
-
data.rrun "points(x$V6, x$V4+noise, col=ifelse(x$V5==1, rgb(0,0,.5
|
412
|
+
data.rrun "arrows(x0=x$V2, x1=x$V3, y0=x$V4+noise, col=ifelse(x$V5==1, rgb(0,0,.5,#{@o[:transparency] ? ".2" : "1"}), rgb(.5,0,0,#{@o[:transparency] ? ".2" : "1"})), length=0);"
|
413
|
+
data.rrun "points(x$V6, x$V4+noise, col=ifelse(x$V5==1, rgb(0,0,.5,#{@o[:transparency] ? ".5" : "1"}), rgb(.5,0,0,#{@o[:transparency] ? ".5" : "1"})), pch=19, cex=1/4);"
|
414
414
|
|
415
415
|
puts "Plotting windows." unless @o[:q]
|
416
416
|
if some_thr
|
@@ -433,17 +433,26 @@ class ROCker
|
|
433
433
|
|
434
434
|
puts "Plotting statistics." unless @o[:q]
|
435
435
|
data.rrun "par(mar=c(5,4,0,0.5)+.1);"
|
436
|
-
|
437
|
-
puts " * sensitivity: #{data.rrun "100*sum(w$tp)/(sum(w$tp)+sum(w$fn))", :float}%"
|
438
|
-
puts " * specificity: #{data.rrun "100*sum(w$tn)/(sum(w$fp)+sum(w$tn))", :float}%"
|
439
|
-
puts " * accuracy: #{data.rrun "100*(sum(w$tp)+sum(w$tn))/(sum(w$p)+sum(w$n))", :float}%"
|
440
|
-
end
|
441
|
-
data.rrun "plot(1, t='n', xlim=c(0,#{data.aln.cols}),ylim=c(50,100),xlab='Alignment position (amino acids)',ylab='Precision',xaxs='i');"
|
436
|
+
data.rrun "plot(1, t='n', xlim=c(0,#{data.aln.cols}),ylim=c(#{@o[:impact] ? "-2,.1" : "50,100"}),xlab='Alignment position (amino acids)',ylab='Precision',xaxs='i');"
|
442
437
|
if some_thr
|
438
|
+
sn = data.rrun "100*sum(w$tp)/(sum(w$tp)+sum(w$fn))", :float
|
439
|
+
sp = data.rrun "100*sum(w$tn)/(sum(w$fp)+sum(w$tn))", :float
|
440
|
+
ac = data.rrun "100*(sum(w$tp)+sum(w$tn))/(sum(w$p)+sum(w$n))", :float
|
441
|
+
unless @o[:q]
|
442
|
+
puts " * sensitivity: #{sn}%"
|
443
|
+
puts " * specificity: #{sp}%"
|
444
|
+
puts " * accuracy: #{ac}%"
|
445
|
+
end
|
443
446
|
data.rrun "pos <- (w$V1+w$V2)/2"
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
+
if @o[:impact]
|
448
|
+
data.rrun "lines(pos[!is.na(w$specificity)], (w$specificity[!is.na(w$specificity)]-#{sp})*w$tp[!is.na(w$specificity)]/sum(w$tp), col='darkred', lwd=2, t='o', cex=1/3, pch=19);"
|
449
|
+
data.rrun "lines(pos[!is.na(w$sensitivity)], (w$sensitivity[!is.na(w$sensitivity)]-#{sn})*w$tn[!is.na(w$sensitivity)]/sum(w$tn), col='darkgreen', lwd=2, t='o', cex=1/3, pch=19);"
|
450
|
+
data.rrun "lines(pos[!is.na(w$accuracy)], (w$accuracy[!is.na(w$accuracy)]-#{ac})*(w$tp+w$tn)[!is.na(w$accuracy)]/sum(c(w$tp, w$tn)), col='darkblue', lwd=2, t='o', cex=1/3, pch=19);"
|
451
|
+
else
|
452
|
+
data.rrun "lines(pos[!is.na(w$specificity)], w$specificity[!is.na(w$specificity)], col='darkred', lwd=2, t='o', cex=1/3, pch=19);"
|
453
|
+
data.rrun "lines(pos[!is.na(w$sensitivity)], w$sensitivity[!is.na(w$sensitivity)], col='darkgreen', lwd=2, t='o', cex=1/3, pch=19);"
|
454
|
+
data.rrun "lines(pos[!is.na(w$accuracy)], w$accuracy[!is.na(w$accuracy)], col='darkblue', lwd=2, t='o', cex=1/3, pch=19);"
|
455
|
+
end
|
447
456
|
#data.rrun "lines(pos[!is.na(w$precision)], w$precision[!is.na(w$precision)], col='purple', lwd=2, t='o', cex=1/3, pch=19);"
|
448
457
|
end
|
449
458
|
data.rrun "legend('bottomright',legend=c('Specificity','Sensitivity','Accuracy'),lwd=2,col=c('darkred','darkgreen','darkblue'),ncol=3,bty='n')"
|