aboutsummaryrefslogtreecommitdiff
path: root/scripts/main.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/main.sh')
-rwxr-xr-xscripts/main.sh152
1 files changed, 152 insertions, 0 deletions
diff --git a/scripts/main.sh b/scripts/main.sh
new file mode 100755
index 0000000..612f626
--- /dev/null
+++ b/scripts/main.sh
@@ -0,0 +1,152 @@
+#!/bin/bash
+echo "$(pwd)"
+currentVersion="0.9"
+protein="false"
+ligand="false"
+docking="false"
+visualisations="false"
+interactions="false"
+proteinPath=""
+ligandPath=""
+pdfPath=""
+smile=""
+name=""
+config=""
+
+usage()
+{
+ cat <<EOF
+Curie-CLI
+Description: OwO.
+Usage: curie [flags] or curie [-a] [arg] [-s] [arg]
+ -d Perform Docking using AutoDock Vina
+ -p Visualisations using PyMOL
+ -i Protein-Ligand Interactions using PLIP
+ -s SMILES Code for Ligand
+ -n Name for ligand if using the -s option
+ -r Specify Receptor file path (PDBQT Format Only!)
+ -l Specify Ligand file path (PDBQT Format Only!)
+ -c Specify AutoDock Vina Configuration File (TXT Format Only!)
+ -h Show the help
+ -v Get the tool version
+Examples:
+ ./main.sh -v
+ ./main.sh -v
+EOF
+}
+
+
+while getopts "r:l:s:n:c:vhdip" opt; do
+ case "$opt" in
+ \?) echo "Invalid option: -$OPTARG" >&2
+ exit 1
+ ;;
+ h) usage
+ exit 0
+ ;;
+ v) echo "Version $currentVersion"
+ exit 0
+ ;;
+ u)
+ getConfiguredClient || exit 1
+ checkInternet || exit 1
+ update
+ exit 0
+ ;;
+ d)
+ docking="true"
+ ;;
+ i)
+ interactions="true"
+ ;;
+ p)
+ visualisations="true"
+ ;;
+ s)
+ smile="$OPTARG"
+ ;;
+ n)
+ name="$OPTARG"
+ ;;
+ r)
+ proteinPath="$OPTARG"
+ ;;
+ l)
+ ligandPath="$OPTARG"
+ ;;
+ c)
+ config="$OPTARG"
+ ;;
+ a)
+ artist="true"
+ if [[ "$(echo "$@" | grep -Eo "\-s")" == "-s" ]];then song="true";fi # wont go through both options if arg spaced and not quoted this solves that issue (dont need this but once had bug on system where it was necessary)
+ if [[ "$(echo "$@" | grep -Eo "\-f")" == "-f" ]];then filePath=$(echo "$@" | grep -Eo "\-f [ a-z A-Z / 0-9 . \ ]*[ -]?" | sed s/-f//g | sed s/-//g | sed s/^" "//g);fi
+ ;;
+ #s)
+ # song="true"
+ # if [[ "$(echo "$@" | grep -Eo "\-a")" == "-a" ]];then artist="true";fi # wont go through both options if arg spaced and not quoted this solves that issue (dont need this but once had bug on system where it was necessary)
+ # if [[ "$(echo "$@" | grep -Eo "\-f")" == "-f" ]];then filePath=$(echo "$@" | grep -Eo "\-f [ a-z A-Z / 0-9 . \ ]*[ -]?" | sed s/-f//g | sed s/-//g | sed s/^" "//g);fi
+ # ;;
+ :) echo "Option -$OPTARG requires an argument." >&2
+ exit 1
+ ;;
+ esac
+done
+
+if [[ $# == "0" ]]; then
+ usage ## if calling the tool with no flags and args chances are you want to return usage
+ exit 0
+elif [[ $# == "1" ]]; then
+ if [[ $1 == "update" ]]; then
+ getConfiguredClient || exit 1
+ checkInternet || exit 1
+ update || exit 1
+ exit 0
+ elif [[ $1 == "help" ]]; then
+ usage
+ exit 0
+ fi
+fi
+
+if [[ $docking == "true" ]]; then
+ if [[ $proteinPath != "" ]]; then
+ if [[ $smile != "" ]] || [[ $ligandPath != "" ]]; then
+ if [[ $config == "" ]]; then
+ echo "Configuration File Not Specified!"
+ exit 1
+ else
+ dockingCheck="true"
+ fi
+ else
+ echo "WTF Only Protein!"
+ exit 1
+ fi
+ fi
+fi
+
+if [[ $smile != "" ]]; then
+ if [[ $name == "" ]]; then
+ name="ligand"
+ obabel -:"$smile" --gen3d -opdbqt -O$name.pdbqt
+ ligandPath="$name.pdbqt"
+ fi
+fi
+
+if [[ $dockingCheck == "true" ]]; then
+ echo ""
+ vina --receptor $proteinPath --ligand $ligandPath --config $config
+fi
+
+if [[ $visualisations == "true" ]]; then
+ file=$(echo "$ligandPath" | cut -f 1 -d '.')
+ python3 /src/scripts/quick-ligand-protein.py -p $proteinPath -l "$(echo $file)_out.pdbqt"
+fi
+
+if [[ $interactions == "true" ]]; then
+ python3 /src/scripts/get-best.py -p $proteinPath -l "$(echo $file)_out.pdbqt"
+ python3 /src/plip/plipcmd.py -f best.pdb -qpxy
+ python3 /src/scripts/makeReport.py --input . > report.md
+ pandoc -V geometry:margin=1in report.md --pdf-engine=xelatex -o $name.pdf
+fi
+
+echo "$proteinPath and $ligandPath and $docking and $interactions and $visualisations" \ No newline at end of file