-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathrun_fcsadaptor.sh
127 lines (109 loc) · 2.8 KB
/
run_fcsadaptor.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/bin/bash
SCRIPT_NAME=$0
DEFAULT_VERSION="0.4.0"
DOCKER_IMAGE=ncbi/fcs-adaptor:${DEFAULT_VERSION}
SINGULARITY_IMAGE=""
CONTAINER_ENGINE="docker"
usage()
{
cat <<EOF
Usage:
$SCRIPT_NAME [options]
Options:
--help
--fasta-input <file> input FASTA file (required)
--output-dir <directory> output path (required)
--image <file> dockerhub address or sif file (required for singularity only)
--container-engine <string> default docker
Taxonomy (exactly one required):
--prok prokaryotes
--euk eukaryotes
EOF
exit $1
}
DOCKER=docker
while [[ $# -gt 0 ]]
do
case $1 in
-h|--help)
echo "usage: "
usage 0
;;
--fasta-input)
FASTA_INPUT="$2"
shift # past argument
;;
--output-dir)
OUTPUT_DIR="$2"
shift
;;
--image)
DOCKER_IMAGE="$2"
SINGULARITY_IMAGE="$2"
shift
;;
--euk)
TAX=--euk
;;
--prok)
TAX=--prok
;;
--container-engine)
CONTAINER_ENGINE=$2
shift
;;
-*)
echo "invalid option : '$1'"
usage 10
;;
*)
echo "$SCRIPT_NAME does not accept any positional arguments"
echo "$@"
usage 10
;;
esac
shift
done
if [[ -z $TAX ]]
then
printf -- "Error: Taxonomy must be specified using --euk or --prok\n"
usage 10
fi
# get full path and expand symlinks
EXPANDED_FASTA=$(readlink -e $FASTA_INPUT)
if [[ $? != 0 ]] ; then
echo "Error: File not found $FASTA_INPUT"; exit 1;
fi
EXPANDED_OUTPUT=$(readlink -e $OUTPUT_DIR)
if [[ $? != 0 ]] ; then
echo "Error: File not found $OUTPUT_DIR"; exit 1;
fi
FASTA_DIRNAME=$(dirname "$EXPANDED_FASTA")
FASTA_FILENAME=$(basename "$EXPANDED_FASTA")
# this only needs set one time, but gives a misleading error message if not done
#gcloud auth configure-docker us-east4-docker.pkg.dev
if [[ ${CONTAINER_ENGINE} == "docker" ]]
then
$DOCKER pull $DOCKER_IMAGE
CONTAINER=run_av_screen_x
function finish {
$DOCKER stop $CONTAINER
$DOCKER rm $CONTAINER
}
trap finish EXIT
$DOCKER run --init --name $CONTAINER --user "$(id -u):$(id -g)" -v $FASTA_DIRNAME:/sample-volume/ \
-v $EXPANDED_OUTPUT:/output-volume/ $DOCKER_IMAGE \
/app/fcs/bin/av_screen_x -o /output-volume/ $TAX /sample-volume/$FASTA_FILENAME
elif [[ ${CONTAINER_ENGINE} == "singularity" ]]
then
if [[ -n "$SINGULARITY_IMAGE" ]]
then
singularity run $CONTAINER --bind $FASTA_DIRNAME:/sample-volume/ \
--bind $EXPANDED_OUTPUT:/output-volume/ $SINGULARITY_IMAGE \
/app/fcs/bin/av_screen_x -o /output-volume/ $TAX /sample-volume/$FASTA_FILENAME
else
echo "--image is required when specifying --container-engine singularity"
fi
else
echo "No container engine ${CONTAINER_ENGINE}"
fi