initial setup of thesis repository
[cluster_expansion_thesis.git] / little_helpers / tikz / dmol2sketch.sh
blob086de86f685310c433ed9cb442f34713232dc5f6
1 #!/bin/bash -eu
2 #------------------------------------------------
3 # dmol2sketch.sh
4 # Helper script that turns dmol file into points in syntax that can be
5 # used in a sketch input file.
6 # Sketch lives at http://www.frontiernet.net/~eugene.ressler/
8 # Copyright (C) Max J. Hoffmann 2009 mjhoffmann@gmail.com
10 # This program is free software: you can redistribute it and/or modify
11 # it under the terms of the GNU General Public License as published by
12 # the Free Software Foundation, either version 3 of the License, or
13 # (at your option) any later version.
15 # This program is distributed in the hope that it will be useful,
16 # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 # GNU General Public License for more details.
20 # You should have received a copy of the GNU General Public License
21 # along with this program. If not, see <http://www.gnu.org/licenses/>.
23 #------------------------------------------------
25 #Initialize variables
26 dmol=""
29 while getopts "i:h" optionName
31 case "${optionName}" in
32 h) echo "Usage: ${0} -i DMOL_FILE > SKETCH_FILE" ;
33 exit;;
34 i) dmol=${OPTARG} ;;
35 esac
36 done
39 #Exit with usage message if no input file is provided
40 if [ "${dmol}" = "" ]
41 then
42 ${0} -h
43 exit
46 #Find lines where atomic coordinates are stored
47 start_line=$(expr "$(grep -rin coordinates ${dmol} | cut -d ":" -f 1) + 1" | bc -l)
48 end_line=$(expr "$(wc -l ${dmol} | awk '{print $1}' ) -1 " | bc -l)
50 #Determine starting species
51 species=$(sed -n ${start_line}p ${dmol} | awk '{print $1}')
52 #Initialize atom counter
53 atom_nr=0
55 for line in $(seq ${start_line} ${end_line})
57 if [ "$(sed -n ${line}p ${dmol} | awk '{print $1}')" = "${species}" ]
58 then
59 atom_nr="$(expr "${atom_nr}+1" | bc -l)"
60 else
61 atom_nr=1
62 species="$(sed -n ${line}p ${dmol} | awk '{print $1}')"
66 sed -n ${line}p ${dmol}| sed -e "s/\([^ ]*\)\s*\([0-9.-]*\)\s*\([0-9.-]*\)\s*\([0-9.-]*\)/def \1${atom_nr} (\2,\3,\4)/"
67 done