1008 lines
57 KiB
Bash
Executable File
1008 lines
57 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#
|
|
# dna - Is a fasta file to ascii art converter that adapts to terminal sizes.
|
|
# Based on https://biosyntax.org/drawHelix.sh By A. Babaian <artem@rRNA.ca>
|
|
#
|
|
|
|
usage() {
|
|
usage_text=$(cat <<'END_HEREDOC'
|
|
Usage:
|
|
THIB_S_SCRIPT [-f <file>] [-t <A|B|Z>] [-c <number>] [-s <decimal>]
|
|
|
|
A script to print an ascii DNA helix given a Fasta file.
|
|
|
|
Options:
|
|
-f file Defaults to demo. The file in Fasta format to read.
|
|
-t type Defaults to "B". The type of DNA.
|
|
-c columns Defaults to column number. Size of the ascii helix.
|
|
-s speed Defaults to 0.1 seconds
|
|
|
|
The demo is a cytochrome b [Elephas maximus maximus].
|
|
END_HEREDOC
|
|
);
|
|
thiB_S_script=`basename "$0"`
|
|
echo "${usage_text/THIB_S_SCRIPT/$thiB_S_script}"
|
|
exit 1;
|
|
}
|
|
|
|
# Options
|
|
|
|
fasta_data='>gi|5524211|gb|AAD44166.1| cytochrome b [Elephas maximus maximus]
|
|
LCLYTHIGRNIYYGSYLYSETWNTGIMLLLITMATAFMGYVLPWGQMSFWGATVITNLFSAIPYIGTNLV
|
|
EWIWGGFSVDKATLNRFFAFHFILPFTMVALAGVHLTFLHETGSNNPLGLTSDSDKIPFHPYYTIKDFLG
|
|
LLILILLLLLLALLSPDMLGDPDNHMPADPLNTPLHIKPEWYFLFAYAILRSVPNKLGGVLALFLSIVIL
|
|
GLMPFLHTSKHRSMMLRPLSQALFWTLTMDLLTLTWIGSQPVEYPYTIIGQMASILYFSIILAFLPIAGX
|
|
IENY';
|
|
|
|
type="B";
|
|
cols=$(tput cols);
|
|
speed="0.05s"
|
|
file="elephas-maximus-maximus.fasta"
|
|
|
|
while getopts ":f:t:c:s:" o; do
|
|
case "${o}" in
|
|
f) # Fasta file
|
|
file=${OPTARG}
|
|
if ! [ -f "${OPTARG}" ]; then
|
|
echo -e "\nFile not found: ${OPTARG}\n";
|
|
usage;
|
|
else
|
|
fasta_data=$(< "${OPTARG}");
|
|
fi
|
|
;;
|
|
t) # DNA Type
|
|
type=${OPTARG}
|
|
re='[Aa|Bb|Zz]'
|
|
if ! [[ $type =~ $re ]]; then
|
|
echo -e "\nERROR: Invalid DNA type: ${type}\n";
|
|
usage;
|
|
else
|
|
type=$(echo "${type}" | tr '[:lower:]' '[:upper:]');
|
|
fi
|
|
;;
|
|
c) # Columns
|
|
cols="${OPTARG}"
|
|
re='^[0-9]+$'
|
|
if ! [[ $cols =~ $re ]] ; then
|
|
echo -e "\nERROR: Columns must be a number.\n";
|
|
usage;
|
|
fi
|
|
;;
|
|
s) # Speed
|
|
speed="${OPTARG}"
|
|
re='^[0-9]+(\.[0-9]+)?$'
|
|
if ! [[ $speed =~ $re ]] ; then
|
|
echo -e "\nERROR: Speed must be a number.\n";
|
|
usage;
|
|
else
|
|
speed="${speed}s"
|
|
fi
|
|
;;
|
|
?)
|
|
usage;
|
|
;;
|
|
esac
|
|
done
|
|
shift $((OPTIND-1))
|
|
|
|
# Terminal Color Palette
|
|
|
|
reset="$(tput sgr0)"
|
|
if [[ $(tput colors) == '256' ]]; then
|
|
# Color Definitions (ANSI_256 Supported)
|
|
colA="$(tput setaf 10)"
|
|
colT="$(tput setaf 33)"
|
|
colG="$(tput setaf 214)"
|
|
colC="$(tput setaf 9)"
|
|
colN="$(tput setaf 87)"
|
|
else
|
|
# System Color Definitions (System Colors)
|
|
colA="$(tput setaf 2)"
|
|
colT="$(tput setaf 4)"
|
|
colG="$(tput setaf 3)"
|
|
colC="$(tput setaf 1)"
|
|
colN="$(tput setaf 6)"
|
|
fi
|
|
|
|
# OUTPUT
|
|
|
|
echo "file = ${file}"
|
|
echo "type = ${type}"
|
|
echo "speed = ${speed}"
|
|
echo "columns = ${cols}"
|
|
echo ""
|
|
|
|
# ASCII Art
|
|
|
|
A_XS_bond_weak='_';
|
|
A_XS_bond_strong='-';
|
|
A_XS_bond_unknown='_';
|
|
|
|
A_XS_base_T='T';
|
|
A_XS_base_C='C';
|
|
A_XS_base_G='G';
|
|
A_XS_base_A='A';
|
|
A_XS_base_X='X';
|
|
A_XS_base_E='E';
|
|
A_XS_base_O='O';
|
|
|
|
A_XS_frame_00=$(cat <<'HEREDOC'
|
|
..../$WB BC$\...
|
|
HEREDOC
|
|
);
|
|
A_XS_frame_01=$(cat <<'HEREDOC'
|
|
...($WBB BBC$)..
|
|
HEREDOC
|
|
);
|
|
A_XS_frame_02=$(cat <<'HEREDOC'
|
|
...\$CBB BBW$/...
|
|
HEREDOC
|
|
);
|
|
A_XS_frame_03=$(cat <<'HEREDOC'
|
|
....\$WB BC$/....
|
|
HEREDOC
|
|
);
|
|
A_XS_frame_04=$(cat <<'HEREDOC'
|
|
.....\ BC$/......
|
|
HEREDOC
|
|
);
|
|
A_XS_frame_05=$(cat <<'HEREDOC'
|
|
...../ B$W\......
|
|
HEREDOC
|
|
);
|
|
A_XS_frame_06=$(cat <<'HEREDOC'
|
|
..../$CB BW$\....
|
|
HEREDOC
|
|
);
|
|
A_XS_frame_07=$(cat <<'HEREDOC'
|
|
...($CBB BBW$\..
|
|
HEREDOC
|
|
);
|
|
A_XS_frame_08=$(cat <<'HEREDOC'
|
|
....\$CBB BBW$).
|
|
HEREDOC
|
|
);
|
|
A_XS_frame_09=$(cat <<'HEREDOC'
|
|
.....\$CB BW$/...
|
|
HEREDOC
|
|
);
|
|
A_XS_frame_10=$(cat <<'HEREDOC'
|
|
.......\ W$/.....
|
|
HEREDOC
|
|
);
|
|
A_XS_frame_11=$(cat <<'HEREDOC'
|
|
....../$W/C$\....
|
|
HEREDOC
|
|
);
|
|
|
|
B_L_bond_weak='▒';
|
|
B_L_bond_strong='▓';
|
|
B_L_bond_unknown='░';
|
|
|
|
B_L_base_T="\n";
|
|
B_L_base_C="\n";
|
|
B_L_base_G="\n";
|
|
B_L_base_A="\n";
|
|
B_L_base_X="\n";
|
|
B_L_base_E="\n";
|
|
B_L_base_O="\n";
|
|
|
|
B_L_frame_00=$(cat <<'HEREDOC'
|
|
▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓
|
|
▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓ ▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓
|
|
▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓ ▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓ ▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░▒▒▓▓ ▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░▒▒▓▓
|
|
██▒▒▒▒░░░░░░░░░░░░ ░░░░██ ██▒▒▒▒░░░░░░░░░░░░ ░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░██BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB██▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░░░░░██BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB██▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██ ██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██ ██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██ ██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
████▓▓▓▓▓▓▓▓▓▓▓▓████ ████▓▓▓▓▓▓▓▓▓▓▓▓████
|
|
██████████▓▓ ██████████▓▓
|
|
HEREDOC
|
|
);
|
|
B_L_frame_01=$(cat <<'HEREDOC'
|
|
▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓
|
|
▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓ ▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓
|
|
▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓ ▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓ ▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░░░ ░░░░▒▒▓▓ ▓▓▒▒▒▒░░░░░░░░░░░░░ ░░░░▒▒▓▓
|
|
██▒▒▒▒░░░░░░░░░░░░░░ ░░░░██ ██▒▒▒▒░░░░░░░░░░░░ ░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░░░██BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB██▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░░░ ░░░░░░░░██BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB██▓▓▒▒▒▒░░░░░░░░░░░░░ ░░░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██ ██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██ ██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██ ██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
████▓▓▓▓▓▓▓▓▓▓▓▓████ ████▓▓▓▓▓▓▓▓▓▓▓▓████
|
|
██████████▓▓ ██████████▓▓
|
|
HEREDOC
|
|
);
|
|
B_L_frame_02=$(cat <<'HEREDOC'
|
|
▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓
|
|
▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓ ▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓
|
|
▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓ ▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓ ▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░▒▒▓▓ ▓▓▒▒▒▒░░░░░░░░░░░░░ ░░░▒▒▓▓
|
|
██▒▒▒▒░░░░░░░░░░░░░░░░░░ ░░░░██ ██▒▒▒▒░░░░░░░░░░░░ ░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░ ░░░░░░██BBBBBBBBBBBBBBBBBBB██▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██BBBBBBBBBBBBBBBBBBB██▓▓▒▒▒▒░░░░░░░░░░░░░ ░░░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██ ██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██ ██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██BBBBBBBBBBBBBBBBBBB██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██BBBBBBBBBBBBBBBBBBB██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██ ██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
████▓▓▓▓▓▓▓▓▓▓▓▓████ ████▓▓▓▓▓▓▓▓▓▓▓▓████
|
|
██████████▓▓ ██████████▓▓
|
|
HEREDOC
|
|
);
|
|
B_L_frame_03=$(cat <<'HEREDOC'
|
|
▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓
|
|
▓▓▓▓░░░░░░░░░░░░▒▒ ▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓
|
|
▓▓▒░░░░░░░░░░░░░░░░░▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒░░░░░░░░░░░░░░░▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒░░░░░░░░░░░░░░░▓▓▒▒▒▒░░░░░░░░░░░░░ ░░▒▒▓▓
|
|
██▒▒▒░░░░░░░░░░░░░░░██▒▒▒▒░░░░░░░░░░░░ ░░░░██
|
|
██▓▓▒▒▒░░░░░░░░░░░░░██▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░██
|
|
██▓▓▒▒▒░░░░░░░░░░░░░██▓▓▒▒▒▒░░░░░░░░░░░░░ ░░░░░░░██
|
|
██▓▓▒▒▒░░░░░░░░░░░░░██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒▒░░░░░░░░░░░██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒░░░░░░░░░░░██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒░░░░░░░░░██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒░░░░░░░░░██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒░░░░░░██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒░░░░░░██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒░░░░░░░░██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
████▓▓▓▓▓▓░░░░░░░▒▒▒████▓▓▓▓▓▓▓▓▓▓▓▓████
|
|
██████▒▒▒▒▒▒ ██████████▓▓
|
|
HEREDOC
|
|
);
|
|
B_L_frame_04=$(cat <<'HEREDOC'
|
|
▓▓▓▓▓▓▓▓▓▓▓▓
|
|
▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓
|
|
▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░▒▒▓▓
|
|
██▒▒▒▒░░░░░░░░░░░░ ░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
████▓▓▓▓▓▓▓▓▓▓▓▓████
|
|
██████████▓▓
|
|
HEREDOC
|
|
);
|
|
B_L_frame_05=$(cat <<'HEREDOC'
|
|
▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓
|
|
▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓▓▓░░░░░░░░░░░░▒▒▓▓▓▓
|
|
▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░▒▒▓▓░░░░░░░░░░░░░░░░▒▒▓▓
|
|
██▒▒▒▒░░░░░░░░░░░░ ░░░░██░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░██░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░░░██░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██░░░░░░░░░░░░░░▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
████▓▓▓▓▓▓▓▓▓▓▓▓████░░░░░▒▒▒▓▓▓▓▓▓▓▓████
|
|
██████████▓▓ ██████████▓▓
|
|
HEREDOC
|
|
);
|
|
B_L_frame_06=$(cat <<'HEREDOC'
|
|
▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓
|
|
▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓ ▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓
|
|
▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓ ▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓ ▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░▒▒▓▓ ▓▓▒▒▒▒░░░░░░░░░░░░░░░░░ ░░░▒▒▓▓
|
|
██▒▒▒▒░░░░░░░░░░░░░░ ░░░░██ ██▒▒▒▒░░░░░░░░░░░░░░░ ░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░░░██BBBBBBBBBBBBBBBBBBBBBBBB██▓▓▒▒▒▒░░░░░░░░░░░░░░░ ░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░░░░░██BBBBBBBBBBBBBBBBBBBBBBBB██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░ ░░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██ ██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██ ██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██BBBBBBBBBBBBBBBBBBBBBBBB██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██BBBBBBBBBBBBBBBBBBBBBBBB██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██ ██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
████▓▓▓▓▓▓▓▓▓▓▓▓████ ████▓▓▓▓▓▓▓▓▓▓▓▓████
|
|
██████████▓▓ ██████████▓▓
|
|
HEREDOC
|
|
);
|
|
B_L_frame_07=$(cat <<'HEREDOC'
|
|
▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓
|
|
▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓ ▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓
|
|
▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓ ▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓ ▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░ ░░░▒▒▓▓ ▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░▒▒▓▓
|
|
██▒▒▒▒░░░░░░░░░░░░ ░░░░██ ██▒▒▒▒░░░░░░░░░░░░░░░░░ ░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░██BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░ ░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░░░██BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██ ██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██ ██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██ ██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
████▓▓▓▓▓▓▓▓▓▓▓▓████ ████▓▓▓▓▓▓▓▓▓▓▓▓████
|
|
██████████▓▓ ██████████▓▓
|
|
HEREDOC
|
|
);
|
|
B_L_frame_08=$(cat <<'HEREDOC'
|
|
▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓
|
|
▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓ ▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓
|
|
▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓ ▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓ ▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░░ ░░░▒▒▓▓ ▓▓▒▒▒▒░░░░░░░░░░░░░ ░░░▒▒▓▓
|
|
██▒▒▒▒░░░░░░░░░░░░ ░░░░░░██ ██▒▒▒▒░░░░░░░░░░░░ ░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░░░░░██BBBBBBBBBBBBBBBBBBBBBBB██▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██BBBBBBBBBBBBBBBBBBBBBBB██▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██ ██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██ ██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██BBBBBBBBBBBBBBBBBBBBBBB██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██BBBBBBBBBBBBBBBBBBBBBBB██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██ ██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██ ██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
████▓▓▓▓▓▓▓▓▓▓▓▓████ ████▓▓▓▓▓▓▓▓▓▓▓▓████
|
|
██████████▓▓ ██████████▓▓
|
|
HEREDOC
|
|
);
|
|
B_L_frame_09=$(cat <<'HEREDOC'
|
|
▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓
|
|
▓▓▓▓░░░░░░░░░░░░▒▒ ▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓
|
|
▓▓▒░░░░░░░░░░░░░░░░░▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒░░░░░░░░░░░░░░░▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒░░░░░░░░░░░░░░░▓▓▒▒▒▒░░░░░░░░░░░░░ ░░▒▒▓▓
|
|
██▒▒▒░░░░░░░░░░░░░░░██▒▒▒▒░░░░░░░░░░░░ ░░░░██
|
|
██▓▓▒▒▒░░░░░░░░░░░░░██▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░██
|
|
██▓▓▒▒▒░░░░░░░░░░░░░██▓▓▒▒▒▒░░░░░░░░░░░░░ ░░░░░░░██
|
|
██▓▓▒▒▒░░░░░░░░░░░░░██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒▒░░░░░░░░░░░██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒░░░░░░░░░░░██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒░░░░░░░░░██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒░░░░░░░░░██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒░░░░░░██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒░░░░░░██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒░░░░░░░░██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
████▓▓▓▓▓▓░░░░░░░▒▒▒████▓▓▓▓▓▓▓▓▓▓▓▓████
|
|
██████▒▒▒▒▒▒ ██████████▓▓
|
|
HEREDOC
|
|
);
|
|
B_L_frame_10=$(cat <<'HEREDOC'
|
|
▓▓▓▓▓▓▓▓▓▓▓▓
|
|
▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓
|
|
▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░▒▒▓▓
|
|
██▒▒▒▒░░░░░░░░░░░░ ░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
████▓▓▓▓▓▓▓▓▓▓▓▓████
|
|
██████████▓▓
|
|
HEREDOC
|
|
);
|
|
B_L_frame_11=$(cat <<'HEREDOC'
|
|
▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓
|
|
▓▓▓▓░░░░░░░░░░▒▒▓▓▓▓▓▓░░░░░░░░░░░░▒▒▓▓▓▓
|
|
▓▓▒▒░░░░░░░░░░░░░░░░░░▓▓░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░▓▓░░░░░░░░░░░░░░░░░░▓▓
|
|
▓▓▒▒▒▒░░░░░░░░░░░░░░ ░░░░▒▒▓▓░░░░░░░░░░░░░░░░▒▒▓▓
|
|
██▒▒▒▒░░░░░░░░░░░░ ░░░░██░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░██░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░ ░░░░░░░░██░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▒▒▒▒▒▒░░░░░░░░░░░░░░░░░░██░░░░░░░░░░░░░░░░░░██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒░░░░░░░░░░▒▒▒▒██░░░░░░░░░░░░░░▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
██▓▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒██░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒██
|
|
████▓▓▓▓▓▓▓▓▓▓▓▓████░░░░░▒▒▒▓▓▓▓▓▓▓▓████
|
|
██████████▓▓ ██████████▓▓
|
|
HEREDOC
|
|
);
|
|
|
|
B_M_bond_weak='=';
|
|
B_M_bond_strong='#';
|
|
B_M_bond_unknown='=';
|
|
|
|
B_M_base_T=$(cat <<'HEREDOC'
|
|
TTTTTTTT
|
|
...TT...
|
|
...TT...
|
|
...TT...
|
|
...TT...
|
|
HEREDOC
|
|
);
|
|
B_M_base_C=$(cat <<'HEREDOC'
|
|
..CCCC.
|
|
.C.....
|
|
C......
|
|
.C.....
|
|
..CCCC.
|
|
HEREDOC
|
|
);
|
|
B_M_base_G=$(cat <<'HEREDOC'
|
|
.GGGGG..
|
|
G.......
|
|
G...GGG.
|
|
G.....G.
|
|
.GGGGG..
|
|
HEREDOC
|
|
);
|
|
B_M_base_A=$(cat <<'HEREDOC'
|
|
..AAAA..
|
|
.A....A.
|
|
AAAAAAAA
|
|
A......A
|
|
A......A
|
|
HEREDOC
|
|
);
|
|
B_M_base_X=$(cat <<'HEREDOC'
|
|
X......X
|
|
.X....X.
|
|
...XX...
|
|
.X....X.
|
|
X......X
|
|
HEREDOC
|
|
);
|
|
B_M_base_E=$(cat <<'HEREDOC'
|
|
EEEEEEE
|
|
E......
|
|
EEEEE..
|
|
E......
|
|
EEEEEEE
|
|
HEREDOC
|
|
);
|
|
B_M_base_O=$(cat <<'HEREDOC'
|
|
..OOOO..
|
|
O......O
|
|
O......O
|
|
O......O
|
|
..OOOO..
|
|
HEREDOC
|
|
);
|
|
|
|
B_M_frame_00=$(cat <<'HEREDOC'
|
|
. ---- . . ---- .
|
|
//WWWWWWWW.\ /.CCCCCCCC\\
|
|
//.WWWWWWWW..\BBBBBBBBBBBBBBBBB/..CCCCCCCC.\\
|
|
((..WWWWWWWW...) (...CCCCCCCC..))
|
|
\\.WWWWWWWW../BBBBBBBBBBBBBBBBB\..CCCCCCCC.//
|
|
\\WWWWWWWW./ \.CCCCCCCC//
|
|
'- .... -' '- .... -'
|
|
HEREDOC
|
|
);
|
|
B_M_frame_01=$(cat <<'HEREDOC'
|
|
. ---- . . ---- .
|
|
//WWWWWWWW.\ /.CCCCCCCC\\
|
|
//.WWWWWWWW..\BBBBBBBBBBBBBBBBBBBBBB/..CCCCCCCC.\\
|
|
((..WWWWWWWW...) (...CCCCCCCC..))
|
|
\\.WWWWWWWW../BBBBBBBBBBBBBBBBBBBBBB\..CCCCCCCC.//
|
|
\\WWWWWWWW./ \.CCCCCCCC//
|
|
'- .... -' '- .... -'
|
|
HEREDOC
|
|
);
|
|
B_M_frame_02=$(cat <<'HEREDOC'
|
|
. ---- . . ---- .
|
|
//WWWWWWWW.\ /.CCCCCCCC\\
|
|
//.WWWWWWWW..\BBBBBBBBBBBBBBBBBBBBBB/..CCCCCCCC.\\
|
|
((..WWWWWWWW...) (...CCCCCCCC..))
|
|
\\.WWWWWWWW../BBBBBBBBBBBBBBBBBBBBBB\..CCCCCCCC.//
|
|
\\WWWWWWWW./ \.CCCCCCCC//
|
|
'- .... -' '- .... -'
|
|
HEREDOC
|
|
);
|
|
B_M_frame_03=$(cat <<'HEREDOC'
|
|
. ---- . . ---- .
|
|
//WWWWWWWW.\ /.CCCCCCCC\\
|
|
//.WWWWWWWW..\BBBBBBBBBBBBBB/..CCCCCCCC.\\
|
|
((..WWWWWWWW...) (...CCCCCCCC..))
|
|
\\.WWWWWWWW../BBBBBBBBBBBBBB\..CCCCCCCC.//
|
|
\\WWWWWWWW./ \.CCCCCCCC//
|
|
'- .... -' '- .... -'
|
|
HEREDOC
|
|
);
|
|
B_M_frame_04=$(cat <<'HEREDOC'
|
|
. ---- . . ---- .
|
|
//WWWWWWWW.\ /.CCCCCCCC\\
|
|
//.WWWWWWWW..\BBBBBB/..CCCCCCCC.\\
|
|
((..WWWWWWWW...) (...CCCCCCCC..))
|
|
\\.WWWWWWWW../BBBBBB\..CCCCCCCC.//
|
|
\\WWWWWWWW./ \.CCCCCCCC//
|
|
'- .... -' '- .... -'
|
|
HEREDOC
|
|
);
|
|
B_M_frame_05=$(cat <<'HEREDOC'
|
|
. ---- .
|
|
/.CCCCCCCC\\
|
|
/..CCCCCCCC.\\
|
|
(...CCCCCCCC..))
|
|
\..CCCCCCCC.//
|
|
\.CCCCCCCC//
|
|
'- .... -'
|
|
HEREDOC
|
|
);
|
|
B_M_frame_06=$(cat <<'HEREDOC'
|
|
. ---- . . ---- .
|
|
//CCCCCCCC.\ /.WWWWWWWW\\
|
|
//.CCCCCCCC..\BBBBBBBBBB/..WWWWWWWW.\\
|
|
((..CCCCCCCC...) (...WWWWWWWW..))
|
|
\\.CCCCCCCC../BBBBBBBBBB\..WWWWWWWW.//
|
|
\\CCCCCCCC./ \.WWWWWWWW//
|
|
'- .... -' '- .... -'
|
|
HEREDOC
|
|
);
|
|
B_M_frame_07=$(cat <<'HEREDOC'
|
|
. ---- . . ---- .
|
|
//CCCCCCCC.\ /.WWWWWWWW\\
|
|
//.CCCCCCCC..\BBBBBBBBBBBBBBBBB/..WWWWWWWW.\\
|
|
((..CCCCCCCC...) (...WWWWWWWW..))
|
|
\\.CCCCCCCC../BBBBBBBBBBBBBBBBB\..WWWWWWWW.//
|
|
\\CCCCCCCC./ \.WWWWWWWW//
|
|
'- .... -' '- .... -'
|
|
HEREDOC
|
|
);
|
|
B_M_frame_08=$(cat <<'HEREDOC'
|
|
. ---- . . ---- .
|
|
//CCCCCCCC.\ /.WWWWWWWW\\
|
|
//.CCCCCCCC..\BBBBBBBBBBBBBBBBBBBBBB/..WWWWWWWW.\\
|
|
((..CCCCCCCC...) (...WWWWWWWW..))
|
|
\\.CCCCCCCC../BBBBBBBBBBBBBBBBBBBBBB\..WWWWWWWW.//
|
|
\\CCCCCCCC./ \.WWWWWWWW//
|
|
'- .... -' '- .... -'
|
|
HEREDOC
|
|
);
|
|
B_M_frame_09=$(cat <<'HEREDOC'
|
|
. ---- . . ---- .
|
|
//CCCCCCCC.\ /.WWWWWWWW\\
|
|
//.CCCCCCCC..\BBBBBBBBBBBBBBBBBB/..WWWWWWWW.\\
|
|
((..CCCCCCCC...) (...WWWWWWWW..))
|
|
\\.CCCCCCCC../BBBBBBBBBBBBBBBBBB\..WWWWWWWW.//
|
|
\\CCCCCCCC./ \.WWWWWWWW//
|
|
'- .... -' '- .... -'
|
|
HEREDOC
|
|
);
|
|
B_M_frame_10=$(cat <<'HEREDOC'
|
|
|
|
. ---- .
|
|
//WWWWWWWW.\
|
|
//.WWWWWWWW..\
|
|
((..WWWWWWWW...)
|
|
\\.WWWWWWWW../
|
|
\\WWWWWWWW./
|
|
'- .... -'
|
|
HEREDOC
|
|
);
|
|
B_M_frame_11=$(cat <<'HEREDOC'
|
|
. ---- . . ---- .
|
|
//WWWWWWWW.\ /.CCCCCCCC\\
|
|
//.WWWWWWWW..\BBBBBBBBBB/..CCCCCCCC.\\
|
|
((..WWWWWWWW...) (...CCCCCCCC..))
|
|
\\.WWWWWWWW../BBBBBBBBBB\..CCCCCCCC.//
|
|
\\WWWWWWWW./ \.CCCCCCCC//
|
|
'- .... -' '- .... -'
|
|
HEREDOC
|
|
);
|
|
|
|
B_S_bond_weak='_';
|
|
B_S_bond_strong=':';
|
|
B_S_bond_unknown='_';
|
|
|
|
B_S_base_T='T';
|
|
B_S_base_C='C';
|
|
B_S_base_G='G';
|
|
B_S_base_A='A';
|
|
B_S_base_X='X';
|
|
B_S_base_E='E';
|
|
B_S_base_O='O';
|
|
|
|
B_S_frame_00=$(cat <<'HEREDOC'
|
|
_/ / \ \_
|
|
/ W \ B / C \
|
|
|| |B| ||
|
|
\ __ / \ __ /
|
|
HEREDOC
|
|
);
|
|
B_S_frame_01=$(cat <<'HEREDOC'
|
|
/ / \ \
|
|
/ W \ BBBBB / C \
|
|
|| |BBBBB| ||
|
|
\ __ / \ __ /
|
|
HEREDOC
|
|
);
|
|
B_S_frame_02=$(cat <<'HEREDOC'
|
|
/ / | |
|
|
/ W \ BBBBBBBB / C \
|
|
|| |BBBBBBBB| ||
|
|
\ __ / \ __ /
|
|
HEREDOC
|
|
);
|
|
B_S_frame_03=$(cat <<'HEREDOC'
|
|
/ / | |
|
|
/ C \ BBBBBBBB / C \
|
|
|| |BBBBBBBB| ||
|
|
\ __ / \ __ /
|
|
HEREDOC
|
|
);
|
|
B_S_frame_04=$(cat <<'HEREDOC'
|
|
| | / /
|
|
/ W \ BBBBBBB / C \
|
|
|| |BBBBBBB| ||
|
|
\ __ / /\ __ /
|
|
HEREDOC
|
|
);
|
|
B_S_frame_05=$(cat <<'HEREDOC'
|
|
\ \ __ / /
|
|
\/ C \/ /
|
|
| ||
|
|
\ __ /
|
|
HEREDOC
|
|
);
|
|
B_S_frame_06=$(cat <<'HEREDOC'
|
|
_/ / \ \_
|
|
/ C \ BB / W \
|
|
|| |BB| ||
|
|
\ __ / \ __ /
|
|
HEREDOC
|
|
);
|
|
B_S_frame_07=$(cat <<'HEREDOC'
|
|
/ / | |
|
|
/ C \ BBBBBB / W \
|
|
|| |BBBBBB| ||
|
|
\ __ / \ __ /
|
|
HEREDOC
|
|
);
|
|
B_S_frame_08=$(cat <<'HEREDOC'
|
|
| | | |
|
|
/ C \ BBBBBBBB / W \
|
|
|| |BBBBBBBB| ||
|
|
\ __ / \ __ /
|
|
HEREDOC
|
|
);
|
|
B_S_frame_09=$(cat <<'HEREDOC'
|
|
| | | |
|
|
/ C \ BBBBBB / W \
|
|
|| |BBBBBB| ||
|
|
\ __ / \ __ /
|
|
HEREDOC
|
|
);
|
|
B_S_frame_10=$(cat <<'HEREDOC'
|
|
| | _/ /
|
|
/ C \ / W \
|
|
|| |BB| ||
|
|
\ __ / \ __ /
|
|
HEREDOC
|
|
);
|
|
B_S_frame_11=$(cat <<'HEREDOC'
|
|
\ \ / /
|
|
/ W \
|
|
|| |
|
|
\ __ /
|
|
HEREDOC
|
|
);
|
|
|
|
B_XS_bond_weak='-';
|
|
B_XS_bond_strong='=';
|
|
B_XS_bond_unknown='-';
|
|
|
|
B_XS_base_T="T";
|
|
B_XS_base_C="C";
|
|
B_XS_base_G="G";
|
|
B_XS_base_A="A";
|
|
B_XS_base_X="X";
|
|
B_XS_base_E="E";
|
|
B_XS_base_O="O";
|
|
|
|
B_XS_frame_00=$(cat <<'HEREDOC'
|
|
... ($W)BBB(C$) .
|
|
HEREDOC
|
|
);
|
|
B_XS_frame_01=$(cat <<'HEREDOC'
|
|
.. ($W)BBBB(C$) .
|
|
HEREDOC
|
|
);
|
|
B_XS_frame_02=$(cat <<'HEREDOC'
|
|
. ($W)BBBB(C$) ..
|
|
HEREDOC
|
|
);
|
|
B_XS_frame_03=$(cat <<'HEREDOC'
|
|
. ($W)BBB(C$) ...
|
|
HEREDOC
|
|
);
|
|
B_XS_frame_04=$(cat <<'HEREDOC'
|
|
... ($W) ........
|
|
HEREDOC
|
|
);
|
|
B_XS_frame_05=$(cat <<'HEREDOC'
|
|
.. ($C)B(W$) ....
|
|
HEREDOC
|
|
);
|
|
B_XS_frame_06=$(cat <<'HEREDOC'
|
|
. ($C)BBB(W$) ...
|
|
HEREDOC
|
|
);
|
|
B_XS_frame_07=$(cat <<'HEREDOC'
|
|
. ($C)BBBB(W$) ..
|
|
HEREDOC
|
|
);
|
|
B_XS_frame_08=$(cat <<'HEREDOC'
|
|
.. ($C)BBBB(W$) .
|
|
HEREDOC
|
|
);
|
|
B_XS_frame_09=$(cat <<'HEREDOC'
|
|
... ($C)BBB(W$) .
|
|
HEREDOC
|
|
);
|
|
B_XS_frame_10=$(cat <<'HEREDOC'
|
|
..... (W$) ......
|
|
HEREDOC
|
|
);
|
|
B_XS_frame_11=$(cat <<'HEREDOC'
|
|
.... ($W)B(C$) ..
|
|
HEREDOC
|
|
);
|
|
|
|
##############
|
|
# Draw Helix #
|
|
##############
|
|
|
|
# Choose Type
|
|
if [ "$type" == "A" ] ; then
|
|
bond_weak="${A_XS_bond_weak}"
|
|
bond_strong="${A_XS_bond_strong}"
|
|
bond_unknown="${A_XS_bond_unknown}"
|
|
|
|
frames=(
|
|
"${A_XS_frame_00}"
|
|
"${A_XS_frame_01}"
|
|
"${A_XS_frame_02}"
|
|
"${A_XS_frame_03}"
|
|
"${A_XS_frame_04}"
|
|
"${A_XS_frame_05}"
|
|
"${A_XS_frame_06}"
|
|
"${A_XS_frame_07}"
|
|
"${A_XS_frame_08}"
|
|
"${A_XS_frame_09}"
|
|
"${A_XS_frame_10}"
|
|
"${A_XS_frame_11}"
|
|
);
|
|
|
|
base_T="${A_XS_base_T}";
|
|
base_C="${A_XS_base_C}";
|
|
base_G="${A_XS_base_G}";
|
|
base_A="${A_XS_base_A}";
|
|
base_X="${A_XS_base_X}";
|
|
base_E="${A_XS_base_E}";
|
|
base_O="${A_XS_base_O}";
|
|
elif [ "$type" == "Z" ] ; then
|
|
echo "Type Z is yet to be unsupported, sorry."
|
|
exit 1
|
|
elif [ "$type" == "B" ] ; then
|
|
# Choose size
|
|
if [ "$cols" -gt 123 ] ; then
|
|
bond_weak="${B_L_bond_weak}"
|
|
bond_strong="${B_L_bond_strong}"
|
|
bond_unknown="${B_L_bond_unknown}"
|
|
|
|
frames=(
|
|
"${B_L_frame_00}"
|
|
"${B_L_frame_01}"
|
|
"${B_L_frame_02}"
|
|
"${B_L_frame_03}"
|
|
"${B_L_frame_04}"
|
|
"${B_L_frame_05}"
|
|
"${B_L_frame_06}"
|
|
"${B_L_frame_07}"
|
|
"${B_L_frame_08}"
|
|
"${B_L_frame_09}"
|
|
"${B_L_frame_10}"
|
|
"${B_L_frame_11}"
|
|
);
|
|
base_T="${B_L_base_T}";
|
|
base_C="${B_L_base_C}";
|
|
base_G="${B_L_base_G}";
|
|
base_A="${B_L_base_A}";
|
|
base_X="${B_L_base_X}";
|
|
base_E="${B_L_base_E}";
|
|
base_O="${B_L_base_O}";
|
|
|
|
elif [ "$cols" -gt 55 ] ; then
|
|
bond_weak="${B_M_bond_weak}"
|
|
bond_strong="${B_M_bond_strong}"
|
|
bond_unknown="${B_M_bond_unknown}"
|
|
|
|
frames=(
|
|
"${B_M_frame_00}"
|
|
"${B_M_frame_01}"
|
|
"${B_M_frame_02}"
|
|
"${B_M_frame_03}"
|
|
"${B_M_frame_04}"
|
|
"${B_M_frame_05}"
|
|
"${B_M_frame_06}"
|
|
"${B_M_frame_07}"
|
|
"${B_M_frame_08}"
|
|
"${B_M_frame_09}"
|
|
"${B_M_frame_10}"
|
|
"${B_M_frame_11}"
|
|
);
|
|
base_T="${B_M_base_T}";
|
|
base_C="${B_M_base_C}";
|
|
base_G="${B_M_base_G}";
|
|
base_A="${B_M_base_A}";
|
|
base_X="${B_M_base_X}";
|
|
base_E="${B_M_base_E}";
|
|
base_O="${B_M_base_O}";
|
|
|
|
elif [ "$cols" -gt 25 ] ; then
|
|
bond_weak="${B_S_bond_weak}"
|
|
bond_strong="${B_S_bond_strong}"
|
|
bond_unknown="${B_S_bond_unknown}"
|
|
|
|
frames=(
|
|
"${B_S_frame_00}"
|
|
"${B_S_frame_01}"
|
|
"${B_S_frame_02}"
|
|
"${B_S_frame_03}"
|
|
"${B_S_frame_04}"
|
|
"${B_S_frame_05}"
|
|
"${B_S_frame_06}"
|
|
"${B_S_frame_07}"
|
|
"${B_S_frame_08}"
|
|
"${B_S_frame_09}"
|
|
"${B_S_frame_10}"
|
|
"${B_S_frame_11}"
|
|
);
|
|
base_T="${B_S_base_T}";
|
|
base_C="${B_S_base_C}";
|
|
base_G="${B_S_base_G}";
|
|
base_A="${B_S_base_A}";
|
|
base_X="${B_S_base_X}";
|
|
base_E="${B_S_base_E}";
|
|
base_O="${B_S_base_O}";
|
|
elif [ "$cols" -gt 15 ] ; then
|
|
bond_weak="${B_XS_bond_weak}"
|
|
bond_strong="${B_XS_bond_strong}"
|
|
bond_unknown="${B_XS_bond_unknown}"
|
|
|
|
frames=(
|
|
"${B_XS_frame_00}"
|
|
"${B_XS_frame_01}"
|
|
"${B_XS_frame_02}"
|
|
"${B_XS_frame_03}"
|
|
"${B_XS_frame_04}"
|
|
"${B_XS_frame_05}"
|
|
"${B_XS_frame_06}"
|
|
"${B_XS_frame_07}"
|
|
"${B_XS_frame_08}"
|
|
"${B_XS_frame_09}"
|
|
"${B_XS_frame_10}"
|
|
"${B_XS_frame_11}"
|
|
);
|
|
base_T="${B_XS_base_T}";
|
|
base_C="${B_XS_base_C}";
|
|
base_G="${B_XS_base_G}";
|
|
base_A="${B_XS_base_A}";
|
|
base_X="${B_XS_base_X}";
|
|
base_E="${B_XS_base_E}";
|
|
base_O="${B_XS_base_O}";
|
|
else
|
|
echo "Not enough space."
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
# Make array with the file data lines
|
|
declare -a data_arr
|
|
while read -r data_line; do
|
|
data_arr+=("$data_line")
|
|
done <<< "$fasta_data"
|
|
|
|
frame_current=0;
|
|
frame_max=11;
|
|
for line in "${data_arr[@]}"
|
|
do
|
|
if [[ $line =~ '^N+$' ]]; then # if all N line; skip
|
|
continue;
|
|
fi
|
|
|
|
for (( fastaIdx=0; fastaIdx<${#line}; fastaIdx++ )); do
|
|
|
|
base="${line:$fastaIdx:1}";
|
|
|
|
# Declare Watson and Crick bases
|
|
if [[ $base =~ [Aa] ]]; then # A
|
|
color="${colA}"
|
|
W="${base_A}"
|
|
C="${base_T}"
|
|
bond="${bond_weak}"
|
|
elif [[ $base =~ [TtUu] ]]; then # T or U
|
|
color="${colT}"
|
|
W="${base_T}"
|
|
C="${base_A}"
|
|
bond="${bond_weak}"
|
|
elif [[ $base =~ [Gg] ]]; then # G
|
|
color="${colG}"
|
|
W="${base_G}"
|
|
C="${base_C}"
|
|
bond="${bond_strong}"
|
|
elif [[ $base =~ [Cc] ]]; then # C
|
|
color="${colC}"
|
|
W="${base_C}"
|
|
C="${base_G}"
|
|
bond="${bond_strong}"
|
|
else # Non-standard base
|
|
color="${colN}"
|
|
W="${base_O}"
|
|
C="${base_X}"
|
|
bond="${bond_unknown}"
|
|
fi
|
|
|
|
SAVEIFS=$IFS # Save current IFS (Internal Field Separator)
|
|
IFS=$'\n' # Change IFS to newline char
|
|
asciiLines=(${frames[$frame_current]})
|
|
cLines=($C)
|
|
wLines=($W)
|
|
IFS=$SAVEIFS # Restore original IFS
|
|
|
|
for (( asciiIdx=0; asciiIdx<${#asciiLines[@]}; asciiIdx++ ))
|
|
do
|
|
cLine="${cLines[$asciiIdx-1]}"
|
|
wLine="${wLines[$asciiIdx-1]}"
|
|
aLine="${color}${asciiLines[$asciiIdx]}${reset}"
|
|
|
|
echo "${aLine}" \
|
|
| sed -r "s/([C]+)/${cLine}/" \
|
|
| sed -r "s/([W]+)/${wLine}/" \
|
|
| sed -r "s/B/${bond}/g";
|
|
done
|
|
# echo "$W $bond $C - $frame_current";
|
|
|
|
sleep "$speed"
|
|
|
|
if [ "$frame_current" == "$frame_max" ] ; then
|
|
frame_current=0;
|
|
else
|
|
frame_current=$(($frame_current+1));
|
|
fi
|
|
done
|
|
done |