1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
#! /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
|