File: searchchiral

package info (click to toggle)
smiles-scripts 0.2.0%2Bdfsg1-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 3,208 kB
  • sloc: perl: 1,189; java: 1,094; sh: 1,052; makefile: 249
file content (62 lines) | stat: -rwxr-xr-x 2,867 bytes parent folder | download | duplicates (2)
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