#! /bin/bash
# This scripts check the chirality of the SMILES in the present folder.
# The corresponding CIF files are supposed to be stored in the folder ../cifs.
# Those SMILES not containing the @ character are left untouched. For those
# containing the @ character, the space group is checked (looking for the
# _symmetry_space_group_name_H-M in the corresponding CIF file) and flagged
# as chiral or not-chiral. It is done automatically for most space groups, if
# the scripts fails, it asks the user whether the group is chiral or not.
# SMILES for compounds in chiral groups (truly chiral) are moved to the
# 'chiral' folder, those in non-chiral groups (racemic) are moved to the
# 'racemic folder.

[ -d racemic ] || mkdir racemic
[ -d chiral ] || mkdir chiral
for i in `ls *.smi` ; do
   cat $i | grep @ >/dev/null && {   
     tmp=`cat $i | cut -f1`
     key=`cat $i | cut -f2`
     group=`cat ../cifs/$key.cif | grep group_name_H-M | sed -e s/_symmetry_space_group_name_H-M//`
     chiral_group=u
     echo $group | grep / >/dev/null && chiral_group=n
     echo $group | grep 'P -' >/dev/null && chiral_group=n
     echo $group | grep 'P a' >/dev/null && chiral_group=n
     echo $group | grep 'P b' >/dev/null && chiral_group=n
     echo $group | grep 'P c' >/dev/null && chiral_group=n
     echo $group | grep 'P 1 c' >/dev/null && chiral_group=n
     echo $group | grep 'P m' >/dev/null && chiral_group=n
     echo $group | grep 'P n' >/dev/null && chiral_group=n
     echo $group | grep 'P 1 n' >/dev/null && chiral_group=n
     echo $group | grep 'C c' >/dev/null && chiral_group=n
     echo $group | grep 'C 1 c' >/dev/null && chiral_group=n
     echo $group | grep 'F d ' >/dev/null && chiral_group=n
     echo $group | grep "'P 1'" >/dev/null && chiral_group=y
     echo $group | grep "'P 21'" >/dev/null && chiral_group=y
     echo $group | grep "'P 31'" >/dev/null && chiral_group=y
     echo $group | grep "'P 32'" >/dev/null && chiral_group=y
     echo $group | grep "'P 41'" >/dev/null && chiral_group=y
     echo $group | grep "'P 43'" >/dev/null && chiral_group=y
     echo $group | grep "'P 1 21 1'" >/dev/null && chiral_group=y
     echo $group | grep "'P 2'" >/dev/null && chiral_group=y
     echo $group | grep "'P 1 2 1'" >/dev/null && chiral_group=y
     echo $group | grep "'P 21 21 21'" >/dev/null && chiral_group=y
     echo $group | grep "'P 21 21 2'" >/dev/null && chiral_group=y
     echo $group | grep "'C 2'" >/dev/null && chiral_group=y
     echo $group | grep "'C 1 2 1'" >/dev/null && chiral_group=y
     if [ "$chiral_group" == u ]; then
       echo "$group"
       echo '¿Quiral?'
       read answer
       if [ "$answer" != n ]; then
         chiral_group=y
       else
         chiral_group=n
       fi
     fi
     if [ "$chiral_group" == n ]; then
       mv $i racemic
     else
       mv $i chiral
     fi
   }
done
