You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by la...@apache.org on 2025/02/26 17:24:03 UTC
(airavata) 07/14: bump version to 0.0.16 add AlphaFold2 and Gaussian applications update realm from 10000000 -> default add GROMACS and AMBER to MD SDK
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 <ya...@gatech.edu>
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" }