-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathq2pipe_step3_feature_filtering.sh
executable file
·109 lines (89 loc) · 3.83 KB
/
q2pipe_step3_feature_filtering.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
#!/bin/bash
################################
# #
# Qiime 2 Pipeline #
# By: Patrick Gagne (NRCan) #
# Step 3 - Feature Filtering #
# May 17, 2022 #
# #
################################
exit_on_error(){
echo "Qiime2 command error detected"
echo "Exiting program"
exit 1
}
optionfile=$1
if [ ! $optionfile ] || [ ! -e $optionfile ] || [ ! -r $optionfile ]
then
echo "ERROR: you must specify a valid, accessible qiime2 optionfile"
exit 1
fi
source $optionfile
if [ $TEMPORARY_DIRECTORY ]
then
echo "Overriding default temporary directory to $TEMPORARY_DIRECTORY"
if [ ! -d $TEMPORARY_DIRECTORY ] || [ ! -w $TEMPORARY_DIRECTORY ]
then
echo "ERROR: $TEMPORARY_DIRECTORY does not exist or is read only"
exit 2
fi
export TMPDIR=$TEMPORARY_DIRECTORY
fi
if [ ! $TMPDIR ]
then
export TMPDIR=/tmp
fi
if [ "$APPTAINER_COMMAND" != "" ]
then
echo "DEBUG: Checking temporary folder"
temp_check=$( $APPTAINER_COMMAND mktemp -t Q2PIPE_TEMPFOLDER_CHECK.XXXXXX.temp )
bname=$( basename $temp_check )
if [ ! -e $TMPDIR/$bname ]
then
echo "ERROR: Disparity between Apptainer temporary folder and system temporary folder"
echo "Please make sure both are pointing to the same folder"
exit 5
else
echo "DEBUG: Temporary file check status: OK"
rm $TMPDIR/Q2PIPE_TEMPFOLDER_CHECK.??????.temp
fi
fi
manifest_list=$( echo $MANIFEST_FILE_PATH | sed 's/,/ /g' )
if [ $( echo $manifest_list | wc -w ) -eq 1 ]
then
manifest_name=$( basename $manifest_list | sed 's/\.[^.]*$//' )
cp -v $manifest_name/$manifest_name.table-dada2.qza $ANALYSIS_NAME.table-dada2.qza
cp -v $manifest_name/$manifest_name.rep-seqs-dada2.qza $ANALYSIS_NAME.rep-seqs-dada2.qza
else
if [ ! -e $ANALYSIS_NAME.table-dada2.qza ] || [ ! -e $ANALYSIS_NAME.rep-seqs-dada2.qza ]
then
echo "ERROR: Multiple manifests detected but cannot find $ANALYSIS_NAME.table-dada2.qza or $ANALYSIS_NAME.rep-seqs-dada2.qza"
echo "Step 2.5 Merging must be launch before step 3"
exit 1
fi
fi
if [ $p_min_frequency -eq 0 ] && [ $p_min_samples -eq 0 ]
then
echo "WARNING: both min_frequency and min_samples are equal 0"
echo "All important files will be copies of original files"
cp -v $ANALYSIS_NAME.table-dada2.qza $ANALYSIS_NAME.table-dada2_minfreq"$p_min_frequency"_minsamp"$p_min_samples".qza
cp -v $ANALYSIS_NAME.rep-seqs-dada2.qza $ANALYSIS_NAME.rep-seqs-dada2_minfreq"$p_min_frequency"_minsamp"$p_min_samples".qza
$APPTAINER_COMMAND qiime feature-table summarize \
--i-table $ANALYSIS_NAME.table-dada2_minfreq"$p_min_frequency"_minsamp"$p_min_samples".qza \
--o-visualization $ANALYSIS_NAME.table-dada2_minfreq"$p_min_frequency"_minsamp"$p_min_samples".qzv \
--m-sample-metadata-file $METADATA_FILE_PATH --verbose || exit_on_error
exit 0
fi
$APPTAINER_COMMAND qiime feature-table filter-features \
--i-table $ANALYSIS_NAME.table-dada2.qza \
--p-min-frequency $p_min_frequency \
--p-min-samples $p_min_samples \
--o-filtered-table $ANALYSIS_NAME.table-dada2_minfreq"$p_min_frequency"_minsamp"$p_min_samples".qza --verbose || exit_on_error
$APPTAINER_COMMAND qiime feature-table summarize \
--i-table $ANALYSIS_NAME.table-dada2_minfreq"$p_min_frequency"_minsamp"$p_min_samples".qza \
--o-visualization $ANALYSIS_NAME.table-dada2_minfreq"$p_min_frequency"_minsamp"$p_min_samples".qzv \
--m-sample-metadata-file $METADATA_FILE_PATH --verbose || exit_on_error
$APPTAINER_COMMAND qiime feature-table filter-seqs \
--i-data $ANALYSIS_NAME.rep-seqs-dada2.qza \
--i-table $ANALYSIS_NAME.table-dada2_minfreq"$p_min_frequency"_minsamp"$p_min_samples".qza \
--o-filtered-data $ANALYSIS_NAME.rep-seqs-dada2_minfreq"$p_min_frequency"_minsamp"$p_min_samples".qza --verbose || exit_on_error