miga-base 0.2.1.0 → 0.2.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/actions/tax_distributions.rb +100 -0
- data/bin/miga +1 -0
- data/lib/miga/_data/aai-intax.tsv.gz +0 -0
- data/lib/miga/_data/aai-novel.tsv.gz +0 -0
- data/lib/miga/tax_dist.rb +65 -0
- data/lib/miga/tax_index.rb +26 -0
- data/lib/miga/taxonomy.rb +7 -0
- data/lib/miga/version.rb +1 -1
- data/utils/plot-taxdist.R +110 -0
- metadata +50 -45
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a495f0a540632069724a9f30b87495532c74aa5
|
4
|
+
data.tar.gz: 21e81ff7c152fbc6ef89e781b25aef2852190622
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f0f38d7981e0f872af676b4e65341baa032a00b7dd491337b1c01bf72c1c4a9702b5808ce2eb19486d1c139658e303c1d39b9422f0ae6301e4af9dc4be5ce33
|
7
|
+
data.tar.gz: 8b731945f0dc75f9f29c6dc92f943ad069e42038c6aec6fe64885832ce3ceeb1dad824b5d594ca03d25febb5d5f70599f7049ce2739c2892e8c2a0d330c955f9
|
@@ -0,0 +1,100 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# @package MiGA
|
4
|
+
# @license Artistic-2.0
|
5
|
+
|
6
|
+
require "miga/tax_index"
|
7
|
+
require "zlib"
|
8
|
+
require "tmpdir"
|
9
|
+
|
10
|
+
o = {q:true, format: :json}
|
11
|
+
OptionParser.new do |opt|
|
12
|
+
opt_banner(opt)
|
13
|
+
opt_object(opt, o, [:project])
|
14
|
+
opt_filter_datasets(opt, o)
|
15
|
+
opt.on("-i", "--index FILE",
|
16
|
+
"Pre-calculated tax-index (in tabular format) to be used.",
|
17
|
+
"If passed, dataset filtering arguments are ignored."
|
18
|
+
){ |v| o[:index]=v }
|
19
|
+
opt_common(opt, o)
|
20
|
+
end.parse!
|
21
|
+
|
22
|
+
##=> Functions <=
|
23
|
+
# Returns the _cannonical_ ID between strings +a+ and +b+.
|
24
|
+
def cannid(a, b) ; [a, b].sort.join("-") ; end
|
25
|
+
|
26
|
+
##=> Main <=
|
27
|
+
opt_require(o, project:"-P")
|
28
|
+
|
29
|
+
$stderr.puts "Loading project." unless o[:q]
|
30
|
+
p = MiGA::Project.load(o[:project])
|
31
|
+
raise "Impossible to load project: #{o[:project]}" if p.nil?
|
32
|
+
|
33
|
+
metric = p.is_clade? ? "ani" : "aai"
|
34
|
+
res_n = "#{metric}_distances"
|
35
|
+
$stderr.puts "Reading distances (1-#{metric.upcase})." unless o[:q]
|
36
|
+
res = p.result res_n
|
37
|
+
raise "#{res_n} not yet calculated." if res.nil?
|
38
|
+
matrix = res.file_path(:matrix)
|
39
|
+
raise "#{res_n} has no matrix." if matrix.nil?
|
40
|
+
dist = {}
|
41
|
+
fh = matrix=~/\.gz$/ ? Zlib::GzipReader.open(matrix) : File.open(matrix,"r")
|
42
|
+
fh.each_line do |ln|
|
43
|
+
next if fh.lineno==1
|
44
|
+
row = ln.chomp.split(/\t/)
|
45
|
+
dist[cannid(row[1], row[2])] = [row[3], 0, ["root:biota"]]
|
46
|
+
end
|
47
|
+
fh.close
|
48
|
+
|
49
|
+
Dir.mktmpdir do |dir|
|
50
|
+
if o[:index].nil?
|
51
|
+
$stderr.puts "Loading datasets." unless o[:q]
|
52
|
+
ds = p.datasets
|
53
|
+
ds.select!{ |d| not d.metadata[:tax].nil? }
|
54
|
+
ds = filter_datasets!(ds, o)
|
55
|
+
|
56
|
+
$stderr.puts "Indexing taxonomy." unless o[:q]
|
57
|
+
tax_index = MiGA::TaxIndex.new
|
58
|
+
ds.each { |d| tax_index << d }
|
59
|
+
tab = File.expand_path("index.tab", dir)
|
60
|
+
File.open(tab, "w") { |fh| fh.print tax_index.to_tab }
|
61
|
+
else
|
62
|
+
tab = o[:index]
|
63
|
+
end
|
64
|
+
|
65
|
+
$stderr.puts "Traversing taxonomy." unless o[:q]
|
66
|
+
rank_i = 0
|
67
|
+
MiGA::Taxonomy.KNOWN_RANKS.each do |rank|
|
68
|
+
$stderr.print "o #{rank}: " unless o[:q]
|
69
|
+
rank_n = 0
|
70
|
+
rank_i += 1
|
71
|
+
in_rank = nil
|
72
|
+
ds_name = []
|
73
|
+
File.open(tab, "r") do |fh|
|
74
|
+
fh.each_line do |ln|
|
75
|
+
if ln =~ /^ {#{(rank_i-1)*2}}\S+:\S+:/
|
76
|
+
in_rank = nil
|
77
|
+
ds_name = []
|
78
|
+
elsif ln =~ /^ {#{rank_i*2}}(#{rank}:(\S+)):/
|
79
|
+
in_rank = $2=="?" ? nil : $1
|
80
|
+
ds_name = []
|
81
|
+
elsif ln =~ /^ *# (\S+)/ and not in_rank.nil?
|
82
|
+
ds_i = $1
|
83
|
+
ds_name << ds_i
|
84
|
+
ds_name.each do |ds_j|
|
85
|
+
k = cannid(ds_i, ds_j)
|
86
|
+
next if dist[k].nil?
|
87
|
+
rank_n += 1
|
88
|
+
dist[k][1] = rank_i
|
89
|
+
dist[k][2].unshift in_rank
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
$stderr.puts "#{rank_n} pairs of datasets." unless o[:q]
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
dist.keys.each do |k|
|
99
|
+
puts (k.split("-") + dist[k].flatten).join("\t")
|
100
|
+
end
|
data/bin/miga
CHANGED
@@ -26,6 +26,7 @@ $task_desc = {
|
|
26
26
|
list_files: "Lists all registered files from the results of a dataset or a "+
|
27
27
|
"project.",
|
28
28
|
project_info: "Displays information about a MiGA project.",
|
29
|
+
tax_distributions: "Estimates distributions of distance by taxonomy.",
|
29
30
|
unlink_dataset: "Removes a dataset from an MiGA project."
|
30
31
|
}
|
31
32
|
|
Binary file
|
Binary file
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# @package MiGA
|
2
|
+
# @license Artistic-2.0
|
3
|
+
|
4
|
+
require "miga/common"
|
5
|
+
require "miga/taxonomy"
|
6
|
+
require "zlib"
|
7
|
+
|
8
|
+
##
|
9
|
+
# Methods for taxonomy identification based on AAI/ANI values.
|
10
|
+
module MiGA::TaxDist
|
11
|
+
|
12
|
+
##
|
13
|
+
# Absolute path to the :intax or :novel data file (determined by +test+) for
|
14
|
+
# AAI.
|
15
|
+
def self.aai_path(test)
|
16
|
+
test = test.downcase.to_sym
|
17
|
+
return nil unless [:intax, :novel].include? test
|
18
|
+
File.expand_path("../_data/aai-#{test}.tsv.gz", __FILE__)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Returns a Hash, where the keys correspond to the taxonomic level
|
22
|
+
# (see MiGA::Taxonomy.LONG_RANKS for the meanings), and the values correspond
|
23
|
+
# to the p-values of being :intax or :novel, as determined by +test+.
|
24
|
+
def self.aai_pvalues(aai, test)
|
25
|
+
Zlib::GzipReader.open(aai_path(test)) do |fh|
|
26
|
+
keys = nil
|
27
|
+
fh.each_line do |ln|
|
28
|
+
row = ln.chomp.split /\t/
|
29
|
+
if fh.lineno==1
|
30
|
+
keys = row[1, row.size-1].map{ |i| i.to_i }
|
31
|
+
elsif row.shift.to_f >= aai
|
32
|
+
vals = {}
|
33
|
+
keys.each do |i|
|
34
|
+
v = row.shift
|
35
|
+
next if v=="NA"
|
36
|
+
vals[MiGA::Taxonomy.KNOWN_RANKS[i]] = v.to_f
|
37
|
+
end
|
38
|
+
return vals
|
39
|
+
end
|
40
|
+
end # each_line ln
|
41
|
+
end # open fh
|
42
|
+
{}
|
43
|
+
end
|
44
|
+
|
45
|
+
# Determines the degree to which a Float +aai+ value indicates similar
|
46
|
+
# taxonomy (with +test+ :intax) or a novel taxon (with +test+ :novel). Returns
|
47
|
+
# a Hash with "likelihood" phrases as keys and values as an array with
|
48
|
+
# cannonical rank (as in MiGA::Taxonomy) and estimated p-value.
|
49
|
+
def self.aai_taxtest(aai, test)
|
50
|
+
meaning = {most_likely:[0,0.01],probably:[0.01,0.1],possibly_even:[0.1,0.5]}
|
51
|
+
pv = aai_pvalues(aai, test)
|
52
|
+
out = {}
|
53
|
+
meaning.each do |phrase, thresholds|
|
54
|
+
lwr, upr = thresholds
|
55
|
+
min = pv.values.select{ |v| v >= lwr }.min
|
56
|
+
return out if min.nil?
|
57
|
+
if min < upr
|
58
|
+
v = pv.select{ |_,v| v==min }
|
59
|
+
out[phrase] = (test==:intax ? v.reverse_each : v).first
|
60
|
+
end
|
61
|
+
end
|
62
|
+
out
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
data/lib/miga/tax_index.rb
CHANGED
@@ -34,6 +34,26 @@ class MiGA::TaxIndex < MiGA::MiGA
|
|
34
34
|
@datasets << dataset
|
35
35
|
end
|
36
36
|
|
37
|
+
##
|
38
|
+
# Finds all the taxa in the collection at the +rank+ taxonomic rank.
|
39
|
+
def taxa_by_rank(rank)
|
40
|
+
rank = MiGA::Taxonomy.normalize_rank(rank)
|
41
|
+
taxa = [@root]
|
42
|
+
select = []
|
43
|
+
loop do
|
44
|
+
new_taxa = []
|
45
|
+
taxa.map{ |tx| tx.children }.flatten.each do |ch|
|
46
|
+
if ch.rank == rank
|
47
|
+
select << ch
|
48
|
+
elsif not ch.children.empty?
|
49
|
+
new_taxa << ch
|
50
|
+
end
|
51
|
+
end
|
52
|
+
break if new_taxa.empty?
|
53
|
+
end
|
54
|
+
select
|
55
|
+
end
|
56
|
+
|
37
57
|
##
|
38
58
|
# Generate JSON String for the index.
|
39
59
|
def to_json
|
@@ -98,6 +118,12 @@ class MiGA::TaxIndexTaxon < MiGA::MiGA
|
|
98
118
|
datasets.size + children.map{ |it| it.datasets_count }.reduce(0, :+)
|
99
119
|
end
|
100
120
|
|
121
|
+
##
|
122
|
+
# Get all the datasets in the taxon (including children).
|
123
|
+
def all_datasets
|
124
|
+
datasets + children.map{ |it| it.datasets }.reduce([], :+)
|
125
|
+
end
|
126
|
+
|
101
127
|
##
|
102
128
|
# JSON String of the taxon.
|
103
129
|
def to_json(*a)
|
data/lib/miga/taxonomy.rb
CHANGED
@@ -11,6 +11,13 @@ class MiGA::Taxonomy < MiGA::MiGA
|
|
11
11
|
def self.KNOWN_RANKS() @@KNOWN_RANKS ; end
|
12
12
|
@@KNOWN_RANKS = %w{ns d k p c o f g s ssp str ds}.map{|r| r.to_sym}
|
13
13
|
|
14
|
+
##
|
15
|
+
# Long names of the cannonical ranks.
|
16
|
+
def self.LONG_RANKS() @@LONG_RANKS ; end
|
17
|
+
@@LONG_RANKS = {root: "root", ns: "namespace", d: "domain", k: "kingdom",
|
18
|
+
p: "phylum", c: "class", o: "order", f: "family", g: "genus", s: "species",
|
19
|
+
ssp: "subspecies", str: "strain", ds: "dataset"}
|
20
|
+
|
14
21
|
##
|
15
22
|
# Synonms for cannonical ranks.
|
16
23
|
@@RANK_SYNONYMS = {
|
data/lib/miga/version.rb
CHANGED
@@ -10,7 +10,7 @@ module MiGA
|
|
10
10
|
# - Float representing the major.minor version.
|
11
11
|
# - Integer representing gem releases of the current version.
|
12
12
|
# - Integer representing minor changes that require new version number.
|
13
|
-
VERSION = [0.2, 1,
|
13
|
+
VERSION = [0.2, 1, 2]
|
14
14
|
|
15
15
|
##
|
16
16
|
# Nickname for the current major.minor version.
|
@@ -0,0 +1,110 @@
|
|
1
|
+
#!/usr/bin/env Rscript
|
2
|
+
|
3
|
+
# @package MiGA
|
4
|
+
# @license Artistic-2.0
|
5
|
+
|
6
|
+
##
|
7
|
+
# To update the AAI data files, use:
|
8
|
+
#
|
9
|
+
# ```bash
|
10
|
+
# miga tax_distributions -P /Path/To/RefSeq --ref | cut -f 1-5 \
|
11
|
+
# > aai-tax-index.tsv
|
12
|
+
# ```
|
13
|
+
#
|
14
|
+
# Next, in R:
|
15
|
+
#
|
16
|
+
# ```R
|
17
|
+
# source("utils/plot-taxdist.R")
|
18
|
+
# p.val <- plot.miga.taxdist("aai-tax-index.tsv",
|
19
|
+
# exclude=c("g:Mycoplasma", "ssp:Prochlorococcus_marinus_subsp__marinus",
|
20
|
+
# "f:Rhizobiaceae", "s:Buchnera_aphidicola", "s:Prochlorococcus_marinus"))
|
21
|
+
# write.table(p.val[[1]], file="lib/miga/_data/aai-intax.tsv",
|
22
|
+
# sep="\t", row.names=TRUE, col.names=NA, quote=FALSE)
|
23
|
+
# write.table(p.val[[2]], file="lib/miga/_data/aai-novel.tsv",
|
24
|
+
# sep="\t", row.names=TRUE, col.names=NA, quote=FALSE)
|
25
|
+
# ```
|
26
|
+
#
|
27
|
+
# And finally, back in bash:
|
28
|
+
#
|
29
|
+
# ```bash
|
30
|
+
# gzip lib/miga/_data/aai-intax.tsv
|
31
|
+
# gzip lib/miga/_data/aai-novel.tsv
|
32
|
+
# rm aai-tax-index.tsv
|
33
|
+
# ```
|
34
|
+
#
|
35
|
+
|
36
|
+
#= Load stuff
|
37
|
+
#argv <- commandArgs(trailingOnly=T)
|
38
|
+
|
39
|
+
#= Functions
|
40
|
+
plot.miga.taxdist <- function(file, exclude=c()){
|
41
|
+
pdf(paste(file, ".pdf", sep=""), 6, 7)
|
42
|
+
layout(1:3, heights=c(2,1,1.5))
|
43
|
+
d <- read.table(file, sep="\t", header=FALSE,
|
44
|
+
col.names=c("a","b","aai","rank","taxon"), as.is=TRUE)
|
45
|
+
a <- d[!(d$taxon %in% exclude),]
|
46
|
+
col <- rainbow(max(a$rank)+1, s=3/4, v=3/4, alpha=1/3)
|
47
|
+
col2 <- rainbow(max(a$rank)+1, s=3/4, v=3/4)
|
48
|
+
|
49
|
+
cat("o Plot pairs.\n")
|
50
|
+
par(mar=c(0,4,1,1)+0.1)
|
51
|
+
plot(d$aai, d$rank+runif(nrow(d), -0.3, 0.3), cex=1/2, pch=16, las=1, bty="l",
|
52
|
+
col=ifelse(d$taxon %in% exclude, rgb(.8,.8,.8,1/4), col[d$rank+1]),
|
53
|
+
xlab="", ylab="Lowest common taxon", xaxt="n", ylim=rev(range(a$rank)))
|
54
|
+
for(i in c(0.1, 0.05, 0.01)){
|
55
|
+
min_q <- tapply(a$aai, a$rank, quantile, probs=i)
|
56
|
+
max_q <- tapply(a$aai, a$rank, quantile, probs=1-i)
|
57
|
+
arrows(x0=min_q, length=0, col=grey(1+log10(i)/2),
|
58
|
+
y0=as.numeric(names(min_q))-0.45, y1=as.numeric(names(min_q))+0.45)
|
59
|
+
arrows(x0=max_q, length=0, col=grey(1+log10(i)/2),
|
60
|
+
y0=as.numeric(names(max_q))-0.45, y1=as.numeric(names(max_q))+0.45)
|
61
|
+
}
|
62
|
+
|
63
|
+
cat("o Plot taxa.\n")
|
64
|
+
par(mar=c(0,4,0,1)+0.1)
|
65
|
+
plot(1, type="n", xlim=range(a$aai), ylim=rev(range(a$rank)),
|
66
|
+
xlab="", ylab="Lowest common taxon", xaxt="n", las=1, bty="l")
|
67
|
+
for(i in unique(a$rank)){
|
68
|
+
t.aai <- tapply(d$aai[d$rank==i], d$taxon[d$rank==i], mean)
|
69
|
+
t.size <- tapply(d$aai[d$rank==i], d$taxon[d$rank==i], length)
|
70
|
+
points(t.aai, i+runif(length(t.aai), -0.15, 0.15), pch=16,
|
71
|
+
cex=2*log2(1+t.size)/log2(1+max(t.size)),
|
72
|
+
col=ifelse(names(t.aai) %in% exclude, rgb(.8,.8,.8,1/4), col[i+1]))
|
73
|
+
}
|
74
|
+
|
75
|
+
cat("o Plot p-values.\n")
|
76
|
+
par(mar=c(4,4,0,1)+0.1)
|
77
|
+
plot(1, type="n", xlim=range(a$aai), ylim=c(0,0.5),
|
78
|
+
xlab="AAI (%)", ylab="P-value (--- intax; - - novel)", las=1, bty="l")
|
79
|
+
x <- seq(30, 100, 0.1)
|
80
|
+
intax <- data.frame(row.names=x)
|
81
|
+
novel <- data.frame(row.names=x)
|
82
|
+
for(i in sort(unique(a$rank))){
|
83
|
+
if(i==12) next
|
84
|
+
k <- as.character(i)
|
85
|
+
intax[,k] <- miga.taxprob.intax(x, i, a)
|
86
|
+
novel[,k] <- miga.taxprob.novel(x, i, a)
|
87
|
+
lines(x, intax[,k], col=col2[i+1], lwd=2)
|
88
|
+
lines(x, novel[,k], col=col2[i+1], lwd=2, lty=2)
|
89
|
+
}
|
90
|
+
dev.off()
|
91
|
+
return(list(intax, novel))
|
92
|
+
}
|
93
|
+
|
94
|
+
miga.taxprob.novel <- function(max.aai, rank, data){
|
95
|
+
o <- c()
|
96
|
+
for(i in max.aai){
|
97
|
+
a <- sum(data$rank >= rank & data$aai <= i)/sum(data$aai <= i)
|
98
|
+
o <- c(o, a)
|
99
|
+
}
|
100
|
+
return(o*sum(data$rank < 12)/sum(data$rank >= rank))
|
101
|
+
}
|
102
|
+
|
103
|
+
miga.taxprob.intax <- function(max.aai, rank, data){
|
104
|
+
o <- c()
|
105
|
+
for(i in max.aai){
|
106
|
+
a <- sum(data$rank < rank & data$aai >= i)/sum(data$aai >= i)
|
107
|
+
o <- c(o, a)
|
108
|
+
}
|
109
|
+
return(o*sum(data$rank < 12)/sum(data$rank < rank))
|
110
|
+
}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: miga-base
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.1.
|
4
|
+
version: 0.2.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luis M. Rodriguez-R
|
@@ -14,70 +14,70 @@ dependencies:
|
|
14
14
|
name: rest-client
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.7'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.7'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: daemons
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ~>
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.2'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ~>
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: json
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '1.8'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.8'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '11'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '11'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: test-unit
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- -
|
73
|
+
- - ~>
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: '3'
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ~>
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '3'
|
83
83
|
description: Microbial Genomes Atlas
|
@@ -88,26 +88,6 @@ extensions: []
|
|
88
88
|
extra_rdoc_files:
|
89
89
|
- README.md
|
90
90
|
files:
|
91
|
-
- Gemfile
|
92
|
-
- LICENSE
|
93
|
-
- README.md
|
94
|
-
- Rakefile
|
95
|
-
- actions/add_result.rb
|
96
|
-
- actions/add_taxonomy.rb
|
97
|
-
- actions/create_dataset.rb
|
98
|
-
- actions/create_project.rb
|
99
|
-
- actions/daemon.rb
|
100
|
-
- actions/date.rb
|
101
|
-
- actions/download_dataset.rb
|
102
|
-
- actions/find_datasets.rb
|
103
|
-
- actions/import_datasets.rb
|
104
|
-
- actions/index_taxonomy.rb
|
105
|
-
- actions/list_datasets.rb
|
106
|
-
- actions/list_files.rb
|
107
|
-
- actions/project_info.rb
|
108
|
-
- actions/unlink_dataset.rb
|
109
|
-
- bin/miga
|
110
|
-
- lib/miga.rb
|
111
91
|
- lib/miga/common.rb
|
112
92
|
- lib/miga/daemon.rb
|
113
93
|
- lib/miga/dataset.rb
|
@@ -116,9 +96,22 @@ files:
|
|
116
96
|
- lib/miga/project.rb
|
117
97
|
- lib/miga/remote_dataset.rb
|
118
98
|
- lib/miga/result.rb
|
99
|
+
- lib/miga/tax_dist.rb
|
119
100
|
- lib/miga/tax_index.rb
|
120
101
|
- lib/miga/taxonomy.rb
|
121
102
|
- lib/miga/version.rb
|
103
|
+
- lib/miga.rb
|
104
|
+
- test/common_test.rb
|
105
|
+
- test/daemon_test.rb
|
106
|
+
- test/dataset_test.rb
|
107
|
+
- test/metadata_test.rb
|
108
|
+
- test/project_test.rb
|
109
|
+
- test/remote_dataset_test.rb
|
110
|
+
- test/tax_index_test.rb
|
111
|
+
- test/taxonomy_test.rb
|
112
|
+
- test/test_helper.rb
|
113
|
+
- lib/miga/_data/aai-intax.tsv.gz
|
114
|
+
- lib/miga/_data/aai-novel.tsv.gz
|
122
115
|
- scripts/_distances_functions.bash
|
123
116
|
- scripts/_distances_noref_nomulti.bash
|
124
117
|
- scripts/_distances_ref_nomulti.bash
|
@@ -140,21 +133,33 @@ files:
|
|
140
133
|
- scripts/subclades.bash
|
141
134
|
- scripts/trimmed_fasta.bash
|
142
135
|
- scripts/trimmed_reads.bash
|
143
|
-
- test/common_test.rb
|
144
|
-
- test/daemon_test.rb
|
145
|
-
- test/dataset_test.rb
|
146
|
-
- test/metadata_test.rb
|
147
|
-
- test/project_test.rb
|
148
|
-
- test/remote_dataset_test.rb
|
149
|
-
- test/tax_index_test.rb
|
150
|
-
- test/taxonomy_test.rb
|
151
|
-
- test/test_helper.rb
|
152
136
|
- utils/adapters.fa
|
153
137
|
- utils/mytaxa_scan.R
|
154
138
|
- utils/mytaxa_scan.rb
|
139
|
+
- utils/plot-taxdist.R
|
155
140
|
- utils/requirements.txt
|
156
141
|
- utils/subclades-compile.rb
|
157
142
|
- utils/subclades.R
|
143
|
+
- bin/miga
|
144
|
+
- actions/add_result.rb
|
145
|
+
- actions/add_taxonomy.rb
|
146
|
+
- actions/create_dataset.rb
|
147
|
+
- actions/create_project.rb
|
148
|
+
- actions/daemon.rb
|
149
|
+
- actions/date.rb
|
150
|
+
- actions/download_dataset.rb
|
151
|
+
- actions/find_datasets.rb
|
152
|
+
- actions/import_datasets.rb
|
153
|
+
- actions/index_taxonomy.rb
|
154
|
+
- actions/list_datasets.rb
|
155
|
+
- actions/list_files.rb
|
156
|
+
- actions/project_info.rb
|
157
|
+
- actions/tax_distributions.rb
|
158
|
+
- actions/unlink_dataset.rb
|
159
|
+
- Gemfile
|
160
|
+
- Rakefile
|
161
|
+
- README.md
|
162
|
+
- LICENSE
|
158
163
|
homepage: http://enve-omics.ce.gatech.edu/miga
|
159
164
|
licenses:
|
160
165
|
- Artistic-2.0
|
@@ -163,25 +168,25 @@ post_install_message:
|
|
163
168
|
rdoc_options:
|
164
169
|
- lib
|
165
170
|
- README.md
|
166
|
-
-
|
171
|
+
- --main
|
167
172
|
- README.md
|
168
|
-
-
|
173
|
+
- --title
|
169
174
|
- MiGA
|
170
175
|
require_paths:
|
171
176
|
- lib
|
172
177
|
required_ruby_version: !ruby/object:Gem::Requirement
|
173
178
|
requirements:
|
174
|
-
- -
|
179
|
+
- - '>='
|
175
180
|
- !ruby/object:Gem::Version
|
176
181
|
version: '1.9'
|
177
182
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
183
|
requirements:
|
179
|
-
- -
|
184
|
+
- - '>='
|
180
185
|
- !ruby/object:Gem::Version
|
181
186
|
version: '0'
|
182
187
|
requirements: []
|
183
188
|
rubyforge_project:
|
184
|
-
rubygems_version: 2.
|
189
|
+
rubygems_version: 2.0.14
|
185
190
|
signing_key:
|
186
191
|
specification_version: 4
|
187
192
|
summary: MiGA
|