def __init__(self, name='Lone Pair Merger', **kw): kw['name'] = name NetworkNode.__init__(*(self, ), **kw) ip = self.inputPortsDescr ip.append(datatype='MoleculeSet', name='mols') ip.append(datatype='int', required=False, name='renumber', defaultValue=1) op = self.outputPortsDescr op.append(datatype='MoleculeSet', name='mols') op.append(datatype='int', name='num_lps') code = """def doit(self,mols, renumber): if mols: lps_merger = LonepairMerger() num_lps = 0 for mol in mols: if not len(mol.allAtoms.bonds[0]): mol.buildBondsByDistance() lps = lps_merger.mergeLPS(mol.allAtoms, renumber=renumber) num_lps += len(lps) self.outputData(mols=mols, num_lps=num_lps)\n""" self.setFunction(code)
def __init__(self, name='Ligand_Writer_AD4', **kw): kw['name'] = name NetworkNode.__init__(*(self, ), **kw) fileTypes = [('pdbqt', '*.pdbqt'), ('all', '*')] self.widgetDescr['output_filename'] = { 'class': 'NEEntryWithFileSaver', 'master': 'node', 'filetypes': fileTypes, 'title': 'save AD4 Ligand', 'width': 10, 'labelCfg': { 'text': 'file:' }, } ip = self.inputPortsDescr ip.append(datatype='Molecule', name='mol') ip.append(datatype='string', name='output_filename') op = self.outputPortsDescr op.append(datatype='Molecule', name='mol') op.append(datatype='string', name='output_filename') code = """def doit(self, mol, output_filename): if mol: writer = AD4LigandWriter() writer.write(mol, output_filename) self.outputData(mol=mol, output_filename=output_filename)\n""" self.setFunction(code)
def __init__(self, name='Docking Parameter File Browser', **kw): kw['name'] = name NetworkNode.__init__(*(self, ), **kw) #self.readOnly = 1 code = """def doit(self, filename): if filename: self.outputData(filename=filename) """ self.setFunction(code) # show the entry widget by default self.inNodeWidgetVisibleByDefault = True fileTypes = [('dpf', '*')] self.widgetDescr['filename'] = { 'class': 'NEEntryWithFileBrowser', 'master': 'node', 'filetypes': fileTypes, 'title': 'read file', 'width': 16, 'labelCfg': { 'text': 'dpf file:' }, } self.inputPortsDescr.append(datatype='string', name='filename') self.outputPortsDescr.append(datatype='string', name='filename')
def __init__(self, name='AutogridResURL', **kw): kw['name'] = name NetworkNode.__init__(*(self, ), **kw) kw['name'] = name NetworkNode.__init__(*(self, ), **kw) ip = self.inputPortsDescr ip.append(datatype='string', name='url') self.widgetDescr['url'] = { 'class': 'NEEntry', 'master': 'node', 'width': 40, 'labelCfg': { 'text': 'URL to Autogrid Results: ' } } op = self.outputPortsDescr op.append(datatype='autogrid_results', name='autogrid_res_obj') code = """def doit(self, url): autogrid_res_obj=autogrid_results(url, "url") self.outputData(autogrid_res_obj=autogrid_res_obj) """ self.setFunction(code)
def __init__(self, name='StructureBrowser', **kw): kw['name'] = name NetworkNode.__init__(*(self,), **kw) kw['name'] = name NetworkNode.__init__(*(self,), **kw) ip = self.inputPortsDescr ip.append(datatype='string', name='receptor_file') filetypes = [('All supported files', '*.pdb *.pqr *.pdbqt')] self.widgetDescr['receptor_file'] = { 'class':'NEEntryWithFileBrowser', 'master':'node', 'width':20, 'filetypes':filetypes, 'initialValue':'', 'labelCfg':{'text':'Structure file: '} } op = self.outputPortsDescr op.append(datatype='receptor', name='receptor_obj') code = """def doit(self, receptor_file): import os receptor_file = os.path.abspath(receptor_file) if not(os.path.exists(receptor_file)): print "ERROR: structure file " + receptor_file + " does not exist!" return 'stop' receptor_obj = receptor(receptor_file) self.outputData(receptor_obj=receptor_obj) """ self.setFunction(code)
def __init__(self, name='AutogridResDirectoryBrowser', **kw): kw['name'] = name NetworkNode.__init__(*(self,), **kw) kw['name'] = name NetworkNode.__init__(*(self,), **kw) ip = self.inputPortsDescr ip.append(datatype='string', name='directory') self.widgetDescr['directory'] = { 'class':'NEEntryWithDirectoryBrowser', 'master':'node', 'width':16, 'initialValue':'', 'labelCfg':{'text':'Autogrid result directory: '} } op = self.outputPortsDescr op.append(datatype='autogrid_results', name='autogrid_result') op = self.outputPortsDescr op.append(datatype='string', name='zip_file_path') code = """def doit(self, directory): autogrid_result = autogrid_results(directory, "local") self.outputData(autogrid_result=autogrid_result, zip_file_path=autogrid_result.path) """ self.setFunction(code)
def __init__(self, name='AD4_typer', **kw): kw['name'] = name NetworkNode.__init__(*(self, ), **kw) ip = self.inputPortsDescr ip.append(datatype='MoleculeSet', name='mols') ip.append(datatype='int', required=False, name='set_aromatic_carbons', defaultValue=1) ip.append(datatype='int', required=False, name='reassign', defaultValue=1) ip.append(datatype='int', required=False, name='renameAtoms', defaultValue=0) op = self.outputPortsDescr op.append(datatype='MoleculeSet', name='typed_mols') code = """def doit(self,mols, set_aromatic_carbons=1, reassign=1, renameAtoms=0): if mols: at_typer = AutoDock4_AtomTyper(set_aromatic_carbons=1, renameAtoms=renameAtoms) for mol in mols: if not len(mol.allAtoms.bonds[0]): mol.buildBondsByDistance() at_typer.setAutoDockElements(mol, reassign=reassign) self.outputData(typed_mols=mols)\n""" self.setFunction(code)
def __init__(self, constrkw={}, name='ADTFileNames', **kw): kw['constrkw'] = constrkw kw['name'] = name NetworkNode.__init__(*(self, ), **kw) ip = self.inputPortsDescr ip.append({'name': 'recpetor_obj', 'datatype': 'receptor'}) op = self.outputPortsDescr op.append({'name': 'GPF_template', 'datatype': 'gpf_template'}) op.append({'name': 'DPF_template', 'datatype': 'dpf_template'}) op.append({'name': 'result_dir', 'datatype': 'string'}) code = """def doit(self, receptor_obj): import os from AutoDockTools.VisionInterface.Adt.receptor import receptor from AutoDockTools.VisionInterface.Adt.dpf_template import dpf_template from AutoDockTools.VisionInterface.Adt.gpf_template import gpf_template receptor_id = receptor_obj.get_id() receptor_dir = receptor_obj.get_workdir() gpf_file = receptor_dir + os.sep + receptor_id + '.gpf' dpf_file = receptor_dir + os.sep + receptor_id + '.dpf' GPF_template = gpf_template(gpf_file) DPF_template = dpf_template(dpf_file) result_dir = os.path.abspath(receptor_dir + os.sep + '..' + os.sep + receptor_id) if not(os.path.exists(gpf_file)): print "ERROR: GPF template " + gpf_file + " does not exist!" return 'stop' elif not(os.path.exists(dpf_file)): print "ERROR: DPF template " + dpf_file + " does not exist!" return 'stop' pdbqt_loc = receptor_obj.get_ext_loc('pdbqt') pqr_loc = receptor_obj.get_ext_loc('pqr') pdb_loc = receptor_obj.get_ext_loc('pdb') if pdbqt_loc == None and pqr_loc == None and pdb_loc == None: print "ERROR: No valid structure file found, none of the following exist" print " " + pdbqt_loc + ", " + pqr_loc + ", " + pdb_loc return 'stop' print "-------------------------------------------------------" print " INPUTS THAT WILL BE USED FOR VIRTUAL SCREENING " print "GPF Template: " + GPF_template.fullpath print "DPF Template: " + DPF_template.fullpath print "Results will be downloaded to: " + result_dir print "-------------------------------------------------------" pass self.outputData(GPF_template=GPF_template, DPF_template=DPF_template, result_dir=result_dir) """ self.configure(function=code)
def __init__(self, constrkw={}, name='Docking', **kw): kw['constrkw'] = constrkw kw['name'] = name NetworkNode.__init__(*(self, ), **kw) code = """def doit(self, docking_logs, rmsTool): from AutoDockTools.Docking import Docking d = Docking() for f in docking_logs: d.readDlg(f) d.clusterer.rmsTool = rmsTool self.outputData(docking = d) ## to ouput data on port docking use ## self.outputData(docking=data) """ self.configure(function=code) self.inputPortsDescr.append({ 'name': 'docking_logs', 'cast': True, 'datatype': 'list', 'balloon': 'list of docking log files to be read into as a single Docking', 'height': 12, 'width': 12, 'shape': 'oval', 'color': 'cyan' }) self.inputPortsDescr.append({ 'name': 'rmsTool', 'cast': True, 'datatype': 'None', 'balloon': 'rmsTool to be used for clustering', 'height': 8, 'width': 12, 'shape': 'diamond', 'color': 'white' }) self.outputPortsDescr.append({ 'name': 'docking', 'datatype': 'None', 'balloon': 'docking instance', 'height': 8, 'width': 12, 'shape': 'diamond', 'color': 'white' })
def __init__(self, name='RemoveWaters', **kw): kw['name'] = name NetworkNode.__init__(*(self, ), **kw) ip = self.inputPortsDescr ip.append(datatype='MoleculeSet', name='molecules') ip.append(datatype='str', required=False, name='residue_type_str', defaultValue='HOH') op = self.outputPortsDescr op.append(datatype='MoleculeSet', name='molecules_with_no_water_residues') op.append(datatype='int', name='num_water_res') code = """def doit(self, molecules, residue_type_str): if molecules: from MolKit.molecule import BondSet lenHOHs = 0 for mol in molecules: hohs = mol.allAtoms.get(lambda x: x.parent.type==residue_type_str) if hohs: #remove(hohs) lenHOHs = len(hohs) for h in hohs: for b in h.bonds: c = b.atom1 if c==h: c = b.atom2 c.bonds.remove(b) h.bonds = BondSet() res = h.parent h.parent.remove(h) if len(h.parent.children)==0: res = h.parent chain = res.parent #print 'removing residue: ', res.name chain.remove(res) if len(chain.children)==0: mol = chain.parent print 'removing chain', chain.id mol.remove(chain) del chain del res del h #fix allAtoms short cut mol.allAtoms = mol.chains.residues.atoms self.outputData(molecules_with_no_water_residues=molecules, num_water_res=lenHOHs)""" self.setFunction(code)
def __init__(self, name='UrlLigandDB', **kw): kw['name'] = name NetworkNode.__init__(*(self, ), **kw) kw['name'] = name NetworkNode.__init__(*(self, ), **kw) ip = self.inputPortsDescr ip.append(datatype='string', name='url') # ip.append(datatype='string', name='local_dir') self.widgetDescr['url'] = { 'class': 'NEEntry', 'master': 'node', 'width': 40, 'labelCfg': { 'text': 'URL to ligands: ' } } # self.widgetDescr['local_dir'] = { # 'class':'NEEntryWithDirectoryBrowser', 'master':'node', 'width':30, # 'labelCfg':{'text':'Local directory to save ligands: '} # } op = self.outputPortsDescr op.append(datatype='LigandDB', name='ligDB') # code = """def doit(self, url, local_dir): code = """def doit(self, url): # ligDB = LigandDB(url_compressed_file=url) ligDB = LigandDB(url_lib=url) bname = os.path.basename(url) # if bname.endwith('.tar.gz'): # print "TEST tar.gz" # elif bname.endswith('.zip'): # print "TEST ZIP" if not(url.startswith('http://kryptonite.nbcr.net/app')): print "ERROR: the URL must be a directory on kryptonite.nbcr.net" sys.exit() self.outputData(ligDB=ligDB) """ self.setFunction(code)
def __init__(self, name='MakeDPFCopies', **kw): kw['name'] = name NetworkNode.__init__(*(self, ), **kw) kw['name'] = name NetworkNode.__init__(*(self, ), **kw) ip = self.inputPortsDescr ip.append(datatype='dpf_template', name='dpf_file') ip.append(datatype='string', name='struct_dir') op = self.outputPortsDescr op.append(datatype='list', name='dpf_list') code = """def doit(self, dpf_file, struct_dir): import os import shutil from AutoDockTools.VisionInterface.Adt.dpf_template import dpf_template file_path = dpf_file.fullpath if not(os.path.exists(file_path)): print "ERROR: DPF template file " + file_path + " does not exist!" return 'stop' name_list = set() dpf_list = [] d = os.path.abspath(struct_dir) for i in os.listdir(struct_dir): if i.endswith(".pdbqt") or i.endswith(".pdb") or i.endswith(".pqr"): name_list.add(i.split('.')[0]) for i in name_list: dst = os.path.join(d, i + '.dpf') dpf_list.append(dst) if not(os.path.exists(dst)): shutil.copyfile(file_path, dst) self.outputData(dpf_list=dpf_list) """ self.setFunction(code)
def __init__(self, name='Manage Aromatic Carbons', **kw): kw['name'] = name NetworkNode.__init__(*(self, ), **kw) self.widgetDescr['cutoff'] = { 'class': 'NEDial', 'size': 50, 'oneTurn': 5.0, 'min': 1.0, 'lockMin': 1, 'type': 'float', 'initialValue': 7.5, 'labelGridCfg': { 'sticky': 'w' }, 'labelCfg': { 'text': 'cutoff' }, } ip = self.inputPortsDescr ip.append(datatype='MoleculeSet', name='mols') ip.append(datatype='float', required=False, name='cutoff', defaultValue=7.5) op = self.outputPortsDescr op.append(datatype='MoleculeSet', name='mols') op.append(datatype='int', name='num_aromaticCs') code = """def doit(self, mols, cutoff): if mols: aromC_manager = AromaticCarbonManager(cutoff=cutoff) num_aromCs = 0 for mol in mols: if not len(mol.allAtoms.bonds[0]): mol.buildBondsByDistance() aromCs = aromC_manager.setAromaticCarbons(mol, cutoff=cutoff) num_aromCs+=len(aromCs) self.outputData(mols=mols, num_aromaticCs=num_aromCs)\n""" self.setFunction(code)
def __init__(self, name='AD4_SolvationParameterizer', **kw): kw['name'] = name NetworkNode.__init__(*(self, ), **kw) ip = self.inputPortsDescr ip.append(datatype='MoleculeSet', name='mols') op = self.outputPortsDescr op.append(datatype='MoleculeSet', name='typed_mols') op.append(datatype='list', name='AtSolPar') code = """def doit(self,mols): if mols: SP = SolvationParameterizer() for mol in mols: unknown_atoms = SP.addParameters(mol.chains.residues.atoms) #?keep information about unknown_atoms? if unknown_atoms is not None: mol.unknown_atoms = len(unknown_atoms) self.outputData(typed_mols=mols, AtSolPar=mols.allAtoms.AtSolPar)\n""" self.setFunction(code)
def __init__(self, name='Manage Rotatable Bonds', **kw): kw['name'] = name NetworkNode.__init__(*(self, ), **kw) ip = self.inputPortsDescr ip.append(datatype='MoleculeSet', name='mols', defaultValue='auto') ip.append(datatype='string', required=False, name='root') ip.append(datatype='string', required=False, name='allowed_bonds', defaultValue='backbone') ip.append(datatype='int', required=False, name='check_for_fragments', defaultValue=0) ip.append(datatype='string', required=False, name='bonds_to_inactivate', defaultValue='') ip.append(datatype='string', required=False, name='limit_torsions', defaultValue='') op = self.outputPortsDescr op.append(datatype='MoleculeSet', name='mols') code = """def doit(self, mols, root, allowed_bonds, check_for_fragments, bonds_to_inactivate, limit_torsions): if mols: #mol = mols[0] for mol in mols: if not len(mol.allAtoms.bonds[0]): mol.buildBondsByDistance() print "root=", root mol.RBM = RotatableBondManager(mol, allowed_bonds, root, check_for_fragments=check_for_fragments, bonds_to_inactivate=bonds_to_inactivate) if limit_torsions: mol.RBM.limit_torsions(limit_torsions) self.outputData(mols=mols)\n""" self.setFunction(code)
def __init__(self, name='DPFTemplateBrowser', **kw): kw['name'] = name NetworkNode.__init__(*(self, ), **kw) kw['name'] = name NetworkNode.__init__(*(self, ), **kw) ip = self.inputPortsDescr ip.append(datatype='string', name='dpf_template_file') filetypes = [('All supported files', '*.dpf')] self.widgetDescr['dpf_template_file'] = { 'class': 'NEEntryWithFileBrowser', 'master': 'node', 'width': 20, 'filetypes': filetypes, 'initialValue': '', 'labelCfg': { 'text': 'DPF template file: ' } } op = self.outputPortsDescr op.append(datatype='dpf_template', name='dpf_template') code = """def doit(self, dpf_template_file): import os from AutoDockTools.VisionInterface.Adt.dpf_template import dpf_template dpf_template_file = os.path.abspath(dpf_template_file) if not(os.path.exists(dpf_template_file)): print "ERROR: DPF template file " + dpf_template_file + " does not exist!" return 'stop' dpf_template = dpf_template(dpf_template_file) self.outputData(dpf_template=dpf_template) """ self.setFunction(code)
def __init__(self, name='Prepare Autodock3 Dpf', **kw): kw['name'] = name NetworkNode.__init__(*(self, ), **kw) ip = self.inputPortsDescr ip.append(datatype='string', name='ligand_filename') ip.append(datatype='string', name='receptor_filename') ip.append(datatype='string', required=False, name='dpf_filename', defaultValue='') ip.append(datatype='dict', required=False, name='parameters', defaultValue={}) ip.append(datatype='string', required=False, name='outputfilename', defaultValue='') op = self.outputPortsDescr op.append(datatype='string', name='ad3_parameter_file') code = """def doit(self, ligand_filename, receptor_filename, dpf_filename, parameters, outputfilename): if ligand_filename and receptor_filename: from AutoDockTools.DockingParameters import DockingParameterFileMaker dpfm = DockingParameterFileMaker() dpfm.set_ligand(ligand_filename) dpfm.set_receptor(receptor_filename) if dpf_filename: dpfm.read_reference(dpf_filename) if len(parameters): dpfm.set_docking_parameters(parameters) if not outputfilename: outputfilename = dpfm.ligand.name+'_'+dpfm.receptor_stem + ".dpf" dpfm.write_dpf(outputfilename) self.outputData(ad3_parameter_file=outputfilename)\n""" self.setFunction(code)
def __init__(self, name='Prepare Autogrid4 Gpf', **kw): kw['name'] = name NetworkNode.__init__(*(self, ), **kw) ip = self.inputPortsDescr ip.append(datatype='string', name='ligand_filename') ip.append(datatype='string', name='receptor_filename') ip.append(datatype='string', required=False, name='gpf_filename', defaultValue='') ip.append(datatype='dict', required=False, name='parameters', defaultValue={}) ip.append(datatype='string', required=False, name='outputfilename', defaultValue='') op = self.outputPortsDescr op.append(datatype='string', name='ag4_parameter_file') code = """def doit(self, ligand_filename, receptor_filename, gpf_filename, parameters, outputfilename): if ligand_filename and receptor_filename: from AutoDockTools.GridParameters import GridParameter4FileMaker gpfm = GridParameter4FileMaker() gpfm.set_ligand(ligand_filename) gpfm.set_receptor(receptor_filename) if gpf_filename: gpfm.read_reference(gpf_filename) if len(parameters): gpfm.set_grid_parameters(parameters) if not outputfilename: outputfilename = gpfm.ligand.name+'_'+gpfm.receptor_stem + ".gpf" gpfm.write_gpf(outputfilename) self.outputData(ag4_parameter_file=outputfilename)\n""" self.setFunction(code)
def __init__(self, constrkw = {}, name='ADTFileNames', **kw): kw['constrkw'] = constrkw kw['name'] = name NetworkNode.__init__(*(self,), **kw) ip = self.inputPortsDescr ip.append({'name': 'recpetor_obj', 'datatype': 'receptor'}) op = self.outputPortsDescr op.append({'name': 'GPF_template', 'datatype': 'gpf_template'}) op.append({'name': 'DPF_template', 'datatype': 'dpf_template'}) op.append({'name': 'result_dir', 'datatype': 'string'}) code = """def doit(self, receptor_obj): import os from AutoDockTools.VisionInterface.Adt.receptor import receptor from AutoDockTools.VisionInterface.Adt.dpf_template import dpf_template from AutoDockTools.VisionInterface.Adt.gpf_template import gpf_template receptor_id = receptor_obj.get_id() receptor_dir = receptor_obj.get_workdir() GPF_template = gpf_template(receptor_dir + os.sep + receptor_id + '.gpf') DPF_template = dpf_template(receptor_dir + os.sep + receptor_id + '.dpf') result_dir = os.path.abspath(receptor_dir + os.sep + '..' + os.sep + receptor_id) print "-------------------------------------------------------" print " INPUTS THAT WILL BE USED FOR VIRTUAL SCREENING " print "GPF Template: " + GPF_template.fullpath print "DPF Template: " + DPF_template.fullpath print "Results will be downloaded to: " + result_dir print "-------------------------------------------------------" pass self.outputData(GPF_template=GPF_template, DPF_template=DPF_template, result_dir=result_dir) """ self.configure(function=code)
def __init__(self, name='Ligand_Writer', **kw): kw['name'] = name NetworkNode.__init__(*(self, ), **kw) fileTypes = [('pdbq', '*.pdbq'), ('all', '*')] self.widgetDescr['output_filename'] = { 'class': 'NEEntryWithFileSaver', 'master': 'node', 'filetypes': fileTypes, 'title': 'save AD3 Ligand', 'width': 10, 'labelCfg': { 'text': 'file:' }, } ip = self.inputPortsDescr ip.append(datatype='Molecule', name='mol') ip.append(datatype='string', name='output_filename') op = self.outputPortsDescr op.append(datatype='Molecule', name='mol') code = """def doit(self, mol, output_filename): if mol: #mol = mols[0] #check for bonds with 'possibleTors/activeTOrs keys' #check for root #check for TORSDOF #check for charges writer = LigandWriter() writer.write(mol, output_filename) self.outputData(mol=mol)\n""" self.setFunction(code)
def __init__(self, name='MakeDPFCopies', **kw): kw['name'] = name NetworkNode.__init__(*(self, ), **kw) kw['name'] = name NetworkNode.__init__(*(self, ), **kw) ip = self.inputPortsDescr ip.append(datatype='gpf_template', name='gpf_file', required=False) ip.append(datatype='dpf_template', name='dpf_file', required=False) ip.append(datatype='string', name='struct_dir', required=True) op = self.outputPortsDescr op.append(datatype='list', name='gpf_list') op.append(datatype='list', name='dpf_list') op.append(datatype='string', name='struct_dir') code = """def doit(self, gpf_file, dpf_file, struct_dir): import os import shutil from AutoDockTools.VisionInterface.Adt.dpf_template import dpf_template from AutoDockTools.VisionInterface.Adt.gpf_template import gpf_template if dpf_file == None and gpf_file == None: print "ERROR: DPF and GPF input missing" return 'stop' if dpf_file != None: dpf_file_path = dpf_file.fullpath if not(os.path.exists(dpf_file_path)): print "ERROR: DPF template file " + dpf_file_path + " does not exist!" return 'stop' if gpf_file != None: gpf_file_path = gpf_file.fullpath if not(os.path.exists(gpf_file_path)): print "ERROR: GPF template file " + gpf_file_path + " does not exist!" return 'stop' name_list = set() d = os.path.abspath(struct_dir) for i in os.listdir(struct_dir): if i.endswith(".pdbqt") or i.endswith(".pdb") or i.endswith(".pqr"): name_list.add(i.split('.')[0]) dpf_list = [] gpf_list = [] if dpf_file != None: for i in name_list: d_dst = os.path.join(d, i + '.dpf') dpf_list.append(d_dst) if not(os.path.exists(d_dst)): shutil.copyfile(dpf_file_path, d_dst) if gpf_file != None: for i in name_list: g_dst = os.path.join(d, i + '.gpf') gpf_list.append(g_dst) if not(os.path.exists(g_dst)): shutil.copyfile(gpf_file_path, g_dst) self.outputData(dpf_list=dpf_list, gpf_list=gpf_list, struct_dir=struct_dir) """ self.setFunction(code)
def __init__(self, constrkw={}, name='GetStructuresFromDir', **kw): kw['constrkw'] = constrkw kw['name'] = name NetworkNode.__init__(*(self, ), **kw) ip = self.inputPortsDescr ip.append({'name': 'directory', 'datatype': 'string'}) self.widgetDescr['directory'] = { 'class': 'NEEntryWithDirectoryBrowser', 'master': 'node', 'width': 20, 'initialValue': '', 'labelCfg': { 'text': 'Structure Directory: ' } } op = self.outputPortsDescr op.append({'name': 'structure_list_obj', 'datatype': 'list'}) # op = self.outputPortsDescr # op.append({'name': 'structure_list', 'datatype': 'list'}) code = """def doit(self, directory): import glob, os from AutoDockTools.VisionInterface.Adt.receptor import receptor directory = os.path.abspath(directory) if directory == None: return 'stop' if directory is not None: cwd = os.getcwd() os.chdir(directory) try: filenames_pdbqt = glob.glob('*.pdbqt') filenames_pqr = glob.glob('*.pqr') filenames_pdb = glob.glob('*.pdb') structure_list = filenames_pdbqt for f in filenames_pqr: sid = f.rstrip('.pqr') s = sid + '.pdbqt' found = False for i in structure_list: if i == s: found = True break if found == False: structure_list.append(f) for f in filenames_pdb: sid = f.rstrip('.pdb') found = False for i in structure_list: if i == sid + '.pdb' or i == sid + '.pdbqt': found = True break if found == False: structure_list.append(f) structure_list = [os.path.join(directory, x) for x in filenames_pdbqt] structure_list_obj = [receptor(x) for x in structure_list] finally: if directory is not None: os.chdir(cwd) print "--------------------------------------------------------------" print "The following structures are found in the structure directory:" count = 0 for i in structure_list: count = count + 1 print str(count) + '. ' + i print "--------------------------------------------------------------" pass # self.outputData(structure_list_obj=structure_list_obj, structure_list=structure_list) self.outputData(structure_list_obj=structure_list_obj) """ self.configure(function=code)
def __init__(self, name='PublicServerLigandDB', **kw): import urllib.request, urllib.parse, urllib.error kw['name'] = name NetworkNode.__init__(*(self, ), **kw) kw['name'] = name NetworkNode.__init__(*(self, ), **kw) ip = self.inputPortsDescr ip.append( datatype='string', name='server_lib', required=True, ) fqdn = "kryptonite.nbcr.net" url = "http://" + fqdn + "/pub_ligand_libs.txt" publibdir = os.path.join(getResourceFolderWithVersion(), 'ws') if not (os.path.exists(publibdir)): os.mkdir(publibdir) publiblocal = os.path.join(publibdir, 'publibs.txt') lock = publiblocal + '.lock' if os.path.exists(lock) and time.time() - os.path.getmtime(lock) > 15: os.remove(lock) try: if not (os.path.exists(lock)): open(lock, 'w').close() publibweb = urllib.request.urlopen(url) outfile = open(publiblocal, 'w') outfile.write(publibweb.read()) outfile.close() os.remove(lock) except: print("[INFO]: Getting list of public server libs from cache") pass try: f = open(publiblocal, 'r') self.choices = f.read().split() f.close() except: self.choices = [] print( "[ERROR]: Unable to public server libs from the web and from cache" ) self.widgetDescr['server_lib'] = { 'class': 'NEComboBox', 'master': 'node', 'choices': self.choices, 'fixedChoices': True, 'entryfield_entry_width': 18, 'labelGridCfg': { 'sticky': 'w' }, 'widgetGridCfg': { 'sticky': 'w' }, 'labelCfg': { 'text': 'Server Libraries:' } } op = self.outputPortsDescr op.append(datatype='LigandDB', name='ligDB') code = """def doit(self, server_lib): ligDB = LigandDB(server_lib=server_lib) self.outputData(ligDB=ligDB) """ self.setFunction(code)
def __init__(self, constrkw={}, name='ReadDockingParameterFile', **kw): kw['constrkw'] = constrkw kw['name'] = name NetworkNode.__init__(*(self, ), **kw) fileTypes = [('dpf', '*')] self.widgetDescr['filename'] = { 'class': 'NEEntryWithFileBrowser', 'master': 'node', 'filetypes': fileTypes, 'title': 'read file', 'width': 16, 'labelCfg': { 'text': 'file:' }, } code = """def doit(self, template_dpf_filename): if template_dpf_filename: from AutoDockTools.DockingParameters import DockingParameters gpo = DockingParameters() gpo.read(template_dpf_filename) self.outputData(gpo=gpo) """ self.configure(function=code) self.inputPortsDescr.append({ 'name': 'template_dpf_filename', 'cast': True, 'datatype': 'string', 'balloon': 'template grid parameter filename', 'required': False, 'height': 8, 'width': 12, 'shape': 'oval', 'color': 'white' }) self.outputPortsDescr.append({ 'name': 'gpo', 'datatype': 'None', 'balloon': 'gpo, grid parameter object, instance of AutoDockTools.DockingParameters', 'height': 8, 'width': 12, 'shape': 'diamond', 'color': 'white' }) self.widgetDescr['template_dpf_filename'] = { 'initialValue': '', 'labelGridCfg': { 'column': 0, 'row': 0 }, 'master': 'node', 'widgetGridCfg': { 'labelSide': 'left', 'column': 1, 'row': 0 }, 'labelCfg': { 'text': '' }, 'class': 'NEEntryWithFileBrowser' }
def __init__(self, name='filterLigands', **kw): kw['name'] = name NetworkNode.__init__(*(self, ), **kw) # create filter object lfilter = self.lfilter = FilterLigands() lfilter.setFilter('default') ip = self.inputPortsDescr ip.append(datatype='LigandDB', name='ligands') ip.append(datatype='string', name='filterMode') self.widgetDescr['filterMode'] = { 'class': 'NEComboBox', 'master': 'node', 'choices': [ 'None', 'default', 'Lipinski-like', 'Drug-like', 'Drug-like frag', 'Custom' ], 'fixedChoices': True, 'initialValue': 'default', 'entryfield_entry_width': 8, 'labelGridCfg': { 'sticky': 'w' }, 'widgetGridCfg': { 'sticky': 'w' }, 'labelCfg': { 'text': 'filter type:' } } labels = [ 'Min num. of h-bond donors:', 'Max num. of h-bond donors:', 'Min num. of h-bond acceptors', 'Max num. of h-bond acceptors', 'Min molecular weight', 'Max molecular weight', 'Min num. of heavy atoms', 'Max num. of heavy atoms', 'Min num. of rotatable bonds', 'Max num. of rotatable bonds' ] for i, param in enumerate([ 'hbd_min', 'hbd_max', 'hba_min', 'hba_max', 'mw_min', 'mw_max', 'nat_min', 'nat_max', 'torsdof_min', 'torsdof_max' ]): ip.append(datatype='int', name=param) value = getattr(lfilter, self.attr[i]) self.widgetDescr[param] = { 'class': 'NEThumbWheel', 'master': 'ParamPanel', 'width': 75, 'height': 12, 'oneTurn': 10, 'type': 'int', 'wheelPad': 0, 'initialValue': value, 'min': 0, 'labelCfg': { 'text': labels[i] } } op = self.outputPortsDescr op.append(datatype='LigandDB', name='ligands') op.append(datatype='int', name='num_accepted') op.append(datatype='int', name='num_rejected') code = """def doit(self, ligands, filterMode='default', hbd_min=None, hbd_max=None, hba_min=None, hba_max=None, mw_min=None, mw_max=None, nat_min=None, nat_max=None, torsdof_min=None, torsdof_max=None): lfilter = self.lfilter if filterMode != "Custom": lfilter.setFilter(filterMode) else: kwargs = {"HbDMin": hbd_min, "HbDMax": hbd_max, "HbAMin": hba_min, "HbAMax": hba_max, "MWMin": mw_min, "MWMax": mw_max, "NatMin": nat_min, "NatMax": nat_max, "TORSDOFMin": torsdof_min, "TORSDOFMax": torsdof_max} lfilter.setFilterRanges('Custom', **kwargs) if self.inputPorts[1].hasNewValidData(): # new mode -> update widgets self.setParamPanelWidget(lfilter) print "Running Filter node with parameters:" print "min number of hydrogen bond donors: " + str(lfilter.HbDMin) print "max number of hydrogen bond donors: " + str(lfilter.HbDMax) print "min number of hydrogen bond acceptors: " + str(lfilter.HbAMin) print "max number of hydrogen bond acceptors: " + str(lfilter.HbAMax) print "min molecular weight: " + str(lfilter.MWMin) print "max molecular weight: " + str(lfilter.MWMax) print "min number of heavy atoms: " + str(lfilter.NatMin) print "max number of heavy atoms: " + str(lfilter.NatMax) print "min number of rotatable bonds: " + str(lfilter.TORSDOFMin) print "max number of rotatable bonds: " + str(lfilter.TORSDOFMax) # accepted, rejected = lfilter.filterTable(ligands.propertyTable) accepted, rejected = lfilter.filterTable(ligands.propertyTable, ligands.accepted) ligands.SetAcceptedLigands(accepted.filenames) if len(accepted.filenames) > 2500: print "ERROR: Sorry, we cannot send your virtual screening job to the server because the number of accepted ligands from the filter is greater than the maximum number of ligands (2500) the server can support" return 'stop' self.outputData(ligands=ligands, num_accepted = len(accepted.filenames), num_rejected=len(rejected)) """ self.setFunction(code)