some more residual cleanups

This commit is contained in:
Greg Landrum
2009-03-23 17:00:45 +00:00
parent b40b42c704
commit b2cd20fa2c
23 changed files with 130 additions and 163 deletions

View File

@@ -22,16 +22,16 @@ _usage="""
"""
_welcomeMessage="This is SDView version %s"%(_version)
import sys,os,copy
from pyRDKit.RDLogger import logger
from rdkit.RDLogger import logger
logger = logger()
from pyRDKit import Chem
from pyRDKit.Chem import AllChem
from pyRDKit.Chem.ChemUtils.AlignDepict import AlignDepict
from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem.ChemUtils.AlignDepict import AlignDepict
from qt import *
from pyRDKit.qtGui import qtUtils
from pyRDKit.qtGui.GuiLib.MolTable import MolTable
from pyRDKit.qtGui.GuiLib.MolCanvas import MolCanvasView
from pyRDKit.qtGui.GuiBase import GuiBase
from rdkit.qtGui import qtUtils
from rdkit.qtGui.GuiLib.MolTable import MolTable
from rdkit.qtGui.GuiLib.MolCanvas import MolCanvasView
from rdkit.qtGui.GuiBase import GuiBase
class SDViewTable(MolTable):
def __init__(self,*args,**kwargs):
@@ -85,14 +85,14 @@ class SDViewGui(GuiBase):
def RunGui(suppl,redraw=False,do3D=False,showOnly=None,numberAtoms=False,
alignCore=None,alignPatt=None,keepHs=False,matchConf=False):
from pyRDKit.qtGui import Gui
from rdkit.qtGui import Gui
app,win = Gui.Launcher(SDViewGui,None,includeLogo=False)
widg = win.centralWidget()
widg.molCanvas.includeAtomNumbers=numberAtoms
processFunc=None
if do3D:
from pyRDKit.Chem.PyMol import MolViewer
from rdkit.Chem.PyMol import MolViewer
try:
pymol = MolViewer()
except:
@@ -160,7 +160,7 @@ def RunGui(suppl,redraw=False,do3D=False,showOnly=None,numberAtoms=False,
# --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
# set up the option parser
from optparse import OptionParser
import os,RDConfig
import os
parser=OptionParser(_usage,version='%prog '+_version)
parser.add_option('--do3D','--3D','--3d','--do3d',default=False,action='store_true',
help='display the molecules in 3D using PyMol')
@@ -219,7 +219,7 @@ if __name__=='__main__':
options.redraw=True
if not options.smiles:
from pyRDKit.Chem.FastSDMolSupplier import FastSDMolSupplier
from rdkit.Chem.FastSDMolSupplier import FastSDMolSupplier
if args[0] != "-":
suppl = FastSDMolSupplier(args[0],removeHs=options.removeHs)
else:

View File

@@ -4,7 +4,7 @@
#
# @@ All Rights Reserved @@
#
from sping import pid
from rdkit.sping import pid
import math
faceMap={'sans':'helvetica'}

View File

@@ -11,13 +11,18 @@ import numpy
from rdkit import RDLogger
logger=RDLogger.logger()
def ClusterData(data,nPts,distThresh,isDistData=False):
def EuclideanDist(pi,pj):
dv = array(pi)- array(pj)
return numpy.sqrt(dv*dv)
def ClusterData(data,nPts,distThresh,isDistData=False,distFunc=EuclideanDist):
""" clusters the data points passed in and returns the list of clusters
**Arguments**
- data: a list of lists (or array, or whatever) with the input
data (see discussion of _isDistData_ argument for the exception)
- data: a list of items with the input data
(see discussion of _isDistData_ argument for the exception)
- nPts: the number of points to be used
@@ -32,6 +37,9 @@ def ClusterData(data,nPts,distThresh,isDistData=False):
for i in range(nPts):
for j in range(i):
dists.append( distfunc(i,j) )
- distFunc: a function to calculate distances between points.
Receives 2 points as arguments, should return a float
**Returns**
@@ -43,7 +51,6 @@ def ClusterData(data,nPts,distThresh,isDistData=False):
The first element for each cluster is its centroid.
"""
data = numpy.array(data)
if isDistData and len(data)>(nPts*(nPts-1)/2):
logger.warning("Distance matrix is too long")
nbrLists = [None]*nPts
@@ -53,12 +60,10 @@ def ClusterData(data,nPts,distThresh,isDistData=False):
for i in range(nPts):
for j in range(i):
if not isDistData:
dv = data[i]-data[j]
dij = numpy.sqrt(dv*dv)
dij = distFunc(data[i],data[j])
else:
dij = data[dmIdx]
dmIdx+=1
#print i,j,dij
if dij<=distThresh:
nbrLists[i].append(j)
nbrLists[j].append(i)

View File

@@ -32,9 +32,23 @@ class MolecularDescriptorCalculator(Descriptors.DescriptorCalculator):
a list of strings which are keys into _AvailDescriptors.descDict_
"""
self.simpleList = simpleList[:]
self.descriptorNames = self.simpleList[:]
self.simpleList = tuple(simpleList)
self.descriptorNames = tuple(self.simpleList)
self.compoundList = None
self._findVersions()
def _findVersions(self):
""" returns a tuple of the versions of the descriptor calculators
"""
self.descriptorVersions=[]
for nm in self.simpleList:
vers='N/A'
if AvailDescriptors.descDict.has_key(nm):
fn = AvailDescriptors.descDict[nm]
if hasattr(fn,'version'):
vers = fn.version
self.descriptorVersions.append(vers)
def SaveState(self,fileName):
""" Writes this calculator off to a file so that it can be easily loaded later
@@ -78,7 +92,7 @@ class MolecularDescriptorCalculator(Descriptors.DescriptorCalculator):
""" returns a tuple of the names of the descriptors this calculator generates
"""
return tuple(self.descriptorNames)
return self.descriptorNames
def GetDescriptorSummaries(self):
""" returns a tuple of summaries for the descriptors this calculator generates
@@ -109,13 +123,5 @@ class MolecularDescriptorCalculator(Descriptors.DescriptorCalculator):
""" returns a tuple of the versions of the descriptor calculators
"""
res = []
for nm in self.simpleList:
fn = AvailDescriptors.descDict.get(nm,lambda x:777)
if hasattr(fn,'version'):
vers = fn.version
else:
vers="N/A"
res.append(vers)
return tuple(res)
return tuple(self.descriptorVersions)

View File

@@ -14,6 +14,7 @@ from rdkit import Chem
class TestCase(unittest.TestCase):
def setUp(self):
self.descs = ['MolLogP','Chi1v']
self.vers= ('1.1.0','1.0.0')
self.calc = MoleculeDescriptors.MolecularDescriptorCalculator(self.descs)
self.testD = [
('CCOC', (0.6527, 1.40403)),
@@ -21,14 +22,14 @@ class TestCase(unittest.TestCase):
('CCC(=O)O',(0.481, 1.48839))]
def testGetNames(self):
assert self.calc.GetDescriptorNames()==tuple(self.descs),'bad descriptor names: %s'%(self.calc.GetDescriptorNames())
self.failUnlessEqual(self.calc.GetDescriptorNames(),tuple(self.descs))
def _testVals(self,calc,testD):
for smi,vals in testD:
mol = Chem.MolFromSmiles(smi)
ans = numpy.array(vals)
res = numpy.array(calc.CalcDescriptors(mol))
assert max(abs(res-ans))<1e-4,'bad descriptor values for SMILES %s (%s)'%(smi,str(res))
self.failUnless(max(abs(res-ans))<1e-4,'bad descriptor values for SMILES %s (%s)'%(smi,str(res)))
def testCalcVals(self):
self._testVals(self.calc,self.testD)
@@ -48,7 +49,8 @@ class TestCase(unittest.TestCase):
assert ok,'problems reading saved file %s'%(fName)
assert calc.GetDescriptorNames()==tuple(self.descs),'bad descriptor names'
self.failUnlessEqual(calc.GetDescriptorNames(),tuple(self.descs))
self.failUnlessEqual(calc.GetDescriptorVersions(),tuple(self.vers))
self._testVals(calc,self.testD)

View File

@@ -4,16 +4,21 @@ p1
(dp2
S'simpleList'
p3
(lp4
S'MolLogP'
(S'MolLogP'
p4
S'Chi1v'
p5
aS'Chi1v'
p6
asS'descriptorNames'
tp6
sS'descriptorVersions'
p7
(lp8
g5
ag6
asS'compoundList'
S'1.1.0'
p9
Nsb.
aS'1.0.0'
p10
asS'descriptorNames'
p11
g6
sS'compoundList'
p12
Nsb.

View File

@@ -5,10 +5,10 @@
""" dialog for establishing db connections
"""
from pyRDKit import RDConfig
from rdkit import RDConfig
from qt import *
from pyRDKit.qtGui.DbConnWidgetImpl import insertConnWidget
from pyRDKit.qtGui.DbDialog import DbDialog
from rdkit.qtGui.DbConnWidgetImpl import insertConnWidget
from rdkit.qtGui.DbDialog import DbDialog
class DbConnDialog(DbDialog):

View File

@@ -5,12 +5,12 @@
""" implementation bits for DbConnWidgets
"""
from pyRDKit import RDConfig
from rdkit import RDConfig
from qt import *
from pyRDKit.qtGui.forms.DbConnWidget import DbConnWidget as _Form
from pyRDKit.qtGui import DbWidget
from rdkit.qtGui.forms.DbConnWidget import DbConnWidget as _Form
from rdkit.qtGui import DbWidget
import os,os.path
from pyRDKit.Dbase import DbConnection
from rdkit.Dbase import DbConnection
def insertConnWidget(parent,*args,**kwargs):

View File

@@ -5,7 +5,7 @@
""" contains simple dialog box for holding db widgets
"""
from pyRDKit import RDConfig
from rdkit import RDConfig
from qt import *
class DbDialog(QDialog):

View File

@@ -6,10 +6,10 @@
"""
from pyRDKit import RDConfig
from rdkit import RDConfig
from qt import *
from pyRDKit.qtGui.DbQueryWidgetImpl import insertQueryWidget
from pyRDKit.qtGui.DbDialog import DbDialog
from rdkit.qtGui.DbQueryWidgetImpl import insertQueryWidget
from rdkit.qtGui.DbDialog import DbDialog
class DbQueryDialog(DbDialog):
""" dialog for establishing db connections

View File

@@ -5,13 +5,13 @@
""" implementation bits for DbQueryWidgets
"""
from pyRDKit import RDConfig
from rdkit import RDConfig
from qt import *
from pyRDKit.qtGui.forms.DbQueryWidget import DbQueryWidget as _Form
from pyRDKit.qtGui.forms.ListSelectorDialog import ListSelectorDialog
from pyRDKit.qtGui import DbWidget
from rdkit.qtGui.forms.DbQueryWidget import DbQueryWidget as _Form
from rdkit.qtGui.forms.ListSelectorDialog import ListSelectorDialog
from rdkit.qtGui import DbWidget
import os,os.path
from pyRDKit.Dbase import DbConnection
from rdkit.Dbase import DbConnection
def insertQueryWidget(parent,*args,**kwargs):
@@ -112,7 +112,7 @@ class DbQueryWidget(DbWidget.DbWidgetMixin,_Form):
if __name__ == '__main__':
# build the app and widget
import os
from pyRDKit.qtGui import Gui
from rdkit.qtGui import Gui
app,widg = Gui.Launcher(DbQueryWidget,None)
app.exec_loop()

View File

@@ -5,11 +5,11 @@
""" contains a mixin class for the various Database widgets
"""
from pyRDKit import RDConfig
from rdkit import RDConfig
from qt import *
import os,os.path
from pyRDKit.Dbase import DbConnection
from pyRDKit.qtGui.qtUtils import logger
from rdkit.Dbase import DbConnection
from rdkit.qtGui.qtUtils import logger
def insertDbWidget(parent,klass,*args,**kwargs):
""" constructs a widget and inserts it into a parent widget
@@ -162,7 +162,7 @@ class DbWidgetMixin:
def getDbName(self):
if not RDConfig.usePgSQL:
return None
from pyRDKit.Dbase import DbInfo
from rdkit.Dbase import DbInfo
names = QStringList.fromStrList(DbInfo.GetDbNames())
res,ok = QInputDialog.getItem('Select Database','Select Database',names,0,False)

View File

@@ -6,10 +6,10 @@
""" Mixin GUI launcher code """
import qt
import os.path
from pyRDKit import qtGui
from pyRDKit.qtGui import qtUtils
from rdkit import qtGui
from rdkit.qtGui import qtUtils
from pyRDKit import RDConfig
from rdkit import RDConfig
lookHere = [os.path.join(RDConfig.RDCodeDir,'qtGui/VisProg'),
os.path.join(RDConfig.RDCodeDir,'qtGui/MixIns'),
'.']
@@ -18,7 +18,7 @@ def StandardGui(args,**kwargs):
""" launches a standard mixin GUI
"""
from pyRDKit.mixins import Loader
from rdkit.mixins import Loader
loadOrder = []
loadedMixIns=Loader.LoadMixIns(args,loadOrder,
lookHere)

View File

@@ -6,14 +6,14 @@
""" base class for the main window in the qt MixinGui
"""
from pyRDKit import RDConfig
from rdkit import RDConfig
import qt
from pyRDKit.qtGui import GuiShell,GuiTextViewer
from rdkit.qtGui import GuiShell,GuiTextViewer
try:
from pyRDKit.qtGui import rpcClient
from rdkit.qtGui import rpcClient
except:
rpcClient=None
from pyRDKit.qtGui import qtUtils
from rdkit.qtGui import qtUtils
class GuiBase(qt.QMainWindow):
""" Base class for the qt MixinGui

View File

@@ -3,20 +3,20 @@
# Copyright (C) 2005-2006 Rational Discovery LLC
# All Rights Reserved
#
import RDConfig
from rdkit import RDConfig
from qt import *
from qtcanvas import *
from qtGui.PiddleWindowImpl import PiddleCanvasView
from Chem.Draw import MolDrawing
from rdkit.qtGui.PiddleWindowImpl import PiddleCanvasView
from rdkit.Chem.Draw import MolDrawing
MolDrawing.registerCanvas('sping')
import cPickle,os,copy,types
import Chem
from Chem import rdDepictor
from rdkit import Chem
from rdkit.Chem import rdDepictor
from Logger import Logger
from sping.Qt.pidQt import QtCanvas as Canvas
from sping.Qt import pidQt
from rdkit.Logger import Logger
from rdkit.sping.Qt.pidQt import QtCanvas as Canvas
from rdkit.sping.Qt import pidQt
import traceback
class PickModes:
@@ -247,7 +247,7 @@ class MolCanvasView(PiddleCanvasView):
if __name__ == '__main__':
import sys,getopt
from qtGui import Gui
from rdkit.qtGui import Gui
app,widg = Gui.Launcher(MolCanvasView,None,interactive=True)

View File

@@ -6,21 +6,21 @@
""" defines classes required for using molecules in QTables
"""
import RDConfig
import Chem
from Chem import AllChem
from Chem import rdDepictor
from rdkit import RDConfig
from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem import rdDepictor
from qt import *
from qttable import *
from utils.PilTools import PilImgToQPixmap
from qtGui import GuiTable,qtUtils
from rdkit.utils.PilTools import PilImgToQPixmap
from rdkit.qtGui import GuiTable,qtUtils
import copy
tryChemdraw=False
hasCDX=0
if tryChemdraw:
try:
from utils import chemdraw
from rdkit.utils import chemdraw
except ImportError:
hasCDX=0
else:
@@ -31,7 +31,7 @@ if tryChemdraw:
else:
hasCDX=1
try:
from utils import chemdraw_qax
from rdkit.utils import chemdraw_qax
except ImportError:
hasCDX_ax=0
else:
@@ -41,7 +41,7 @@ if tryChemdraw:
hasCDX_ax=0
else:
hasCDX_ax=1
from utils import PilTools
from rdkit.utils import PilTools
import StringIO,types
drawInChemdraw=1
@@ -164,8 +164,8 @@ class MolTableItem(QTableItem):
if not where.isVisible(): where.show()
def toImage(self,fName=None,size=(100,100),fontSize=12,lineWidth=.5):
from Chem.Draw.MolDrawing import MolDrawing
from sping.ReportLab.pidReportLab import RLCanvas as Canvas
from rdkit.Chem.Draw.MolDrawing import MolDrawing
from rdkit.sping.ReportLab.pidReportLab import RLCanvas as Canvas
canv = Canvas(size)
d = MolDrawing(canvas=canv)
d.atomLabelFontSize=fontSize
@@ -277,7 +277,7 @@ class MolTable(GuiTable.GuiTable):
def contentsToPDF(self,fName=None,skipCols=None,replaceMolName=0,sketchWidth=1.5):
from Reports import PDFReport, ReportUtils
from rdkit.Reports import PDFReport, ReportUtils
from cStringIO import StringIO
import os
@@ -742,54 +742,3 @@ class MolTable(GuiTable.GuiTable):
if itms:
popup.exec_loop(pos)
def test1():
import os
# start out by grabbing some data:
from Dbase.DbConnection import DbConnect
from Chem.Suppliers.DbMolSupplier import RandomAccessDbMolSupplier
from Chem.Suppliers.DbMolSupplier import ForwardDbMolSupplier
dbName = os.path.join(RDConfig.RDCodeDir,'qtGui','GuiLib','demoData','data.gdb')
conn = DbConnect(dbName,'some_mols_dupes')
data = conn.GetData()
if 1:
mols = RandomAccessDbMolSupplier(data)
else:
mols = ForwardDbMolSupplier(data)
# build the app and widget
from qtGui import Gui
app,widg = Gui.Launcher(MolTable,None)
# and load up those molecules:
widg.loadFromMolSupplier(mols,includeCheckboxes=0)
w = Chem.SmilesWriter('foob.txt',delimiter='\t',nameHeader="Mol_ID")
widg.exportToMolWriter(w)
app.exec_loop()
widg.destroy(1)
def test2():
import os
# start out by grabbing some data:
from VLib.NodeLib import DbMolSupply
dbName = os.path.join(RDConfig.RDCodeDir,'qtGui','GuiLib','demoData','data.gdb')
node = DbMolSupply.GetNode(dbName,'some_mols_dupes')
# build the app and widget
from qtGui import Gui
app,widg = Gui.Launcher(MolTable,None)
# and load up those molecules:
widg.loadFromVLib(node,includeCheckboxes=0)
app.exec_loop()
widg.destroy(1)
if __name__ == '__main__':
#test1()
test2()

View File

@@ -8,7 +8,7 @@
import sys
from qt import *
from pyRDKit.qtGui.forms.pyshell import PyShell as _Form
from rdkit.qtGui.forms.pyshell import PyShell as _Form
from code import InteractiveInterpreter
class PyShell(_Form,InteractiveInterpreter):

View File

@@ -6,16 +6,16 @@
""" defines classes to make QTables more useful for us
"""
from pyRDKit import RDConfig
from rdkit import RDConfig
from qt import *
from qttable import *
from pyRDKit.qtGui.DbConnDialog import DbConnDialog
from pyRDKit.qtGui.qtUtils import logger
from rdkit.qtGui.DbConnDialog import DbConnDialog
from rdkit.qtGui.qtUtils import logger
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
from pyRDKit.Dbase import DbUtils
from rdkit.Dbase import DbUtils
import types

View File

@@ -8,8 +8,8 @@
"""
import sys
from qt import *
from pyRDKit.qtGui.forms.TextViewer import TextViewer as _Form
from pyRDKit.qtGui.qtUtils import warning,error
from rdkit.qtGui.forms.TextViewer import TextViewer as _Form
from rdkit.qtGui.qtUtils import warning,error
class GuiTextViewer(_Form):
""" a class for displaying rich text

View File

@@ -9,15 +9,15 @@
this class handles interaction
"""
from pyRDKit import RDConfig
from rdkit import RDConfig
import qt
import qtcanvas
from pyRDKit.qtGui.forms.PiddleWindow import PiddleWindow as _Form
from pyRDKit.qtGui import qtUtils
from pyRDKit.sping.Qt.pidQt import QtCanvas as Canvas
from rdkit.qtGui.forms.PiddleWindow import PiddleWindow as _Form
from rdkit.qtGui import qtUtils
from rdkit.sping.Qt.pidQt import QtCanvas as Canvas
import os.path
from pyRDKit.Logger import Logger
from rdkit.Logger import Logger
class PiddleCanvasView(qtcanvas.QCanvasView):
""" The actual canvas view which is displayed to the user
@@ -299,7 +299,7 @@ class PiddleWindow(_Form):
def resizeEvent(self,evt):
pass
if __name__ == '__main__':
from pyRDKit.qtGui import Gui
from rdkit.qtGui import Gui
app,widg = Gui.Launcher(PiddleWindow,None)
widg.resize(640,480)

View File

@@ -3,10 +3,10 @@
# Copyright (C) 2002-2005 Greg Landrum and Rational Discovery LLC
# All Rights Reserved
#
from pyRDKit import RDConfig
from rdkit import RDConfig
import qt
import os.path
from pyRDKit.sping.utils import availableCanvases
from rdkit.sping.utils import availableCanvases
import sys
logoImageData=[
@@ -49,7 +49,7 @@ if 0:
logger.addHandler(hdlr)
logger.setLevel(logging.DEBUG)
else:
import pyRDKit.RDLogger as logging
import rdkit.RDLogger as logging
def _initLogger():
global logger
logger = logging.logger()

View File

@@ -34,7 +34,7 @@ Greg Landrum (Landrum@RationalDiscovery.com) 29 Octover, 2002
"""
from sping import pid
from rdkit.sping import pid
import string, os, types
from qt import *
from qtcanvas import *

View File

@@ -100,7 +100,7 @@ __version_min_number__ = "0" # should match "12"
__version__ = __version_maj_number__ + "." + __version_min_number__ # c.f. "1.0.12"
from types import StringType, IntType, InstanceType
from sping.colors import *
from rdkit.sping.colors import *
inch = 72 # 1 PIDDLE drawing unit == 1/72 imperial inch
cm = inch/2.54 # more sensible measurement unit