miga-base 0.3.1.2 → 0.3.1.3

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
  SHA1:
3
- metadata.gz: 787c36c0ff7eb3a77d1b6fd4dd73015b4b49850e
4
- data.tar.gz: 2a4ec0d82f8be2bb8e486d3d5410d909b01f3522
3
+ metadata.gz: 6d05cad62382523776174b6300e3a3cc8cbf87b6
4
+ data.tar.gz: 71db2e7e0d361c770f978ab265d862e52cd30727
5
5
  SHA512:
6
- metadata.gz: 71bf56e6cbfdeb36d3f19c9a4ea4aaac8160537ca3b7a95c6bff44d83e07298f8df3889fd3719eaaf9beae4adf9024b1f53e7a9ff743aadeb802c29664838fed
7
- data.tar.gz: d351e7f4374a7859b3661a554c967f11406dcc696763da6e3b623025412ed9dcfe8bfe46f6125d22ef5ab341df1e978d93b0e54e222462faa55b7746dca931ef
6
+ metadata.gz: 761cf711acb535bacc7e789e16545904b2147f498caf9edcb190f7d2a3a6417bf567d86175bb255ff3d1c353bf7b9eaffdc50f9fb998458f2db81d91286a5217
7
+ data.tar.gz: 91bdc8ddbb06407ea78b120a96823dd46efb5521f85423a5840b0f2e72771f9d67c6ccf8291fd6e7033ebd711a0d1c32c5c48ad2f4e98179ec4d36d108b91347
data/actions/doctor.rb ADDED
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # @package MiGA
4
+ # @license Artistic-2.0
5
+
6
+ o = {q:true, v:false}
7
+ OptionParser.new do |opt|
8
+ opt_banner(opt)
9
+ opt_object(opt, o, [:project])
10
+ opt.on("-v", "--verbose",
11
+ "Print additional information on advance."){ |v| o[:v]=v }
12
+ opt_common(opt, o)
13
+ end.parse!
14
+
15
+ ##=> Main <=
16
+ opt_require(o, project:"-P")
17
+
18
+ $stderr.puts "Loading project" unless o[:q]
19
+ p = MiGA::Project.load(o[:project])
20
+ raise "Impossible to load project: #{o[:project]}" if p.nil?
21
+
22
+ [:ani, :aai].each do |dist|
23
+ r = p.result("#{dist}_distances")
24
+ next if r.nil?
25
+ $stderr.puts "o Checking #{dist} table for consistent datasets" unless o[:q]
26
+ ok = true
27
+ fix = {}
28
+ Zlib::GzipReader.open(r.file_path(:matrix)) do |fh|
29
+ fh.each_line do |ln|
30
+ next if $.==1
31
+ r = ln.split("\t")
32
+ if p.dataset(r[1]).nil? or p.dataset(r[2]).nil?
33
+ fix[r[2]] = true unless p.dataset(r[2]).nil?
34
+ fix[r[1]] = true unless p.dataset(r[1]).nil?
35
+ ok = false
36
+ end
37
+ end
38
+ end
39
+
40
+ $stderr.puts " - Fixing #{fix.size} datasets" unless fix.empty? or o[:q]
41
+ fix.keys.each do |d_n|
42
+ $stderr.puts " > Fixing #{d_n}." if o[:v]
43
+ p.dataset(d_n).cleanup_distances!
44
+ end
45
+
46
+ unless ok
47
+ $stderr.puts " - Removing tables, recompute" unless o[:q]
48
+ r.remove!
49
+ end
50
+ end
51
+
52
+ $stderr.puts "o Looking for outdated files in results" unless o[:q]
53
+ p.each_dataset do |d|
54
+ d.each_result do |r_k, r|
55
+ ok = true
56
+ r.each_file do |_f_sym, _f_rel, f_abs|
57
+ unless File.exist? f_abs
58
+ ok = false
59
+ break
60
+ end
61
+ end
62
+ unless ok
63
+ $stderr.puts " - Registering again #{d.name}:#{r_k}" if o[:v]
64
+ d.add_result(r_k, true, force:true)
65
+ end
66
+ end
67
+ end
68
+
69
+ #$stderr.puts "o Looking for unarchived essential genes." unless o[:q]
70
+ #p.each_dataset do |d|
71
+ # TODO: Check unarchived protein files
72
+ #end
73
+
74
+ #$stderr.puts "o Checking for taxonomy/distances consistency" unless o[:q]
75
+ # TODO: Find 95%ANI clusters with entries from different species
76
+
77
+ $stderr.puts "Done" unless o[:q]
78
+
data/bin/miga CHANGED
@@ -15,9 +15,10 @@ $task_desc = {
15
15
  new: "Creates an empty MiGA project.",
16
16
  about: "Displays information about a MiGA project.",
17
17
  plugins: "Lists or (un)installs plugins in a MiGA project.",
18
+ doctor: "Performs consistency checks on a MiGA project.",
18
19
  # Datasets
19
20
  add: "Creates an empty dataset in a pre-existing MiGA project.",
20
- get: "Creates an empty dataset in a pre-existing MiGA project.",
21
+ get: "Downloads a dataset from public databases into a MiGA project.",
21
22
  rm: "Removes a dataset from an MiGA project.",
22
23
  find: "Finds unregistered datasets based on result files.",
23
24
  ln: "Link datasets (including results) from one project to another.",
@@ -71,7 +71,7 @@ class MiGA::RemoteDataset < MiGA::MiGA
71
71
  end
72
72
 
73
73
  ##
74
- # Download data usint a REST method from the +universe+ in the database +db+
74
+ # Download data using a REST method from the +universe+ in the database +db+
75
75
  # with IDs +ids+ and in +format+. Returns the doc as String.
76
76
  def self.download_rest(universe, db, ids, format)
77
77
  u = @@UNIVERSE[universe]
@@ -85,10 +85,12 @@ class MiGA::RemoteDataset < MiGA::MiGA
85
85
  end
86
86
 
87
87
  ##
88
- # Download data usint a REST method from the +universe+ in the database +db+
88
+ # Download data using a GET request from the +universe+ in the database +db+
89
89
  # with IDs +ids+ and in +format+. Returns the doc as String.
90
90
  def self.download_net(universe, db, ids, format)
91
- url = sprintf(@@UNIVERSE[universe][:url], db, ids.join(","), format, map_to)
91
+ u = @@UNIVERSE[universe]
92
+ map_to = u[:dbs][db].nil? ? nil : u[:dbs][db][:map_to]
93
+ url = sprintf(u[:url], db, ids.join(","), format, map_to)
92
94
  doc = ""
93
95
  @timeout_try = 0
94
96
  begin
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, 1, 2]
13
+ VERSION = [0.3, 1, 3]
14
14
 
15
15
  ##
16
16
  # Nickname for the current major.minor version.
@@ -18,7 +18,7 @@ module MiGA
18
18
 
19
19
  ##
20
20
  # Date of the current gem release.
21
- VERSION_DATE = Date.new(2017, 11, 22)
21
+ VERSION_DATE = Date.today
22
22
 
23
23
  ##
24
24
  # Reference of MiGA.
@@ -38,4 +38,26 @@ class RemoteDatasetTest < Test::Unit::TestCase
38
38
  assert_equal("Lentivirus", tx[:g])
39
39
  end
40
40
 
41
+ def test_net_ftp
42
+ cjac = "ftp://ftp.ebi.ac.uk/pub/databases/ena/tsa/public/ga/GAPJ01.fasta.gz"
43
+ n = "Cjac_L14"
44
+ rd = MiGA::RemoteDataset.new(cjac, :assembly_gz, :web)
45
+ assert_equal([cjac], rd.ids)
46
+ omit_if(!$remote_tests, "Remote access is error-prone.")
47
+ p = $p1
48
+ assert_nil(p.dataset(n))
49
+ rd.save_to(p, n)
50
+ p.add_dataset(n)
51
+ assert_equal(MiGA::Dataset, p.dataset(n).class)
52
+ assert_equal(MiGA::Result, p.dataset(n).result(:assembly).class)
53
+ end
54
+
55
+ # This test is too expensive (too much time to run it!)
56
+ #def test_net_timeout
57
+ # omit_if(!$remote_tests, "Remote access is error-prone.")
58
+ # bad = "ftp://example.com/miga"
59
+ # rd = MiGA::RemoteDataset.new(bad, :assembly, :web)
60
+ # assert_raise(Net::ReadTimeout) { rd.save_to($p1, "bad") }
61
+ #end
62
+
41
63
  end
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.1.2
4
+ version: 0.3.1.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: 2017-11-22 00:00:00.000000000 Z
11
+ date: 2017-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -123,6 +123,7 @@ files:
123
123
  - actions/add_result.rb
124
124
  - actions/daemon.rb
125
125
  - actions/date.rb
126
+ - actions/doctor.rb
126
127
  - actions/files.rb
127
128
  - actions/find.rb
128
129
  - actions/get.rb