97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
# File 'lib/rbbt/matrix.rb', line 97
def comparison(main, contrast, subsets = nil)
subsets ||= self.subsets
if main.index "="
main_factor, main_value = main.split "="
raise ParameterException, "Main selection not understood" if subsets[main_factor].nil? or subsets[main_factor][main_value].nil?
value = subsets[main_factor][main_value]
main_samples = String === value ? value.split(',') : value
else
main_samples = main.split(/[|,\n]/)
end
if contrast
if contrast.index "="
contrast_factor, contrast_value = contrast.split "="
raise ParameterException, "Contrast selection not understood" if subsets[contrast_factor].nil? or subsets[contrast_factor][contrast_value].nil?
value = subsets[contrast_factor][contrast_value]
contrast_samples = String === value ? value.split(',') : value
else
contrast_samples = contrast.split(/[|,\n]/)
end
else
if subsets and main_factor
contrast_samples = subsets[main_factor].values.flatten.collect{|s| s.split ',' }.flatten.uniq - main_samples
else
contrast_samples = samples - main_samples
end
end
main_samples = main_samples.compact.reject{|m| m.empty? }.collect{|m| m.strip }
contrast_samples = contrast_samples.compact.reject{|m| m.empty? }.collect{|m| m.strip }
[main_samples, contrast_samples]
end
|