File: createSql.py

package info (click to toggle)
rdkit 201203-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 37,840 kB
  • sloc: cpp: 93,902; python: 51,897; java: 5,192; ansic: 3,497; xml: 2,499; sql: 1,641; yacc: 1,518; lex: 1,076; makefile: 325; fortran: 183; sh: 153; cs: 51
file content (106 lines) | stat: -rw-r--r-- 4,994 bytes parent folder | download
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
import RDConfig


molFuncCreation="""
DROP FUNCTION rd_libversion();
CREATE FUNCTION rd_libversion() RETURNS text AS '%(base)s/RDLib' LANGUAGE 'c' immutable;
DROP FUNCTION rd_canonsmiles(text);
CREATE FUNCTION rd_canonsmiles(text) RETURNS text AS '%(base)s/RDLib' LANGUAGE 'c' immutable;
DROP FUNCTION rd_molpickle(text);
CREATE FUNCTION rd_molpickle(text) RETURNS bytea AS '%(base)s/RDLib' LANGUAGE 'c' immutable;
DROP FUNCTION rd_hassubstruct(text,text);
CREATE FUNCTION rd_hassubstruct(text,text) RETURNS bool AS '%(base)s/RDLib','rd_hassubstruct_smi' LANGUAGE 'c' immutable;
DROP FUNCTION rd_hassubstruct(bytea,bytea);
CREATE FUNCTION rd_hassubstruct(bytea,bytea) RETURNS bool AS '%(base)s/RDLib','rd_hassubstruct_pkl' LANGUAGE 'c' immutable;
DROP FUNCTION rd_substructcount(text,text);
CREATE FUNCTION rd_substructcount(text,text) RETURNS int AS '%(base)s/RDLib', 'rd_substructcount_smi' LANGUAGE 'c' immutable;
DROP FUNCTION rd_substructcount(bytea,bytea);
CREATE FUNCTION rd_substructcount(bytea,bytea) RETURNS int AS '%(base)s/RDLib','rd_substructcount_pkl' LANGUAGE 'c' immutable;
DROP FUNCTION rd_similarityfp(text);
CREATE FUNCTION rd_similarityfp(text) RETURNS bytea AS '%(base)s/RDLib' LANGUAGE 'c' immutable;
DROP FUNCTION rd_similarityfp_bits(text);
CREATE FUNCTION rd_similarityfp_bits(text) RETURNS bit AS '%(base)s/RDLib' LANGUAGE 'c' immutable;
DROP FUNCTION rd_substructfp(text);
CREATE FUNCTION rd_substructfp(text) RETURNS bytea AS '%(base)s/RDLib' LANGUAGE 'c' immutable;
DROP FUNCTION rd_substructfp_bits(text);
CREATE FUNCTION rd_substructfp_bits(text) RETURNS bit AS '%(base)s/RDLib' LANGUAGE 'c' immutable;
DROP FUNCTION rd_mollogp(text);
CREATE FUNCTION rd_mollogp(text) RETURNS double precision AS '%(base)s/RDLib', 'rd_mollogp_smi' LANGUAGE 'c' immutable;
DROP FUNCTION rd_mollogp(bytea);
CREATE FUNCTION rd_mollogp(bytea) RETURNS double precision AS '%(base)s/RDLib','rd_mollogp_pkl' LANGUAGE 'c' immutable;
DROP FUNCTION rd_amw(text);
CREATE FUNCTION rd_amw(text) RETURNS double precision AS '%(base)s/RDLib', 'rd_amw_smi' LANGUAGE 'c' immutable;
DROP FUNCTION rd_amw(bytea);
CREATE FUNCTION rd_amw(bytea) RETURNS double precision AS '%(base)s/RDLib','rd_amw_pkl' LANGUAGE 'c' immutable;
"""

sigFuncCreation="""
DROP FUNCTION rd_fpsize(bytea);
CREATE FUNCTION rd_fpsize(bytea) RETURNS int AS '%(base)s/RDLib' LANGUAGE 'c' immutable;
DROP FUNCTION rd_allprobebitsmatch(bytea,bytea);
CREATE FUNCTION rd_allprobebitsmatch(bytea,bytea) RETURNS bool AS '%(base)s/RDLib','rd_allprobebitsmatch_pkl' LANGUAGE 'c' immutable;
DROP FUNCTION rd_allprobebitsmatch(bit,bit);
CREATE FUNCTION rd_allprobebitsmatch(bit,bit) RETURNS bool AS '%(base)s/RDLib','rd_allprobebitsmatch_bits' LANGUAGE 'c' immutable;
DROP FUNCTION rd_tanimoto(bytea,bytea);
CREATE FUNCTION rd_tanimoto(bytea,bytea) RETURNS double precision AS '%(base)s/RDLib','rd_tanimoto_pkl' LANGUAGE 'c' immutable;
DROP FUNCTION rd_tanimoto(bit,bit);
CREATE FUNCTION rd_tanimoto(bit,bit) RETURNS double precision AS '%(base)s/RDLib','rd_tanimoto_bits' LANGUAGE 'c' immutable;
DROP FUNCTION rd_dice(bytea,bytea);
CREATE FUNCTION rd_dice(bytea,bytea) RETURNS double precision AS '%(base)s/RDLib','rd_dice_pkl' LANGUAGE 'c' immutable;
DROP FUNCTION rd_dice(bit,bit);
CREATE FUNCTION rd_dice(bit,bit) RETURNS double precision AS '%(base)s/RDLib','rd_dice_bits' LANGUAGE 'c' immutable;
DROP FUNCTION rd_cosine(bytea,bytea);
CREATE FUNCTION rd_cosine(bytea,bytea) RETURNS double precision AS '%(base)s/RDLib','rd_cosine_pkl' LANGUAGE 'c' immutable;
DROP FUNCTION rd_cosine(bit,bit);
CREATE FUNCTION rd_cosine(bit,bit) RETURNS double precision AS '%(base)s/RDLib','rd_cosine_bits' LANGUAGE 'c' immutable;
"""

molAddTrigger="""
CREATE OR REPLACE FUNCTION molAddTrigger()
  RETURNS "trigger" AS
$BODY$
  if TD['event'] != 'INSERT' or TD['when'] != 'BEFORE' or TD['level'] != 'ROW':
    return 'OK'
  id = TD['new']['id']
  smi = TD['new']['smiles']

  if not TD['new']['pickle']:
    if SD.has_key('mol_pickle_plan'):
      plan = SD['mol_pickle_plan']
    else:
      plan = plpy.prepare('select rd_molpickle($1) as pickle',('text',))
      SD['mol_pickle_plan']=plan
    pkl = plpy.execute(plan,(smi,))[0]['pickle']
    if not pkl:
      plpy.error('Could not pickle input smiles. operation aborted')
    TD['new']['pickle']=pkl
      
    res = 'MODIFY'
  else:
    res = 'OK'

  if SD.has_key('mol_insert_plan'):
    plan = SD['mol_insert_plan']
  else:
    plan = plpy.prepare('insert into %(fpTable)s ($1,rd_substructfp_bits($2),rd_similarityfp_bits($2))',
                        ('text','text'))
    SD['mol_insert_plan']=plan
  plpy.execute(plan,(id,smi))

  return res
$BODY$
  LANGUAGE 'plpythonu' VOLATILE;
"""

installTrigger="""
CREATE TRIGGER %(tblName)s_after
  AFTER INSERT OR UPDATE OR DELETE
  ON %(tblName)s
  FOR EACH ROW
  EXECUTE PROCEDURE molAddTrigger();
"""

if __name__=='__main__':
  base = RDConfig.RDBaseDir+'/Code/PgSQL/RDLib'
  print sigFuncCreation%locals()
  print molFuncCreation%locals()