Mercurial > repos > richard-burhans > segalign
comparison run_segalign_diagonal_partition @ 0:5c72425b7f1b draft
planemo upload for repository https://github.com/richard-burhans/galaxytools/tree/main/tools/segalign commit 98a4dd44360447aa96d92143384d78e116d7581b
author | richard-burhans |
---|---|
date | Wed, 17 Apr 2024 18:06:54 +0000 |
parents | |
children | 9e34b25a8670 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:5c72425b7f1b |
---|---|
1 #!/usr/bin/env bash | |
2 | |
3 set -o errexit | |
4 set -o nounset | |
5 set -o pipefail | |
6 #set -o xtrace | |
7 | |
8 ## | |
9 ## parse arguments | |
10 ## | |
11 | |
12 SEGALIGN_ARGS=() | |
13 | |
14 MAX_SEGMENT_SIZE="" | |
15 OUTPUT_FILENAME="" | |
16 LASTZ_COMMAND_FILE="lastz_commands.txt" | |
17 HELP=0 | |
18 | |
19 while [[ $# -gt 0 ]]; do | |
20 case $1 in | |
21 --help) | |
22 HELP=1 | |
23 shift | |
24 ;; | |
25 --max_segments) | |
26 MAX_SEGMENT_SIZE="$2" | |
27 shift 2 | |
28 ;; | |
29 --output) | |
30 OUTPUT_FILENAME=$(readlink -f "$2") | |
31 shift 2 | |
32 ;; | |
33 --tool_directory) | |
34 TOOL_DIRECTORY="$2" | |
35 shift 2 | |
36 ;; | |
37 *) | |
38 SEGALIGN_ARGS+=("$1") | |
39 shift | |
40 esac | |
41 done | |
42 | |
43 set -- "${SEGALIGN_ARGS[@]}" | |
44 | |
45 ## | |
46 ## check arguments | |
47 ## | |
48 | |
49 if [[ $# == 0 || "$HELP" == "1" ]]; then | |
50 segalign --help | |
51 exit 0 | |
52 fi | |
53 | |
54 if [[ $# -lt 2 ]]; then | |
55 echo "run_segalign_diagonal_partition: missing target and query sequences" 1>&2 | |
56 exit 1 | |
57 fi | |
58 | |
59 ref_path=$(readlink -f "$1") | |
60 test -e "$ref_path" || { | |
61 echo "run_segalign_diagonal_partition: target file \"$ref_path\" does not exist" 1>&2 | |
62 exit 1 | |
63 } | |
64 query_path=$(readlink -f "$2") | |
65 test -e "$query_path" || { | |
66 echo "run_segalign_diagonal_partition: query file \"$query_path\" does not exist" 1>&2 | |
67 exit 1 | |
68 } | |
69 shift 2 | |
70 | |
71 DATA_FOLDER="data" | |
72 mkdir -p "$DATA_FOLDER" || { | |
73 echo "run_segalign_diagonal_partition: cannont create data directory \"$DATA_FOLDER\"" 1>&2 | |
74 exit 1 | |
75 } | |
76 | |
77 cd $DATA_FOLDER/.. | |
78 echo "" | |
79 echo "Converting fasta files to 2bit format" 1>&2 | |
80 | |
81 ## | |
82 ## convert target and query to 2bit | |
83 ## | |
84 faToTwoBit "$ref_path" "$DATA_FOLDER/ref.2bit" || { | |
85 echo "run_segalign_diagonal_partition: cannot convert \"$ref_path\" to 2bit" 1>&2 | |
86 exit 1 | |
87 } | |
88 faToTwoBit "$query_path" "$DATA_FOLDER/query.2bit" || { | |
89 echo "run_segalign_diagonal_partition: cannont convert \"$ref_path\" to 2bit" 1>&2 | |
90 exit 1 | |
91 } | |
92 | |
93 | |
94 | |
95 time { | |
96 while IFS= read -r line; do | |
97 "$TOOL_DIRECTORY/diagonal_partition.py" $MAX_SEGMENT_SIZE $line >> $LASTZ_COMMAND_FILE | |
98 # segalign sort writes out the partitioned segment files to the working | |
99 # directory and prints the modified lastz commands. | |
100 done < <(stdbuf -oL segalign $ref_path $query_path "${DATA_FOLDER}/" "$@" ) # segalign begins running in this line, | |
101 } 1>&2 # and every newline written to stdout, get assigned to $line which | |
102 # gets sent to diagonal_partition for diagonal partitioning | |
103 | |
104 exit 0 | |
105 |