from torsion.cubes import FilterBrI from floe.api import WorkFloe from floe.api import ParallelCubeGroup from floe.api import OEMolOStreamCube from floe.api import OEMolIStreamCube from floe import constants # Declare Floe, add metadata for UI job = WorkFloe('Filtered Massively Parallel 2-stage Dihedral Scan of Torsions') job.description = """ Filtered Calculate the Energy Profile associated with a Dihedral Scan in a massively parallel manner. """ job.classification = [["Torsion"]] # Declare Cubes ifs = OEMolIStreamCube('ifs') ifs.promote_parameter('data_in', promoted_name='ifs') ifs.parameter_overrides["download_format"] = {"hidden": True} ifs.parameter_overrides["limit"] = {"hidden": True} element_filter = FilterBrI('element_filter') # Conformer generation confgenCube = ParallelGenerateStartingConfs('confgenCube') confgenCube.promote_parameter('max_confs', required=True) confgenCube.promote_parameter('rms_cutoff', required=True) confgenCube.parameter_overrides["energy_window"] = {"hidden": True} confgenCube.parameter_overrides["split_output"] = {"hidden": True} confgen_failure = OEMolOStreamCube('confgen_failure') confgen_failure.promote_parameter('data_out',
complex (file): OEB file of the prepared protein:ligand complex Optional: -------- picosec (float): Number of picoseconds to warm up the complex temperature (decimal): target final temperature after warming Outputs: -------- ofs: Outputs the constant temperature and volume system """ job.classification = [['NVT']] job.tags = [tag for lists in job.classification for tag in lists] ifs = OEMolIStreamCube("complex", title="Complex Reader") ifs.promote_parameter("data_in", promoted_name="complex", title='Complex Input File', description="protein:ligand complex input file") nvt = OpenMMnvtCube('nvt') nvt.promote_parameter('time', promoted_name='picosec', default=10.0) nvt.promote_parameter('temperature', promoted_name='temperature', default=300.0, description='Selected temperature in K') # Restraints nvt.promote_parameter('restraints', promoted_name='restraints', default='noh (ligand or protein)') nvt.promote_parameter('restraintWt', promoted_name='restraintWt', default=2.0) # Trajectory and logging info frequency intervals nvt.promote_parameter('trajectory_interval', promoted_name='trajectory_interval', default=100, description='Trajectory saving interval') nvt.promote_parameter('reporter_interval', promoted_name='reporter_interval', default=1000, description='Reporter saving interval')
Parameters: ----------- protein (file): OEB file of the prepared protein ligands (file): OEB file of the prepared ligands Outputs: -------- ofs: Output file """ job.classification = [['Simulation']] job.tags = [tag for lists in job.classification for tag in lists] # Ligand setting iligs = OEMolIStreamCube("Ligands", title="Ligand Reader") iligs.promote_parameter("data_in", promoted_name="ligands", title="Ligand Input File", description="Ligand file name") chargelig = LigChargeCube("LigCharge") chargelig.promote_parameter( 'max_conformers', promoted_name='max_conformers', description="Set the max number of conformers per ligand", default=800) # Protein Setting iprot = ProteinReader("ProteinReader") iprot.promote_parameter("data_in",
Optional: -------- picosec (float): Number of picoseconds to warm up the complex temperature (decimal): target final temperature in K pressure (decimal): target final pressure in atm Outputs: -------- ofs: Outputs the constant temperature and pressure system """ job.classification = [['NPT']] job.tags = [tag for lists in job.classification for tag in lists] ifs = OEMolIStreamCube("SystemReader", title="System Reader") ifs.promote_parameter("data_in", promoted_name="system", title='System Input File', description="System input file") npt = OpenMMnptCube('npt') npt.promote_parameter('time', promoted_name='picosec', default=10.0, description='Length of MD run in picoseconds') npt.promote_parameter('temperature', promoted_name='temperature', default=300.0, description='Selected temperature in K') npt.promote_parameter('pressure',
See [http://getyank.org](http://getyank.org) for more information on YANK and the alchemical free energy calculations it supports. YANK is free (libre) open source software licensed under the [MIT License](https://github.com/choderalab/yank/blob/master/LICENSE). All source code is available at: [http://github.com/choderalab/yank](http://github.com/choderalab/yank) YANK is produced by the Chodera lab: [http://choderalab.org](http://choderalab.org). Please help us make it better by contributing code or funds. """ job.classification =[["YANK", "Binding free energies", "OpenMM", "choderalab"]] job.tags = [tag for lists in job.classification for tag in lists] ifs = OEMolIStreamCube("ifs") ifs.promote_parameter("data_in", promoted_name="molecules", description="Input molecules") yank_cube = YankBindingCube('yank_binding', title = 'Yank for binding free energies') for parameter_name in ['receptor', 'solvent', 'temperature', 'pressure', 'nsteps_per_iteration', 'simulation_time', 'timestep', 'minimize', 'verbose']: promoted_name = parameter_name description = yank_cube.parameters()[parameter_name].description yank_cube.promote_parameter(parameter_name, promoted_name=promoted_name, description=description) success_ofs = OEMolOStreamCube("success_ofs") success_ofs.promote_parameter("data_out", promoted_name="success", description="Output molecules") failure_ofs = OEMolOStreamCube("failure_ofs") failure_ofs.promote_parameter("data_out", promoted_name="failure", description="Failed molecules") cubes = [ifs, yank_cube, success_ofs, failure_ofs]
ParallelFastFPInsertKA, AccumulateRankings, AnalyseRankings) from cubes.output_cubes import TextRankingOutputCube, PlotResults, ResultsOutputCube from floe.api import WorkFloe, CubeGroup from floe.api import OEMolOStreamCube from floe.api import OEMolIStreamCube # Declare Floe, add metadata for UI job = WorkFloe('VS Floe') job.description = """ Read an index text file and write the indices in an other file """ job.classification = [["Virtual Screening", "Create Ranking"]] # Declare Cubes act_reader = OEMolIStreamCube('act_reader') act_reader.promote_parameter('data_in', promoted_name='act_db') #index_reader = IndexInputCube('index_reader') #index_reader.promote_parameter('data_in', promoted_name='index_log') index_generator = IndexGenerator('index generator') accu_act = AccuMolList('accumulate actives') #calc_fp = CalculateFPCube('calculate fingerprints') prep_sim_calc = PrepareRanking('prepare similarity calculation') prep_sim_calc.promote_parameter('method', promoted_name='method') calc_sim = ParallelFastFPRanking('calculate similarity value') calc_sim.promote_parameter('url', promoted_name='url') calc_sim.promote_parameter('fptype', promoted_name='fptype') calc_sim.promote_parameter('topn', promoted_name='topn') #calc_sim.promote_parameter('data_in', promoted_name='screen_db')
'%(levelname)-8s %(message)s', datefmt='%Y-%m-%d %H:%M:%S') from torsion.cubes import ParallelPsi4EnergyCalculation, SerialGenerateStartingConfs, SerialGenerateTorsionalConfs from floe.api import WorkFloe from floe.api import OEMolOStreamCube from floe.api import OEMolIStreamCube # Declare Floe, add metadata for UI job = WorkFloe('Massively Parallel Dihedral Scan of Torsions') job.description = """ Calculate the Energy Profile associated with a Dihedral Scan in a massively parallel manner. """ job.classification = [["Torsion"]] # Declare Cubes ifs = OEMolIStreamCube('ifs') ifs.promote_parameter('data_in', promoted_name='ifs') confgenCube = SerialGenerateStartingConfs('starting_conf_gen') confgenCube.promote_parameter( 'max_confs', title='Maximum Alternate Starting Conformers', description= 'Maximum number of starting conformations to use in QM torsion driving experiment. ' + 'NOTE: If you do not want to generate starting conformations, set this to 1.' ) confgen_failure = OEMolOStreamCube('confgen_failure') confgen_failure.promote_parameter('data_out', promoted_name='confgen_failure',
from floe.api import WorkFloe, OEMolIStreamCube, OEMolOStreamCube from YankCubes.cubes import YankBindingFECube, SyncBindingFECube job = WorkFloe("YANK small molecule absolute binding free energies") job.description = """ # Compute small molecule absolute binding free energies using YANK. This Floe processes the provided molecules, computes free energies of binding to a specified receptor, and appends the following SDData properties to the original molecules: """ iligand = OEMolIStreamCube("ReadingLigand") iligand.promote_parameter("data_in", promoted_name="ligands", title="Ligand Input File", description="Ligand file name") icomplex = OEMolIStreamCube("ReadingComplex") icomplex.promote_parameter("data_in", promoted_name="complex", title="Complex Input File", description="complex file name") sync = SyncBindingFECube("SyncCube") yankabfe = YankBindingFECube("YankBindingFE") ofs = OEMolOStreamCube('ofs', title='OFS-Success') ofs.set_parameters(backend='s3') fail = OEMolOStreamCube('fail', title='OFS-Failure')
from floe.api import WorkFloe, OEMolIStreamCube, OEMolOStreamCube from PlatformTestCubes.cubes import PlatformTestCube job = WorkFloe("OpenMMPlatforms") job.description = """ **Check available OpenMM Platforms** Based on OpenMM SimTK installation check script """ job.classification = [ ["OpenMM", "Platforms"] ] job.tags = [tag for lists in job.classification for tag in lists] ifs = OEMolIStreamCube("ifs") ofs = OEMolOStreamCube("ofs") # Promotes the parameter to something we can specify from the command line as "--ifs=..." ifs.promote_parameter("data_in", promoted_name="ifs") # this is hardwiring the filename to the molecules coming out of ofs ofs.set_parameters(data_out="openmmPlatformCheck.oeb") # the name of the object has to match the string: this is the name of myself platformTester = PlatformTestCube("platformTester") job.add_cubes(ifs, ofs, platformTester) ifs.success.connect(platformTester.intake) platformTester.success.connect(ofs.intake)