miga-base 0.7.22.2 → 0.7.25.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -0
  3. data/README.md +1 -1
  4. data/Rakefile +1 -0
  5. data/lib/miga/cli/action/add.rb +10 -8
  6. data/lib/miga/cli/action/classify_wf.rb +12 -11
  7. data/lib/miga/cli/action/derep_wf.rb +3 -9
  8. data/lib/miga/cli/action/edit.rb +0 -1
  9. data/lib/miga/cli/action/find.rb +1 -1
  10. data/lib/miga/cli/action/generic.rb +1 -1
  11. data/lib/miga/cli/action/get.rb +7 -2
  12. data/lib/miga/cli/action/get_db.rb +16 -21
  13. data/lib/miga/cli/action/index_wf.rb +4 -2
  14. data/lib/miga/cli/action/init.rb +93 -144
  15. data/lib/miga/cli/action/init/daemon_helper.rb +1 -2
  16. data/lib/miga/cli/action/init/files_helper.rb +119 -0
  17. data/lib/miga/cli/action/ncbi_get.rb +1 -1
  18. data/lib/miga/cli/action/new.rb +15 -9
  19. data/lib/miga/cli/action/option.rb +63 -0
  20. data/lib/miga/cli/action/preproc_wf.rb +7 -5
  21. data/lib/miga/cli/action/quality_wf.rb +3 -3
  22. data/lib/miga/cli/action/tax_dist.rb +1 -1
  23. data/lib/miga/cli/action/tax_test.rb +1 -1
  24. data/lib/miga/cli/action/wf.rb +72 -54
  25. data/lib/miga/cli/base.rb +17 -5
  26. data/lib/miga/cli/objects_helper.rb +23 -18
  27. data/lib/miga/common.rb +4 -2
  28. data/lib/miga/common/net.rb +74 -0
  29. data/lib/miga/common/with_option.rb +83 -0
  30. data/lib/miga/common/with_result.rb +3 -2
  31. data/lib/miga/dataset/base.rb +20 -2
  32. data/lib/miga/dataset/result.rb +5 -3
  33. data/lib/miga/metadata.rb +25 -13
  34. data/lib/miga/project/base.rb +82 -2
  35. data/lib/miga/project/result.rb +4 -4
  36. data/lib/miga/result.rb +18 -15
  37. data/lib/miga/result/stats.rb +2 -2
  38. data/lib/miga/version.rb +4 -2
  39. data/scripts/essential_genes.bash +18 -3
  40. data/scripts/miga.bash +8 -2
  41. data/scripts/mytaxa.bash +6 -5
  42. data/scripts/mytaxa_scan.bash +8 -7
  43. data/scripts/ogs.bash +2 -3
  44. data/scripts/ssu.bash +16 -2
  45. data/test/dataset_test.rb +5 -5
  46. data/test/lair_test.rb +1 -2
  47. data/test/net_test.rb +34 -0
  48. data/test/result_test.rb +22 -0
  49. data/test/with_option_test.rb +115 -0
  50. data/utils/FastAAI/00.Libraries/01.SCG_HMMs/Archaea_SCG.hmm +41964 -0
  51. data/utils/FastAAI/00.Libraries/01.SCG_HMMs/Bacteria_SCG.hmm +32439 -0
  52. data/utils/FastAAI/00.Libraries/01.SCG_HMMs/Complete_SCG_DB.hmm +62056 -0
  53. data/utils/FastAAI/FastAAI/FastAAI +1336 -0
  54. data/utils/FastAAI/README.md +84 -0
  55. data/utils/FastAAI/kAAI_v1.0_virus.py +1296 -0
  56. data/utils/cleanup-databases.rb +1 -2
  57. data/utils/distance/base.rb +9 -0
  58. data/utils/distance/commands.rb +183 -81
  59. data/utils/distance/database.rb +69 -10
  60. data/utils/distance/pipeline.rb +15 -21
  61. data/utils/distance/runner.rb +27 -49
  62. data/utils/distance/temporal.rb +4 -2
  63. data/utils/distances.rb +2 -2
  64. data/utils/index_metadata.rb +1 -2
  65. data/utils/requirements.txt +6 -5
  66. data/utils/subclade/runner.rb +9 -10
  67. metadata +15 -3
@@ -31,9 +31,9 @@ module MiGA::Project::Result
31
31
  ##
32
32
  # Is this +task+ to be bypassed?
33
33
  def ignore_task?(task)
34
- metadata["run_#{task}"] == false ||
35
- (!is_clade? && @@INCLADE_TASKS.include?(task) &&
36
- metadata["run_#{task}"] != true)
34
+ return true if metadata["run_#{task}"] == false
35
+
36
+ !clade? && @@INCLADE_TASKS.include?(task) && metadata["run_#{task}"] != true
37
37
  end
38
38
 
39
39
  ##
@@ -74,7 +74,7 @@ module MiGA::Project::Result
74
74
  return r
75
75
  end
76
76
  return nil unless result_files_exist?(base, %w[.proposed-clades])
77
- unless is_clade? ||
77
+ unless clade? ||
78
78
  result_files_exist?(
79
79
  base, %w[.pdf .classif .medoids .class.tsv .class.nwk]
80
80
  )
data/lib/miga/result.rb CHANGED
@@ -1,5 +1,4 @@
1
- # @package MiGA
2
- # @license Artistic-2.0
1
+ # frozen_string_literal: true
3
2
 
4
3
  require 'miga/result/dates'
5
4
  require 'miga/result/source'
@@ -29,13 +28,17 @@ class MiGA::Result < MiGA::MiGA
29
28
  MiGA::Result.new(path)
30
29
  end
31
30
 
32
- def create(path, force = false, &blk)
31
+ ##
32
+ # Check if +path+ describes a result and otherwise create
33
+ # it using the passed block. If +force+, ignore existing
34
+ # JSON in +path+ if any.
35
+ def create(path, force = false)
33
36
  FileUtils.rm(path) if force && File.exist?(path)
34
- r_pre = self.load(path)
37
+ r_pre = load(path)
35
38
  return r_pre unless r_pre.nil?
36
39
 
37
40
  yield
38
- self.load(path)
41
+ load(path)
39
42
  end
40
43
  end
41
44
 
@@ -49,7 +52,7 @@ class MiGA::Result < MiGA::MiGA
49
52
  # Load or create the MiGA::Result described by the JSON file +path+
50
53
  def initialize(path)
51
54
  @path = File.absolute_path(path)
52
- MiGA::Result.exist?(@path) ? self.load : create
55
+ MiGA::Result.exist?(@path) ? load : create
53
56
  end
54
57
 
55
58
  ##
@@ -162,7 +165,7 @@ class MiGA::Result < MiGA::MiGA
162
165
  File.unlink s
163
166
  end
164
167
  MiGA::Json.generate(data, path)
165
- self.load
168
+ load
166
169
  end
167
170
 
168
171
  ##
@@ -182,10 +185,9 @@ class MiGA::Result < MiGA::MiGA
182
185
  # Unlink result by removing the .done and .start timestamps and the
183
186
  # .json descriptor, but don't remove any other associated files
184
187
  def unlink
185
- %i(start done).each do |i|
186
- f = path(i) and File.exists?(f) and File.unlink(f)
188
+ %i[start done json].each do |i|
189
+ f = path(i) and File.exist?(f) and File.unlink(f)
187
190
  end
188
- File.unlink path
189
191
  end
190
192
 
191
193
  ##
@@ -201,13 +203,14 @@ class MiGA::Result < MiGA::MiGA
201
203
 
202
204
  @data[:files] ||= {}
203
205
  self[:files].each do |k, files|
204
- files = [files] unless files.kind_of? Array
206
+ files = [files] unless files.is_a? Array
205
207
  files.each do |file|
206
208
  case blk.arity
207
- when 1; blk.call(file)
208
- when 2; blk.call(k, file)
209
- when 3; blk.call(k, file, File.expand_path(file, dir))
210
- else; raise "Wrong number of arguments: #{blk.arity} for 1..3"
209
+ when 1 then blk.call(file)
210
+ when 2 then blk.call(k, file)
211
+ when 3 then blk.call(k, file, File.expand_path(file, dir))
212
+ else
213
+ raise "Wrong number of arguments: #{blk.arity} for 1..3"
211
214
  end
212
215
  end
213
216
  end
@@ -118,7 +118,7 @@ module MiGA::Result::Stats
118
118
 
119
119
  def compute_stats_essential_genes
120
120
  stats = {}
121
- if source.is_multi?
121
+ if source.multi?
122
122
  stats = { median_copies: 0, mean_copies: 0 }
123
123
  File.open(file_path(:report), 'r') do |fh|
124
124
  fh.each_line do |ln|
@@ -151,7 +151,7 @@ module MiGA::Result::Stats
151
151
  source.save
152
152
 
153
153
  # Inactivate low-quality datasets
154
- min_qual = (project.metadata[:min_qual] || 25)
154
+ min_qual = project.option(:min_qual)
155
155
  if min_qual != 'no' && stats[:quality] < min_qual
156
156
  source.inactivate! 'Low quality genome'
157
157
  end
data/lib/miga/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'date'
2
4
 
3
5
  ##
@@ -8,7 +10,7 @@ module MiGA
8
10
  # - Float representing the major.minor version.
9
11
  # - Integer representing gem releases of the current version.
10
12
  # - Integer representing minor changes that require new version number.
11
- VERSION = [0.7, 22, 2]
13
+ VERSION = [0.7, 25, 2].freeze
12
14
 
13
15
  ##
14
16
  # Nickname for the current major.minor version.
@@ -16,7 +18,7 @@ module MiGA
16
18
 
17
19
  ##
18
20
  # Date of the current gem release.
19
- VERSION_DATE = Date.new(2021, 1, 30)
21
+ VERSION_DATE = Date.new(2021, 2, 25)
20
22
 
21
23
  ##
22
24
  # Reference of MiGA.
@@ -24,18 +24,33 @@ fi
24
24
  mkdir "${DATASET}.ess"
25
25
  TYPE=$(miga ls -P "$PROJECT" -D "$DATASET" \
26
26
  --metadata "type" | awk '{print $2}')
27
- COLL=$(miga about -P "$PROJECT" -m ess_coll)
28
- [[ "$COLL" == "?" ]] && COLL=dupont_2012
27
+ COLL=$(miga option -P "$PROJECT" --key ess_coll)
29
28
  if [[ "$TYPE" == "metagenome" || "$TYPE" == "virome" ]] ; then
30
29
  FLAGS="--metagenome"
31
30
  else
32
- FLAGS="--alignments ${DATASET}.ess/proteins.aln"
31
+ FLAGS=""
33
32
  fi
34
33
  HMM.essential.rb \
35
34
  -i "$FAA" -o "${DATASET}.ess.faa" -m "${DATASET}.ess/" \
36
35
  -t "$CORES" -r "$DATASET" --collection "$COLL" $FLAGS \
37
36
  > "${DATASET}.ess/log"
38
37
 
38
+ # Index for FastAAI
39
+ NOMULTI=$(miga list_datasets -P "$PROJECT" -D "$DATASET" --no-multi \
40
+ | wc -l | awk '{print $1}')
41
+ if [[ "$NOMULTI" -eq "1" ]] ; then
42
+ if [[ "$FAA" == *.gz ]] ; then
43
+ gzip -cd "$FAA" > "${DATASET}.faix"
44
+ else
45
+ cp "$FAA" "${DATASET}.faix"
46
+ fi
47
+ FastAAI --qp "${DATASET}.faix" --output "${DATASET}.faix" \
48
+ --ext ".faix" --index --input-paths --all-vs-all --threads "$CORES"
49
+ rm "${DATASET}.faix"
50
+ rm "${DATASET}.faix.hmm"
51
+ rm "${DATASET}.faix.hmm.filt"
52
+ fi
53
+
39
54
  # Reduce files
40
55
  if exists "$DATASET".ess/*.faa ; then
41
56
  ( cd "${DATASET}.ess" \
data/scripts/miga.bash CHANGED
@@ -1,12 +1,17 @@
1
1
  #!/bin/bash
2
+
3
+ # Setup environment
2
4
  set -e
3
- #MIGA=${MIGA:-$(cd "$(dirname "$0")/.."; pwd)}
4
5
  MIGA_HOME=${MIGA_HOME:-"$HOME"}
6
+ SCRIPT=${SCRIPT:-$(basename "$0" .bash)}
5
7
  # shellcheck source=/dev/null
6
8
  . "$MIGA_HOME/.miga_rc"
9
+
10
+ # Ensure submodules are first in PATH
7
11
  export PATH="$MIGA/bin:$MIGA/utils/enveomics/Scripts:$PATH"
8
- SCRIPT=${SCRIPT:-$(basename "$0" .bash)}
12
+ export PATH="$MIGA/utils/FastAAI/FastAAI:$PATH"
9
13
 
14
+ # Ancillary functions
10
15
  function exists { [[ -e "$1" ]] ; }
11
16
  function fx_exists { [[ $(type -t "$1") == "function" ]] ; }
12
17
  function miga_start_project_step {
@@ -28,6 +33,7 @@ function miga_end_project_step {
28
33
  miga add_result -P "$PROJECT" -r "$SCRIPT" -f
29
34
  }
30
35
 
36
+ # Environment header
31
37
  if [[ "$SCRIPT" != "d" && "$SCRIPT" != "p" ]] ; then
32
38
  echo ""
33
39
  echo "######[ $SCRIPT ]######"
data/scripts/mytaxa.bash CHANGED
@@ -14,15 +14,16 @@ if [[ "$MIGA_MYTAXA" == "no" ]] ; then
14
14
  echo "This system doesn't currently support MyTaxa." \
15
15
  > "$DATASET.nomytaxa.txt"
16
16
  else
17
- MT=$(dirname -- "$(which MyTaxa)")
18
-
19
17
  # Check type of dataset
20
18
  MULTI=$(miga list_datasets -P "$PROJECT" -D "$DATASET" --multi \
21
19
  | wc -l | awk '{print $1}')
22
20
  if [[ "$MULTI" -eq "1" ]] ; then
23
21
  # Check requirements
24
- if [[ ! -e "$MT/AllGenomes.faa.dmnd" ]] ; then
25
- echo "Cannot locate the database: $MT/AllGenomes.faa.dmnd:" \
22
+ MT=$(dirname -- "$(which MyTaxa)")
23
+ DB="$MIGA_HOME/.miga_db/AllGenomes.faa.dmnd"
24
+ [[ -e "$DB" ]] || DB="$MT/AllGenomes.faa.dmnd"
25
+ if [[ ! -e "$DB" ]] ; then
26
+ echo "Cannot locate the database: AllGenomes.faa.dmnd:" \
26
27
  "no such file or directory" >&2
27
28
  exit 1
28
29
  fi
@@ -40,7 +41,7 @@ else
40
41
  # Execute search
41
42
  FAA="../../../06.cds/$DATASET.faa"
42
43
  [[ -s "$FAA" ]] || FAA="${FAA}.gz"
43
- diamond blastp -q "$FAA" -d "$MT/AllGenomes.faa" \
44
+ diamond blastp -q "$FAA" -d "$DB" \
44
45
  -a "$DATASET.daa" -k 5 -p "$CORES" --min-score 60
45
46
  diamond view -a "$DATASET.daa" -o "$DATASET.blast"
46
47
 
@@ -5,7 +5,6 @@ SCRIPT="mytaxa_scan"
5
5
  # shellcheck source=scripts/miga.bash
6
6
  . "$MIGA/scripts/miga.bash" || exit 1
7
7
  DIR="$PROJECT/data/07.annotation/03.qa/02.mytaxa_scan"
8
- [[ -d "$DIR" ]] || mkdir -p "$DIR"
9
8
  cd "$DIR"
10
9
 
11
10
  # Initialize
@@ -14,17 +13,16 @@ if [[ "$MIGA_MYTAXA" == "no" ]] ; then
14
13
  echo "This system doesn't currently support MyTaxa." \
15
14
  > "$DATASET.nomytaxa.txt"
16
15
  else
17
- MT=$(dirname -- "$(which MyTaxa)")
18
- TMPDIR=$(mktemp -d /tmp/MiGA.XXXXXXXXXXXX)
19
- trap "rm -rf '$TMPDIR'; exit" SIGHUP SIGINT SIGTERM
20
-
21
16
  # Check type of dataset
22
17
  NOMULTI=$(miga list_datasets -P "$PROJECT" -D "$DATASET" --no-multi \
23
18
  | wc -l | awk '{print $1}')
24
19
  if [[ "$NOMULTI" -eq "1" ]] ; then
25
20
  # Check requirements
21
+ MT=$(dirname -- "$(which MyTaxa)")
22
+ DB="$MIGA_HOME/.miga_db/AllGenomes.faa.dmnd"
23
+ [[ -e "$DB" ]] || DB="$MT/AllGenomes.faa.dmnd"
26
24
  if [[ ! -e "$MT/AllGenomes.faa.dmnd" ]] ; then
27
- echo "Cannot locate the database: $MT/AllGenomes.faa.dmnd:" \
25
+ echo "Cannot locate the database: AllGenomes.faa.dmnd:" \
28
26
  "no such file or directory" >&2
29
27
  exit 1
30
28
  fi
@@ -39,13 +37,16 @@ else
39
37
  exit 1
40
38
  fi
41
39
 
40
+ TMPDIR=$(mktemp -d /tmp/MiGA.XXXXXXXXXXXX)
41
+ trap "rm -rf '$TMPDIR'; exit" SIGHUP SIGINT SIGTERM
42
+
42
43
  FAA="../../../06.cds/$DATASET.faa"
43
44
  [[ -s "$FAA" ]] || FAA="${FAA}.gz"
44
45
  if [[ ! -s "$DATASET.mytaxa" ]] ; then
45
46
  # Execute search
46
47
  if [[ ! -s "$DATASET.blast" ]] ; then
47
48
  diamond blastp -q "$FAA" -a "$DATASET.daa" -t "$TMPDIR" \
48
- -d "$MT/AllGenomes.faa" -k 5 -p "$CORES" --min-score 60
49
+ -d "$DB" -k 5 -p "$CORES" --min-score 60
49
50
  diamond view -a "$DATASET.daa" -o "$DATASET.blast" -t "$TMPDIR"
50
51
  fi
51
52
 
data/scripts/ogs.bash CHANGED
@@ -12,8 +12,7 @@ miga_start_project_step "$DIR"
12
12
  DS=$(miga ls -P "$PROJECT" --ref --no-multi)
13
13
 
14
14
  if [[ -n $DS ]] ; then
15
- MIN_ID=$(miga about -P "$PROJECT" -m ogs_identity)
16
- [[ $MIN_ID == "?" ]] && MIN_ID=80
15
+ MIN_ID=$(miga option -P "$PROJECT" --key ogs_identity)
17
16
  if [[ ! -s miga-project.ogs ]] ; then
18
17
  # Extract RBMs
19
18
  if [[ ! -s miga-project.abc ]] ; then
@@ -34,7 +33,7 @@ if [[ -n $DS ]] ; then
34
33
 
35
34
  # Estimate OGs and Clean RBMs
36
35
  ogs.mcl.rb -o miga-project.ogs --abc miga-project.abc -t "$CORES"
37
- if [[ $(miga about -P "$PROJECT" -m clean_ogs) == "false" ]] ; then
36
+ if [[ $(miga option -P "$PROJECT" --key clean_ogs) == "false" ]] ; then
38
37
  gzip -9 miga-project.abc
39
38
  else
40
39
  rm miga-project.abc
data/scripts/ssu.bash CHANGED
@@ -16,6 +16,7 @@ if [[ -s $fa ]] ; then
16
16
  # Run barrnap
17
17
  barrnap --quiet --threads "$CORES" "$fa" | grep "^##gff\\|;product=16S " \
18
18
  > "$DATASET.ssu.gff"
19
+
19
20
  # Extract
20
21
  bedtools getfasta -s "-fi" "$fa" -bed "$DATASET.ssu.gff" \
21
22
  -fo "$DATASET.ssu.all.fa"
@@ -24,9 +25,22 @@ if [[ -s $fa ]] ; then
24
25
  FastA.filter.pl "$DATASET.ssu.fa.id" "$DATASET.ssu.all.fa" > "$DATASET.ssu.fa"
25
26
  rm "$DATASET.ssu.fa.id"
26
27
  [[ -e "$fa.fai" ]] && rm "$fa.fai"
28
+
29
+ # RDP classifier
30
+ if [[ "$MIGA_RDP" == "yes" && -s "$DATASET.ssu.all.fa" ]] ; then
31
+ java -jar "$MIGA_HOME/.miga_db/classifier.jar" classify \
32
+ -c 0.8 -f fixrank -g 16srrna -o "$DATASET.rdp.tsv" \
33
+ "$DATASET.ssu.all.fa"
34
+ echo "# Version: $(perl -pe 's/.*://' \
35
+ < "$MIGA_HOME/.miga_db/classifier.version.txt" \
36
+ | grep . | paste - - | perl -pe 's/\t/; /')" \
37
+ >> "$DATASET.rdp.tsv"
38
+ fi
39
+
27
40
  # Gzip
28
- gzip -9 -f "$DATASET.ssu.gff"
29
- gzip -9 -f "$DATASET.ssu.all.fa"
41
+ for x in ssu.gff ssu.all.fa rdp.tsv ; do
42
+ [[ -e "${DATASET}.${x}" ]] && gzip -9 -f "${DATASET}.${x}"
43
+ done
30
44
  fi
31
45
 
32
46
  # Finalize
data/test/dataset_test.rb CHANGED
@@ -29,7 +29,7 @@ class DatasetTest < Test::Unit::TestCase
29
29
  assert_raise { MiGA::Dataset.new(project, 'dataset-1') }
30
30
  assert_equal(project, dataset.project)
31
31
  assert_equal('dataset0', dataset.name)
32
- assert_predicate(dataset, :is_ref?)
32
+ assert_predicate(dataset, :ref?)
33
33
  assert_equal(MiGA::Metadata, dataset.metadata.class)
34
34
  assert_equal(:incomplete, dataset.status)
35
35
  end
@@ -38,14 +38,14 @@ class DatasetTest < Test::Unit::TestCase
38
38
  d2 = project.add_dataset('ds_save')
39
39
  assert_respond_to(d2, :save)
40
40
  d2.save
41
- assert_not_predicate(d2, :is_multi?)
42
- assert_not_predicate(d2, :is_nonmulti?)
41
+ assert_not_predicate(d2, :multi?)
42
+ assert_not_predicate(d2, :nonmulti?)
43
43
  assert_nil(d2.metadata[:type])
44
44
  d2.metadata[:type] = :metagenome
45
45
  d2.save
46
46
  assert_equal(:metagenome, d2.metadata[:type])
47
- assert_predicate(d2, :is_multi?)
48
- assert_not_predicate(d2, :is_nonmulti?)
47
+ assert_predicate(d2, :multi?)
48
+ assert_not_predicate(d2, :nonmulti?)
49
49
  end
50
50
 
51
51
  def test_remove
data/test/lair_test.rb CHANGED
@@ -75,10 +75,9 @@ class LairTest < Test::Unit::TestCase
75
75
  assert_predicate(d, :active?)
76
76
  end
77
77
 
78
- out = capture_stderr { lair.terminate_daemons }.string
78
+ out = capture_stderr { lair.terminate_daemons ; sleep(2) }.string
79
79
  assert_match(/Probing MiGA::Daemon/, out)
80
80
  assert_match(/Sending termination message/, out)
81
- sleep(2)
82
81
  assert_not_predicate(d, :active?)
83
82
 
84
83
  out = capture_stderr { assert { lair.daemon_loop } }.string
data/test/net_test.rb ADDED
@@ -0,0 +1,34 @@
1
+ require 'test_helper'
2
+
3
+ class FormatTest < Test::Unit::TestCase
4
+ include TestHelper
5
+
6
+ def test_known_hosts
7
+ m = MiGA::MiGA
8
+ assert_not_nil(m.known_hosts(:miga_db))
9
+ assert_not_nil(m.known_hosts('miga_db'))
10
+ assert_not_nil(m.known_hosts(:miga_dist))
11
+ assert_raise { m.known_kosts(:not_a_host) }
12
+ end
13
+
14
+ def test_remote_connection
15
+ declare_remote_access
16
+ m = MiGA::MiGA
17
+ assert_raise { m.remote_connection(:bad_descriptor) }
18
+ assert_raise { m.remote_connection('http://microbial-genomes.org/') }
19
+ c = m.remote_connection(:miga_db)
20
+ assert_equal(Net::FTP, c.class)
21
+ c.close
22
+ end
23
+
24
+ def test_download_file_ftp
25
+ declare_remote_access
26
+ m = MiGA::MiGA
27
+ f = tmpfile('t/test.txt')
28
+ d = File.dirname(f)
29
+ assert(!Dir.exist?(d))
30
+ m.download_file_ftp(:miga_online_ftp, 'test.txt', f)
31
+ assert(Dir.exist?(d))
32
+ assert_equal('miga', File.read(f).chomp)
33
+ end
34
+ end
data/test/result_test.rb CHANGED
@@ -38,6 +38,28 @@ class ResultTest < Test::Unit::TestCase
38
38
  assert_instance_of(MiGA::Result, r)
39
39
  end
40
40
 
41
+ def test_unlink
42
+ r = project.add_result(:clade_finding)
43
+ path = r.path
44
+ done = r.path(:done)
45
+ data = r.file_path(:empty)
46
+ assert(File.exist?(path))
47
+ assert(File.exist?(done))
48
+ assert(File.exist?(data))
49
+ r.unlink
50
+ assert(!File.exist?(path))
51
+ assert(!File.exist?(done))
52
+ assert(File.exist?(data))
53
+ end
54
+
55
+ def test_remove
56
+ r = project.add_result(:clade_finding)
57
+ data = r.file_path(:empty)
58
+ assert(File.exist?(data))
59
+ r.remove!
60
+ assert(!File.exist?(data))
61
+ end
62
+
41
63
  def test_result_source
42
64
  r = dataset.add_result(:trimmed_reads)
43
65
  assert_equal(dataset.name, r.source.name)