miga-base 1.2.2.2 → 1.2.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/miga/cli/action/doctor/base.rb +3 -1
- data/lib/miga/common/with_result.rb +1 -3
- data/lib/miga/sqlite.rb +18 -4
- data/lib/miga/version.rb +2 -2
- data/utils/core-pan-plot.R +37 -18
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b3fd16e90667560b5cba41046eb92613187279fd7194d1825cc3dee9690273d
|
4
|
+
data.tar.gz: 84043b09c234b825ba0b89ca057b4301a97d5234a87282583516abffbc377e05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e0d76139cfd93f77a91ee266bd596d74e8881da94fb750d97b03bb6c491424e75af208177687525d284ae3fe96e77f1e373f0bdce0583445a4070f3ed09cac0
|
7
|
+
data.tar.gz: 5bd98ea9eb89bcb4af4b74128c2d84ac1f32047322bb2177f7d47543efcc4122a4f8c23f463e8ae8291c8e6dff753182a39fd11fbdf42679975e5b2dba0ca571
|
@@ -31,6 +31,7 @@ module MiGA::Cli::Action::Doctor::Base
|
|
31
31
|
file = File.join(base, dir, file_db)
|
32
32
|
blk[file, metric, result, rank] if File.exist? file
|
33
33
|
end
|
34
|
+
# Query databases for reference databases refer to taxonomy runs
|
34
35
|
base = File.join(base, '05.taxonomy')
|
35
36
|
result = :taxonomy
|
36
37
|
end
|
@@ -137,10 +138,11 @@ module MiGA::Cli::Action::Doctor::Base
|
|
137
138
|
def save_bidirectional(a, dist)
|
138
139
|
each_database_file(a) do |db_file, metric, result, rank|
|
139
140
|
next if rank == :haai # No need for hAAI to be bidirectional
|
141
|
+
next if result == :taxonomy # Taxonomy is never bidirectional
|
140
142
|
|
141
143
|
b2a = dist[rank].map { |b_name, v| b_name if v[a.name] }.compact
|
142
144
|
a2b = dist[rank][a.name]&.keys || []
|
143
|
-
|
145
|
+
MiGA::SQLite.new(db_file).run do |db|
|
144
146
|
sql = <<~SQL
|
145
147
|
insert into #{metric}(seq1, seq2, #{metric}, sd, n, omega) \
|
146
148
|
values(?, ?, ?, ?, ?, ?);
|
@@ -26,9 +26,7 @@ module MiGA::Common::WithResult
|
|
26
26
|
task = task.to_sym
|
27
27
|
return nil if result_dirs[task].nil?
|
28
28
|
|
29
|
-
base = File.join(
|
30
|
-
project.path, "data/#{result_dirs[task]}/#{result_base}"
|
31
|
-
)
|
29
|
+
base = File.join(project.path, 'data', result_dirs[task], result_base)
|
32
30
|
json = "#{base}.json"
|
33
31
|
return MiGA::Result.load(json) unless save
|
34
32
|
|
data/lib/miga/sqlite.rb
CHANGED
@@ -31,16 +31,30 @@ class MiGA::SQLite < MiGA::MiGA
|
|
31
31
|
def initialize(path, opts = {})
|
32
32
|
@opts = MiGA::SQLite.default_opts(opts)
|
33
33
|
@path = File.absolute_path(path)
|
34
|
+
MiGA::MiGA.DEBUG("Accessing database: #{path}")
|
34
35
|
end
|
35
36
|
|
36
37
|
##
|
37
|
-
# Executes +cmd+ and returns the result
|
38
|
+
# Executes +cmd+ and returns the result. Alternatively, if a block is
|
39
|
+
# passed, the commands are ignored and the block is executed with a
|
40
|
+
# single parameter of the database connection
|
38
41
|
def run(*cmd)
|
42
|
+
if block_given?
|
43
|
+
run_block { |conn| yield(conn) }
|
44
|
+
else
|
45
|
+
y = nil
|
46
|
+
run_block { |conn| y = conn.execute(*cmd) }
|
47
|
+
y
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
##
|
52
|
+
# Executes +blk+ that accepts a single parameter for the database
|
53
|
+
# connection
|
54
|
+
def run_block(&blk)
|
39
55
|
busy_attempts ||= 0
|
40
56
|
io_attempts ||= 0
|
41
|
-
|
42
|
-
SQLite3::Database.new(path) { |conn| y = conn.execute(*cmd) }
|
43
|
-
y
|
57
|
+
SQLite3::Database.new(path) { |conn| blk[conn] }
|
44
58
|
rescue SQLite3::BusyException => e
|
45
59
|
busy_attempts += 1
|
46
60
|
raise "Database busy #{path}: #{e.message}" if busy_attempts >= 3
|
data/lib/miga/version.rb
CHANGED
@@ -12,7 +12,7 @@ module MiGA
|
|
12
12
|
# - String indicating release status:
|
13
13
|
# - rc* release candidate, not released as gem
|
14
14
|
# - [0-9]+ stable release, released as gem
|
15
|
-
VERSION = [1.2, 2,
|
15
|
+
VERSION = [1.2, 2, 3].freeze
|
16
16
|
|
17
17
|
##
|
18
18
|
# Nickname for the current major.minor version.
|
@@ -20,7 +20,7 @@ module MiGA
|
|
20
20
|
|
21
21
|
##
|
22
22
|
# Date of the current gem relese.
|
23
|
-
VERSION_DATE = Date.new(2022, 2,
|
23
|
+
VERSION_DATE = Date.new(2022, 2, 9)
|
24
24
|
|
25
25
|
##
|
26
26
|
# References of MiGA
|
data/utils/core-pan-plot.R
CHANGED
@@ -1,29 +1,48 @@
|
|
1
1
|
#!/usr/bin/env Rscript
|
2
2
|
|
3
|
-
argv <- commandArgs(trailingOnly=
|
3
|
+
argv <- commandArgs(trailingOnly = TRUE)
|
4
4
|
|
5
|
-
plot_core_pan <- function(core_pan, pdf){
|
6
|
-
a <- read.table(core_pan, sep="\t", header=TRUE)
|
5
|
+
plot_core_pan <- function (core_pan, pdf) {
|
6
|
+
a <- read.table(core_pan, sep = "\t", header = TRUE)
|
7
|
+
col <- c(
|
8
|
+
rgb(96, 11, 64, max = 255),
|
9
|
+
rgb(0, 121, 166, max = 255),
|
10
|
+
rgb(0.5, 0.5, 0.5, 1/3),
|
11
|
+
rep(rgb(0.5, 0.5, 0.5), 2)
|
12
|
+
)
|
7
13
|
pdf(pdf, 7, 5)
|
8
|
-
plot(
|
9
|
-
|
14
|
+
plot(
|
15
|
+
1, type = "n", xlim = c(0, max(a$genomes) * 1.05), xaxs = "i", yaxs = "i",
|
16
|
+
ylim = c(0, max(a$pan_q3) * 1.05)/1e3, xlab = "Genomes",
|
17
|
+
ylab = "Orthologous Groups (thousands)"
|
18
|
+
)
|
19
|
+
|
10
20
|
# Core
|
11
|
-
polygon(
|
12
|
-
|
13
|
-
|
14
|
-
|
21
|
+
polygon(
|
22
|
+
c(a$genomes, rev(a$genomes)), c(a$core_q1, rev(a$core_q3))/1e3,
|
23
|
+
border = NA, col = rgb(0, 121, 166, 256/4, max = 255)
|
24
|
+
)
|
25
|
+
lines(a$genomes, a$core_avg/1e3, col = col[2], lty = 2)
|
26
|
+
lines(a$genomes, a$core_q2/1e3, col = col[2], lty = 1)
|
27
|
+
|
15
28
|
# Pan
|
16
|
-
polygon(
|
17
|
-
|
18
|
-
|
19
|
-
|
29
|
+
polygon(
|
30
|
+
c(a$genomes, rev(a$genomes)), c(a$pan_q1, rev(a$pan_q3))/1e3,
|
31
|
+
border = NA, col = rgb(96, 11, 64, 256/4, max = 255)
|
32
|
+
)
|
33
|
+
lines(a$genomes, a$pan_avg/1e3, col = col[1], lty = 2)
|
34
|
+
lines(a$genomes, a$pan_q2/1e3, col = col[1], lty = 1)
|
35
|
+
|
20
36
|
# Legend
|
21
|
-
legend("
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
37
|
+
legend <- c("pangenome", "core genome", "Inter-Quartile", "Median", "Average")
|
38
|
+
legend(
|
39
|
+
"topleft", legend = legend, col = col, bty = "n",
|
40
|
+
pch = c(16, 16, 15, NA, NA),
|
41
|
+
lty = c(NA, NA, NA, 1, 2),
|
42
|
+
pt.cex = c(1, 1, 2, NA, NA),
|
43
|
+
)
|
26
44
|
dev.off()
|
27
45
|
}
|
28
46
|
|
29
47
|
plot_core_pan(argv[1], argv[2])
|
48
|
+
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: miga-base
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.2.
|
4
|
+
version: 1.2.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luis M. Rodriguez-R
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-02-
|
11
|
+
date: 2022-02-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: daemons
|