rbbt-dm 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0c0544425bc534c01138dec342824fe038f70904
4
- data.tar.gz: 1baa83b3b56405ea352a6a7d6bc083330f1412b9
3
+ metadata.gz: 412564d1fb5e11cd74d9d5f5831d3169c3b41bfc
4
+ data.tar.gz: b8015384a48dd97d9aaacc87f409d4a003b6a25e
5
5
  SHA512:
6
- metadata.gz: 76ca4bb51dc3a159e4b777b7e718d4d1ea87bd9fc8219bfa04ea5aebea1b8730e70f66caef8d7200a5419ca7f883f01452c78fc531c4ea184b2d1fa1f61b4d0e
7
- data.tar.gz: 8416c3b16280feeab2b55e5ae01bf877e56299974a3c8460d679e09ac4a90c44ad2b2e7eb520f983b6a0963667e1b1c96147fbb636bd7e1185c9ac62b740fdb2
6
+ metadata.gz: 4c27963bc45ac247de676b90f64748a6c8e6108a27e5c493620156a758db8c0709c9666e3c9d016b273ec754c8063d6636e2887680ce7aef51db8f34ae69112c
7
+ data.tar.gz: 65da093976bce048ab5572f904e831628178eb01dba43888bdebb7c2f2e9150070905610cebe52a8c59ea1503505d57fe4c4a3d179f358e617a15dde6150f65f
@@ -0,0 +1,14 @@
1
+ require 'rbbt/util/R'
2
+
3
+ class Matrix
4
+ def barcode(outfile, factor = 2)
5
+
6
+ FileUtils.mkdir_p File.dirname(outfile) unless outfile.nil? or File.exists? File.dirname(outfile)
7
+ cmd =<<-EOF
8
+ source('#{Rbbt.share.R['barcode.R'].find}')
9
+ rbbt.GE.barcode(#{ R.ruby2R self.data_file }, #{ R.ruby2R outfile }, #{ R.ruby2R factor })
10
+ EOF
11
+
12
+ R.run(cmd, :stderr => true)
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ class Matrix
2
+ def differential(main, contrast, path = nil)
3
+ if Array === main and Array === contrast
4
+ main_samples, contrast_samples = main, contrast
5
+ else
6
+ main_samples, contrast_samples = comparison main, contrast
7
+ end
8
+
9
+ Persist.persist(data_file, :tsv, :other => {:main => main_samples, :contrast => contrast_samples}, :prefix => "GENE", :dir => Matrix.matrix_dir, :no_load => true, :path => path) do |file|
10
+ log2 = value_type == "count"
11
+ GE.analyze(data_file, main_samples, contrast_samples, log2, path, format)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,104 @@
1
+ require 'rbbt-util'
2
+ require 'rbbt/sources/organism'
3
+
4
+ class Matrix
5
+
6
+ class << self
7
+ attr_accessor :matrix_dir
8
+ def matrix_dir
9
+ @matrix_dir ||= Rbbt.var.matrices
10
+ end
11
+ end
12
+
13
+ attr_accessor :data_file, :labels, :value_type, :format, :organism
14
+ def initialize(data_file, labels, value_type, format, organism=nil, identifiers=nil)
15
+ @data_file = data_file
16
+ @labels = labels
17
+ @value_type = value_type
18
+ @format = format
19
+ @organism = organism
20
+ @organism ||= begin
21
+ TSV.parse_header(@data_file).namespace || "Hsa"
22
+ end
23
+ @identifiers = identifiers || Organism.identifiers(organism)
24
+ end
25
+
26
+ def samples
27
+ @samples ||= TSV.parse_header(@data_file).fields
28
+ end
29
+
30
+ def subsets
31
+ @subsets ||= begin
32
+ subsets = {}
33
+ case @labels
34
+ when TSV
35
+ factors = @labels.fields
36
+ @labels.through do |sample,values|
37
+ factors.zip(values).each do |factor,value|
38
+ subsets[factor] ||= {}
39
+ subsets[factor][value] ||= []
40
+ subsets[factor][value] << sample
41
+ end
42
+ end
43
+ when Hash
44
+ @labels.each do |factor,info|
45
+ subsets[factors] ||= []
46
+ info.each do |value, samples|
47
+ subsets[factors][value] = case samples
48
+ when Array
49
+ samples
50
+ when String
51
+ samples.split ','
52
+ else
53
+ raise "Format of samples not understood: #{Misc.finguerprint samples}"
54
+ end
55
+
56
+ end
57
+ end
58
+ end
59
+ subsets
60
+ end
61
+ end
62
+
63
+ def comparison(main, contrast, subsets = nil)
64
+
65
+ if main.index "="
66
+ main_factor, main_value = main.split "="
67
+ raise ParameterException, "Main selection not understood" if subsets[main_factor].nil? or subsets[main_factor][main_value].nil?
68
+ main_samples = subsets[main_factor][main_value].split ','
69
+ else
70
+ main_samples = main.split(/[|,\n]/)
71
+ end
72
+
73
+ if contrast
74
+ if contrast.index "="
75
+ contrast_factor, contrast_value = contrast.split "="
76
+ raise ParameterException, "Contrast selection not understood" if subsets[contrast_factor].nil? or subsets[contrast_factor][contrast_value].nil?
77
+ contrast_samples = subsets[contrast_factor][contrast_value].split ','
78
+ else
79
+ contrast_samples = contrast.split(/[|,\n]/)
80
+ end
81
+ else
82
+ if subsets and defined? main_factor
83
+ contrast_samples = subsets[main_factor].values.collect{|s| s.split ',' }.flatten.uniq - main_samples
84
+ else
85
+ contrast_samples = samples - main_samples
86
+ end
87
+ end
88
+
89
+ [main_samples, contrast_samples]
90
+ end
91
+
92
+
93
+ def to_gene(identifiers = nil)
94
+ require 'rbbt/tsv/change_id'
95
+ file = Persist.persist(data_file, :tsv, :prefix => "GENE", :dir => Matrix.matrix_dir, :no_load => true) do
96
+ identifiers = [Organism.identifiers(organism), @identifiers, identifiers].compact.uniq
97
+
98
+ data_file.tsv(:cast => :to_f).change_key("Ensembl Gene ID", :identifiers => identifiers) do |v|
99
+ Misc.mean(v.compact)
100
+ end
101
+ end
102
+ Matrix.new file, labels, value_type, format
103
+ end
104
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbbt-dm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.3
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miguel Vazquez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-21 00:00:00.000000000 Z
11
+ date: 2014-03-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rbbt-util
@@ -91,6 +91,9 @@ files:
91
91
  - lib/rbbt/expression_old/expression.rb
92
92
  - lib/rbbt/expression_old/matrix.rb
93
93
  - lib/rbbt/expression_old/signature.rb
94
+ - lib/rbbt/matrix.rb
95
+ - lib/rbbt/matrix/barcode.rb
96
+ - lib/rbbt/matrix/differential.rb
94
97
  - lib/rbbt/network/paths.rb
95
98
  - lib/rbbt/plots/bar.rb
96
99
  - lib/rbbt/plots/heatmap.rb