miga-base 0.3.6.1 → 0.3.6.2

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: c629b49cedd42f76fd8c466ecbc561e915dcaeef9dbbc2140f66300ac21c4e86
4
- data.tar.gz: 2174cd7e010340ea865b7ec251a9d8b2823a059bbcec782924052a5da0c0a247
3
+ metadata.gz: 18d4ed2342a1b2d1e1b35b1bbb060a79bd573af5cdc9c286fe9dc9d7b7b9c6aa
4
+ data.tar.gz: 723c593505c7a54c26316862d0a5eef7072dbd2de174154517f7cb14a8bd3bae
5
5
  SHA512:
6
- metadata.gz: f20e4c7312402beec67de7a458356f76bd932edbeadffdee83061d040c8eaaddf31ada6304873638237ca299b806054e7de9656ecfebaeaa7e8e5ddb83710a93
7
- data.tar.gz: 5dcae9006b7b84d75ce05019f9ac3f6defe4305c52f574a7c3426a3f8ee098ee4cd0ecf0968d5669066886fbc77185cd477ea265df5509eaf66733e2d4dfb421
6
+ metadata.gz: d955e1011f1f02730adb0fdf689740cb494b15552fccc07ce86c4427170f42f599a87fc527512809af99d0d7365fb7a5af55c101e87e7b16df013e3e648781e7
7
+ data.tar.gz: 63fa2a296df01ba78e281be1bf4fed252bdad7959d355d5b112228b25f71a79e1a6af1094a623967eaaf69431fb440529b481a9b5b9a06ff90c6660a22d2c73f
data/actions/init.rb CHANGED
@@ -87,7 +87,7 @@ if File.exist? o[:config]
87
87
  o[:config] = File.expand_path o[:config]
88
88
  $stderr.puts "Found bash configuration script: #{o[:config]}."
89
89
  rc_fh.puts "MIGA_STARTUP='#{o[:config]}'"
90
- rc_fh.puts "source \"$MIGA_STARTUP\""
90
+ rc_fh.puts ". \"$MIGA_STARTUP\""
91
91
  end
92
92
  $stderr.puts ""
93
93
 
@@ -108,7 +108,7 @@ File.open(File.expand_path("utils/requirements.txt", miga), "r") do |fh|
108
108
  path = nil
109
109
  loop do
110
110
  if File.exist? o[:config]
111
- d_path = File.dirname(`source "#{o[:config]}" && which "#{r[1]}"`)
111
+ d_path = File.dirname(`. "#{o[:config]}" && which "#{r[1]}"`)
112
112
  else
113
113
  d_path = File.dirname(`which "#{r[1]}"`)
114
114
  end
data/lib/miga/daemon.rb CHANGED
@@ -86,10 +86,26 @@ class MiGA::Daemon < MiGA::MiGA
86
86
  def report_status
87
87
  f = File.open(File.expand_path('daemon/status.json', project.path), 'w')
88
88
  f.print JSON.pretty_generate(
89
- jobs_running:@jobs_running, jobs_to_run:@jobs_to_run)
89
+ jobs_running: @jobs_running, jobs_to_run: @jobs_to_run)
90
90
  f.close
91
91
  end
92
92
 
93
+ ##
94
+ # Load the status of a previous instance.
95
+ def load_status
96
+ f_path = File.expand_path('daemon/status.json', project.path)
97
+ return unless File.size? f_path
98
+ status = JSON.parse(File.read(f_path), symbolize_names: true)
99
+ status.keys.each do |i|
100
+ status[i].map! do |j|
101
+ j.tap { |k| k[:ds] = project.dataset(k[:ds_name]) unless k[:ds].nil? }
102
+ end
103
+ end
104
+ @jobs_to_run = status[:jobs_to_run]
105
+ @jobs_running = status[:jobs_running]
106
+ purge!
107
+ end
108
+
93
109
  ##
94
110
  # Traverse datasets
95
111
  def check_datasets
@@ -192,15 +208,16 @@ class MiGA::Daemon < MiGA::MiGA
192
208
  ##
193
209
  # Run one loop step. Returns a Boolean indicating if the loop should continue.
194
210
  def in_loop
211
+ declare_alive
212
+ project.load
195
213
  if loop_i == -1
196
214
  say '-----------------------------------'
197
215
  say 'MiGA:%s launched.' % project.name
198
216
  say '-----------------------------------'
217
+ load_status
199
218
  @loop_i = 0
200
219
  end
201
220
  @loop_i += 1
202
- declare_alive
203
- project.load
204
221
  check_datasets
205
222
  check_project
206
223
  flush!
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.3, 6, 1]
13
+ VERSION = [0.3, 6, 2]
14
14
 
15
15
  ##
16
16
  # Nickname for the current major.minor version.
@@ -14,17 +14,17 @@ module MiGA::DistanceRunner::Commands
14
14
  end
15
15
  # Full AAI
16
16
  aai_cmd(
17
- tmp_file("proteins.fa"), target.result(:cds).file_path(:proteins),
17
+ tmp_file('proteins.fa'), target.result(:cds).file_path(:proteins),
18
18
  dataset.name, target.name, tmp_dbs[:aai]).tap{ checkpoint :aai }
19
19
  end
20
20
 
21
21
  ##
22
22
  # Estimates AAI against +target+ using hAAI
23
23
  def haai(target)
24
- haai = aai_cmd(tmp_file("ess_genes.fa"),
24
+ haai = aai_cmd(tmp_file('ess_genes.fa'),
25
25
  target.result(:essential_genes).file_path(:ess_genes),
26
26
  dataset.name, target.name, tmp_dbs[:haai],
27
- aai_save_rbm: "no-save-rbm", aai_p: opts[:haai_p])
27
+ aai_save_rbm: 'no-save-rbm', aai_p: opts[:haai_p])
28
28
  checkpoint :haai
29
29
  return nil if haai.nil? or haai.zero? or haai > 90.0
30
30
  aai = 100.0 - Math.exp(2.435076 + 0.4275193*Math.log(100.0-haai))
@@ -32,6 +32,7 @@ module MiGA::DistanceRunner::Commands
32
32
  conn.execute "insert into aai values(?, ?, ?, 0, 0, 0)",
33
33
  [dataset.name, target.name, aai]
34
34
  end
35
+ checkpoint :aai
35
36
  aai
36
37
  end
37
38
 
@@ -39,7 +40,7 @@ module MiGA::DistanceRunner::Commands
39
40
  # Calculates ANI against +target+
40
41
  def ani(target)
41
42
  # Check if the request makes sense
42
- t = tmp_file("largecontigs.fa")
43
+ t = tmp_file('largecontigs.fa')
43
44
  r = target.result(:assembly)
44
45
  return nil if r.nil? or !File.size?(t)
45
46
  # Check if it's been calculated
@@ -64,9 +64,9 @@ module MiGA::DistanceRunner::Pipeline
64
64
  # Get taxonomy of closest relative
65
65
  from_ref_project = (project != ref_project)
66
66
  res_dir = from_ref_project ?
67
- File.expand_path("data/09.distances/05.taxonomy", project.path) : home
67
+ File.expand_path('data/09.distances/05.taxonomy', project.path) : home
68
68
  Dir.mkdir res_dir unless Dir.exist? res_dir
69
- File.open(File.expand_path("#{dataset.name}.done", res_dir), "w") do |fh|
69
+ File.open(File.expand_path("#{dataset.name}.done", res_dir), 'w') do |fh|
70
70
  fh.puts Time.now.to_s
71
71
  end
72
72
  dataset.add_result(from_ref_project ? :taxonomy : :distances, true)
@@ -75,25 +75,28 @@ module MiGA::DistanceRunner::Pipeline
75
75
  tax = ref_project.dataset(cr[0][0]).metadata[:tax] || {}
76
76
  # Run the test for each rank
77
77
  r = MiGA::TaxDist.aai_pvalues(cr[0][1], :intax).map do |k,v|
78
- sig = ""
79
- [0.5,0.1,0.05,0.01].each{ |i| sig << "*" if v<i }
80
- [MiGA::Taxonomy.LONG_RANKS[k], (tax[k] || "?"), v, sig]
78
+ sig = ''
79
+ [0.5,0.1,0.05,0.01].each{ |i| sig << '*' if v<i }
80
+ [MiGA::Taxonomy.LONG_RANKS[k], (tax[k] || '?'), v, sig]
81
81
  end
82
82
  # Save test
83
83
  File.open(File.expand_path("#{dataset.name}.intax.txt", home), "w") do |fh|
84
84
  fh.puts "Closest relative: #{cr[0][0]} with AAI: #{cr[0][1]}."
85
- fh.puts ""
85
+ fh.puts ''
86
86
  fh.puts MiGA::MiGA.tabulate(%w[Rank Taxonomy P-value Signif.], r)
87
- fh.puts ""
88
- fh.puts "Significance at p-value below: *0.5, **0.1, ***0.05, ****0.01."
87
+ fh.puts ''
88
+ fh.puts 'Significance at p-value below: *0.5, **0.1, ***0.05, ****0.01.'
89
89
  end
90
90
  return r
91
91
  end
92
92
 
93
93
  # Transfer the taxonomy to the current dataset
94
94
  def transfer_taxonomy(tax)
95
+ return if tax.nil?
95
96
  pval = (project.metadata[:tax_pvalue] || 0.05).to_f
96
- tax_a = tax.select{ |i| i[1]!="?" && i[2]<=pval }.map { |i| i[0,2].join(":") }
97
+ tax_a = tax.
98
+ select { |i| i[1] != '?' && i[2] <= pval }.
99
+ map { |i| i[0,2].join(':') }
97
100
  dataset.metadata[:tax] = MiGA::Taxonomy.new(tax_a)
98
101
  dataset.save
99
102
  end
data/utils/find-medoid.R CHANGED
@@ -7,8 +7,12 @@
7
7
  #= Load stuff
8
8
  argv <- commandArgs(trailingOnly=T)
9
9
  suppressPackageStartupMessages(library(ape))
10
+ suppressPackageStartupMessages(library(enveomics.R))
10
11
 
11
- find_medoids <- function(dist, out, clades) {
12
+ find_medoids <- function(ani.df, out, clades) {
13
+ if(nrow(ani.df)==0) return(NULL)
14
+ ani.df$d <- 1 - (ani.df$value/100)
15
+ dist <- enve.df2dist(ani.df, 'a', 'b', 'd', default.d = max(ani.df$d)*1.2)
12
16
  dist <- as.matrix(dist)
13
17
  cl <- read.table(clades, header = FALSE, sep = '\t', as.is = TRUE)[,1]
14
18
  medoids <- c()
@@ -27,5 +31,5 @@ find_medoids <- function(dist, out, clades) {
27
31
 
28
32
  #= Main
29
33
  load(argv[1])
30
- find_medoids(dist = ani.d, out = argv[2], clades = argv[3])
34
+ find_medoids(ani.df = ani, out = argv[2], clades = argv[3])
31
35
 
@@ -33,11 +33,9 @@ module MiGA::SubcladeRunner::Pipeline
33
33
  end
34
34
 
35
35
  # Find species medoids
36
- if File.size? 'miga-project.dist.rdata'
37
- src = File.expand_path('utils/find-medoid.R', MiGA::MiGA.root_path)
38
- `Rscript '#{src}' miga-project.dist.rdata \
39
- miga-project.ani95-medoids miga-project.ani95-clades`
40
- end
36
+ src = File.expand_path('utils/find-medoid.R', MiGA::MiGA.root_path)
37
+ `Rscript '#{src}' ../../09.distances/03.ani/miga-project.Rdata \
38
+ miga-project.ani95-medoids miga-project.ani95-clades`
41
39
 
42
40
  # Propose clades
43
41
  ofh = File.open('miga-project.proposed-clades', 'w')
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: 0.3.6.1
4
+ version: 0.3.6.2
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: 2018-11-28 00:00:00.000000000 Z
11
+ date: 2018-12-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: daemons