airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_experiments/md/applications.py (162 lines of code) (raw):

# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # from typing import Literal from ..base import Experiment, ExperimentApp, GUIApp class NAMD(ExperimentApp): """ Nanoscale Molecular Dynamics (NAMD, formerly Not Another Molecular Dynamics Program) is a computer software for molecular dynamics simulation, written using the Charm++ parallel programming model (not to be confused with CHARMM). It is noted for its parallel efficiency and is often used to simulate large systems (millions of atoms). It has been developed by the collaboration of the Theoretical and Computational Biophysics Group (TCB) and the Parallel Programming Laboratory (PPL) at the University of Illinois Urbana–Champaign. """ def __init__( self, ) -> None: super().__init__(app_id="NAMD") @classmethod def initialize( cls, name: str, config_file: str, pdb_file: str, psf_file: str, ffp_files: list[str], other_files: list[str] = [], parallelism: Literal["CPU", "GPU"] = "CPU", num_replicas: int = 1, ) -> Experiment[ExperimentApp]: app = cls() obj = Experiment[ExperimentApp](name, app).with_inputs( config_file=config_file, pdb_file=pdb_file, psf_file=psf_file, ffp_files=ffp_files, parallelism=parallelism, other_files=other_files, num_replicas=num_replicas, ) obj.input_mapping = { "MD-Instructions-Input": ("config_file", "uri"), "Coordinates-PDB-File": ("pdb_file", "uri"), "Protein-Structure-File_PSF": ("psf_file", "uri"), "FF-Parameter-Files": ("ffp_files", "uri[]"), "Execution_Type": ("parallelism", "str"), "Optional_Inputs": ("other_files", "uri[]"), "Number of Replicas": ("num_replicas", "str"), } obj.tasks = [] return obj class GROMACS(ExperimentApp): """ GROMACS (GROningen MAchine for Chemical Simulations) is a molecular dynamics package mainly designed for simulations of proteins, lipids, and nucleic acids. It was developed in the Biophysical Chemistry department of University of Groningen, Netherlands. GROMACS is one of the fastest and most popular software packages available, and can run on central processing units (CPUs) and graphics processing units (GPUs). It is free, open-source software released under the GNU General Public License (GPL). """ def __init__( self, ) -> None: super().__init__(app_id="Gromacs_with_OptionalRestart") @classmethod def initialize( cls, name: str, pib_file: str, coord_file: str, optional_files: list[str] = [], environment: str = "I_MPI_FABRICS shm:ofa", ) -> Experiment[ExperimentApp]: app = cls() obj = Experiment[ExperimentApp](name, app).with_inputs( pib_file=pib_file, coord_file=coord_file, optional_files=optional_files, environment=environment, ) obj.input_mapping = { "Portable-Input-Binary-File": ("pib_file", "uri"), "Coordinate-File": ("coord_file", "uri"), "Optional_Files": ("optional_files", "uri[]"), "environment": ("environment", "str"), } obj.tasks = [] return obj class AlphaFold2(ExperimentApp): """ AlphaFold is a deep learning-based protein structure prediction method developed by DeepMind. It was the first protein structure prediction method to achieve competitive accuracy with experimental methods, and has been widely adopted by the scientific community for various applications. AlphaFold2 is the second version of the method, which was released in 2021. It builds on the success of the original AlphaFold by incorporating new deep learning architectures and training procedures to further improve accuracy and speed. """ def __init__( self, ) -> None: super().__init__(app_id="AlphaFold2") @classmethod def initialize( cls, name: str, input_seq: str, max_template_date: str, model_preset: str = "monomer", multimers_per_model: int = 1, ) -> Experiment[ExperimentApp]: app = cls() obj = Experiment[ExperimentApp](name, app).with_inputs( input_seq=input_seq, max_template_date=max_template_date, model_preset=model_preset, multimers_per_model=multimers_per_model, ) obj.input_mapping = { "Input Sequence(s) File": ("input_seq", "uri"), "Maximum Template Date": ("max_template_date", "str"), "MODEL_PRESET": ("model_preset", "str"), "Number_Of_Multimers_Per_Model": ("multimers_per_model", "str"), } obj.tasks = [] return obj class AMBER(ExperimentApp): """ Assisted Model Building with Energy Refinement (AMBER) is a family of force fields for molecular dynamics of biomolecules originally developed by Peter Kollman's group at the University of California, San Francisco. AMBER is also the name for the molecular dynamics software package that simulates these force fields. It consists of a set of molecular mechanical force fields for the simulation of biomolecules (which are in the public domain, and are used in a variety of simulation programs); and a package of molecular simulation programs, source code and demos. """ def __init__( self, ) -> None: super().__init__(app_id="Amber_pmemd_CUDA") @classmethod def initialize( cls, name: str, coord_file: str, control_file: str, topology_file: str, ref_coord_file: str = "", ) -> Experiment[ExperimentApp]: app = cls() obj = Experiment[ExperimentApp](name, app).with_inputs( coord_file=coord_file, control_file=control_file, topology_file=topology_file, ref_coord_file=ref_coord_file, ) obj.input_mapping = { "Input_Coordinates": ("coord_file", "uri"), "MD_control_Input": ("control_file", "uri"), "Parameter-Topology-File": ("topology_file", "uri"), "Reference-coordinate-file": ("topology_file", "uri"), } obj.tasks = [] return obj class Gaussian(ExperimentApp): """ Gaussian is a computational chemistry software package used for calculating molecular electronic structure and properties. It is widely used in the field of computational chemistry and is known for its accuracy and efficiency in modeling chemical systems. Gaussian is developed by Gaussian, Inc., and is available for various operating systems including Windows, macOS, and Linux. """ def __init__( self, ) -> None: super().__init__(app_id="Gaussian16") @classmethod def initialize( cls, name: str, input_file: str, gpu_version: str, ) -> Experiment[ExperimentApp]: app = cls() obj = Experiment[ExperimentApp](name, app).with_inputs( input_file=input_file, gpu_version=gpu_version, ) obj.input_mapping = { "Input_File": ("input_file", "uri"), "GPU_Version?": ("gpu_version", "str"), } obj.tasks = [] return obj class VMD(GUIApp): """ Visual Molecular Dynamics (VMD) is a molecular visualization and analysis program designed for biological systems such as proteins, nucleic acids, lipid bilayer assemblies, etc. It also includes tools for working with volumetric data, sequence data, and arbitrary graphics objects. VMD can be used to animate and analyze the trajectory of molecular dynamics simulations, and can interactively manipulate molecules being simulated on remote computers (Interactive MD). """ def __init__( self, ) -> None: super().__init__(app_id="vmd") @classmethod def initialize( cls, name: str, ) -> GUIApp: app = cls() return app