miga-base 1.3.13.10 → 1.3.14.1

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
  SHA256:
3
- metadata.gz: 805637216225db5718e2a8a085046a64beae0ec816da3ecc01fda274194b83aa
4
- data.tar.gz: 7c063bcd35554dd6ac7784ddeb37cf3a8e5b1f3ac3349f3ba4af9c5a7425806b
3
+ metadata.gz: 2459aa0f06af71628701bc0a71c1830bd21fc24d5c3e0999c8f59b6bce8b6cf6
4
+ data.tar.gz: 1590b03b5dfbe42241dd943a61388ff2e22a4956c6e9169d321a9bb857b9713f
5
5
  SHA512:
6
- metadata.gz: 74fe73270087e6ceb32fea09e2a2b13e1f8687c96fe39b42f68c0fdbea5d172b15ab946843ba184667071c34f3080a3e12613b7ecf078d90656514f96654044b
7
- data.tar.gz: 6d4e2ff50403236cdc90349aa67263590781c7ff4694cafb2bf35b81b57480026f3f59543145181e20f71b4cbee85d5682adf11d9813e86ea25ef1c40291c345
6
+ metadata.gz: cf4da3f0519c77fd290e92650a6a53b871d678516eda891ef15272e0fa5a8b4aa518a4531211b0ee9d78ca2e42798f6421b41a3980c3f6e64a159f78bf105e9a
7
+ data.tar.gz: e771646155d87a7f8e7896b5cfa121f94a60dbce78cd5be0231faf42e7f4aa2b75de4c3fdf043dadb33d07a67bca180d12a12871d1066bff73a454eecdf565a5
@@ -179,7 +179,7 @@ class MiGA::Cli::Action::Browse < MiGA::Cli::Action
179
179
  str
180
180
  .to_s.unmiga_name
181
181
  .sub(/^./, &:upcase)
182
- .gsub(/(Aai|Ani|Ogs|Cds|Ssu|Rds|ani95|aai90| db$| ssu )/, &:upcase)
182
+ .gsub(/(Aai|Ani|Ogs|Cds|Ssu|Rds|Rda|ani95|aai90| db$| ssu )/, &:upcase)
183
183
  .sub(/Haai/, 'hAAI')
184
184
  .sub(/Mytaxa/, 'MyTaxa')
185
185
  .sub(/ pvalue$/, ' p-value')
@@ -55,10 +55,13 @@ module MiGA::Project::Result
55
55
  ##
56
56
  # Add result of any type +:*_distances+ at +base+ (no +_opts+ supported).
57
57
  def add_result_distances(base, _opts)
58
- return nil unless result_files_exist?(base, %w[.rds .txt])
58
+ return nil unless result_files_exist?(base, ['.txt']) &&
59
+ (result_files_exist?(base, ['.rds']) ||
60
+ result_files_exist?(base, ['.rda']))
59
61
 
60
62
  r = MiGA::Result.new("#{base}.json")
61
63
  r.add_file(:rds, 'miga-project.rds')
64
+ r.add_file(:rda, 'miga-project.rda')
62
65
  r.add_file(:rdata, 'miga-project.Rdata') # Legacy file
63
66
  r.add_file(:matrix, 'miga-project.txt')
64
67
  r.add_file(:log, 'miga-project.log') # Legacy file
@@ -84,6 +87,7 @@ module MiGA::Project::Result
84
87
 
85
88
  r = add_result_iter_clades(base)
86
89
  r.add_file(:aai_dist_rds, 'miga-project.dist.rds')
90
+ r.add_file(:aai_dist_rda, 'miga-project.dist.rda')
87
91
  r.add_file(:aai_tree, 'miga-project.aai.nwk')
88
92
  r.add_file(:proposal, 'miga-project.proposed-clades')
89
93
  r.add_file(:clades_aai90, 'miga-project.aai90-clades')
@@ -108,6 +112,7 @@ module MiGA::Project::Result
108
112
  r = add_result_iter_clades(base)
109
113
  r.add_file(:ani_tree, 'miga-project.ani.nwk')
110
114
  r.add_file(:ani_dist_rds, 'miga-project.dist.rds')
115
+ r.add_file(:ani_dist_rda, 'miga-project.dist.rda')
111
116
  r
112
117
  end
113
118
 
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.3, 13, 10].freeze
15
+ VERSION = [1.3, 14, 1].freeze
16
16
 
17
17
  ##
18
18
  # Nickname for the current major.minor version.
@@ -40,15 +40,16 @@ rm "miga-project.txt.lno"
40
40
  # R-ify
41
41
  cat <<R | R --vanilla
42
42
  file <- gzfile("miga-project.txt.gz")
43
- aai <- read.table(
44
- file, sep = "\t", header = TRUE, as.is = TRUE, quote = "",
45
- stringsAsFactors = FALSE, comment.char = "", nrows = $LNO,
46
- colClasses = c("character", "character",
47
- "numeric", "numeric", "integer", "integer")
48
- )
49
- saveRDS(aai, file = "miga-project.rds")
50
- if(sum(aai[, "a"] != aai[, "b"]) > 0) {
51
- h <- hist(aai[aai[, "a"] != aai[, "b"], "value"], breaks = 100, plot = FALSE)
43
+ text <- readLines(file, n = $LNO + 1, ok = FALSE)
44
+ list <- strsplit(text[-1], "\t", fixed = TRUE)
45
+ a <- sapply(list, function(x) x[1])
46
+ b <- sapply(list, function(x) x[2])
47
+ d <- sapply(list, function(x) 1 - (as.numeric(x[3]) / 100))
48
+ save(a, b, d, file = "miga-project.rda")
49
+
50
+ non_self <- a != b
51
+ if(sum(non_self) > 0) {
52
+ h <- hist((1 - d[non_self]) * 100, breaks = 100, plot = FALSE)
52
53
  len <- length(h[["breaks"]])
53
54
  write.table(
54
55
  cbind(h[["breaks"]][-len], h[["breaks"]][-1], h[["counts"]]),
@@ -34,15 +34,16 @@ rm "miga-project.txt.lno"
34
34
  # R-ify
35
35
  cat <<R | R --vanilla
36
36
  file <- gzfile("miga-project.txt.gz")
37
- ani <- read.table(
38
- file, sep = "\t", header = TRUE, as.is = TRUE, quote = "",
39
- stringsAsFactors = FALSE, comment.char = "", nrows = $LNO,
40
- colClasses = c("character", "character",
41
- "numeric", "numeric", "integer", "integer")
42
- )
43
- saveRDS(ani, file = "miga-project.rds")
44
- if(sum(ani[, "a"] != ani[, "b"]) > 0) {
45
- h <- hist(ani[ani[, "a"] != ani[, "b"], "value"], breaks = 100, plot = FALSE)
37
+ text <- readLines(file, n = $LNO + 1, ok = FALSE)
38
+ list <- strsplit(text[-1], "\t", fixed = TRUE)
39
+ a <- sapply(list, function(x) x[1])
40
+ b <- sapply(list, function(x) x[2])
41
+ d <- sapply(list, function(x) 1 - (as.numeric(x[3]) / 100))
42
+ save(a, b, d, file = "miga-project.rda")
43
+
44
+ non_self <- a != b
45
+ if(sum(non_self) > 0) {
46
+ h <- hist((1 - d[non_self]) * 100, breaks = 100, plot = FALSE)
46
47
  len <- length(h[["breaks"]])
47
48
  write.table(
48
49
  cbind(h[["breaks"]][-len], h[["breaks"]][-1], h[["counts"]]),
data/utils/find-medoid.R CHANGED
@@ -16,15 +16,14 @@ if(Sys.getenv("MIGA") == ""){
16
16
  ))
17
17
  }
18
18
 
19
- find_medoids <- function (ani.df, out, clades) {
20
- if(nrow(ani.df) == 0) return(NULL)
21
- ani.df$d <- 1 - (ani.df$value/100)
22
- dist <- enve.df2dist(ani.df, "a", "b", "d", default.d = max(ani.df$d) * 1.2)
19
+ find_medoids <- function (a, b, d, out, clades) {
20
+ if (length(d) == 0) return(NULL)
21
+ dist <- enve.df2dist(cbind(a, b, d), "a", "b", "d", default.d = max(d) * 1.2)
23
22
  dist <- as.matrix(dist)
24
23
  cl <- read.table(clades, header = FALSE, sep = "\t", as.is = TRUE)[,1]
25
24
  cl.s <- c()
26
25
  medoids <- c()
27
- for(i in cl){
26
+ for (i in cl) {
28
27
  lab <- strsplit(i, ",")[[1]]
29
28
  if(length(lab) == 1) {
30
29
  lab.s <- lab
@@ -44,6 +43,12 @@ find_medoids <- function (ani.df, out, clades) {
44
43
 
45
44
  #= Main
46
45
  cat("Finding Medoids\n")
47
- ani <- readRDS(argv[1])
48
- find_medoids(ani.df = ani, out = argv[2], clades = argv[3])
46
+ if (grepl("\\.rds$", argv[1])) {
47
+ ani <- readRDS(argv[1])
48
+ find_medoids(ani$a, ani$b, 1 - (ani$value / 100),
49
+ out = argv[2], clades = argv[3])
50
+ } else {
51
+ load(argv[1]) # assume .rda
52
+ find_medoids(a, b, d, out = argv[2], clades = argv[3])
53
+ }
49
54
 
@@ -48,9 +48,10 @@ module MiGA::SubcladeRunner::Pipeline
48
48
  # Find genomospecies medoids
49
49
  src = File.expand_path('utils/find-medoid.R', MiGA::MiGA.root_path)
50
50
  dir = opts[:gsp_metric] == 'aai' ? '02.aai' : '03.ani'
51
+ dat = "../../09.distances/#{dir}/miga-project.rda"
52
+ dat = "../../09.distances/#{dir}/miga-project.rds" unless File.exist?(dat)
51
53
  run_cmd([
52
- 'Rscript', src, "../../09.distances/#{dir}/miga-project.rds",
53
- 'miga-project.gsp-medoids', 'miga-project.gsp-clades'
54
+ 'Rscript', src, dat, 'miga-project.gsp-medoids', 'miga-project.gsp-clades'
54
55
  ])
55
56
  if File.exist? 'miga-project.gsp-clades.sorted'
56
57
  File.rename 'miga-project.gsp-clades.sorted', 'miga-project.gsp-clades'
data/utils/subclades.R CHANGED
@@ -338,18 +338,25 @@ ggplotColours <- function (n = 6, h = c(0, 360) + 15, alpha = 1) {
338
338
  }
339
339
 
340
340
  ani_distance <- function (ani_file, sel) {
341
- # Try to locate rds, otherwise read gzipped table
342
- rds <- gsub("\\.txt\\.gz$", ".rds", ani_file)
343
- if (file.exists(rds)) {
344
- sim <- readRDS(rds)
341
+ # Try to locate rda, then rds, and otherwise read gzipped table
342
+ rda <- gsub("\\.txt\\.gz$", ".rda", ani_file)
343
+ if (file.exists(rda)) {
344
+ load(rda) # Should already contain `a`, `b`, and `d` as vectors
345
345
  } else {
346
- sim <- read.table(gzfile(ani_file), sep = "\t", header = TRUE, as.is = TRUE)
347
- }
346
+ rds <- gsub("\\.txt\\.gz$", ".rds", ani_file)
347
+ if (file.exists(rds)) {
348
+ sim <- readRDS(rds)
349
+ } else {
350
+ sim <- read.table(
351
+ gzfile(ani_file), sep = "\t", header = TRUE, as.is = TRUE
352
+ )
353
+ }
348
354
 
349
- # Extract individual variables to deal with very large matrices
350
- a <- sim$a
351
- b <- sim$b
352
- d <- 1 - (sim$value / 100)
355
+ # Extract individual variables to deal with very large matrices
356
+ a <- sim$a
357
+ b <- sim$b
358
+ d <- 1 - (sim$value / 100)
359
+ }
353
360
 
354
361
  # If there is no data, end process
355
362
  if (length(a) == 0) return(NULL)
@@ -359,7 +366,7 @@ ani_distance <- function (ani_file, sel) {
359
366
  if (!is.na(sel) && file.exists(sel)) {
360
367
  say("Filter selection")
361
368
  ids <- read.table(sel, sep = "\t", head = FALSE, as.is = TRUE)[,1]
362
- sel.idx <- which(sim$a %in% ids & sim$b %in% ids)
369
+ sel.idx <- which(a %in% ids & b %in% ids)
363
370
  a <- a[sel.idx]
364
371
  b <- b[sel.idx]
365
372
  d <- d[sel.idx]
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: 1.3.13.10
4
+ version: 1.3.14.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luis M. Rodriguez-R