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.
- checksums.yaml +4 -4
- data/Gemfile +3 -0
- data/README.md +1 -1
- data/Rakefile +1 -0
- data/lib/miga/cli/action/add.rb +10 -8
- data/lib/miga/cli/action/classify_wf.rb +12 -11
- data/lib/miga/cli/action/derep_wf.rb +3 -9
- data/lib/miga/cli/action/edit.rb +0 -1
- data/lib/miga/cli/action/find.rb +1 -1
- data/lib/miga/cli/action/generic.rb +1 -1
- data/lib/miga/cli/action/get.rb +7 -2
- data/lib/miga/cli/action/get_db.rb +16 -21
- data/lib/miga/cli/action/index_wf.rb +4 -2
- data/lib/miga/cli/action/init.rb +93 -144
- data/lib/miga/cli/action/init/daemon_helper.rb +1 -2
- data/lib/miga/cli/action/init/files_helper.rb +119 -0
- data/lib/miga/cli/action/ncbi_get.rb +1 -1
- data/lib/miga/cli/action/new.rb +15 -9
- data/lib/miga/cli/action/option.rb +63 -0
- data/lib/miga/cli/action/preproc_wf.rb +7 -5
- data/lib/miga/cli/action/quality_wf.rb +3 -3
- data/lib/miga/cli/action/tax_dist.rb +1 -1
- data/lib/miga/cli/action/tax_test.rb +1 -1
- data/lib/miga/cli/action/wf.rb +72 -54
- data/lib/miga/cli/base.rb +17 -5
- data/lib/miga/cli/objects_helper.rb +23 -18
- data/lib/miga/common.rb +4 -2
- data/lib/miga/common/net.rb +74 -0
- data/lib/miga/common/with_option.rb +83 -0
- data/lib/miga/common/with_result.rb +3 -2
- data/lib/miga/dataset/base.rb +20 -2
- data/lib/miga/dataset/result.rb +5 -3
- data/lib/miga/metadata.rb +25 -13
- data/lib/miga/project/base.rb +82 -2
- data/lib/miga/project/result.rb +4 -4
- data/lib/miga/result.rb +18 -15
- data/lib/miga/result/stats.rb +2 -2
- data/lib/miga/version.rb +4 -2
- data/scripts/essential_genes.bash +18 -3
- data/scripts/miga.bash +8 -2
- data/scripts/mytaxa.bash +6 -5
- data/scripts/mytaxa_scan.bash +8 -7
- data/scripts/ogs.bash +2 -3
- data/scripts/ssu.bash +16 -2
- data/test/dataset_test.rb +5 -5
- data/test/lair_test.rb +1 -2
- data/test/net_test.rb +34 -0
- data/test/result_test.rb +22 -0
- data/test/with_option_test.rb +115 -0
- data/utils/FastAAI/00.Libraries/01.SCG_HMMs/Archaea_SCG.hmm +41964 -0
- data/utils/FastAAI/00.Libraries/01.SCG_HMMs/Bacteria_SCG.hmm +32439 -0
- data/utils/FastAAI/00.Libraries/01.SCG_HMMs/Complete_SCG_DB.hmm +62056 -0
- data/utils/FastAAI/FastAAI/FastAAI +1336 -0
- data/utils/FastAAI/README.md +84 -0
- data/utils/FastAAI/kAAI_v1.0_virus.py +1296 -0
- data/utils/cleanup-databases.rb +1 -2
- data/utils/distance/base.rb +9 -0
- data/utils/distance/commands.rb +183 -81
- data/utils/distance/database.rb +69 -10
- data/utils/distance/pipeline.rb +15 -21
- data/utils/distance/runner.rb +27 -49
- data/utils/distance/temporal.rb +4 -2
- data/utils/distances.rb +2 -2
- data/utils/index_metadata.rb +1 -2
- data/utils/requirements.txt +6 -5
- data/utils/subclade/runner.rb +9 -10
- metadata +15 -3
data/lib/miga/project/result.rb
CHANGED
@@ -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
|
-
|
36
|
-
|
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
|
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
|
-
#
|
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
|
-
|
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 =
|
37
|
+
r_pre = load(path)
|
35
38
|
return r_pre unless r_pre.nil?
|
36
39
|
|
37
40
|
yield
|
38
|
-
|
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) ?
|
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
|
-
|
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
|
186
|
-
f = path(i) and File.
|
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.
|
206
|
+
files = [files] unless files.is_a? Array
|
205
207
|
files.each do |file|
|
206
208
|
case blk.arity
|
207
|
-
when 1
|
208
|
-
when 2
|
209
|
-
when 3
|
210
|
-
else
|
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
|
data/lib/miga/result/stats.rb
CHANGED
@@ -118,7 +118,7 @@ module MiGA::Result::Stats
|
|
118
118
|
|
119
119
|
def compute_stats_essential_genes
|
120
120
|
stats = {}
|
121
|
-
if source.
|
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 =
|
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,
|
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,
|
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
|
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="
|
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
|
-
|
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
|
-
|
25
|
-
|
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 "$
|
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
|
|
data/scripts/mytaxa_scan.bash
CHANGED
@@ -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:
|
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 "$
|
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
|
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
|
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
|
-
|
29
|
-
|
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, :
|
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, :
|
42
|
-
assert_not_predicate(d2, :
|
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, :
|
48
|
-
assert_not_predicate(d2, :
|
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)
|