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" }

Reply via email to