miga-base 1.2.14.1 → 1.2.15.0

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: ae083dbb06efae44846887887e0706b0436340aeb7524846478a68867c602b67
4
- data.tar.gz: 78bb2440e073e4d55fe6a439dfa1eddb25c2fa4aad7d06000384de20092ab710
3
+ metadata.gz: 9de962d747353644dddff05181f74c87a3f401df14e81d1810f125c9d1843351
4
+ data.tar.gz: 3dd90251f07976c36adfdabaa603e399bc046f68c14ff83680eb6a6de4219159
5
5
  SHA512:
6
- metadata.gz: 185667da9d0e7dc3849dc851e2f2c6829901bfaee7975c7b249630b660cc41aa40988fcc9e27c3937a6ad533df3135e4d2f2115e7f16e8bd3f25ed9e0533d9f7
7
- data.tar.gz: 77ec658cbfcecda4b32e7a0110b53953220f649f79f4a112c23c510511a4752869af9e3894452335d827311a9b8fedd0c5072860ecff035f1c018aa346c9894f
6
+ metadata.gz: 68f3c9616c1d2ad0fed1f03fc6b1054d428fa8b61999febcf6394d34c261550e203b108d2399a43077d95980b6c623e40799e0bf233cfcc130ff5ef97fdc4e47
7
+ data.tar.gz: e95d549756ad10f86f4abf1761fb763e8ee218ff81d1cf8f6b597c831227482b6e90871800eb38863a8a12ed622b3222385b5f730e3e4103de06aa24753e8a3a
@@ -9,14 +9,18 @@ end
9
9
  module MiGA::Cli::Action::Download::Base
10
10
  def cli_filters(opt)
11
11
  opt.on(
12
- '--blacklist PATH',
13
- 'A file with dataset names to blacklist'
14
- ) { |v| cli[:blacklist] = v }
12
+ '--exclude PATH',
13
+ 'A file with dataset names to exclude'
14
+ ) { |v| cli[:exclude] = v }
15
15
  cli.opt_flag(opt, 'dry', 'Do not download or save the datasets')
16
16
  opt.on(
17
17
  '--ignore-until STRING',
18
18
  'Ignores all datasets until a name is found (useful for large reruns)'
19
19
  ) { |v| cli[:ignore_until] = v }
20
+ opt.on(
21
+ '--ignore-removed',
22
+ 'Ignores entries removed from NCBI (by default fails on removed entries)'
23
+ ) { |v| cli[:ignore_removed] = v }
20
24
  cli.opt_flag(
21
25
  opt, 'get-metadata',
22
26
  'Only download and update metadata for existing datasets', :get_md
@@ -49,10 +53,10 @@ module MiGA::Cli::Action::Download::Base
49
53
  ) { |v| cli[:remote_list] = v }
50
54
  end
51
55
 
52
- def discard_blacklisted(ds)
53
- unless cli[:blacklist].nil?
54
- cli.say "Discarding datasets in #{cli[:blacklist]}"
55
- File.readlines(cli[:blacklist])
56
+ def discard_excluded(ds)
57
+ unless cli[:exclude].nil?
58
+ cli.say "Discarding datasets in #{cli[:exclude]}"
59
+ File.readlines(cli[:exclude])
56
60
  .select { |i| i !~ /^#/ }
57
61
  .map(&:chomp)
58
62
  .each { |i| ds.delete i }
@@ -84,7 +88,11 @@ module MiGA::Cli::Action::Download::Base
84
88
 
85
89
  downloaded += 1
86
90
  unless cli[:dry]
87
- save_entry(name, body, p)
91
+ unless save_entry(name, body, p)
92
+ downloaded -= 1
93
+ d.pop
94
+ next
95
+ end
88
96
  p.save! if cli[:save_every] > 1 && (downloaded % cli[:save_every]).zero?
89
97
  end
90
98
  end
@@ -93,6 +101,9 @@ module MiGA::Cli::Action::Download::Base
93
101
  [d, downloaded]
94
102
  end
95
103
 
104
+ ##
105
+ # Saves the (generic remote) entry identified by +name+ with +body+ into the
106
+ # project +p+, and returns +true+ on success and +false+ otherwise
96
107
  def save_entry(name, body, p)
97
108
  cli.say ' Locating remote dataset'
98
109
  body[:md][:metadata_only] = true if cli[:only_md]
@@ -105,5 +116,9 @@ module MiGA::Cli::Action::Download::Base
105
116
  rd.save_to(p, name, !cli[:query], body[:md])
106
117
  cli.add_metadata(p.add_dataset(name))
107
118
  end
119
+ true
120
+ rescue MiGA::RemoteDataMissingError => e
121
+ raise(e) unless cli[:ignore_removed]
122
+ false
108
123
  end
109
124
  end
@@ -42,7 +42,7 @@ class MiGA::Cli::Action::GtdbGet < MiGA::Cli::Action
42
42
  sanitize_cli
43
43
  p = cli.load_project
44
44
  ds = remote_list
45
- ds = discard_blacklisted(ds)
45
+ ds = discard_excluded(ds)
46
46
  ds = impose_limit(ds)
47
47
  d, downloaded = download_entries(ds, p)
48
48
 
@@ -44,7 +44,7 @@ class MiGA::Cli::Action::NcbiGet < MiGA::Cli::Action
44
44
  sanitize_cli
45
45
  p = cli.load_project
46
46
  ds = remote_list
47
- ds = discard_blacklisted(ds)
47
+ ds = discard_excluded(ds)
48
48
  ds = impose_limit(ds)
49
49
  d, downloaded = download_entries(ds, p)
50
50
 
@@ -9,4 +9,14 @@ module MiGA
9
9
  # An error with a system call
10
10
  class SystemCallError < Error
11
11
  end
12
+
13
+ ##
14
+ # An error with remote data
15
+ class RemoteDataError < Error
16
+ end
17
+
18
+ ##
19
+ # An error caused by missing remote data
20
+ class RemoteDataMissingError < RemoteDataError
21
+ end
12
22
  end
@@ -43,6 +43,12 @@ class MiGA::RemoteDataset
43
43
  # +format+: String, passed to download
44
44
  def ncbi_asm_rest(opts)
45
45
  url_dir = opts[:obj].ncbi_asm_json_doc['ftppath_genbank']
46
+ if url_dir.nil? || url_dir.empty?
47
+ raise MiGA::RemoteDataMissingError.new(
48
+ "Missing ftppath_genbank in NCBI Assembly JSON"
49
+ )
50
+ end
51
+
46
52
  url = "#{url_dir}/#{File.basename url_dir}_genomic.fna.gz"
47
53
  download(
48
54
  :web, :assembly_gz, url,
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, 14, 1].freeze
15
+ VERSION = [1.2, 15, 0].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(2023, 1, 16)
23
+ VERSION_DATE = Date.new(2023, 1, 17)
24
24
 
25
25
  ##
26
26
  # References of MiGA
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.14.1
4
+ version: 1.2.15.0
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: 2023-01-16 00:00:00.000000000 Z
11
+ date: 2023-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: daemons