This is an automated email from the ASF dual-hosted git repository. lahirujayathilake pushed a commit to branch cybershuttle-dev in repository https://gitbox.apache.org/repos/asf/airavata.git
commit 276a64ec1d011afc870141516c7ddd4ae00e1f77 Author: yasith <[email protected]> AuthorDate: Fri Feb 14 18:33:20 2025 -0500 bump version to 0.0.16 add AlphaFold2 and Gaussian applications update realm from 10000000 -> default add GROMACS and AMBER to MD SDK --- .../airavata_experiments/auth/__init__.py | 2 +- .../airavata_experiments/md/__init__.py | 11 +- .../airavata_experiments/md/applications.py | 183 +++++++++++++++++++-- .../airavata-python-sdk/pyproject.toml | 2 +- 4 files changed, 181 insertions(+), 17 deletions(-) diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_experiments/auth/__init__.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_experiments/auth/__init__.py index 86bf71e7f5..443d0a5c49 100644 --- a/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_experiments/auth/__init__.py +++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_experiments/auth/__init__.py @@ -18,7 +18,7 @@ from .device_auth import DeviceFlowAuthenticator context = DeviceFlowAuthenticator( idp_url="https://auth.cybershuttle.org", - realm="10000000", + realm="default", client_id="cybershuttle-agent", ) diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_experiments/md/__init__.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_experiments/md/__init__.py index 5c3b0d790c..ccd50dd924 100644 --- a/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_experiments/md/__init__.py +++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_experiments/md/__init__.py @@ -14,6 +14,13 @@ # limitations under the License. # -from .applications import NAMD, VMD +from .applications import AlphaFold2, AMBER, Gaussian, GROMACS, NAMD, VMD -__all__ = ["NAMD", "VMD"] +__all__ = [ + "AlphaFold2", + "AMBER", + "Gaussian", + "GROMACS", + "NAMD", + "VMD", +] diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_experiments/md/applications.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_experiments/md/applications.py index b68b1f7acb..19e67d6ea0 100644 --- a/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_experiments/md/applications.py +++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/airavata_experiments/md/applications.py @@ -58,19 +58,176 @@ class NAMD(ExperimentApp): num_replicas=num_replicas, ) obj.input_mapping = { - "MD-Instructions-Input": ("config_file", "uri"), # uri? [REQUIRED] - "Coordinates-PDB-File": ("pdb_file", "uri"), # uri? [OPTIONAL] - "Protein-Structure-File_PSF": ("psf_file", "uri"), # uri? [REQUIRED] - "FF-Parameter-Files": ("ffp_files", "uri[]"), # uri[]? [REQUIRED] - "Execution_Type": ("parallelism", "str"), # "CPU" | "GPU" [REQUIRED] - "Optional_Inputs": ("other_files", "uri[]"), # uri[]? [OPTIONAL] - "Number of Replicas": ("num_replicas", "str"), # integer [REQUIRED] - # "Constraints-PDB": ("pdb_file", "uri"), # uri? [OPTIONAL] - # "Replicate": (None, "str"), # "yes"? [OPTIONAL] - # "Continue_from_Previous_Run?": (None, "str"), # "yes"? [OPTIONAL] - # "Previous_JobID": (None, "str"), # string? [OPTIONAL] [show if "Continue_from_Previous_Run?" == "yes"] - # "GPU Resource Warning": (None, "str"), # string? [OPTIONAL] [show if "Continue_from_Previous_Run?" == "yes"] - # "Restart_Replicas_List": (None, "str[]"), # string [OPTIONAL] [show if "Continue_from_Previous_Run?" == "yes"] + "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 diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/pyproject.toml b/airavata-api/airavata-client-sdks/airavata-python-sdk/pyproject.toml index 1024105272..3cda818551 100644 --- a/airavata-api/airavata-client-sdks/airavata-python-sdk/pyproject.toml +++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "airavata-python-sdk-test" -version = "0.0.13" +version = "0.0.16" description = "Apache Airavata Python SDK" readme = "README.md" license = { text = "Apache License 2.0" }
