From b381a8b8bcd5effab99096a3f66cd39ae1d7a67f Mon Sep 17 00:00:00 2001 From: Jas Kalayan Date: Fri, 19 Jun 2026 17:31:07 +0100 Subject: [PATCH 1/2] add examples for summary and include json summary, update test.json --- .../fieldextraction/extract_summary.py | 9 +- .../fieldextraction/extract_webform_fields.py | 19 +- .../schema/components/biosim_composition.yaml | 56 +- .../schema/components/biosim_compute.yaml | 56 +- .../schema/components/biosim_observables.yaml | 21 + .../schema/components/biosim_potentials.yaml | 24 + .../schema/components/biosim_quantities.yaml | 4 +- .../schema/components/biosim_settings.yaml | 119 +- .../schema/components/biosim_stages.yaml | 34 + .../schema/components/biosim_topology.yaml | 21 +- .../schema/components/biosim_trajectory.yaml | 42 +- biosim_schema/utils/generate_artifacts.py | 4 + project/linkml/biosim_schema.py | 16 +- .../jsonld/biosim_schema.context.jsonld | 2 +- project/linkml/jsonld/biosim_schema.jsonld | 1274 +++++++++++++++- .../jsonschema/biosim_schema.schema.json | 18 +- project/linkml/protobuf/biosim_schema.proto | 4 +- project/linkml/shacl/biosim_schema.shacl.ttl | 1078 ++++++------- project/linkml/shex/biosim_schema.shex | 5 +- project/linkml/sqlschema/biosim_schema.sql | 15 +- project/schema_enginemappings.json | 3 +- project/schema_summary.csv | 250 +-- project/schema_summary.json | 1339 +++++++++++++++++ project/schema_summary.yaml | 333 +++- project/schema_webformfields.json | 664 ++++++-- tests/test_validation/valid_data/test.json | 17 +- tests/test_validation/valid_data/test.yaml | 4 +- 27 files changed, 4553 insertions(+), 878 deletions(-) create mode 100644 project/schema_summary.json diff --git a/biosim_schema/fieldextraction/extract_summary.py b/biosim_schema/fieldextraction/extract_summary.py index b14c3b4..eea8ef3 100644 --- a/biosim_schema/fieldextraction/extract_summary.py +++ b/biosim_schema/fieldextraction/extract_summary.py @@ -18,7 +18,7 @@ import yaml -METADATA_KEYS = ("label", "hint", "typehint", "placeholder", "units") +METADATA_KEYS = ("label", "hint", "typehint", "placeholder", "units", "example") """tuple[str, ...]: Field metadata keys copied from each webform node into the summary.""" @@ -125,6 +125,7 @@ def _flatten_rows(node, path): "placeholder_text": node.get("placeholder", ""), "default_unit": node.get("default_unit", ""), "data_type": node.get("typehint", ""), + "example": node.get("example", ""), } return [row] @@ -153,6 +154,7 @@ def write_summary_csv(summary, output_path): "placeholder_text", "default_unit", "data_type", + "example", ] with open(output_path, "w", newline="", encoding="utf-8") as f: @@ -203,6 +205,11 @@ def main(): summary, f, default_flow_style=False, allow_unicode=True, sort_keys=True ) + # output as json + json_path = yaml_path.with_suffix(".json") + with open(json_path, "w") as fp: + json.dump(summary, fp) + # flatten and output as csv csv_path = yaml_path.with_suffix(".csv") write_summary_csv(summary, str(csv_path)) diff --git a/biosim_schema/fieldextraction/extract_webform_fields.py b/biosim_schema/fieldextraction/extract_webform_fields.py index a04ff98..2f68803 100644 --- a/biosim_schema/fieldextraction/extract_webform_fields.py +++ b/biosim_schema/fieldextraction/extract_webform_fields.py @@ -165,15 +165,15 @@ def _render_primitive(self, slot): if self._get_annotation(slot, "textarea"): result["type"] = "textarea" + example = self._get_annotation(slot, "example") + if example: + result["example"] = example[0] + if "unit" in slot: symbol = slot["unit"]["symbol"] result["units"] = [symbol] result["label"] += f" ({symbol})" - if "pattern" in slot: - result["placeholder"] = ( - slot["examples"][0]["value"] if "examples" in slot else None - ) if "pattern" in slot: result["pattern"] = slot["pattern"] if "examples" in slot: @@ -208,6 +208,9 @@ def _render_enum(self, slot, enum): ], "multiple": slot.get("multivalued", False), } + example = self._get_annotation(slot, "example") + if example: + result["example"] = example[0] return self._apply_ui_annotations(slot, result) def _render_class_node(self, slot, context): @@ -266,13 +269,19 @@ def _render_quantity(self, slot, context): "placeholder": vector_placeholder, } - return { + result = { "type": "quantity", "label": self._get_label(slot), "hint": slot.get("description"), "fields": fields, } + example = self._get_annotation(slot, "example") + if example: + result["example"] = example[0] + + return result + # ========================================================= # TYPE CHECKS # ========================================================= diff --git a/biosim_schema/schema/components/biosim_composition.yaml b/biosim_schema/schema/components/biosim_composition.yaml index fba6abb..9ed4dfe 100644 --- a/biosim_schema/schema/components/biosim_composition.yaml +++ b/biosim_schema/schema/components/biosim_composition.yaml @@ -59,7 +59,11 @@ slots: Concentration of salt in the solution. range: ConcentrationQuantity # class examples: - - value: 1 + - value: 0.1 + annotations: + example: + - value: 0.1 + value_unit: M total_atom_count: description: @@ -72,6 +76,8 @@ slots: engine_mapping: - engine: toptrajparser key: total_atom_count + example: + - value: 1 total_molecule_count: description: @@ -84,6 +90,8 @@ slots: engine_mapping: - engine: toptrajparser key: total_molecule_count + example: + - value: 1 atom_count: description: @@ -96,6 +104,8 @@ slots: engine_mapping: - engine: toptrajparser key: atom_count + example: + - value: 1 molecule_count: description: @@ -108,6 +118,8 @@ slots: engine_mapping: - engine: toptrajparser key: molecule_count + example: + - value: 1 monomer_count: description: @@ -120,6 +132,8 @@ slots: engine_mapping: - engine: toptrajparser key: monomer_count + example: + - value: 1 molecular_weight: description: @@ -132,6 +146,9 @@ slots: - engine: toptrajparser key: molecular_weight unit: g/mol + example: + - value: 18.0 + value_unit: g/mol molecule_charge: description: @@ -145,6 +162,9 @@ slots: - engine: toptrajparser key: molecule_charge unit: e + example: + - value: -1.0 + value_unit: e unique_molecule_count: description: @@ -157,6 +177,8 @@ slots: engine_mapping: - engine: toptrajparser key: unique_molecule_count + example: + - value: 1 system_counts: description: @@ -194,6 +216,8 @@ slots: database: "PDB" prefix: "pdb" base_uri: "https://identifiers.org/pdb:" + example: + - value: "2VB1" UNIPROT_ID: is_a: identifier @@ -208,6 +232,8 @@ slots: database: "UNIPROT" prefix: "uniprot" base_uri: "https://identifiers.org/uniprot:" + example: + - value: "P0DP23" EMDB_ID: is_a: identifier @@ -222,6 +248,8 @@ slots: database: "EMDB" prefix: "emdb" base_uri: "https://identifiers.org/emdb:" + example: + - value: "EMD-1001" alphafold_ID: is_a: identifier @@ -235,6 +263,8 @@ slots: annotations: database: "AlphaFoldDB" base_uri: "https://alphafold.ebi.ac.uk/entry/" + example: + - value: "AF-P12345-F1" PubChem_CID: is_a: identifier @@ -250,6 +280,8 @@ slots: database: "PubChem" prefix: "pubchem.compound" base_uri: "https://identifiers.org/pubchem.compound:" + example: + - value: "100101" InChIKey: is_a: identifier @@ -268,6 +300,8 @@ slots: engine_mapping: - engine: toptrajparser key: InChIKey + example: + - value: "RYYVLZVUVIJVGH-UHFFFAOYSA-N" SMILES: description: @@ -282,6 +316,8 @@ slots: engine_mapping: - engine: toptrajparser key: SMILES + example: + - value: "CN1C=NC2=C1C(=O)N(C(=O)N2C)C" InChI: description: @@ -296,6 +332,8 @@ slots: engine_mapping: - engine: toptrajparser key: InChI + example: + - value: "InChI=1S/C8H10N4O2/c1-10-4-9-6-5(10)7(13)12(3)8(14)11(6)2/h4H,1-3H3" molecular_formula: description: @@ -308,16 +346,28 @@ slots: engine_mapping: - engine: toptrajparser key: molecular_formula + example: + - value: "C8H10N4O2" predicted_structure: description: Are the molecule positions derived from a prediction? + examples: + - value: "True" range: boolean + annotations: + example: + - value: "True" modified: description: Has the initial model been modified from the original? + examples: + - value: "True" range: boolean + annotations: + example: + - value: "True" protein_sequence: description: @@ -331,6 +381,8 @@ slots: engine_mapping: - engine: toptrajparser key: protein_sequence + example: + - value: "DRVYIHPF" nucleic_sequence: description: @@ -344,3 +396,5 @@ slots: engine_mapping: - engine: toptrajparser key: nucleic_sequence + example: + - value: "ATGCATCGATCGATCGATCG" diff --git a/biosim_schema/schema/components/biosim_compute.yaml b/biosim_schema/schema/components/biosim_compute.yaml index f684abc..9ee5a84 100644 --- a/biosim_schema/schema/components/biosim_compute.yaml +++ b/biosim_schema/schema/components/biosim_compute.yaml @@ -95,93 +95,145 @@ slots: description: Operating system installed on the hardware used to perform the simulation. range: OperatingSystem + annotations: + example: + - value: Linux scheduler: description: Workload manager or job scheduler used to launch the simulation. range: Scheduler + annotations: + example: + - value: SLURM MPI_library: description: MPI implementation used for distributed parallel execution. range: MPILibrary + annotations: + example: + - value: OpenMPI container_runtime: description: Container runtime used to execute the simulation environment, if any. range: ContainerRuntime - + annotations: + example: + - value: Docker wall_time: description: Total elapsed runtime of the simulation. range: TimeQuantity + annotations: + example: + - value: 3600 + value_unit: s energy_consumption: description: Total energy consumed by the simulation run. range: EnergyQuantity - + annotations: + example: + - value: 0.119 + value_unit: kWh execution_platform: description: Broad type of system used to run the simulation workload. range: ExecutionPlatform + annotations: + example: + - value: "HPC Cluster" node_type: description: Compute node profile used for the simulation run. range: NodeType + annotations: + example: + - value: "CPU Only" node_count: description: Number of compute nodes used for the run. range: integer minimum_value: 1 + annotations: + example: + - value: "2" CPU_vendor: description: CPU vendor used in the compute nodes. range: CpuVendor + annotations: + example: + - value: "AMD" CPU_architecture: description: CPU instruction-set architecture of the compute nodes. range: CpuArchitecture + annotations: + example: + - value: "x86" sockets_per_node: description: Number of physical CPU sockets in each compute node. range: integer minimum_value: 1 + annotations: + example: + - value: 2 cores_per_socket: description: Number of physical CPU cores in each socket. range: integer minimum_value: 1 + annotations: + example: + - value: 2 threads_per_core: description: Number of hardware threads per physical core. range: integer minimum_value: 1 + annotations: + example: + - value: 2 GPU_vendor: description: GPU vendor used by the compute nodes, if applicable. range: GpuVendor + annotations: + example: + - value: "AMD" GPUs_per_node: description: Number of GPUs present in each compute node. range: integer minimum_value: 0 + annotations: + example: + - value: 1 memory_per_node: description: Amount of memory installed per compute node. range: ByteQuantity + annotations: + example: + - value: 2 + value_unit: GB enums: diff --git a/biosim_schema/schema/components/biosim_observables.yaml b/biosim_schema/schema/components/biosim_observables.yaml index 21b9d2c..00bef77 100644 --- a/biosim_schema/schema/components/biosim_observables.yaml +++ b/biosim_schema/schema/components/biosim_observables.yaml @@ -40,6 +40,9 @@ slots: - engine: amber key: "TEMP(K)" unit: K + example: + - value: 300 + value_unit: K average_pressure: description: @@ -53,6 +56,9 @@ slots: - engine: amber key: PRESS unit: bar + example: + - value: 1 + value_unit: bar average_volume: description: @@ -63,6 +69,9 @@ slots: - engine: amber key: VOLUME unit: A^3 + example: + - value: 100 + value_unit: nm³ average_volume_vector: description: @@ -73,6 +82,9 @@ slots: - engine: gromacs key: ["Box-X", "Box-Y", "Box-Z"] unit: "nm" + example: + - value: [1,1,1] + value_unit: nm average_potential_energy: description: @@ -86,6 +98,9 @@ slots: - engine: amber key: EPtot unit: kcal/mol + example: + - value: -5.6 + value_unit: kJ/mol average_kinetic_energy: description: @@ -99,6 +114,9 @@ slots: - engine: amber key: EKtot unit: kcal/mol + example: + - value: -2.4 + value_unit: kJ/mol average_enthalpy: description: @@ -112,3 +130,6 @@ slots: - engine: amber key: Etot unit: kcal/mol + example: + - value: -3.2 + value_unit: kJ/mol diff --git a/biosim_schema/schema/components/biosim_potentials.yaml b/biosim_schema/schema/components/biosim_potentials.yaml index b18be3a..c6f094a 100644 --- a/biosim_schema/schema/components/biosim_potentials.yaml +++ b/biosim_schema/schema/components/biosim_potentials.yaml @@ -87,6 +87,9 @@ slots: range: WaterPotentialName # enum description: Force field used to describe water molecules. + annotations: + example: + - value: TIP3P protein_potential: range: ProteinPotential # class @@ -97,6 +100,9 @@ slots: range: ProteinPotentialName # enum description: Force field used to describe proteins. + annotations: + example: + - value: ff19SB lipid_potential: range: LipidPotential # class @@ -107,6 +113,9 @@ slots: range: LipidPotentialName # enum description: Force field used to describe lipids. + annotations: + example: + - value: LIPID21 nucleic_potential: range: NucleicPotential # class @@ -117,6 +126,9 @@ slots: range: NucleicPotentialName # enum description: Force field used to describe nucleic acids. + annotations: + example: + - value: ff99OL3 carbohydrate_potential: range: CarbohydratePotential # class @@ -127,6 +139,9 @@ slots: range: CarbohydratePotentialName # enum description: Force field used to describe carbohydrate. + annotations: + example: + - value: GLYCAM06 polymer_potential: range: PolymerPotential # class @@ -137,6 +152,9 @@ slots: range: PolymerPotentialName # enum description: Force field used to describe polymers (excluding proteins and nucleic acids). + annotations: + example: + - value: LignAmb25 general_potential: range: GeneralPotential # class @@ -147,6 +165,9 @@ slots: range: GeneralPotentialName # enum description: Force field used to describe molecules. + annotations: + example: + - value: GAFF2 machine_learned_potential: range: MachineLearnedPotential # class @@ -157,6 +178,9 @@ slots: range: MachineLearnedPotentialName # enum description: ML force field used to describe molecules. + annotations: + example: + - value: ANI enums: diff --git a/biosim_schema/schema/components/biosim_quantities.yaml b/biosim_schema/schema/components/biosim_quantities.yaml index 112aa20..35e5cb7 100644 --- a/biosim_schema/schema/components/biosim_quantities.yaml +++ b/biosim_schema/schema/components/biosim_quantities.yaml @@ -49,7 +49,7 @@ classes: minimum_value: 0 value_unit: range: TimeUnit - ifabsent: string(ns) + ifabsent: string(s) FrequencyQuantity: description: @@ -265,7 +265,7 @@ classes: multivalued: true value_unit: range: TimeUnit - ifabsent: string(ns) + ifabsent: string(s) MatrixPressureQuantity: description: A quantity representing pressure vectors in 3D. diff --git a/biosim_schema/schema/components/biosim_settings.yaml b/biosim_schema/schema/components/biosim_settings.yaml index 39f2d1a..dc4c2f4 100644 --- a/biosim_schema/schema/components/biosim_settings.yaml +++ b/biosim_schema/schema/components/biosim_settings.yaml @@ -120,11 +120,18 @@ slots: - engine: lammps key: timestep unit: fs + example: + - value: 2.0e-15 + value_unit: s frame_step: range: TimeQuantity # class description: Time between saved snapshots/frames in a simulation, given as a float. + annotations: + example: + - value: 1.0e-11 + value_unit: s number_of_steps: range: integer @@ -136,50 +143,78 @@ slots: key: nstlim - engine: gromacs key: nsteps + example: + - value: 10000 simulation_time: range: TimeQuantity # class description: Total time molecular dynamics have been sampled in a simulation trajectory, often given by the number of integration steps multiplied by the simulation time step used by the integrator, given as a float. + annotations: + example: + - value: 1.0e-6 + value_unit: s restraints: description: Are any positional restraints applied to molecule dynamics? (Restraints usually use harmonic potentials to keep a value near a target). range: boolean + annotations: + example: + - value: "True" integrator_algorithm: description: List of integrator algorithms used to integrate the simulation. range: IntegratorAlgorithm # enum + annotations: + example: + - value: "Velocity-Verlet" barostat_algorithm: description: List of barostat algorithms used in the simulation. range: BarostatAlgorithm # enum + annotations: + example: + - value: "Nose-Hoover" pressure_coupling_type: description: List of coupling types for adjusting box vectors. range: PressureCouplingType # enum + annotations: + example: + - value: "isotropic" pressure_coupling_frequency: description: - Step frequency to apply the barostat, given as an integer. - range: integer + Step frequency to apply the barostat. + range: FrequencyQuantity annotations: engine_mapping: - engine: gromacs key: nstpcouple + unit: 1/ps + example: + - value: 2.0 + value_unit: 1/ps thermostat_algorithm: description: List of thermostat algorithms used in the simulation. range: ThermostatAlgorithm # enum + annotations: + example: + - value: Bussi ensemble_type: description: List of ensemble types used in the simulation. range: EnsembleType # enum + annotations: + example: + - value: NPT random_seed: description: @@ -191,21 +226,29 @@ slots: key: ig - engine: gromacs key: ld-seed + example: + - value: 123456 temperature_time_constant: description: - Time constant for coupling the system temperature in seconds units, given as a list (e.g. 300, 300). + Time constant for coupling the system temperature in seconds units, given as a list (e.g. 0.1, 0.1). range: VectorTimeQuantity # class annotations: engine_mapping: - engine: gromacs key: tau-t unit: ps + example: + - value: [1.0e-13, 1.0e-13] + value_unit: s coupling_group: description: A subset of atoms for which temperature is controlled, often needed for simulating complex systems (e.g., protein in water), used in gromacs, given as a string range: string + annotations: + example: + - value: protein chain_length: description: @@ -218,6 +261,8 @@ slots: key: nhc_chain_length - engine: gromacs key: nh-chain-length + example: + - value: 5 friction_coefficient: description: @@ -228,6 +273,9 @@ slots: - engine: gromacs key: bd-fric unit: a/ps + example: + - value: 0.1 + value_unit: a/ps collision_frequency: description: @@ -238,6 +286,9 @@ slots: - engine: amber key: gamma_ln unit: 1/ps + example: + - value: 0.1 + value_unit: 1/ps target_temperature: description: @@ -251,6 +302,9 @@ slots: - engine: lammps key: temp unit: K + example: + - value: 300 + value_unit: K target_temperature_vector: description: @@ -261,6 +315,9 @@ slots: - engine: gromacs key: ref-t unit: K + example: + - value: [300, 300] + value_unit: K # target_pressure_vector: # description: @@ -284,6 +341,9 @@ slots: - engine: gromacs key: ref-p unit: bar + example: + - value: [[1, 0, 0], [0, 1, 0], [0, 0, 1]] + value_unit: bar target_pressure: description: @@ -294,37 +354,48 @@ slots: - engine: amber key: pres0 unit: bar + example: + - value: 1 + value_unit: bar compressibility_vector: description: Compressibility of the simulated system, given as a float. range: MatrixCompressibilityQuantity # class + examples: + - value: 4.46e-5 annotations: engine_mapping: - engine: gromacs key: compressibility unit: "1/bar" - examples: - - value: 44.6 1e10-6 1/bar - - value: 4.5e-5 1/bar + example: + - value: 4.46e-5 + value_unit: 1/bar compressibility: description: Compressibility of the simulated system, given as a float. range: CompressibilityQuantity # class + examples: + - value: 44.6e-6 + - value: 4.5e-5 annotations: engine_mapping: - engine: amber key: comp unit: "1e10-6 1/bar" - examples: - - value: 44.6 1e10-6 1/bar - - value: 4.5e-5 1/bar + example: + - value: 44.6e-6 + value_unit: 1/bar pressure_time_constant: description: Time constant/step (relaxation time of pressure) used for coupling the system pressure, given as a float. range: TimeQuantity # class + examples: + - value: 1.0 + - value: 5.0 annotations: engine_mapping: - engine: gromacs @@ -333,19 +404,25 @@ slots: - engine: amber key: taup unit: ps - examples: - - value: 1.0 ps - - value: 5.0 ps + example: + - value: 5e-12 + value_unit: s bond_length_constraints_algorithm: description: Constraints applied to bonds between two particles in the simulated system. range: BondLengthConstraintsAlgorithm # enum + annotations: + example: + - value: SHAKE electrostatic_cutoff_distance: description: Distance in Angstrom at which a electrostatic interaction is turned off and a long-range non-bonded method is turned on, given as a float. range: LengthQuantity + examples: + - value: 1.0 + - value: 1.2 annotations: engine_mapping: - engine: gromacs @@ -354,27 +431,33 @@ slots: - engine: amber key: cut unit: Å - examples: - - value: 10 Å - - value: 1.2 nm + example: + - value: 1.2 + value_unit: nm vdw_cutoff_distance: description: Distance in Angstrom at which a Van der Waals interaction is turned off and a long-range non-bonded method is turned on. range: LengthQuantity # class + examples: + - value: 1.0 + - value: 1.2 annotations: engine_mapping: - engine: gromacs key: rvdw unit: nm - examples: - - value: 10 Å - - value: 1.2 nm + example: + - value: 1.2 + value_unit: nm long_range_interaction_method: description: Method used to describe long-range interactions between particles. range: LongRangeInteractionMethod # enum + annotations: + example: + - value: P3M enums: diff --git a/biosim_schema/schema/components/biosim_stages.yaml b/biosim_schema/schema/components/biosim_stages.yaml index d6e42c6..66b4066 100644 --- a/biosim_schema/schema/components/biosim_stages.yaml +++ b/biosim_schema/schema/components/biosim_stages.yaml @@ -80,6 +80,8 @@ slots: key: maxcyc - engine: gromacs key: nsteps + example: + - value: 5000 equilibration: description: @@ -100,6 +102,9 @@ slots: description: Name of the tool used to setup simulation. range: SetupTool # enum + annotations: + example: + - value: pdb4amber energy_tolerance: description: @@ -114,6 +119,9 @@ slots: - engine: amber key: drms unit: "10−4 kcal/mol/Å" + example: + - value: 1000 + value_unit: kJ/mol/nm minimisation_distance_step_size: description: @@ -128,18 +136,27 @@ slots: - engine: gromacs key: emstep unit: nm + example: + - value: 0.01 + value_unit: nm minimisation_algorithm: description: Name of the method used to minimise the molecular system. range: MinimisationAlgorithm # enum multivalued: true + annotations: + example: + - value: "Steepest Descent" simulation_software: description: Name of software used to perform simulation step. range: SimulationSoftware # enum multivalued: true + annotations: + example: + - value: "Amber" simulation_software_version: description: @@ -148,36 +165,53 @@ slots: annotations: extracted_only: true ui_readonly: true + example: + - value: "2014" simulation_method: description: Method used to perform simulation. range: SimulationMethod # enum multivalued: true + annotations: + example: + - value: "Steered Molecular Dynamics (SMD)" simulation_tool: description: Tool used to perform simulation. range: SimulationTool # enum multivalued: true + annotations: + example: + - value: "sander" analysis_software: description: Name of software used to analyse simulation. range: AnalysisSoftware # enum multivalued: true + annotations: + example: + - value: "Visual Molecular Dynamics (VMD)" analysis_method: description: Name of the method used to analyse simulation. range: AnalysisMethod # enum multivalued: true + annotations: + example: + - value: "RMSD" analysis_tool: description: Name of the tool used to analyse simulation. range: AnalysisTool # enum multivalued: true + annotations: + example: + - value: "CPPTRAJ" enums: diff --git a/biosim_schema/schema/components/biosim_topology.yaml b/biosim_schema/schema/components/biosim_topology.yaml index f8ff2cf..3f13d43 100644 --- a/biosim_schema/schema/components/biosim_topology.yaml +++ b/biosim_schema/schema/components/biosim_topology.yaml @@ -31,11 +31,11 @@ slots: connectivity: description: Particle connectivity information - range: Connectivity + range: Connectivity # class particles: description: Particles information - range: Particles + range: Particles # class masses: description: @@ -45,6 +45,8 @@ slots: engine_mapping: - engine: toptrajparser key: masses + example: + - value: "True" bonds: description: @@ -54,6 +56,8 @@ slots: engine_mapping: - engine: toptrajparser key: bonds + example: + - value: "True" dihedrals: description: @@ -63,6 +67,8 @@ slots: engine_mapping: - engine: toptrajparser key: dihedrals + example: + - value: "True" fixed_charges: description: @@ -72,11 +78,16 @@ slots: engine_mapping: - engine: toptrajparser key: fixed_charges + example: + - value: "True" coarse_grained: description: Are atoms coarse-grained? range: boolean + annotations: + example: + - value: "True" system_charge: description: @@ -88,11 +99,17 @@ slots: - engine: toptrajparser key: system_charge unit: e + example: + - value: 0.0 + value_unit: e resolution: description: Resolution of simulated system. range: ModelResolution # enum + annotations: + example: + - value: "All Atom" enums: diff --git a/biosim_schema/schema/components/biosim_trajectory.yaml b/biosim_schema/schema/components/biosim_trajectory.yaml index ce8a498..21368d1 100644 --- a/biosim_schema/schema/components/biosim_trajectory.yaml +++ b/biosim_schema/schema/components/biosim_trajectory.yaml @@ -38,12 +38,12 @@ slots: simulation_box: description: Information about the simulation box. - range: SimulationBox + range: SimulationBox # class trajectory_output: description: Information included in trajectory files. - range: Trajectories + range: Trajectories # class frame_count: description: @@ -56,11 +56,16 @@ slots: engine_mapping: - engine: toptrajparser key: frame_count + example: + - value: 10000 periodic_boundary_conditions: description: What directions in a simulation cell periodic boundaries are set if they are turned on. - range: PeriodicBoundaryConditions + range: PeriodicBoundaryConditions # class + annotations: + example: + - value: xyz box_dimensions: range: VectorLengthQuantity @@ -73,6 +78,9 @@ slots: - engine: toptrajparser key: box_dimensions unit: Ang + example: + - value: [10, 10, 10] + value_unit: nm box_angles: range: VectorAngleQuantity @@ -85,11 +93,17 @@ slots: - engine: toptrajparser key: box_angles unit: degree + example: + - value: [90, 90, 90] + value_unit: degree box_type: description: The type of box used to simuluate the system. range: BoxType # enum + annotations: + example: + - value: Cubic positions: description: @@ -99,6 +113,9 @@ slots: engine_mapping: - engine: toptrajparser key: positions + example: + - value: "True" + forces: description: Are per-frame forces included in the trajectory? @@ -107,6 +124,9 @@ slots: engine_mapping: - engine: toptrajparser key: forces + example: + - value: "True" + velocities: description: Are per-frame velocities included in the trajectory? @@ -115,14 +135,25 @@ slots: engine_mapping: - engine: toptrajparser key: velocities + example: + - value: "True" + energies: description: Are per-frame energies included in the trajectory? range: boolean + annotations: + example: + - value: "True" + polarizable_charges: description: Are per-frame polarizable charges included in the trajectory? range: boolean + annotations: + example: + - value: "True" + water: description: Are water molecules included in the trajectory? @@ -131,11 +162,16 @@ slots: engine_mapping: - engine: toptrajparser key: water + example: + - value: "True" replica: description: Is this trajectory a replica of another provided trajectory? range: boolean + annotations: + example: + - value: "True" enums: diff --git a/biosim_schema/utils/generate_artifacts.py b/biosim_schema/utils/generate_artifacts.py index 28da3ef..630c772 100644 --- a/biosim_schema/utils/generate_artifacts.py +++ b/biosim_schema/utils/generate_artifacts.py @@ -189,6 +189,10 @@ def generate_summary(paths: ArtifactPaths) -> None: write_summary_csv(summary, str(paths.summary_csv_path)) + json_path = paths.summary_csv_path.with_suffix(".json") + with open(json_path, "w") as fp: + json.dump(summary, fp, indent=2) + def generate_derived(paths: ArtifactPaths) -> None: """Generate derived schema artefacts used by downstream tools.""" diff --git a/project/linkml/biosim_schema.py b/project/linkml/biosim_schema.py index 90db221..e1d922e 100644 --- a/project/linkml/biosim_schema.py +++ b/project/linkml/biosim_schema.py @@ -1,5 +1,5 @@ # Auto generated from biosim_schema.yaml by pythongen.py version: 0.0.1 -# Generation date: 2026-06-12T16:49:58 +# Generation date: 2026-06-19T17:27:27 # Schema: biosim-schema # # id: https://CCPBioSim.ac.uk/biosim-schema/ @@ -60,7 +60,7 @@ from linkml_runtime.utils.metamodelcore import Bool, URIorCURIE metamodel_version = "1.11.0" -version = "0.0.2" +version = "0.0.3" # Namespaces ORCID = CurieNamespace('ORCID', 'https://orcid.org/') @@ -193,7 +193,7 @@ class TimeQuantity(YAMLRoot): class_model_uri: ClassVar[URIRef] = BIOSIM_SCHEMA.TimeQuantity value: Optional[float] = None - value_unit: Optional[Union[str, "TimeUnit"]] = 'ns' + value_unit: Optional[Union[str, "TimeUnit"]] = 's' def __post_init__(self, *_: str, **kwargs: Any): if self.value is not None and not isinstance(self.value, float): @@ -698,7 +698,7 @@ class VectorTimeQuantity(YAMLRoot): class_model_uri: ClassVar[URIRef] = BIOSIM_SCHEMA.VectorTimeQuantity vector_value: Optional[Union[float, list[float]]] = empty_list() - value_unit: Optional[Union[str, "TimeUnit"]] = 'ns' + value_unit: Optional[Union[str, "TimeUnit"]] = 's' def __post_init__(self, *_: str, **kwargs: Any): if not isinstance(self.vector_value, list): @@ -1140,7 +1140,7 @@ class Barostat(YAMLRoot): target_pressure: Optional[Union[dict, PressureQuantity]] = None target_pressure_vector: Optional[Union[dict, MatrixPressureQuantity]] = None pressure_time_constant: Optional[Union[dict, TimeQuantity]] = None - pressure_coupling_frequency: Optional[int] = None + pressure_coupling_frequency: Optional[Union[dict, FrequencyQuantity]] = None pressure_coupling_type: Optional[Union[str, "PressureCouplingType"]] = None def __post_init__(self, *_: str, **kwargs: Any): @@ -1162,8 +1162,8 @@ def __post_init__(self, *_: str, **kwargs: Any): if self.pressure_time_constant is not None and not isinstance(self.pressure_time_constant, TimeQuantity): self.pressure_time_constant = TimeQuantity(**as_dict(self.pressure_time_constant)) - if self.pressure_coupling_frequency is not None and not isinstance(self.pressure_coupling_frequency, int): - self.pressure_coupling_frequency = int(self.pressure_coupling_frequency) + if self.pressure_coupling_frequency is not None and not isinstance(self.pressure_coupling_frequency, FrequencyQuantity): + self.pressure_coupling_frequency = FrequencyQuantity(**as_dict(self.pressure_coupling_frequency)) if self.pressure_coupling_type is not None and not isinstance(self.pressure_coupling_type, PressureCouplingType): self.pressure_coupling_type = PressureCouplingType(self.pressure_coupling_type) @@ -3604,7 +3604,7 @@ class slots: model_uri=BIOSIM_SCHEMA.pressure_coupling_type, domain=None, range=Optional[Union[str, "PressureCouplingType"]]) slots.pressure_coupling_frequency = Slot(uri=BIOSIM_SCHEMA['settings/pressure_coupling_frequency'], name="pressure_coupling_frequency", curie=BIOSIM_SCHEMA.curie('settings/pressure_coupling_frequency'), - model_uri=BIOSIM_SCHEMA.pressure_coupling_frequency, domain=None, range=Optional[int]) + model_uri=BIOSIM_SCHEMA.pressure_coupling_frequency, domain=None, range=Optional[Union[dict, FrequencyQuantity]]) slots.thermostat_algorithm = Slot(uri=BIOSIM_SCHEMA['settings/thermostat_algorithm'], name="thermostat_algorithm", curie=BIOSIM_SCHEMA.curie('settings/thermostat_algorithm'), model_uri=BIOSIM_SCHEMA.thermostat_algorithm, domain=None, range=Optional[Union[str, "ThermostatAlgorithm"]]) diff --git a/project/linkml/jsonld/biosim_schema.context.jsonld b/project/linkml/jsonld/biosim_schema.context.jsonld index f86dbe3..5423af7 100644 --- a/project/linkml/jsonld/biosim_schema.context.jsonld +++ b/project/linkml/jsonld/biosim_schema.context.jsonld @@ -522,7 +522,7 @@ "@id": "composition/predicted_structure" }, "pressure_coupling_frequency": { - "@type": "xsd:integer", + "@type": "@id", "@id": "settings/pressure_coupling_frequency" }, "pressure_coupling_type": { diff --git a/project/linkml/jsonld/biosim_schema.jsonld b/project/linkml/jsonld/biosim_schema.jsonld index d888b6d..f126935 100644 --- a/project/linkml/jsonld/biosim_schema.jsonld +++ b/project/linkml/jsonld/biosim_schema.jsonld @@ -6,7 +6,7 @@ "https://CCPBioSim.github.io/biosim-schema" ], "id": "https://CCPBioSim.ac.uk/biosim-schema/", - "version": "0.0.2", + "version": "0.0.3", "imports": [ "linkml:types", "./components/biosim_quantities", @@ -3249,6 +3249,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 5000 + } + ], + "@type": "Annotation" } ], "description": "Number of integration steps performed during minimisation of the system, given as an integer.", @@ -3309,6 +3318,17 @@ { "name": "setup_tool", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/stages/setup_tool", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "pdb4amber" + } + ], + "@type": "Annotation" + } + ], "description": "Name of the tool used to setup simulation.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/stages", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/stages/setup_tool", @@ -3338,6 +3358,16 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 1000, + "value_unit": "kJ/mol/nm" + } + ], + "@type": "Annotation" } ], "description": "Tolerance energy for when minimization stops, this is when the maximum force on any atom is less than this value (default is often 1000 kJ/mol/nm or 10\u22124kcal), given as a float.", @@ -3372,6 +3402,16 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 0.01, + "value_unit": "nm" + } + ], + "@type": "Annotation" } ], "description": "The distance the algorithm moves in a single step, controls how large a step the optimizer takes during the initial phase of minimizing the potential energy of a structure, given as a float.", @@ -3390,6 +3430,17 @@ { "name": "minimisation_algorithm", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/stages/minimisation_algorithm", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "Steepest Descent" + } + ], + "@type": "Annotation" + } + ], "description": "Name of the method used to minimise the molecular system.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/stages", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/stages/minimisation_algorithm", @@ -3404,6 +3455,17 @@ { "name": "simulation_software", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/stages/simulation_software", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "Amber" + } + ], + "@type": "Annotation" + } + ], "description": "Name of software used to perform simulation step.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/stages", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/stages/simulation_software", @@ -3430,6 +3492,15 @@ "tag": "ui_readonly", "value": true, "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "2014" + } + ], + "@type": "Annotation" } ], "description": "Version of software used to perform simulation step.", @@ -3445,6 +3516,17 @@ { "name": "simulation_method", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/stages/simulation_method", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "Steered Molecular Dynamics (SMD)" + } + ], + "@type": "Annotation" + } + ], "description": "Method used to perform simulation.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/stages", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/stages/simulation_method", @@ -3459,6 +3541,17 @@ { "name": "simulation_tool", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/stages/simulation_tool", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "sander" + } + ], + "@type": "Annotation" + } + ], "description": "Tool used to perform simulation.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/stages", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/stages/simulation_tool", @@ -3475,6 +3568,17 @@ { "name": "analysis_software", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/stages/analysis_software", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "Visual Molecular Dynamics (VMD)" + } + ], + "@type": "Annotation" + } + ], "description": "Name of software used to analyse simulation.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/stages", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/stages/analysis_software", @@ -3489,6 +3593,17 @@ { "name": "analysis_method", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/stages/analysis_method", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "RMSD" + } + ], + "@type": "Annotation" + } + ], "description": "Name of the method used to analyse simulation.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/stages", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/stages/analysis_method", @@ -3503,6 +3618,17 @@ { "name": "analysis_tool", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/stages/analysis_tool", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "CPPTRAJ" + } + ], + "@type": "Annotation" + } + ], "description": "Name of the tool used to analyse simulation.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/stages", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/stages/analysis_tool", @@ -3613,6 +3739,16 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 2e-15, + "value_unit": "s" + } + ], + "@type": "Annotation" } ], "description": "Time between integration steps in a simulation, given as a float.", @@ -3635,6 +3771,18 @@ { "name": "frame_step", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/frame_step", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": 1e-11, + "value_unit": "s" + } + ], + "@type": "Annotation" + } + ], "description": "Time between saved snapshots/frames in a simulation, given as a float.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/settings", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/frame_step", @@ -3664,6 +3812,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 10000 + } + ], + "@type": "Annotation" } ], "description": "Number of integration steps performed in the simulation, given as an integer.", @@ -3679,6 +3836,18 @@ { "name": "simulation_time", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/simulation_time", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": 1e-06, + "value_unit": "s" + } + ], + "@type": "Annotation" + } + ], "description": "Total time molecular dynamics have been sampled in a simulation trajectory, often given by the number of integration steps multiplied by the simulation time step used by the integrator, given as a float.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/settings", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/simulation_time", @@ -3694,6 +3863,17 @@ { "name": "restraints", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/restraints", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "True" + } + ], + "@type": "Annotation" + } + ], "description": "Are any positional restraints applied to molecule dynamics? (Restraints usually use harmonic potentials to keep a value near a target).", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/settings", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/restraints", @@ -3707,6 +3887,17 @@ { "name": "integrator_algorithm", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/integrator_algorithm", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "Velocity-Verlet" + } + ], + "@type": "Annotation" + } + ], "description": "List of integrator algorithms used to integrate the simulation.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/settings", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/integrator_algorithm", @@ -3720,6 +3911,17 @@ { "name": "barostat_algorithm", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/barostat_algorithm", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "Nose-Hoover" + } + ], + "@type": "Annotation" + } + ], "description": "List of barostat algorithms used in the simulation.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/settings", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/barostat_algorithm", @@ -3733,6 +3935,17 @@ { "name": "pressure_coupling_type", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/pressure_coupling_type", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "isotropic" + } + ], + "@type": "Annotation" + } + ], "description": "List of coupling types for adjusting box vectors.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/settings", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/pressure_coupling_type", @@ -3752,25 +3965,49 @@ "value": [ { "engine": "gromacs", - "key": "nstpcouple" + "key": "nstpcouple", + "unit": "1/ps" + } + ], + "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 2.0, + "value_unit": "1/ps" } ], "@type": "Annotation" } ], - "description": "Step frequency to apply the barostat, given as an integer.", + "description": "Step frequency to apply the barostat.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/settings", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/pressure_coupling_frequency", "owner": "Barostat", "domain_of": [ "Barostat" ], - "range": "integer", + "range": "FrequencyQuantity", + "inlined": true, + "inlined_as_list": true, "@type": "SlotDefinition" }, { "name": "thermostat_algorithm", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/thermostat_algorithm", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "Bussi" + } + ], + "@type": "Annotation" + } + ], "description": "List of thermostat algorithms used in the simulation.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/settings", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/thermostat_algorithm", @@ -3784,6 +4021,17 @@ { "name": "ensemble_type", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/ensemble_type", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "NPT" + } + ], + "@type": "Annotation" + } + ], "description": "List of ensemble types used in the simulation.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/settings", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/ensemble_type", @@ -3811,6 +4059,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 123456 + } + ], + "@type": "Annotation" } ], "description": "Random number used to set (a) distribution of velocities across particles at the start of a simulation and (b) pseudo-random values for dynamics/couplings, given as an integer.", @@ -3837,9 +4094,22 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": [ + 1e-13, + 1e-13 + ], + "value_unit": "s" + } + ], + "@type": "Annotation" } ], - "description": "Time constant for coupling the system temperature in seconds units, given as a list (e.g. 300, 300).", + "description": "Time constant for coupling the system temperature in seconds units, given as a list (e.g. 0.1, 0.1).", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/settings", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/temperature_time_constant", "owner": "Thermostat", @@ -3854,6 +4124,17 @@ { "name": "coupling_group", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/coupling_group", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "protein" + } + ], + "@type": "Annotation" + } + ], "description": "A subset of atoms for which temperature is controlled, often needed for simulating complex systems (e.g., protein in water), used in gromacs, given as a string", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/settings", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/coupling_group", @@ -3881,6 +4162,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 5 + } + ], + "@type": "Annotation" } ], "description": "Usually required in the Nos\u00e9-Hoover thermostat, the chain length (e.g., nh-chain-length in GROMACS) is used to maintain canonical distribution, given as an integer.", @@ -3908,6 +4198,16 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 0.1, + "value_unit": "a/ps" + } + ], + "@type": "Annotation" } ], "description": "Usually used in the Langevin thermostat, the friction coefficient determines the strength of coupling between a system and a heat bath, given as a float.", @@ -3936,6 +4236,16 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 0.1, + "value_unit": "1/ps" + } + ], + "@type": "Annotation" } ], "description": "Collision frequency for the integrator, given as a float.", @@ -3969,6 +4279,16 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 300, + "value_unit": "K" + } + ], + "@type": "Annotation" } ], "description": "Target/reference temperature set to reach in the simulation, given as a float.", @@ -3997,11 +4317,24 @@ } ], "@type": "Annotation" - } - ], - "description": "Target/reference temperature set to reach in the simulation, given as a list (e.g. 300, 300).", - "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/settings", - "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/target_temperature_vector", + }, + { + "tag": "example", + "value": [ + { + "value": [ + 300, + 300 + ], + "value_unit": "K" + } + ], + "@type": "Annotation" + } + ], + "description": "Target/reference temperature set to reach in the simulation, given as a list (e.g. 300, 300).", + "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/settings", + "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/target_temperature_vector", "owner": "Thermostat", "domain_of": [ "Thermostat" @@ -4025,6 +4358,32 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": [ + [ + 1, + 0, + 0 + ], + [ + 0, + 1, + 0 + ], + [ + 0, + 0, + 1 + ] + ], + "value_unit": "bar" + } + ], + "@type": "Annotation" } ], "description": "Target/reference pressure set to reach in the simulation, given as a 3x3 array.", @@ -4053,6 +4412,16 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 1, + "value_unit": "bar" + } + ], + "@type": "Annotation" } ], "description": "Target/reference pressure set to reach in the simulation, given as a float.", @@ -4081,16 +4450,22 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 4.46e-05, + "value_unit": "1/bar" + } + ], + "@type": "Annotation" } ], "description": "Compressibility of the simulated system, given as a float.", "examples": [ { - "value": "44.6 1e10-6 1/bar", - "@type": "Example" - }, - { - "value": "4.5e-5 1/bar", + "value": "4.46e-05", "@type": "Example" } ], @@ -4119,16 +4494,26 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 4.46e-05, + "value_unit": "1/bar" + } + ], + "@type": "Annotation" } ], "description": "Compressibility of the simulated system, given as a float.", "examples": [ { - "value": "44.6 1e10-6 1/bar", + "value": "4.46e-05", "@type": "Example" }, { - "value": "4.5e-5 1/bar", + "value": "4.5e-05", "@type": "Example" } ], @@ -4162,16 +4547,26 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "5e-12", + "value_unit": "s" + } + ], + "@type": "Annotation" } ], "description": "Time constant/step (relaxation time of pressure) used for coupling the system pressure, given as a float.", "examples": [ { - "value": "1.0 ps", + "value": "1.0", "@type": "Example" }, { - "value": "5.0 ps", + "value": "5.0", "@type": "Example" } ], @@ -4189,6 +4584,17 @@ { "name": "bond_length_constraints_algorithm", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/bond_length_constraints_algorithm", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "SHAKE" + } + ], + "@type": "Annotation" + } + ], "description": "Constraints applied to bonds between two particles in the simulated system.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/settings", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/bond_length_constraints_algorithm", @@ -4218,16 +4624,26 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 1.2, + "value_unit": "nm" + } + ], + "@type": "Annotation" } ], "description": "Distance in Angstrom at which a electrostatic interaction is turned off and a long-range non-bonded method is turned on, given as a float.", "examples": [ { - "value": "10 \u00c5", + "value": "1.0", "@type": "Example" }, { - "value": "1.2 nm", + "value": "1.2", "@type": "Example" } ], @@ -4256,16 +4672,26 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 1.2, + "value_unit": "nm" + } + ], + "@type": "Annotation" } ], "description": "Distance in Angstrom at which a Van der Waals interaction is turned off and a long-range non-bonded method is turned on.", "examples": [ { - "value": "10 \u00c5", + "value": "1.0", "@type": "Example" }, { - "value": "1.2 nm", + "value": "1.2", "@type": "Example" } ], @@ -4283,6 +4709,17 @@ { "name": "long_range_interaction_method", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/long_range_interaction_method", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "P3M" + } + ], + "@type": "Annotation" + } + ], "description": "Method used to describe long-range interactions between particles.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/settings", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/settings/long_range_interaction_method", @@ -4296,10 +4733,22 @@ { "name": "salt_concentration", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/composition/salt_concentration", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": 0.1, + "value_unit": "M" + } + ], + "@type": "Annotation" + } + ], "description": "Concentration of salt in the solution.", "examples": [ { - "value": "1", + "value": "0.1", "@type": "Example" } ], @@ -4327,6 +4776,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 1 + } + ], + "@type": "Annotation" } ], "description": "Total number of atoms in the simulation.", @@ -4359,6 +4817,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 1 + } + ], + "@type": "Annotation" } ], "description": "Total number of simulated molecules, defined as bonded atoms or beads.", @@ -4391,6 +4858,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 1 + } + ], + "@type": "Annotation" } ], "description": "Number of atoms in a molecule.", @@ -4423,6 +4899,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 1 + } + ], + "@type": "Annotation" } ], "description": "Number of instances of a given molecule, defined as bonded atoms or beads.", @@ -4455,6 +4940,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 1 + } + ], + "@type": "Annotation" } ], "description": "Number of monomeric units in a polymer(e.g. protein or nucleic acid).", @@ -4488,6 +4982,16 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 18.0, + "value_unit": "g/mol" + } + ], + "@type": "Annotation" } ], "description": "The molecular weight of a molecule.", @@ -4522,6 +5026,16 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": -1.0, + "value_unit": "e" + } + ], + "@type": "Annotation" } ], "description": "Electrostatic charge of a molecule.", @@ -4556,6 +5070,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 1 + } + ], + "@type": "Annotation" } ], "description": "Number of unique simulated molecules, defined as bonded atoms or beads.", @@ -4643,6 +5166,15 @@ "tag": "base_uri", "value": "https://identifiers.org/pdb:", "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "2VB1" + } + ], + "@type": "Annotation" } ], "description": "Protein Data Bank identifier", @@ -4684,6 +5216,15 @@ "tag": "base_uri", "value": "https://identifiers.org/uniprot:", "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "P0DP23" + } + ], + "@type": "Annotation" } ], "description": "UniProt accession ID", @@ -4725,6 +5266,15 @@ "tag": "base_uri", "value": "https://identifiers.org/emdb:", "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "EMD-1001" + } + ], + "@type": "Annotation" } ], "description": "Electron Microscopy Data Bank ID", @@ -4757,6 +5307,15 @@ "tag": "base_uri", "value": "https://alphafold.ebi.ac.uk/entry/", "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "AF-P12345-F1" + } + ], + "@type": "Annotation" } ], "description": "AlphaFold predicted protein structure identifier (AlphaFold DB, EMBL-EBI)", @@ -4798,6 +5357,15 @@ "tag": "base_uri", "value": "https://identifiers.org/pubchem.compound:", "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "100101" + } + ], + "@type": "Annotation" } ], "description": "PubChem CID of chemical molecules and their activities against biological assays.", @@ -4849,6 +5417,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "RYYVLZVUVIJVGH-UHFFFAOYSA-N" + } + ], + "@type": "Annotation" } ], "description": "The condensed, 27 character InChIKey, which is a hashed version of the full InChI (using the SHA-256 algorithm), designed to allow for easy web searches of chemical compounds.", @@ -4885,6 +5462,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "CN1C=NC2=C1C(=O)N(C(=O)N2C)C" + } + ], + "@type": "Annotation" } ], "description": "Simplified Molecular Input Line Entry System (SMILES) ASCII-based line notation used to describe chemical structures. It represents molecular graphs with atoms and bonds, allowing software to convert these short strings into 2D or 3D models.", @@ -4920,6 +5506,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "InChI=1S/C8H10N4O2/c1-10-4-9-6-5(10)7(13)12(3)8(14)11(6)2/h4H,1-3H3" + } + ], + "@type": "Annotation" } ], "description": "The International Chemical Identifier (InChi) is a textual identifier for chemical substances, designed to provide a standard way to encode molecular information", @@ -4955,6 +5550,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "C8H10N4O2" + } + ], + "@type": "Annotation" } ], "description": "The molecular formula of a molecule\\", @@ -4977,7 +5581,24 @@ { "name": "predicted_structure", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/composition/predicted_structure", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "True" + } + ], + "@type": "Annotation" + } + ], "description": "Are the molecule positions derived from a prediction?", + "examples": [ + { + "value": "True", + "@type": "Example" + } + ], "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/composition", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/composition/predicted_structure", "owner": "MoleculeID", @@ -4990,7 +5611,24 @@ { "name": "modified", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/composition/modified", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "True" + } + ], + "@type": "Annotation" + } + ], "description": "Has the initial model been modified from the original?", + "examples": [ + { + "value": "True", + "@type": "Example" + } + ], "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/composition", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/composition/modified", "owner": "MachineLearnedPotential", @@ -5026,6 +5664,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "DRVYIHPF" + } + ], + "@type": "Annotation" } ], "description": "One letter sequence for protein amino acids.", @@ -5063,12 +5710,21 @@ } ], "@type": "Annotation" - } - ], - "description": "One letter sequence for nucleic acid nucleotides.", - "examples": [ + }, { - "value": "ATGCATCGATCGATCGATCG", + "tag": "example", + "value": [ + { + "value": "ATGCATCGATCGATCGATCG" + } + ], + "@type": "Annotation" + } + ], + "description": "One letter sequence for nucleic acid nucleotides.", + "examples": [ + { + "value": "ATGCATCGATCGATCGATCG", "@type": "Example" } ], @@ -5116,6 +5772,16 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 300, + "value_unit": "K" + } + ], + "@type": "Annotation" } ], "description": "Average temperature sampled from the simulation, given as a float.", @@ -5149,6 +5815,16 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 1, + "value_unit": "bar" + } + ], + "@type": "Annotation" } ], "description": "Average pressure sampled from the simulation, given as a float.", @@ -5177,6 +5853,16 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 100, + "value_unit": "nm\u00b3" + } + ], + "@type": "Annotation" } ], "description": "Average volume sampled from the simulation, given as a float.", @@ -5209,6 +5895,20 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": [ + 1, + 1, + 1 + ], + "value_unit": "nm" + } + ], + "@type": "Annotation" } ], "description": "Average volume sampled from the simulation, given as a list, (e.g. 10, 10, 10).", @@ -5242,6 +5942,16 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": -5.6, + "value_unit": "kJ/mol" + } + ], + "@type": "Annotation" } ], "description": "Average potential energy sampled from the simulation, given as a float.", @@ -5275,6 +5985,16 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": -2.4, + "value_unit": "kJ/mol" + } + ], + "@type": "Annotation" } ], "description": "Average kinetic energy sampled from the simulation, given as a float.", @@ -5308,6 +6028,16 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": -3.2, + "value_unit": "kJ/mol" + } + ], + "@type": "Annotation" } ], "description": "Average enthalpy sampled from the simulation, given as a float.", @@ -5365,6 +6095,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "True" + } + ], + "@type": "Annotation" } ], "description": "Are masses present in the topology?", @@ -5390,6 +6129,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "True" + } + ], + "@type": "Annotation" } ], "description": "Are bond parameters present in the topology?", @@ -5415,6 +6163,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "True" + } + ], + "@type": "Annotation" } ], "description": "Are dihedral parameters present in the topology?", @@ -5440,6 +6197,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "True" + } + ], + "@type": "Annotation" } ], "description": "Are fixed charges on atoms included in the topology?", @@ -5455,6 +6221,17 @@ { "name": "coarse_grained", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/topology/coarse_grained", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "True" + } + ], + "@type": "Annotation" + } + ], "description": "Are atoms coarse-grained?", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/topology", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/topology/coarse_grained", @@ -5479,6 +6256,16 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 0.0, + "value_unit": "e" + } + ], + "@type": "Annotation" } ], "description": "Total electrostatic charge of the system given by the elementary charge (e).", @@ -5497,6 +6284,17 @@ { "name": "resolution", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/topology/resolution", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "All Atom" + } + ], + "@type": "Annotation" + } + ], "description": "Resolution of simulated system.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/topology", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/topology/resolution", @@ -5550,6 +6348,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": 10000 + } + ], + "@type": "Annotation" } ], "description": "Total number of snapshots that make up a trajectory.", @@ -5572,6 +6379,17 @@ { "name": "periodic_boundary_conditions", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/trajectory/periodic_boundary_conditions", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "xyz" + } + ], + "@type": "Annotation" + } + ], "description": "What directions in a simulation cell periodic boundaries are set if they are turned on.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/trajectory", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/trajectory/periodic_boundary_conditions", @@ -5596,6 +6414,20 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": [ + 10, + 10, + 10 + ], + "value_unit": "nm" + } + ], + "@type": "Annotation" } ], "description": "The lengths/dimensions of the box used to simulate the system.", @@ -5630,6 +6462,20 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": [ + 90, + 90, + 90 + ], + "value_unit": "degree" + } + ], + "@type": "Annotation" } ], "description": "The angles of the box used to simulate the system.", @@ -5653,6 +6499,17 @@ { "name": "box_type", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/trajectory/box_type", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "Cubic" + } + ], + "@type": "Annotation" + } + ], "description": "The type of box used to simuluate the system.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/trajectory", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/trajectory/box_type", @@ -5676,6 +6533,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "True" + } + ], + "@type": "Annotation" } ], "description": "Are per-frame positions included in the trajectory?", @@ -5701,6 +6567,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "True" + } + ], + "@type": "Annotation" } ], "description": "Are per-frame forces included in the trajectory?", @@ -5726,6 +6601,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "True" + } + ], + "@type": "Annotation" } ], "description": "Are per-frame velocities included in the trajectory?", @@ -5741,6 +6625,17 @@ { "name": "energies", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/trajectory/energies", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "True" + } + ], + "@type": "Annotation" + } + ], "description": "Are per-frame energies included in the trajectory?", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/trajectory", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/trajectory/energies", @@ -5754,6 +6649,17 @@ { "name": "polarizable_charges", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/trajectory/polarizable_charges", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "True" + } + ], + "@type": "Annotation" + } + ], "description": "Are per-frame polarizable charges included in the trajectory?", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/trajectory", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/trajectory/polarizable_charges", @@ -5777,6 +6683,15 @@ } ], "@type": "Annotation" + }, + { + "tag": "example", + "value": [ + { + "value": "True" + } + ], + "@type": "Annotation" } ], "description": "Are water molecules included in the trajectory?", @@ -5792,6 +6707,17 @@ { "name": "replica", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/trajectory/replica", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "True" + } + ], + "@type": "Annotation" + } + ], "description": "Is this trajectory a replica of another provided trajectory?", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/trajectory", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/trajectory/replica", @@ -5820,6 +6746,17 @@ { "name": "water_potential_name", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/potentials/water_potential_name", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "TIP3P" + } + ], + "@type": "Annotation" + } + ], "description": "Force field used to describe water molecules.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/potentials", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/potentials/water_potential_name", @@ -5848,6 +6785,17 @@ { "name": "protein_potential_name", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/potentials/protein_potential_name", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "ff19SB" + } + ], + "@type": "Annotation" + } + ], "description": "Force field used to describe proteins.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/potentials", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/potentials/protein_potential_name", @@ -5876,6 +6824,17 @@ { "name": "lipid_potential_name", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/potentials/lipid_potential_name", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "LIPID21" + } + ], + "@type": "Annotation" + } + ], "description": "Force field used to describe lipids.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/potentials", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/potentials/lipid_potential_name", @@ -5904,6 +6863,17 @@ { "name": "nucleic_potential_name", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/potentials/nucleic_potential_name", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "ff99OL3" + } + ], + "@type": "Annotation" + } + ], "description": "Force field used to describe nucleic acids.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/potentials", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/potentials/nucleic_potential_name", @@ -5932,6 +6902,17 @@ { "name": "carbohydrate_potential_name", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/potentials/carbohydrate_potential_name", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "GLYCAM06" + } + ], + "@type": "Annotation" + } + ], "description": "Force field used to describe carbohydrate.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/potentials", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/potentials/carbohydrate_potential_name", @@ -5960,6 +6941,17 @@ { "name": "polymer_potential_name", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/potentials/polymer_potential_name", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "LignAmb25" + } + ], + "@type": "Annotation" + } + ], "description": "Force field used to describe polymers (excluding proteins and nucleic acids).", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/potentials", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/potentials/polymer_potential_name", @@ -5988,6 +6980,17 @@ { "name": "general_potential_name", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/potentials/general_potential_name", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "GAFF2" + } + ], + "@type": "Annotation" + } + ], "description": "Force field used to describe molecules.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/potentials", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/potentials/general_potential_name", @@ -6016,6 +7019,17 @@ { "name": "machine_learned_potential_name", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/potentials/machine_learned_potential_name", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "ANI" + } + ], + "@type": "Annotation" + } + ], "description": "ML force field used to describe molecules.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/potentials", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/potentials/machine_learned_potential_name", @@ -6074,6 +7088,17 @@ { "name": "operating_system", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/operating_system", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "Linux" + } + ], + "@type": "Annotation" + } + ], "description": "Operating system installed on the hardware used to perform the simulation.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/compute", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/operating_system", @@ -6087,6 +7112,17 @@ { "name": "scheduler", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/scheduler", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "SLURM" + } + ], + "@type": "Annotation" + } + ], "description": "Workload manager or job scheduler used to launch the simulation.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/compute", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/scheduler", @@ -6100,6 +7136,17 @@ { "name": "MPI_library", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/MPI_library", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "OpenMPI" + } + ], + "@type": "Annotation" + } + ], "description": "MPI implementation used for distributed parallel execution.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/compute", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/MPI_library", @@ -6113,6 +7160,17 @@ { "name": "container_runtime", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/container_runtime", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "Docker" + } + ], + "@type": "Annotation" + } + ], "description": "Container runtime used to execute the simulation environment, if any.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/compute", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/container_runtime", @@ -6126,6 +7184,18 @@ { "name": "wall_time", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/wall_time", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": 3600, + "value_unit": "s" + } + ], + "@type": "Annotation" + } + ], "description": "Total elapsed runtime of the simulation.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/compute", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/wall_time", @@ -6141,6 +7211,18 @@ { "name": "energy_consumption", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/energy_consumption", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": 0.119, + "value_unit": "kWh" + } + ], + "@type": "Annotation" + } + ], "description": "Total energy consumed by the simulation run.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/compute", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/energy_consumption", @@ -6156,6 +7238,17 @@ { "name": "execution_platform", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/execution_platform", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "HPC Cluster" + } + ], + "@type": "Annotation" + } + ], "description": "Broad type of system used to run the simulation workload.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/compute", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/execution_platform", @@ -6169,6 +7262,17 @@ { "name": "node_type", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/node_type", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "CPU Only" + } + ], + "@type": "Annotation" + } + ], "description": "Compute node profile used for the simulation run.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/compute", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/node_type", @@ -6182,6 +7286,17 @@ { "name": "node_count", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/node_count", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "2" + } + ], + "@type": "Annotation" + } + ], "description": "Number of compute nodes used for the run.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/compute", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/node_count", @@ -6196,6 +7311,17 @@ { "name": "CPU_vendor", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/CPU_vendor", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "AMD" + } + ], + "@type": "Annotation" + } + ], "description": "CPU vendor used in the compute nodes.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/compute", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/CPU_vendor", @@ -6209,6 +7335,17 @@ { "name": "CPU_architecture", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/CPU_architecture", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "x86" + } + ], + "@type": "Annotation" + } + ], "description": "CPU instruction-set architecture of the compute nodes.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/compute", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/CPU_architecture", @@ -6222,6 +7359,17 @@ { "name": "sockets_per_node", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/sockets_per_node", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": 2 + } + ], + "@type": "Annotation" + } + ], "description": "Number of physical CPU sockets in each compute node.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/compute", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/sockets_per_node", @@ -6236,6 +7384,17 @@ { "name": "cores_per_socket", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/cores_per_socket", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": 2 + } + ], + "@type": "Annotation" + } + ], "description": "Number of physical CPU cores in each socket.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/compute", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/cores_per_socket", @@ -6250,6 +7409,17 @@ { "name": "threads_per_core", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/threads_per_core", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": 2 + } + ], + "@type": "Annotation" + } + ], "description": "Number of hardware threads per physical core.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/compute", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/threads_per_core", @@ -6264,6 +7434,17 @@ { "name": "GPU_vendor", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/GPU_vendor", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": "AMD" + } + ], + "@type": "Annotation" + } + ], "description": "GPU vendor used by the compute nodes, if applicable.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/compute", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/GPU_vendor", @@ -6277,6 +7458,17 @@ { "name": "GPUs_per_node", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/GPUs_per_node", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": 1 + } + ], + "@type": "Annotation" + } + ], "description": "Number of GPUs present in each compute node.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/compute", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/GPUs_per_node", @@ -6291,6 +7483,18 @@ { "name": "memory_per_node", "definition_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/memory_per_node", + "annotations": [ + { + "tag": "example", + "value": [ + { + "value": 2, + "value_unit": "GB" + } + ], + "@type": "Annotation" + } + ], "description": "Amount of memory installed per compute node.", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/compute", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/compute/memory_per_node", @@ -6372,7 +7576,7 @@ "name": "timeQuantity__value_unit", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/quantities", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/quantities/value_unit", - "ifabsent": "string(ns)", + "ifabsent": "string(s)", "alias": "value_unit", "owner": "TimeQuantity", "domain_of": [ @@ -6897,7 +8101,7 @@ "name": "vectorTimeQuantity__value_unit", "from_schema": "https://CCPBioSim.ac.uk/biosim-schema/quantities", "slot_uri": "https://CCPBioSim.ac.uk/biosim-schema/quantities/value_unit", - "ifabsent": "string(ns)", + "ifabsent": "string(s)", "alias": "value_unit", "owner": "VectorTimeQuantity", "domain_of": [ @@ -7117,7 +8321,7 @@ }, { "name": "value_unit", - "ifabsent": "string(ns)", + "ifabsent": "string(s)", "range": "TimeUnit", "@type": "SlotDefinition" } @@ -7662,7 +8866,7 @@ }, { "name": "value_unit", - "ifabsent": "string(ns)", + "ifabsent": "string(s)", "range": "TimeUnit", "@type": "SlotDefinition" } @@ -8339,9 +9543,9 @@ ], "metamodel_version": "1.11.0", "source_file": "biosim_schema.yaml", - "source_file_date": "2026-06-10T15:27:45", + "source_file_date": "2026-06-15T10:06:40", "source_file_size": 2847, - "generation_date": "2026-06-12T16:49:57", + "generation_date": "2026-06-19T17:27:26", "@type": "SchemaDefinition", "@context": [ "file:///Users/jas.kalayan/Library/CloudStorage/OneDrive-ScienceandTechnologyFacilitiesCouncil/STFC_job/bin/BioSimDR/biosim-schema/project/linkml/jsonld/biosim_schema.context.jsonld", diff --git a/project/linkml/jsonschema/biosim_schema.schema.json b/project/linkml/jsonschema/biosim_schema.schema.json index 687a402..e7941fb 100644 --- a/project/linkml/jsonschema/biosim_schema.schema.json +++ b/project/linkml/jsonschema/biosim_schema.schema.json @@ -140,11 +140,15 @@ "description": "Compressibility of the simulated system, given as a float." }, "pressure_coupling_frequency": { - "description": "Step frequency to apply the barostat, given as an integer.", - "type": [ - "integer", - "null" - ] + "anyOf": [ + { + "$ref": "#/$defs/FrequencyQuantity" + }, + { + "type": "null" + } + ], + "description": "Step frequency to apply the barostat." }, "pressure_coupling_type": { "$ref": "#/$defs/PressureCouplingType", @@ -2396,7 +2400,7 @@ "type": "null" } ], - "description": "Time constant for coupling the system temperature in seconds units, given as a list (e.g. 300, 300)." + "description": "Time constant for coupling the system temperature in seconds units, given as a list (e.g. 0.1, 0.1)." }, "thermostat_algorithm": { "$ref": "#/$defs/ThermostatAlgorithm", @@ -2893,5 +2897,5 @@ }, "title": "biosim-schema", "type": "object", - "version": "0.0.2" + "version": "0.0.3" } diff --git a/project/linkml/protobuf/biosim_schema.proto b/project/linkml/protobuf/biosim_schema.proto index bcd7264..4ac1945 100644 --- a/project/linkml/protobuf/biosim_schema.proto +++ b/project/linkml/protobuf/biosim_schema.proto @@ -1,7 +1,7 @@ syntax="proto3"; package // metamodel_version: 1.11.0 -// version: 0.0.2 +// version: 0.0.3 // Analysis stage of simulation workflow. message Analysis { @@ -24,7 +24,7 @@ message Barostat pressureQuantity targetPressure = 0 matrixPressureQuantity targetPressureVector = 0 timeQuantity pressureTimeConstant = 0 - integer pressureCouplingFrequency = 0 + frequencyQuantity pressureCouplingFrequency = 0 pressureCouplingType pressureCouplingType = 0 } // A quantity representing bytes. diff --git a/project/linkml/shacl/biosim_schema.shacl.ttl b/project/linkml/shacl/biosim_schema.shacl.ttl index 6a345ea..3b9eb89 100644 --- a/project/linkml/shacl/biosim_schema.shacl.ttl +++ b/project/linkml/shacl/biosim_schema.shacl.ttl @@ -9,13 +9,7 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; rdfs:comment "root class for biosim-schema" ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ; - sh:description "Force field potentials used to describe simulated particles." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path biosim_schema:potentials ], - [ sh:class ; + sh:property [ sh:class ; sh:description "Simulation settings" ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -27,12 +21,6 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 7 ; sh:path biosim_schema:compute ], - [ sh:class ; - sh:description "Topology information." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path biosim_schema:topology ], [ sh:class ; sh:description "Composition of simulated system." ; sh:maxCount 1 ; @@ -45,6 +33,12 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 4 ; sh:path biosim_schema:trajectory ], + [ sh:class ; + sh:description "Force field potentials used to describe simulated particles." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path biosim_schema:potentials ], [ sh:class ; sh:description "Simulation stages" ; sh:maxCount 1 ; @@ -56,23 +50,29 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; - sh:path biosim_schema:observables ] ; + sh:path biosim_schema:observables ], + [ sh:class ; + sh:description "Topology information." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path biosim_schema:topology ] ; sh:targetClass biosim_schema:SimulationMetadata . a sh:NodeShape ; rdfs:comment "A quantity representing angles." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:float ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path ], - [ sh:defaultValue "degree" ; + sh:property [ sh:defaultValue "degree" ; sh:in ( qudt:DEG qudt:RAD ) ; sh:maxCount 1 ; sh:order 1 ; - sh:path ] ; + sh:path ], + [ sh:datatype xsd:float ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -94,33 +94,33 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; rdfs:comment "A quantity representing compressibility in 3D." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:defaultValue "1/bar" ; - sh:in ( qudt:PER-BAR qudt:PER-PA ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ], - [ sh:datatype xsd:float ; + sh:property [ sh:datatype xsd:float ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path ] ; + sh:path ], + [ sh:defaultValue "1/bar" ; + sh:in ( qudt:PER-BAR qudt:PER-PA ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "A quantity representing pressure in 3D." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:defaultValue "bar" ; - sh:in ( "bar" "Pa" ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ], - [ sh:datatype xsd:float ; + sh:property [ sh:datatype xsd:float ; sh:maxCount 3 ; sh:minCount 3 ; sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path ] ; + sh:path ], + [ sh:defaultValue "bar" ; + sh:in ( "bar" "Pa" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -128,12 +128,19 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:string ; - sh:description "Simplified Molecular Input Line Entry System (SMILES) ASCII-based line notation used to describe chemical structures. It represents molecular graphs with atoms and bonds, allowing software to convert these short strings into 2D or 3D models." ; + sh:description "The International Chemical Identifier (InChi) is a textual identifier for chemical substances, designed to provide a standard way to encode molecular information" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path ; - sh:pattern "^[A-Za-z0-9@+\\-\\[\\]()=#$:./\\\\%*]+$" ], + sh:order 3 ; + sh:path ; + sh:pattern "^InChI=1S?/[A-Za-z0-9.+\\-]+(/[a-z][^/]*)*$" ], + [ sh:datatype xsd:string ; + sh:description "One letter sequence for protein amino acids." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 7 ; + sh:path ; + sh:pattern "^[ACDEFGHIKLMNPQRSTVWY]+$" ], [ sh:datatype xsd:integer ; sh:description "Number of monomeric units in a polymer(e.g. protein or nucleic acid)." ; sh:maxCount 1 ; @@ -141,46 +148,32 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:nodeKind sh:Literal ; sh:order 16 ; sh:path ], - [ sh:datatype xsd:boolean ; - sh:description "Are the molecule positions derived from a prediction?" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 9 ; - sh:path ], - [ sh:datatype xsd:boolean ; - sh:description "Has the initial model been modified from the original?" ; + [ sh:class ; + sh:description "The molecular weight of a molecule." ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 10 ; - sh:path ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 12 ; + sh:path ], [ sh:datatype xsd:string ; - sh:description "The International Chemical Identifier (InChi) is a textual identifier for chemical substances, designed to provide a standard way to encode molecular information" ; + sh:description "Simplified Molecular Input Line Entry System (SMILES) ASCII-based line notation used to describe chemical structures. It represents molecular graphs with atoms and bonds, allowing software to convert these short strings into 2D or 3D models." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path ; - sh:pattern "^InChI=1S?/[A-Za-z0-9.+\\-]+(/[a-z][^/]*)*$" ], + sh:order 2 ; + sh:path ; + sh:pattern "^[A-Za-z0-9@+\\-\\[\\]()=#$:./\\\\%*]+$" ], [ sh:datatype xsd:string ; - sh:description "UniProt accession ID" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path ; - sh:pattern "^[A-Z0-9]{6,10}$" ], - [ sh:datatype xsd:integer ; - sh:description "Number of instances of a given molecule, defined as bonded atoms or beads." ; + sh:description "The molecular formula of a molecule\\" ; sh:maxCount 1 ; - sh:minInclusive 0 ; sh:nodeKind sh:Literal ; - sh:order 14 ; - sh:path ], - [ sh:datatype xsd:string ; - sh:description "One letter sequence for nucleic acid nucleotides." ; + sh:order 11 ; + sh:path ; + sh:pattern "^([A-Z][a-z]?\\d*)+$" ], + [ sh:datatype xsd:boolean ; + sh:description "Are the molecule positions derived from a prediction?" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 8 ; - sh:path ; - sh:pattern "^[ACGTURYSWKMBDHVN]+$" ], + sh:order 9 ; + sh:path ], [ sh:datatype xsd:string ; sh:description "Protein Data Bank identifier" ; sh:maxCount 1 ; @@ -189,19 +182,12 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:path ; sh:pattern "^[0-9A-Za-z]{4}$" ], [ sh:datatype xsd:string ; - sh:description "One letter sequence for protein amino acids." ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 7 ; - sh:path ; - sh:pattern "^[ACDEFGHIKLMNPQRSTVWY]+$" ], - [ sh:datatype xsd:string ; - sh:description "AlphaFold predicted protein structure identifier (AlphaFold DB, EMBL-EBI)" ; + sh:description "One letter sequence for nucleic acid nucleotides." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path ; - sh:pattern "^AF-[A-Z0-9]+-F1$" ], + sh:order 8 ; + sh:path ; + sh:pattern "^[ACGTURYSWKMBDHVN]+$" ], [ sh:datatype xsd:string ; sh:description "PubChem CID of chemical molecules and their activities against biological assays." ; sh:maxCount 1 ; @@ -217,12 +203,32 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:order 15 ; sh:path ], [ sh:datatype xsd:string ; - sh:description "The molecular formula of a molecule\\" ; + sh:description "The condensed, 27 character InChIKey, which is a hashed version of the full InChI (using the SHA-256 algorithm), designed to allow for easy web searches of chemical compounds." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 11 ; - sh:path ; - sh:pattern "^([A-Z][a-z]?\\d*)+$" ], + sh:order 4 ; + sh:path ; + sh:pattern "^[A-Z]{14}-[A-Z]{10}(-[A-Z])?$" ], + [ sh:datatype xsd:string ; + sh:description "UniProt accession ID" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 1 ; + sh:path ; + sh:pattern "^[A-Z0-9]{6,10}$" ], + [ sh:datatype xsd:boolean ; + sh:description "Has the initial model been modified from the original?" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 10 ; + sh:path ], + [ sh:datatype xsd:integer ; + sh:description "Number of instances of a given molecule, defined as bonded atoms or beads." ; + sh:maxCount 1 ; + sh:minInclusive 0 ; + sh:nodeKind sh:Literal ; + sh:order 14 ; + sh:path ], [ sh:class ; sh:description "Electrostatic charge of a molecule." ; sh:maxCount 1 ; @@ -230,37 +236,31 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:order 13 ; sh:path ; sh:pattern "^[+-]?\\d+(\\.\\d+)?$" ], - [ sh:class ; - sh:description "The molecular weight of a molecule." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 12 ; - sh:path ], [ sh:datatype xsd:string ; - sh:description "The condensed, 27 character InChIKey, which is a hashed version of the full InChI (using the SHA-256 algorithm), designed to allow for easy web searches of chemical compounds." ; + sh:description "AlphaFold predicted protein structure identifier (AlphaFold DB, EMBL-EBI)" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path ; - sh:pattern "^[A-Z]{14}-[A-Z]{10}(-[A-Z])?$" ] ; + sh:order 5 ; + sh:path ; + sh:pattern "^AF-[A-Z0-9]+-F1$" ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "Molecular composition of simulated system." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ; - sh:description "Entity counts across the simulated system." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path ], - [ sh:class ; + sh:property [ sh:class ; sh:description "Persistent identifier of a molecule being simulated." ; sh:maxCount 20 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 1 ; - sh:path ] ; + sh:path ], + [ sh:class ; + sh:description "Entity counts across the simulated system." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -274,13 +274,6 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:nodeKind sh:Literal ; sh:order 0 ; sh:path ], - [ sh:datatype xsd:integer ; - sh:description "Number of unique simulated molecules, defined as bonded atoms or beads." ; - sh:maxCount 1 ; - sh:minInclusive 0 ; - sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path ], [ sh:class ; sh:description "Concentration of salt in the solution." ; sh:maxCount 1 ; @@ -293,25 +286,32 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:minInclusive 0 ; sh:nodeKind sh:Literal ; sh:order 1 ; - sh:path ] ; + sh:path ], + [ sh:datatype xsd:integer ; + sh:description "Number of unique simulated molecules, defined as bonded atoms or beads." ; + sh:maxCount 1 ; + sh:minInclusive 0 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "Computational environment used to perform simulation." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ; - sh:description "Computer software used to perform simulation." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path ], - [ sh:class ; + sh:property [ sh:class ; sh:description "Computer hardware used to perform simulation." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; sh:path ], + [ sh:class ; + sh:description "Computer software used to perform simulation." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path ], [ sh:class ; sh:description "Compute performance during simulation." ; sh:maxCount 1 ; @@ -324,45 +324,32 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; rdfs:comment "Computer hardware used to perform simulation." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "GPU vendor used by the compute nodes, if applicable." ; - sh:in ( "Nvidia" "AMD" "Intel" "None" ) ; - sh:maxCount 1 ; - sh:order 8 ; - sh:path ], - [ sh:description "Broad type of system used to run the simulation workload." ; - sh:in ( "HPC Cluster" "Cloud VM" "Local" ) ; + sh:property [ sh:datatype xsd:integer ; + sh:description "Number of hardware threads per physical core." ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ], + sh:minInclusive 1 ; + sh:nodeKind sh:Literal ; + sh:order 7 ; + sh:path ], [ sh:datatype xsd:integer ; - sh:description "Number of physical CPU sockets in each compute node." ; + sh:description "Number of compute nodes used for the run." ; sh:maxCount 1 ; sh:minInclusive 1 ; sh:nodeKind sh:Literal ; - sh:order 5 ; - sh:path ], - [ sh:description "CPU vendor used in the compute nodes." ; - sh:in ( "AMD" "Intel" "ARM" "Other" ) ; - sh:maxCount 1 ; - sh:order 3 ; - sh:path ], - [ sh:description "Compute node profile used for the simulation run." ; - sh:in ( "CPU only" "GPU Accelerated" "Hybrid CPU GPU" ) ; + sh:order 2 ; + sh:path ], + [ sh:datatype xsd:integer ; + sh:description "Number of GPUs present in each compute node." ; sh:maxCount 1 ; - sh:order 1 ; - sh:path ], + sh:minInclusive 0 ; + sh:nodeKind sh:Literal ; + sh:order 9 ; + sh:path ], [ sh:description "CPU instruction-set architecture of the compute nodes." ; sh:in ( "x86" "ARM" ) ; sh:maxCount 1 ; sh:order 4 ; sh:path ], - [ sh:datatype xsd:integer ; - sh:description "Number of hardware threads per physical core." ; - sh:maxCount 1 ; - sh:minInclusive 1 ; - sh:nodeKind sh:Literal ; - sh:order 7 ; - sh:path ], [ sh:datatype xsd:integer ; sh:description "Number of physical CPU cores in each socket." ; sh:maxCount 1 ; @@ -370,26 +357,39 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:nodeKind sh:Literal ; sh:order 6 ; sh:path ], - [ sh:datatype xsd:integer ; - sh:description "Number of compute nodes used for the run." ; + [ sh:description "GPU vendor used by the compute nodes, if applicable." ; + sh:in ( "Nvidia" "AMD" "Intel" "None" ) ; sh:maxCount 1 ; - sh:minInclusive 1 ; - sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path ], + sh:order 8 ; + sh:path ], [ sh:datatype xsd:integer ; - sh:description "Number of GPUs present in each compute node." ; + sh:description "Number of physical CPU sockets in each compute node." ; sh:maxCount 1 ; - sh:minInclusive 0 ; + sh:minInclusive 1 ; sh:nodeKind sh:Literal ; - sh:order 9 ; - sh:path ], + sh:order 5 ; + sh:path ], [ sh:class ; sh:description "Amount of memory installed per compute node." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 10 ; - sh:path ] ; + sh:path ], + [ sh:description "Compute node profile used for the simulation run." ; + sh:in ( "CPU only" "GPU Accelerated" "Hybrid CPU GPU" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ], + [ sh:description "Broad type of system used to run the simulation workload." ; + sh:in ( "HPC Cluster" "Cloud VM" "Local" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ], + [ sh:description "CPU vendor used in the compute nodes." ; + sh:in ( "AMD" "Intel" "ARM" "Other" ) ; + sh:maxCount 1 ; + sh:order 3 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -419,69 +419,69 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:maxCount 1 ; sh:order 1 ; sh:path ], - [ sh:description "Container runtime used to execute the simulation environment, if any." ; - sh:in ( "Apptainer" "Docker" "Podman" "None" ) ; + [ sh:description "Operating system installed on the hardware used to perform the simulation." ; + sh:in ( "Linux" "macOS" "Windows" ) ; sh:maxCount 1 ; - sh:order 3 ; - sh:path ], + sh:order 0 ; + sh:path ], [ sh:description "MPI implementation used for distributed parallel execution." ; sh:in ( "OpenMPI" "MPICH" "IntelMPI" "MVAPICH2" "None" ) ; sh:maxCount 1 ; sh:order 2 ; sh:path ], - [ sh:description "Operating system installed on the hardware used to perform the simulation." ; - sh:in ( "Linux" "macOS" "Windows" ) ; + [ sh:description "Container runtime used to execute the simulation environment, if any." ; + sh:in ( "Apptainer" "Docker" "Podman" "None" ) ; sh:maxCount 1 ; - sh:order 0 ; - sh:path ] ; + sh:order 3 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "Average values of observables outputted from the simulation." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ; - sh:description "Average temperature sampled from the simulation, given as a float." ; + sh:property [ sh:class ; + sh:description "Average enthalpy sampled from the simulation, given as a float." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path ], + sh:order 2 ; + sh:path ], [ sh:class ; sh:description "Average potential energy sampled from the simulation, given as a float." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 1 ; sh:path ], - [ sh:class ; - sh:description "Average volume sampled from the simulation, given as a list, (e.g. 10, 10, 10)." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 6 ; - sh:path ], - [ sh:class ; - sh:description "Average pressure sampled from the simulation, given as a float." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path ], [ sh:class ; sh:description "Average kinetic energy sampled from the simulation, given as a float." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; sh:path ], - [ sh:class ; - sh:description "Average enthalpy sampled from the simulation, given as a float." ; + [ sh:class ; + sh:description "Average temperature sampled from the simulation, given as a float." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path ], + sh:order 4 ; + sh:path ], + [ sh:class ; + sh:description "Average volume sampled from the simulation, given as a list, (e.g. 10, 10, 10)." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 6 ; + sh:path ], [ sh:class ; sh:description "Average volume sampled from the simulation, given as a float." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 5 ; - sh:path ] ; + sh:path ], + [ sh:class ; + sh:description "Average pressure sampled from the simulation, given as a float." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 3 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -500,68 +500,68 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; rdfs:comment "Potential used for carbohydrate molecules." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:boolean ; + sh:property [ sh:description "Force field used to describe carbohydrate." ; + sh:in ( "GLYCAM06" "GLYCAM_06EP" "GLYCAM_06j-1" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ], + [ sh:datatype xsd:boolean ; sh:description "Has the initial model been modified from the original?" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 1 ; - sh:path ], - [ sh:description "Force field used to describe carbohydrate." ; - sh:in ( "GLYCAM06" "GLYCAM_06EP" "GLYCAM_06j-1" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ] ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "Potential used for molecules." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:boolean ; + sh:property [ sh:description "Force field used to describe molecules." ; + sh:in ( "gem.pmemd" "GAFF" "GAFF2" "OPLS" "GROMOS" "CHARMM" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ], + [ sh:datatype xsd:boolean ; sh:description "Has the initial model been modified from the original?" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 1 ; - sh:path ], - [ sh:description "Force field used to describe molecules." ; - sh:in ( "gem.pmemd" "GAFF" "GAFF2" "OPLS" "GROMOS" "CHARMM" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ] ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "Potential used for lipid molecules." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "Force field used to describe lipids." ; - sh:in ( "LIPID21" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ], - [ sh:datatype xsd:boolean ; + sh:property [ sh:datatype xsd:boolean ; sh:description "Has the initial model been modified from the original?" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 1 ; - sh:path ] ; + sh:path ], + [ sh:description "Force field used to describe lipids." ; + sh:in ( "LIPID21" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "Machine learned potential used for molecules." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:boolean ; + sh:property [ sh:description "ML force field used to describe molecules." ; + sh:in ( "MACE" "ANI" "NequIP" "UMA" "AceFF" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ], + [ sh:datatype xsd:boolean ; sh:description "Has the initial model been modified from the original?" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 1 ; - sh:path ], - [ sh:description "ML force field used to describe molecules." ; - sh:in ( "MACE" "ANI" "NequIP" "UMA" "AceFF" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ] ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -602,42 +602,36 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; rdfs:comment "Potentials used for various modelled molecules." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ; - sh:description "Force field for carbohydrates." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path ], - [ sh:class ; + sh:property [ sh:class ; sh:description "Force field for water molecules." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; sh:path ], - [ sh:class ; - sh:description "Force field for lipids." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path ], [ sh:class ; sh:description "Force field for proteins." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 1 ; sh:path ], + [ sh:class ; + sh:description "ML force field for molecules (in general)." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 7 ; + sh:path ], [ sh:class ; sh:description "Force field for molecules (in general)." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 6 ; sh:path ], - [ sh:class ; - sh:description "ML force field for molecules (in general)." ; + [ sh:class ; + sh:description "Force field for carbohydrates." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path ], + sh:order 4 ; + sh:path ], [ sh:class ; sh:description "Force field for polymers (excluding proteins and nucleic acids)." ; sh:maxCount 1 ; @@ -649,7 +643,13 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; - sh:path ] ; + sh:path ], + [ sh:class ; + sh:description "Force field for lipids." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -673,17 +673,17 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; rdfs:comment "Potential used for water molecules." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:boolean ; + sh:property [ sh:description "Force field used to describe water molecules." ; + sh:in ( "OPC" "OPC3" "OPC3POL" "POL3" "TIP3P" "TIP3PFB" "TIP4PFB" "TIP4P" "TIP5P" "TIP4PEW" "SPCE" "SPCEB" "SPC/Fw" "q-SPC/Fw" ) ; + sh:maxCount 1 ; + sh:order 0 ; + sh:path ], + [ sh:datatype xsd:boolean ; sh:description "Has the initial model been modified from the original?" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 1 ; - sh:path ], - [ sh:description "Force field used to describe water molecules." ; - sh:in ( "OPC" "OPC3" "OPC3POL" "POL3" "TIP3P" "TIP3PFB" "TIP4PFB" "TIP4P" "TIP5P" "TIP4PEW" "SPCE" "SPCEB" "SPC/Fw" "q-SPC/Fw" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ] ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -706,16 +706,16 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; rdfs:comment "A quantity representing compressibility." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:float ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path ], - [ sh:defaultValue "1/bar" ; + sh:property [ sh:defaultValue "1/bar" ; sh:in ( qudt:PER-BAR qudt:PER-PA ) ; sh:maxCount 1 ; sh:order 1 ; - sh:path ] ; + sh:path ], + [ sh:datatype xsd:float ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -768,8 +768,8 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:pattern "^[+-]?\\d+(\\.\\d+)?$" ] ; sh:targetClass . - a sh:NodeShape ; - rdfs:comment "A quantity representing frequency." ; + a sh:NodeShape ; + rdfs:comment "A quantity representing friction coefficients." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:float ; @@ -778,28 +778,11 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:nodeKind sh:Literal ; sh:order 0 ; sh:path ], - [ sh:defaultValue "1/ps" ; - sh:in ( "1/ps" ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ] ; - sh:targetClass . - - a sh:NodeShape ; - rdfs:comment "A quantity representing friction coefficients." ; - sh:closed true ; - sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:defaultValue "a/ps" ; + [ sh:defaultValue "a/ps" ; sh:in ( "a/ps" "kg/s" ) ; sh:maxCount 1 ; sh:order 1 ; - sh:path ], - [ sh:datatype xsd:float ; - sh:maxCount 1 ; - sh:minInclusive 0 ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path ] ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -823,86 +806,86 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; rdfs:comment "A quantity representing compressibility vectors in 3D." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:float ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path ], - [ sh:defaultValue "1/bar" ; + sh:property [ sh:defaultValue "1/bar" ; sh:in ( qudt:PER-BAR qudt:PER-PA ) ; sh:maxCount 1 ; sh:order 1 ; - sh:path ] ; + sh:path ], + [ sh:datatype xsd:float ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "A quantity representing pressure vectors in 3D." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:float ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path ], - [ sh:defaultValue "bar" ; + sh:property [ sh:defaultValue "bar" ; sh:in ( "bar" "Pa" ) ; sh:maxCount 1 ; sh:order 1 ; - sh:path ] ; + sh:path ], + [ sh:datatype xsd:float ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "A quantity representing 3D angles." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:defaultValue "degree" ; - sh:in ( qudt:DEG qudt:RAD ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ], - [ sh:datatype xsd:float ; + sh:property [ sh:datatype xsd:float ; sh:maxCount 3 ; sh:minCount 3 ; sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path ] ; + sh:path ], + [ sh:defaultValue "degree" ; + sh:in ( qudt:DEG qudt:RAD ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "A quantity representing 3D lengths/dimensions." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:float ; + sh:property [ sh:defaultValue "nm" ; + sh:in ( qudt:ANGSTROM qudt:NanoM ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ], + [ sh:datatype xsd:float ; sh:maxCount 3 ; sh:minCount 3 ; sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path ], - [ sh:defaultValue "nm" ; - sh:in ( qudt:ANGSTROM qudt:NanoM ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ] ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "Temperature values for multiple coupling groups." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:defaultValue "K" ; + sh:property [ sh:datatype xsd:float ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path ], + [ sh:defaultValue "K" ; sh:in ( "K" "°C" "°F" ) ; sh:maxCount 1 ; sh:order 1 ; - sh:path ], - [ sh:datatype xsd:float ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path ] ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "Time values for multiple coupling groups." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:defaultValue "ns" ; + sh:property [ sh:defaultValue "s" ; sh:in ( qudt:SEC qudt:MilliSEC qudt:MicroSEC qudt:NanoSEC qudt:PicoSEC "fs" ) ; sh:maxCount 1 ; sh:order 1 ; @@ -917,57 +900,58 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; rdfs:comment "A quantity representing volume as via 3 length dimensions." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:defaultValue "nm" ; - sh:in ( qudt:ANGSTROM qudt:NanoM ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ], - [ sh:datatype xsd:float ; + sh:property [ sh:datatype xsd:float ; sh:maxCount 3 ; sh:minCount 3 ; sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path ] ; + sh:path ], + [ sh:defaultValue "nm" ; + sh:in ( qudt:ANGSTROM qudt:NanoM ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "A quantity representing volume." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:float ; + sh:property [ sh:defaultValue "nm³" ; + sh:in ( qudt:ANGSTROM3 "nm³" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ], + [ sh:datatype xsd:float ; sh:maxCount 1 ; sh:minInclusive 0 ; sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path ], - [ sh:defaultValue "nm³" ; - sh:in ( qudt:ANGSTROM3 "nm³" ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ] ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "Settings used for the simulation barostat." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "List of coupling types for adjusting box vectors." ; - sh:in ( "isotropic" "semi-isotropic" "anisotropic" "surface tension" ) ; + sh:property [ sh:class ; + sh:description "Target/reference pressure set to reach in the simulation, given as a 3x3 array." ; sh:maxCount 1 ; - sh:order 7 ; - sh:path ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path ], [ sh:class ; sh:description "Target/reference pressure set to reach in the simulation, given as a float." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path ], - [ sh:class ; - sh:description "Compressibility of the simulated system, given as a float." ; + [ sh:class ; + sh:description "Step frequency to apply the barostat." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path ], + sh:order 6 ; + sh:path ], [ sh:class ; sh:description "Time constant/step (relaxation time of pressure) used for coupling the system pressure, given as a float." ; sh:maxCount 1 ; @@ -979,24 +963,23 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:maxCount 1 ; sh:order 0 ; sh:path ], - [ sh:class ; - sh:description "Target/reference pressure set to reach in the simulation, given as a 3x3 array." ; + [ sh:class ; + sh:description "Compressibility of the simulated system, given as a float." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path ], + sh:order 1 ; + sh:path ], [ sh:class ; sh:description "Compressibility of the simulated system, given as a float." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; sh:path ], - [ sh:datatype xsd:integer ; - sh:description "Step frequency to apply the barostat, given as an integer." ; + [ sh:description "List of coupling types for adjusting box vectors." ; + sh:in ( "isotropic" "semi-isotropic" "anisotropic" "surface tension" ) ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 6 ; - sh:path ] ; + sh:order 7 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -1020,23 +1003,17 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; rdfs:comment "Settings used for the simulation integrator." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ; - sh:description "Time between saved snapshots/frames in a simulation, given as a float." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path ], - [ sh:class ; - sh:description "Total time molecular dynamics have been sampled in a simulation trajectory, often given by the number of integration steps multiplied by the simulation time step used by the integrator, given as a float." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path ], - [ sh:description "List of integrator algorithms used to integrate the simulation." ; + sh:property [ sh:description "List of integrator algorithms used to integrate the simulation." ; sh:in ( "Velocity-Verlet" "Leap-frog" "Verlet" "Euler" ) ; sh:maxCount 1 ; sh:order 0 ; sh:path ], + [ sh:class ; + sh:description "Time between integration steps in a simulation, given as a float." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path ], [ sh:datatype xsd:integer ; sh:description "Number of integration steps performed in the simulation, given as an integer." ; sh:maxCount 1 ; @@ -1044,40 +1021,46 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:order 3 ; sh:path ], [ sh:class ; - sh:description "Time between integration steps in a simulation, given as a float." ; + sh:description "Total time molecular dynamics have been sampled in a simulation trajectory, often given by the number of integration steps multiplied by the simulation time step used by the integrator, given as a float." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path ] ; + sh:order 4 ; + sh:path ], + [ sh:class ; + sh:description "Time between saved snapshots/frames in a simulation, given as a float." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "Settings used to define particle interactions." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ; - sh:description "Distance in Angstrom at which a Van der Waals interaction is turned off and a long-range non-bonded method is turned on." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path ], - [ sh:description "Method used to describe long-range interactions between particles." ; + sh:property [ sh:description "Method used to describe long-range interactions between particles." ; sh:in ( "Cutoff" "Ewald" "PME" "P3M" "FMM" "RF" ) ; sh:maxCount 1 ; sh:order 4 ; sh:path ], + [ sh:datatype xsd:boolean ; + sh:description "Are any positional restraints applied to molecule dynamics? (Restraints usually use harmonic potentials to keep a value near a target)." ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path ], [ sh:class ; sh:description "Distance in Angstrom at which a electrostatic interaction is turned off and a long-range non-bonded method is turned on, given as a float." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 1 ; sh:path ], - [ sh:datatype xsd:boolean ; - sh:description "Are any positional restraints applied to molecule dynamics? (Restraints usually use harmonic potentials to keep a value near a target)." ; + [ sh:class ; + sh:description "Distance in Angstrom at which a Van der Waals interaction is turned off and a long-range non-bonded method is turned on." ; sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path ], + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path ], [ sh:description "Constraints applied to bonds between two particles in the simulated system." ; sh:in ( "SHAKE" "RATTLE" "SETTLE" "LINCS" "CCMA" ) ; sh:maxCount 1 ; @@ -1089,19 +1072,7 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; rdfs:comment "Settings in simulation." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ; - sh:description "Interaction information." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path ], - [ sh:class ; - sh:description "Ensemble information." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path ], - [ sh:class ; + sh:property [ sh:class ; sh:description "Integrator information." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -1113,41 +1084,42 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path ], + [ sh:class ; + sh:description "Ensemble information." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path ], [ sh:class ; sh:description "Barostat information." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; - sh:path ] ; + sh:path ], + [ sh:class ; + sh:description "Interaction information." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "Settings used for the simulation thermostat." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ; - sh:description "Target/reference temperature set to reach in the simulation, given as a list (e.g. 300, 300)." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path ], - [ sh:description "List of thermostat algorithms used in the simulation." ; - sh:in ( "Langevin" "Berendsen" "Andersen" "Nose-Hoover" "Bussi" ) ; - sh:maxCount 1 ; - sh:order 0 ; - sh:path ], - [ sh:class ; - sh:description "Usually used in the Langevin thermostat, the friction coefficient determines the strength of coupling between a system and a heat bath, given as a float." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 7 ; - sh:path ], - [ sh:class ; + sh:property [ sh:class ; sh:description "Collision frequency for the integrator, given as a float." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 3 ; sh:path ], + [ sh:class ; + sh:description "Target/reference temperature set to reach in the simulation, given as a float." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path ], [ sh:datatype xsd:integer ; sh:description "Usually required in the Nosé-Hoover thermostat, the chain length (e.g., nh-chain-length in GROMACS) is used to maintain canonical distribution, given as an integer." ; sh:maxCount 1 ; @@ -1162,31 +1134,42 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:order 5 ; sh:path ], [ sh:class ; - sh:description "Time constant for coupling the system temperature in seconds units, given as a list (e.g. 300, 300)." ; + sh:description "Time constant for coupling the system temperature in seconds units, given as a list (e.g. 0.1, 0.1)." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path ], + [ sh:class ; + sh:description "Target/reference temperature set to reach in the simulation, given as a list (e.g. 300, 300)." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 2 ; + sh:path ], + [ sh:class ; + sh:description "Usually used in the Langevin thermostat, the friction coefficient determines the strength of coupling between a system and a heat bath, given as a float." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path ], - [ sh:class ; - sh:description "Target/reference temperature set to reach in the simulation, given as a float." ; + sh:order 7 ; + sh:path ], + [ sh:description "List of thermostat algorithms used in the simulation." ; + sh:in ( "Langevin" "Berendsen" "Andersen" "Nose-Hoover" "Bussi" ) ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path ] ; + sh:order 0 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "Analysis stage of simulation workflow." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "Name of software used to analyse simulation." ; - sh:in ( "Visual Molecular Dynamics (VMD)" "Schrödinger Maestro" "PyMOL" "Avogadro" ) ; - sh:order 1 ; - sh:path ], - [ sh:description "Name of the tool used to analyse simulation." ; + sh:property [ sh:description "Name of the tool used to analyse simulation." ; sh:in ( "mdout_analyzer.py" "ambpdb" "CPPTRAJ" "PYTRAJ" "MMPBSA.py" "Free Energy Workflow (FEW)" "edgember" "SAX-RISM" "SAX-MD" "MoFT" "ndfes" "PLUMED" "MDanalysis" ) ; sh:order 0 ; sh:path ], + [ sh:description "Name of software used to analyse simulation." ; + sh:in ( "Visual Molecular Dynamics (VMD)" "Schrödinger Maestro" "PyMOL" "Avogadro" ) ; + sh:order 1 ; + sh:path ], [ sh:description "Name of the method used to analyse simulation." ; sh:in ( "RMSD" "DSSP" "GIST" "Hydrogen Bonds" "Connolly surface" "Radius of Gyration" "BAR/PBSA" ) ; sh:order 2 ; @@ -1211,62 +1194,62 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; rdfs:comment "Minimisation stage of simulation workflow." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ; - sh:description "The distance the algorithm moves in a single step, controls how large a step the optimizer takes during the initial phase of minimizing the potential energy of a structure, given as a float." ; - sh:maxCount 1 ; - sh:minInclusive 0 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 2 ; - sh:path ], - [ sh:description "Name of the method used to minimise the molecular system." ; + sh:property [ sh:description "Name of the method used to minimise the molecular system." ; sh:in ( "Steepest Descent" "Conjugate Gradient" "L-BFGS" "XMIN" "LMOD" "None" ) ; sh:order 3 ; sh:path ], + [ sh:class ; + sh:description "Tolerance energy for when minimization stops, this is when the maximum force on any atom is less than this value (default is often 1000 kJ/mol/nm or 10−4kcal), given as a float." ; + sh:maxCount 1 ; + sh:minInclusive 0 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path ], [ sh:datatype xsd:integer ; sh:description "Number of integration steps performed during minimisation of the system, given as an integer." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 1 ; sh:path ], - [ sh:class ; - sh:description "Tolerance energy for when minimization stops, this is when the maximum force on any atom is less than this value (default is often 1000 kJ/mol/nm or 10−4kcal), given as a float." ; + [ sh:class ; + sh:description "The distance the algorithm moves in a single step, controls how large a step the optimizer takes during the initial phase of minimizing the potential energy of a structure, given as a float." ; sh:maxCount 1 ; sh:minInclusive 0 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path ], - [ sh:description "Name of software used to perform simulation step." ; - sh:in ( "Amber" "GROMACS" "LAMMPS" "NAMD" "OpenMM" "CHARMM" "DL_POLY" "HOOMD-blue" "Desmond" "ACEMD" "CP2K" ) ; - sh:order 5 ; - sh:path ], + sh:order 2 ; + sh:path ], [ sh:description "Tool used to perform simulation." ; sh:in ( "sander" "pmemd" "gem.pmemd" "mdrun" ) ; sh:order 4 ; - sh:path ] ; + sh:path ], + [ sh:description "Name of software used to perform simulation step." ; + sh:in ( "Amber" "GROMACS" "LAMMPS" "NAMD" "OpenMM" "CHARMM" "DL_POLY" "HOOMD-blue" "Desmond" "ACEMD" "CP2K" ) ; + sh:order 5 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "Production stage of simulation workflow." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:description "Tool used to perform simulation." ; - sh:in ( "sander" "pmemd" "gem.pmemd" "mdrun" ) ; - sh:order 0 ; - sh:path ], - [ sh:description "Method used to perform simulation." ; + sh:property [ sh:description "Method used to perform simulation." ; sh:in ( "Self-guided Langevin Dynamics" "Accelerated Molecular Dynamics" "Gaussian Accelerated Molecular Dynamics" "Targeted Molecular Dynamics" "Nudged Elastic Band Calculations" "Adaptive String Method" "LMOD method" "DL-FIND Optimization" "Thermodynamic Integration (TI)" "Linear Interaction Energies (LIE)" "Replica Exchange Molecular Dynamics (REMD)" "Adaptively Biased Molecular Dynamics (ABMD)" "Steered Molecular Dynamics (SMD)" "Umbrella Sampling" "Metadynamics" "Swarms of Trajectories String Method" "Constant pH Molecular Dynamics" "Constant Redox Potential Molecular Dynamics" "Continuous Constant pH Molecular Dynamics" "NMR Refinement" "X-ray and CryoEM Refinement" "Locally Enhanced Sampling" ) ; sh:order 3 ; sh:path ], + [ sh:description "Name of software used to perform simulation step." ; + sh:in ( "Amber" "GROMACS" "LAMMPS" "NAMD" "OpenMM" "CHARMM" "DL_POLY" "HOOMD-blue" "Desmond" "ACEMD" "CP2K" ) ; + sh:order 1 ; + sh:path ], + [ sh:description "Tool used to perform simulation." ; + sh:in ( "sander" "pmemd" "gem.pmemd" "mdrun" ) ; + sh:order 0 ; + sh:path ], [ sh:datatype xsd:string ; sh:description "Version of software used to perform simulation step." ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 2 ; - sh:path ], - [ sh:description "Name of software used to perform simulation step." ; - sh:in ( "Amber" "GROMACS" "LAMMPS" "NAMD" "OpenMM" "CHARMM" "DL_POLY" "HOOMD-blue" "Desmond" "ACEMD" "CP2K" ) ; - sh:order 1 ; - sh:path ] ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -1284,36 +1267,36 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; rdfs:comment "Stages of simulation workflow." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ; - sh:description "Analysis stage of a simulation." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 4 ; - sh:path ], - [ sh:class ; - sh:description "Production stage of a simulation." ; + sh:property [ sh:class ; + sh:description "Minimisation stage of a simulation." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 3 ; - sh:path ], + sh:order 1 ; + sh:path ], [ sh:class ; sh:description "Setup stage of a simulation." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; sh:path ], - [ sh:class ; - sh:description "Minimisation stage of a simulation." ; + [ sh:class ; + sh:description "Production stage of a simulation." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path ], + sh:order 3 ; + sh:path ], [ sh:class ; sh:description "Equilibration stage of a simulation." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 2 ; - sh:path ] ; + sh:path ], + [ sh:class ; + sh:description "Analysis stage of a simulation." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 4 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -1321,24 +1304,35 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:boolean ; - sh:description "Are bond parameters present in the topology?" ; + sh:description "Are dihedral parameters present in the topology?" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path ], + sh:order 1 ; + sh:path ], [ sh:datatype xsd:boolean ; - sh:description "Are dihedral parameters present in the topology?" ; + sh:description "Are bond parameters present in the topology?" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 1 ; - sh:path ] ; + sh:order 0 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "Particle information included in the topology." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ; + sh:property [ sh:datatype xsd:boolean ; + sh:description "Are atoms coarse-grained?" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 3 ; + sh:path ], + [ sh:description "Resolution of simulated system." ; + sh:in ( "All Atom" "United Atom" "Coarse-Grained" "Mesoscale" ) ; + sh:maxCount 1 ; + sh:order 4 ; + sh:path ], + [ sh:class ; sh:description "Total electrostatic charge of the system given by the elementary charge (e)." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; @@ -1356,18 +1350,7 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path ], - [ sh:description "Resolution of simulated system." ; - sh:in ( "All Atom" "United Atom" "Coarse-Grained" "Mesoscale" ) ; - sh:maxCount 1 ; - sh:order 4 ; - sh:path ], - [ sh:datatype xsd:boolean ; - sh:description "Are atoms coarse-grained?" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path ] ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -1397,23 +1380,23 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:maxCount 1 ; sh:order 3 ; sh:path ], - [ sh:class ; - sh:description "The angles of the box used to simulate the system." ; + [ sh:description "The type of box used to simuluate the system." ; + sh:in ( "Cubic" "Tetragonal" "Orthorhombic" "Truncated Octahedron" "Triclinic" ) ; sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 1 ; - sh:path ], + sh:order 2 ; + sh:path ], [ sh:class ; sh:description "The lengths/dimensions of the box used to simulate the system." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 0 ; sh:path ], - [ sh:description "The type of box used to simuluate the system." ; - sh:in ( "Cubic" "Tetragonal" "Orthorhombic" "Truncated Octahedron" "Triclinic" ) ; + [ sh:class ; + sh:description "The angles of the box used to simulate the system." ; sh:maxCount 1 ; - sh:order 2 ; - sh:path ] ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 1 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -1421,104 +1404,121 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; sh:property [ sh:datatype xsd:boolean ; + sh:description "Are per-frame velocities included in the trajectory?" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 2 ; + sh:path ], + [ sh:datatype xsd:boolean ; sh:description "Are water molecules included in the trajectory?" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 5 ; sh:path ], + [ sh:datatype xsd:boolean ; + sh:description "Is this trajectory a replica of another provided trajectory?" ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 6 ; + sh:path ], [ sh:datatype xsd:boolean ; sh:description "Are per-frame positions included in the trajectory?" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 0 ; sh:path ], - [ sh:datatype xsd:integer ; - sh:description "Total number of snapshots that make up a trajectory." ; - sh:maxCount 1 ; - sh:minInclusive 0 ; - sh:nodeKind sh:Literal ; - sh:order 7 ; - sh:path ], [ sh:datatype xsd:boolean ; - sh:description "Is this trajectory a replica of another provided trajectory?" ; + sh:description "Are per-frame energies included in the trajectory?" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 6 ; - sh:path ], + sh:order 4 ; + sh:path ], [ sh:datatype xsd:boolean ; sh:description "Are per-frame forces included in the trajectory?" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 1 ; sh:path ], - [ sh:datatype xsd:boolean ; - sh:description "Are per-frame polarizable charges included in the trajectory?" ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 3 ; - sh:path ], - [ sh:datatype xsd:boolean ; - sh:description "Are per-frame velocities included in the trajectory?" ; + [ sh:datatype xsd:integer ; + sh:description "Total number of snapshots that make up a trajectory." ; sh:maxCount 1 ; + sh:minInclusive 0 ; sh:nodeKind sh:Literal ; - sh:order 2 ; - sh:path ], + sh:order 7 ; + sh:path ], [ sh:datatype xsd:boolean ; - sh:description "Are per-frame energies included in the trajectory?" ; + sh:description "Are per-frame polarizable charges included in the trajectory?" ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; - sh:order 4 ; - sh:path ] ; + sh:order 3 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "Trajectory information." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:class ; - sh:description "Information about the simulation box." ; - sh:maxCount 1 ; - sh:nodeKind sh:BlankNodeOrIRI ; - sh:order 0 ; - sh:path ], - [ sh:class ; + sh:property [ sh:class ; sh:description "Information included in trajectory files." ; sh:maxCount 1 ; sh:nodeKind sh:BlankNodeOrIRI ; sh:order 1 ; - sh:path ] ; + sh:path ], + [ sh:class ; + sh:description "Information about the simulation box." ; + sh:maxCount 1 ; + sh:nodeKind sh:BlankNodeOrIRI ; + sh:order 0 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "A quantity representing charge." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:float ; - sh:maxCount 1 ; - sh:nodeKind sh:Literal ; - sh:order 0 ; - sh:path ], - [ sh:defaultValue "e" ; + sh:property [ sh:defaultValue "e" ; sh:in ( qudt:E qudt:C ) ; sh:maxCount 1 ; sh:order 1 ; - sh:path ] ; + sh:path ], + [ sh:datatype xsd:float ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path ] ; sh:targetClass . - a sh:NodeShape ; - rdfs:comment "A quantity representing pressure." ; + a sh:NodeShape ; + rdfs:comment "A quantity representing frequency." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:float ; + sh:property [ sh:defaultValue "1/ps" ; + sh:in ( "1/ps" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ], + [ sh:datatype xsd:float ; sh:maxCount 1 ; + sh:minInclusive 0 ; sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path ], - [ sh:defaultValue "bar" ; + sh:path ] ; + sh:targetClass . + + a sh:NodeShape ; + rdfs:comment "A quantity representing pressure." ; + sh:closed true ; + sh:ignoredProperties ( rdf:type ) ; + sh:property [ sh:defaultValue "bar" ; sh:in ( "bar" "Pa" ) ; sh:maxCount 1 ; sh:order 1 ; - sh:path ] ; + sh:path ], + [ sh:datatype xsd:float ; + sh:maxCount 1 ; + sh:nodeKind sh:Literal ; + sh:order 0 ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; @@ -1542,50 +1542,50 @@ biosim_schema:SimulationMetadata a sh:NodeShape ; rdfs:comment "A quantity representing length." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:float ; + sh:property [ sh:defaultValue "nm" ; + sh:in ( qudt:ANGSTROM qudt:NanoM ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ], + [ sh:datatype xsd:float ; sh:maxCount 1 ; sh:minInclusive 0 ; sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path ], - [ sh:defaultValue "nm" ; - sh:in ( qudt:ANGSTROM qudt:NanoM ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ] ; + sh:path ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "A quantity representing molar energy." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:datatype xsd:float ; + sh:property [ sh:defaultValue "kJ/mol" ; + sh:in ( qudt:KiloCAL-PER-MOL qudt:KiloJ-PER-MOL ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ], + [ sh:datatype xsd:float ; sh:maxCount 1 ; sh:nodeKind sh:Literal ; sh:order 0 ; sh:path ; - sh:pattern "^[+-]?\\d+(\\.\\d+)?$" ], - [ sh:defaultValue "kJ/mol" ; - sh:in ( qudt:KiloCAL-PER-MOL qudt:KiloJ-PER-MOL ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ] ; + sh:pattern "^[+-]?\\d+(\\.\\d+)?$" ] ; sh:targetClass . a sh:NodeShape ; rdfs:comment "A quantity representing time." ; sh:closed true ; sh:ignoredProperties ( rdf:type ) ; - sh:property [ sh:defaultValue "ns" ; - sh:in ( qudt:SEC qudt:MilliSEC qudt:MicroSEC qudt:NanoSEC qudt:PicoSEC "fs" ) ; - sh:maxCount 1 ; - sh:order 1 ; - sh:path ], - [ sh:datatype xsd:float ; + sh:property [ sh:datatype xsd:float ; sh:maxCount 1 ; sh:minInclusive 0 ; sh:nodeKind sh:Literal ; sh:order 0 ; - sh:path ] ; + sh:path ], + [ sh:defaultValue "s" ; + sh:in ( qudt:SEC qudt:MilliSEC qudt:MicroSEC qudt:NanoSEC qudt:PicoSEC "fs" ) ; + sh:maxCount 1 ; + sh:order 1 ; + sh:path ] ; sh:targetClass . diff --git a/project/linkml/shex/biosim_schema.shex b/project/linkml/shex/biosim_schema.shex index 44e90b8..db77ff2 100644 --- a/project/linkml/shex/biosim_schema.shex +++ b/project/linkml/shex/biosim_schema.shex @@ -1,5 +1,5 @@ # metamodel_version: 1.11.0 -# version: 0.0.2 +# version: 0.0.3 BASE PREFIX rdf: PREFIX xsd: @@ -106,7 +106,8 @@ linkml:Sparqlpath xsd:string @ ? ; @ ? ; - @linkml:Integer ? ; + + @ ? ; [ diff --git a/project/linkml/sqlschema/biosim_schema.sql b/project/linkml/sqlschema/biosim_schema.sql index cc5dcdb..b1d5574 100644 --- a/project/linkml/sqlschema/biosim_schema.sql +++ b/project/linkml/sqlschema/biosim_schema.sql @@ -153,13 +153,13 @@ -- # Class: Barostat Description: Settings used for the simulation barostat. -- * Slot: id -- * Slot: barostat_algorithm Description: List of barostat algorithms used in the simulation. --- * Slot: pressure_coupling_frequency Description: Step frequency to apply the barostat, given as an integer. -- * Slot: pressure_coupling_type Description: List of coupling types for adjusting box vectors. -- * Slot: compressibility_id Description: Compressibility of the simulated system, given as a float. -- * Slot: compressibility_vector_id Description: Compressibility of the simulated system, given as a float. -- * Slot: target_pressure_id Description: Target/reference pressure set to reach in the simulation, given as a float. -- * Slot: target_pressure_vector_id Description: Target/reference pressure set to reach in the simulation, given as a 3x3 array. -- * Slot: pressure_time_constant_id Description: Time constant/step (relaxation time of pressure) used for coupling the system pressure, given as a float. +-- * Slot: pressure_coupling_frequency_id Description: Step frequency to apply the barostat. -- # Class: Thermostat Description: Settings used for the simulation thermostat. -- * Slot: id -- * Slot: thermostat_algorithm Description: List of thermostat algorithms used in the simulation. @@ -168,7 +168,7 @@ -- * Slot: target_temperature_id Description: Target/reference temperature set to reach in the simulation, given as a float. -- * Slot: target_temperature_vector_id Description: Target/reference temperature set to reach in the simulation, given as a list (e.g. 300, 300). -- * Slot: collision_frequency_id Description: Collision frequency for the integrator, given as a float. --- * Slot: temperature_time_constant_id Description: Time constant for coupling the system temperature in seconds units, given as a list (e.g. 300, 300). +-- * Slot: temperature_time_constant_id Description: Time constant for coupling the system temperature in seconds units, given as a list (e.g. 0.1, 0.1). -- * Slot: friction_coefficient_id Description: Usually used in the Langevin thermostat, the friction coefficient determines the strength of coupling between a system and a heat bath, given as a float. -- # Class: SystemComposition Description: Molecular composition of simulated system. -- * Slot: id @@ -747,19 +747,20 @@ CREATE INDEX "ix_Integrator_id" ON "Integrator" (id); CREATE TABLE "Barostat" ( id INTEGER NOT NULL, barostat_algorithm VARCHAR(30), - pressure_coupling_frequency INTEGER, pressure_coupling_type VARCHAR(15), compressibility_id INTEGER, compressibility_vector_id INTEGER, target_pressure_id INTEGER, target_pressure_vector_id INTEGER, pressure_time_constant_id INTEGER, + pressure_coupling_frequency_id INTEGER, PRIMARY KEY (id), FOREIGN KEY(compressibility_id) REFERENCES "CompressibilityQuantity" (id), FOREIGN KEY(compressibility_vector_id) REFERENCES "MatrixCompressibilityQuantity" (id), FOREIGN KEY(target_pressure_id) REFERENCES "PressureQuantity" (id), FOREIGN KEY(target_pressure_vector_id) REFERENCES "MatrixPressureQuantity" (id), - FOREIGN KEY(pressure_time_constant_id) REFERENCES "TimeQuantity" (id) + FOREIGN KEY(pressure_time_constant_id) REFERENCES "TimeQuantity" (id), + FOREIGN KEY(pressure_coupling_frequency_id) REFERENCES "FrequencyQuantity" (id) ); CREATE INDEX "ix_Barostat_id" ON "Barostat" (id); @@ -920,8 +921,8 @@ CREATE TABLE "VectorPressureQuantity_vector_value" ( PRIMARY KEY ("VectorPressureQuantity_id", vector_value), FOREIGN KEY("VectorPressureQuantity_id") REFERENCES "VectorPressureQuantity" (id) ); -CREATE INDEX "ix_VectorPressureQuantity_vector_value_VectorPressureQuantity_id" ON "VectorPressureQuantity_vector_value" ("VectorPressureQuantity_id"); CREATE INDEX "ix_VectorPressureQuantity_vector_value_vector_value" ON "VectorPressureQuantity_vector_value" (vector_value); +CREATE INDEX "ix_VectorPressureQuantity_vector_value_VectorPressureQuantity_id" ON "VectorPressureQuantity_vector_value" ("VectorPressureQuantity_id"); CREATE TABLE "VectorTemperatureQuantity_vector_value" ( "VectorTemperatureQuantity_id" INTEGER, @@ -992,8 +993,8 @@ CREATE TABLE "Production_simulation_tool" ( PRIMARY KEY ("Production_id", simulation_tool), FOREIGN KEY("Production_id") REFERENCES "Production" (id) ); -CREATE INDEX "ix_Production_simulation_tool_Production_id" ON "Production_simulation_tool" ("Production_id"); CREATE INDEX "ix_Production_simulation_tool_simulation_tool" ON "Production_simulation_tool" (simulation_tool); +CREATE INDEX "ix_Production_simulation_tool_Production_id" ON "Production_simulation_tool" ("Production_id"); CREATE TABLE "Production_simulation_software" ( "Production_id" INTEGER, @@ -1135,8 +1136,8 @@ CREATE TABLE "Minimisation_simulation_tool" ( PRIMARY KEY ("Minimisation_id", simulation_tool), FOREIGN KEY("Minimisation_id") REFERENCES "Minimisation" (id) ); -CREATE INDEX "ix_Minimisation_simulation_tool_Minimisation_id" ON "Minimisation_simulation_tool" ("Minimisation_id"); CREATE INDEX "ix_Minimisation_simulation_tool_simulation_tool" ON "Minimisation_simulation_tool" (simulation_tool); +CREATE INDEX "ix_Minimisation_simulation_tool_Minimisation_id" ON "Minimisation_simulation_tool" ("Minimisation_id"); CREATE TABLE "Minimisation_simulation_software" ( "Minimisation_id" INTEGER, diff --git a/project/schema_enginemappings.json b/project/schema_enginemappings.json index 984be86..d218d9a 100644 --- a/project/schema_enginemappings.json +++ b/project/schema_enginemappings.json @@ -170,7 +170,8 @@ "SimulationMetadata.settings.barostat.pressure_coupling_frequency": [ { "key": "nstpcouple", - "value": null + "value": null, + "unit": "1/ps" } ], "SimulationMetadata.settings.barostat.pressure_coupling_type": { diff --git a/project/schema_summary.csv b/project/schema_summary.csv index afc81b7..f957da3 100644 --- a/project/schema_summary.csv +++ b/project/schema_summary.csv @@ -1,125 +1,125 @@ -section,subsection_1,field,field_name,help_text,placeholder_text,default_unit,data_type -stages,setup,setup_tool,Setup Tool,Tool used to setup a system for simulation.,,,string -stages,minimisation,energy_tolerance,Energy Tolerance,"Tolerance energy for when minimization stops, this is when the maximum force on any atom is less than this value (default is often 1000 kJ/mol/nm or 10−4kcal), given as a float.",,kJ/mol/nm,float -stages,minimisation,number_of_minimisation_steps,Number Of Minimisation Steps,"Number of integration steps performed during minimisation of the system, given as an integer.",,,integer -stages,minimisation,minimisation_distance_step_size,Minimisation Distance Step Size,"The distance the algorithm moves in a single step, controls how large a step the optimizer takes during the initial phase of minimizing the potential energy of a structure, given as a float.",,nm,float -stages,minimisation,minimisation_algorithm,Minimisation Algorithm,Algorithm used to minimise particle interactions.,,,string -stages,minimisation,simulation_tool,Simulation Tool,Tools/utility used within simulation engines to perform simulations.,,,string -stages,minimisation,simulation_software,Simulation Software,Simulation software used to perform molecular dynamics simulations and related functions.,,,string -stages,equilibration,simulation_tool,Simulation Tool,Tools/utility used within simulation engines to perform simulations.,,,string -stages,equilibration,simulation_software,Simulation Software,Simulation software used to perform molecular dynamics simulations and related functions.,,,string -stages,production,simulation_tool,Simulation Tool,Tools/utility used within simulation engines to perform simulations.,,,string -stages,production,simulation_software,Simulation Software,Simulation software used to perform molecular dynamics simulations and related functions.,,,string -stages,production,simulation_software_version,Simulation Software Version,Version of software used to perform simulation step.,,,string -stages,production,simulation_method,Simulation Method,Options for simulation methods.,,,string -stages,analysis,analysis_tool,Analysis Tool,Tools used to analyse simulation outputs.,,,string -stages,analysis,analysis_software,Analysis Software,Software used to analyse simulation outputs.,,,string -stages,analysis,analysis_method,Analysis Method,Methods used to analyse simulation outputs.,,,string -settings,ensemble,ensemble_type,Ensemble Type,Ensemble used in a simulation,,,string -settings,ensemble,random_seed,Random Seed,"Random number used to set (a) distribution of velocities across particles at the start of a simulation and (b) pseudo-random values for dynamics/couplings, given as an integer.",,,integer -settings,integrator,integrator_algorithm,Integrator Algorithm,Algorithm used to integrate the simulation.,,,string -settings,integrator,frame_step,Frame Step,"Time between saved snapshots/frames in a simulation, given as a float.",,ns,float -settings,integrator,time_step,Integration Step,"Time between integration steps in a simulation, given as a float.",,ns,float -settings,integrator,number_of_steps,Number Of Steps,"Number of integration steps performed in the simulation, given as an integer.",,,integer -settings,integrator,simulation_time,Simulation Time,"Total time molecular dynamics have been sampled in a simulation trajectory, often given by the number of integration steps multiplied by the simulation time step used by the integrator, given as a float.",,ns,float -settings,barostat,barostat_algorithm,Barostat Algorithm,Barostat algorithm used to set the pressure in a simulation.,,,string -settings,barostat,compressibility,Compressibility,"Compressibility of the simulated system, given as a float.",,1/bar,float -settings,barostat,compressibility_vector,Compressibility Vector,"Compressibility of the simulated system, given as a float.",,1/bar,list -settings,barostat,target_pressure,Target Pressure,"Target/reference pressure set to reach in the simulation, given as a float.",,bar,float -settings,barostat,target_pressure_vector,Target Pressure Vector,"Target/reference pressure set to reach in the simulation, given as a 3x3 array.",,bar,list -settings,barostat,pressure_time_constant,Pressure Time Constant,"Time constant/step (relaxation time of pressure) used for coupling the system pressure, given as a float.",,ns,float -settings,barostat,pressure_coupling_frequency,Pressure Coupling Frequency,"Step frequency to apply the barostat, given as an integer.",,,integer -settings,barostat,pressure_coupling_type,Pressure Coupling Type,Coupling type for adjusting box vectors.,,,string -settings,thermostat,thermostat_algorithm,Thermostat Algorithm,Thermostat algorithm used to set the temperature in a simulation.,,,string -settings,thermostat,target_temperature,Target Temperature,"Target/reference temperature set to reach in the simulation, given as a float.",,K,float -settings,thermostat,target_temperature_vector,Target Temperature Vector,"Target/reference temperature set to reach in the simulation, given as a list (e.g. 300, 300).",,K,list -settings,thermostat,collision_frequency,Collision Frequency,"Collision frequency for the integrator, given as a float.",,1/ps,float -settings,thermostat,temperature_time_constant,Temperature Time Constant,"Time constant for coupling the system temperature in seconds units, given as a list (e.g. 300, 300).",,ns,list -settings,thermostat,coupling_group,Coupling Group,"A subset of atoms for which temperature is controlled, often needed for simulating complex systems (e.g., protein in water), used in gromacs, given as a string",,,string -settings,thermostat,chain_length,Chain Length,"Usually required in the Nosé-Hoover thermostat, the chain length (e.g., nh-chain-length in GROMACS) is used to maintain canonical distribution, given as an integer.",,,integer -settings,thermostat,friction_coefficient,Friction Coefficient,"Usually used in the Langevin thermostat, the friction coefficient determines the strength of coupling between a system and a heat bath, given as a float.",,a/ps,float -settings,interactions,restraints,Restraints?,Are any positional restraints applied to molecule dynamics? (Restraints usually use harmonic potentials to keep a value near a target).,,,boolean -settings,interactions,electrostatic_cutoff_distance,Electrostatic Cutoff Distance,"Distance in Angstrom at which a electrostatic interaction is turned off and a long-range non-bonded method is turned on, given as a float.",,nm,float -settings,interactions,vdw_cutoff_distance,Vdw Cutoff Distance,Distance in Angstrom at which a Van der Waals interaction is turned off and a long-range non-bonded method is turned on.,,nm,float -settings,interactions,bond_length_constraints_algorithm,Bond Length Constraints Algorithm,"Fix specific molecular degrees of freedom—typically fast bond vibrations involving hydrogen atoms. By eliminating these high-frequency motions, constraints allow for larger integration time steps (e.g., 2 fs instead of 0.5 fs), significantly speeding up simulations without disrupting system dynamics.",,,string -settings,interactions,long_range_interaction_method,Long Range Interaction Method,Method used to implement long-range interactions of point charges in the simulation.,,,string -observables,simulation_averages,average_kinetic_energy,Average Kinetic Energy,"Average kinetic energy sampled from the simulation, given as a float.",,kJ/mol,float -observables,simulation_averages,average_potential_energy,Average Potential Energy,"Average potential energy sampled from the simulation, given as a float.",,kJ/mol,float -observables,simulation_averages,average_enthalpy,Average Enthalpy,"Average enthalpy sampled from the simulation, given as a float.",,kJ/mol,float -observables,simulation_averages,average_pressure,Average Pressure,"Average pressure sampled from the simulation, given as a float.",,bar,float -observables,simulation_averages,average_temperature,Average Temperature,"Average temperature sampled from the simulation, given as a float.",,K,float -observables,simulation_averages,average_volume,Average Volume,"Average volume sampled from the simulation, given as a float.",,nm³,float -observables,simulation_averages,average_volume_vector,Average Volume Vector,"Average volume sampled from the simulation, given as a list, (e.g. 10, 10, 10).",,nm,list -topology,connectivity,bonds,Bonds?,Are bond parameters present in the topology?,,,boolean -topology,connectivity,dihedrals,Dihedrals?,Are dihedral parameters present in the topology?,,,boolean -topology,particles,masses,Masses?,Are masses present in the topology?,,,boolean -topology,particles,fixed_charges,Fixed Charges?,Are fixed charges on atoms included in the topology?,,,boolean -topology,particles,system_charge,System Charge,Total electrostatic charge of the system given by the elementary charge (e).,,e,float -topology,particles,coarse_grained,Coarse Grained?,Are atoms coarse-grained?,,,boolean -topology,particles,resolution,Resolution,Resolution of simulated molecules.,,,string -trajectory,simulation_box,box_dimensions,Box Dimensions,The lengths/dimensions of the box used to simulate the system.,,nm,list -trajectory,simulation_box,box_angles,Box Angles,The angles of the box used to simulate the system.,,degree,list -trajectory,simulation_box,box_type,Box Type,Types of box used to simulate the system.,,,string -trajectory,simulation_box,periodic_boundary_conditions,Periodic Boundary Conditions,What directions in a simulation cell periodic boundaries are set if they are turned on.,,,string -trajectory,trajectory_output,positions,Positions?,Are per-frame positions included in the trajectory?,,,boolean -trajectory,trajectory_output,forces,Forces?,Are per-frame forces included in the trajectory?,,,boolean -trajectory,trajectory_output,velocities,Velocities?,Are per-frame velocities included in the trajectory?,,,boolean -trajectory,trajectory_output,polarizable_charges,Polarizable Charges?,Are per-frame polarizable charges included in the trajectory?,,,boolean -trajectory,trajectory_output,energies,Energies?,Are per-frame energies included in the trajectory?,,,boolean -trajectory,trajectory_output,water,Water?,Are water molecules included in the trajectory?,,,boolean -trajectory,trajectory_output,replica,Replica?,Is this trajectory a replica of another provided trajectory?,,,boolean -trajectory,trajectory_output,frame_count,Frame Count,Total number of snapshots that make up a trajectory.,1,,integer -composition,system_counts,total_molecule_count,Total Molecule Count,"Total number of simulated molecules, defined as bonded atoms or beads.",1,,integer -composition,system_counts,total_atom_count,Total Atom Count,Total number of atoms in the simulation.,1,,integer -composition,system_counts,unique_molecule_count,Unique Molecule Count,"Number of unique simulated molecules, defined as bonded atoms or beads.",1,,integer -composition,system_counts,salt_concentration,Salt Concentration,Concentration of salt in the solution.,,M,float -composition,molecule_ID,PDB_ID,PDB ID,Protein Data Bank identifier,2VB1,,string -composition,molecule_ID,UNIPROT_ID,UNIPROT ID,UniProt accession ID,P0DP23,,string -composition,molecule_ID,SMILES,SMILES,"Simplified Molecular Input Line Entry System (SMILES) ASCII-based line notation used to describe chemical structures. It represents molecular graphs with atoms and bonds, allowing software to convert these short strings into 2D or 3D models.",CN1C=NC2=C1C(=O)N(C(=O)N2C)C,,string -composition,molecule_ID,InChI,InChI,"The International Chemical Identifier (InChi) is a textual identifier for chemical substances, designed to provide a standard way to encode molecular information","InChI=1S/C8H10N4O2/c1-10-4-9-6-5(10)7(13)12(3)8(14)11(6)2/h4H,1-3H3",,string -composition,molecule_ID,InChIKey,InChIKey,"The condensed, 27 character InChIKey, which is a hashed version of the full InChI (using the SHA-256 algorithm), designed to allow for easy web searches of chemical compounds.",RYYVLZVUVIJVGH-UHFFFAOYSA-N,,string -composition,molecule_ID,alphafold_ID,AlphaFold ID,"AlphaFold predicted protein structure identifier (AlphaFold DB, EMBL-EBI)",AF-P12345-F1,,string -composition,molecule_ID,PubChem_CID,PubChem CID,PubChem CID of chemical molecules and their activities against biological assays.,100101,,string -composition,molecule_ID,protein_sequence,Protein Sequence,One letter sequence for protein amino acids.,DRVYIHPF,,string -composition,molecule_ID,nucleic_sequence,Nucleic Sequence,One letter sequence for nucleic acid nucleotides.,ATGCATCGATCGATCGATCG,,string -composition,molecule_ID,predicted_structure,Predicted Structure?,Are the molecule positions derived from a prediction?,,,boolean -composition,molecule_ID,modified,Modified?,Has the initial model been modified from the original?,,,boolean -composition,molecule_ID,molecular_formula,Molecular Formula,The molecular formula of a molecule\,C8H10N4O2,,string -composition,molecule_ID,molecular_weight,Molecular Weight,The molecular weight of a molecule.,,g/mol,float -composition,molecule_ID,molecule_charge,Molecule Charge,Electrostatic charge of a molecule.,,e,float -composition,molecule_ID,molecule_count,Molecule Count,"Number of instances of a given molecule, defined as bonded atoms or beads.",1,,integer -composition,molecule_ID,atom_count,Atom Count,Number of atoms in a molecule.,1,,integer -composition,molecule_ID,monomer_count,Monomer Count,Number of monomeric units in a polymer(e.g. protein or nucleic acid).,1,,integer -potentials,water_potential,water_potential_name,Water Potential Name,Force fields used to parametrize water molecules in a simulation.,,,string -potentials,water_potential,modified,Modified?,Has the initial model been modified from the original?,,,boolean -potentials,protein_potential,protein_potential_name,Protein Potential Name,Force fields used to parametrize amino acids in proteins in a simulation.,,,string -potentials,protein_potential,modified,Modified?,Has the initial model been modified from the original?,,,boolean -potentials,lipid_potential,lipid_potential_name,Lipid Potential Name,Force fields used to parametrize lipids in a simulation.,,,string -potentials,lipid_potential,modified,Modified?,Has the initial model been modified from the original?,,,boolean -potentials,nucleic_potential,nucleic_potential_name,Nucleic Potential Name,Force fields used to parametrize nucleic acids in a simulation.,,,string -potentials,nucleic_potential,modified,Modified?,Has the initial model been modified from the original?,,,boolean -potentials,carbohydrate_potential,carbohydrate_potential_name,Carbohydrate Potential Name,Force fields used to parametrize carbohydrates in a simulation.,,,string -potentials,carbohydrate_potential,modified,Modified?,Has the initial model been modified from the original?,,,boolean -potentials,polymer_potential,polymer_potential_name,Polymer Potential Name,Force fields used to parametrize polymers in a simulation.,,,string -potentials,polymer_potential,modified,Modified?,Has the initial model been modified from the original?,,,boolean -potentials,general_potential,general_potential_name,General Potential Name,Force fields used to parametrize molecules in a simulation.,,,string -potentials,general_potential,modified,Modified?,Has the initial model been modified from the original?,,,boolean -potentials,machine_learned_potential,machine_learned_potential_name,Machine Learned Potential Name,Machine learned potentials.,,,string -potentials,machine_learned_potential,modified,Modified?,Has the initial model been modified from the original?,,,boolean -compute,hardware,execution_platform,Execution Platform,Type of platform used to run the simulation.,,,string -compute,hardware,node_type,Node Type,Type of compute node used in the system.,,,string -compute,hardware,node_count,Node Count,Number of compute nodes used for the run.,,,integer -compute,hardware,CPU_vendor,CPU Vendor,Vendor of the CPU used in the compute nodes.,,,string -compute,hardware,CPU_architecture,CPU Architecture,CPU architecture used by the compute nodes.,,,string -compute,hardware,sockets_per_node,Sockets Per Node,Number of physical CPU sockets in each compute node.,,,integer -compute,hardware,cores_per_socket,Cores Per Socket,Number of physical CPU cores in each socket.,,,integer -compute,hardware,threads_per_core,Threads Per Core,Number of hardware threads per physical core.,,,integer -compute,hardware,GPU_vendor,GPU Vendor,Vendor of the GPU used in the compute nodes.,,,string -compute,hardware,GPUs_per_node,GPUs Per Node,Number of GPUs present in each compute node.,,,integer -compute,hardware,memory_per_node,Memory Per Node,Amount of memory installed per compute node.,,GB,float -compute,software,operating_system,Operating System,List of operating systems installed on the hardware used to perform the simulation.,,,string -compute,software,scheduler,Scheduler,Job scheduler used for simulation execution.,,,string -compute,software,MPI_library,MPI Library,MPI implementation used for message passing.,,,string -compute,software,container_runtime,Container Runtime,Container runtime used to package and run software.,,,string -compute,performance,wall_time,Wall Time,Total elapsed runtime of the simulation.,,ns,float -compute,performance,energy_consumption,Energy Consumption,Total energy consumed by the simulation run.,,kWh,float +section,subsection_1,field,field_name,help_text,placeholder_text,default_unit,data_type,example +stages,setup,setup_tool,Setup Tool,Tool used to setup a system for simulation.,,,string,{'value': 'pdb4amber'} +stages,minimisation,energy_tolerance,Energy Tolerance,"Tolerance energy for when minimization stops, this is when the maximum force on any atom is less than this value (default is often 1000 kJ/mol/nm or 10−4kcal), given as a float.",,kJ/mol/nm,float,"{'value': 1000, 'value_unit': 'kJ/mol/nm'}" +stages,minimisation,number_of_minimisation_steps,Number Of Minimisation Steps,"Number of integration steps performed during minimisation of the system, given as an integer.",,,integer,{'value': 5000} +stages,minimisation,minimisation_distance_step_size,Minimisation Distance Step Size,"The distance the algorithm moves in a single step, controls how large a step the optimizer takes during the initial phase of minimizing the potential energy of a structure, given as a float.",,nm,float,"{'value': 0.01, 'value_unit': 'nm'}" +stages,minimisation,minimisation_algorithm,Minimisation Algorithm,Algorithm used to minimise particle interactions.,,,string,{'value': 'Steepest Descent'} +stages,minimisation,simulation_tool,Simulation Tool,Tools/utility used within simulation engines to perform simulations.,,,string,{'value': 'sander'} +stages,minimisation,simulation_software,Simulation Software,Simulation software used to perform molecular dynamics simulations and related functions.,,,string,{'value': 'Amber'} +stages,equilibration,simulation_tool,Simulation Tool,Tools/utility used within simulation engines to perform simulations.,,,string,{'value': 'sander'} +stages,equilibration,simulation_software,Simulation Software,Simulation software used to perform molecular dynamics simulations and related functions.,,,string,{'value': 'Amber'} +stages,production,simulation_tool,Simulation Tool,Tools/utility used within simulation engines to perform simulations.,,,string,{'value': 'sander'} +stages,production,simulation_software,Simulation Software,Simulation software used to perform molecular dynamics simulations and related functions.,,,string,{'value': 'Amber'} +stages,production,simulation_software_version,Simulation Software Version,Version of software used to perform simulation step.,,,string,{'value': '2014'} +stages,production,simulation_method,Simulation Method,Options for simulation methods.,,,string,{'value': 'Steered Molecular Dynamics (SMD)'} +stages,analysis,analysis_tool,Analysis Tool,Tools used to analyse simulation outputs.,,,string,{'value': 'CPPTRAJ'} +stages,analysis,analysis_software,Analysis Software,Software used to analyse simulation outputs.,,,string,{'value': 'Visual Molecular Dynamics (VMD)'} +stages,analysis,analysis_method,Analysis Method,Methods used to analyse simulation outputs.,,,string,{'value': 'RMSD'} +settings,ensemble,ensemble_type,Ensemble Type,Ensemble used in a simulation,,,string,{'value': 'NPT'} +settings,ensemble,random_seed,Random Seed,"Random number used to set (a) distribution of velocities across particles at the start of a simulation and (b) pseudo-random values for dynamics/couplings, given as an integer.",,,integer,{'value': 123456} +settings,integrator,integrator_algorithm,Integrator Algorithm,Algorithm used to integrate the simulation.,,,string,{'value': 'Velocity-Verlet'} +settings,integrator,frame_step,Frame Step,"Time between saved snapshots/frames in a simulation, given as a float.",,s,float,"{'value': 1e-11, 'value_unit': 's'}" +settings,integrator,time_step,Integration Step,"Time between integration steps in a simulation, given as a float.",,s,float,"{'value': 2e-15, 'value_unit': 's'}" +settings,integrator,number_of_steps,Number Of Steps,"Number of integration steps performed in the simulation, given as an integer.",,,integer,{'value': 10000} +settings,integrator,simulation_time,Simulation Time,"Total time molecular dynamics have been sampled in a simulation trajectory, often given by the number of integration steps multiplied by the simulation time step used by the integrator, given as a float.",,s,float,"{'value': 1e-06, 'value_unit': 's'}" +settings,barostat,barostat_algorithm,Barostat Algorithm,Barostat algorithm used to set the pressure in a simulation.,,,string,{'value': 'Nose-Hoover'} +settings,barostat,compressibility,Compressibility,"Compressibility of the simulated system, given as a float.",,1/bar,float,"{'value': 4.46e-05, 'value_unit': '1/bar'}" +settings,barostat,compressibility_vector,Compressibility Vector,"Compressibility of the simulated system, given as a float.",,1/bar,list,"{'value': 4.46e-05, 'value_unit': '1/bar'}" +settings,barostat,target_pressure,Target Pressure,"Target/reference pressure set to reach in the simulation, given as a float.",,bar,float,"{'value': 1, 'value_unit': 'bar'}" +settings,barostat,target_pressure_vector,Target Pressure Vector,"Target/reference pressure set to reach in the simulation, given as a 3x3 array.",,bar,list,"{'value': [[1, 0, 0], [0, 1, 0], [0, 0, 1]], 'value_unit': 'bar'}" +settings,barostat,pressure_time_constant,Pressure Time Constant,"Time constant/step (relaxation time of pressure) used for coupling the system pressure, given as a float.",,s,float,"{'value': '5e-12', 'value_unit': 's'}" +settings,barostat,pressure_coupling_frequency,Pressure Coupling Frequency,Step frequency to apply the barostat.,,1/ps,float,"{'value': 2.0, 'value_unit': '1/ps'}" +settings,barostat,pressure_coupling_type,Pressure Coupling Type,Coupling type for adjusting box vectors.,,,string,{'value': 'isotropic'} +settings,thermostat,thermostat_algorithm,Thermostat Algorithm,Thermostat algorithm used to set the temperature in a simulation.,,,string,{'value': 'Bussi'} +settings,thermostat,target_temperature,Target Temperature,"Target/reference temperature set to reach in the simulation, given as a float.",,K,float,"{'value': 300, 'value_unit': 'K'}" +settings,thermostat,target_temperature_vector,Target Temperature Vector,"Target/reference temperature set to reach in the simulation, given as a list (e.g. 300, 300).",,K,list,"{'value': [300, 300], 'value_unit': 'K'}" +settings,thermostat,collision_frequency,Collision Frequency,"Collision frequency for the integrator, given as a float.",,1/ps,float,"{'value': 0.1, 'value_unit': '1/ps'}" +settings,thermostat,temperature_time_constant,Temperature Time Constant,"Time constant for coupling the system temperature in seconds units, given as a list (e.g. 0.1, 0.1).",,s,list,"{'value': [1e-13, 1e-13], 'value_unit': 's'}" +settings,thermostat,coupling_group,Coupling Group,"A subset of atoms for which temperature is controlled, often needed for simulating complex systems (e.g., protein in water), used in gromacs, given as a string",,,string,{'value': 'protein'} +settings,thermostat,chain_length,Chain Length,"Usually required in the Nosé-Hoover thermostat, the chain length (e.g., nh-chain-length in GROMACS) is used to maintain canonical distribution, given as an integer.",,,integer,{'value': 5} +settings,thermostat,friction_coefficient,Friction Coefficient,"Usually used in the Langevin thermostat, the friction coefficient determines the strength of coupling between a system and a heat bath, given as a float.",,a/ps,float,"{'value': 0.1, 'value_unit': 'a/ps'}" +settings,interactions,restraints,Restraints?,Are any positional restraints applied to molecule dynamics? (Restraints usually use harmonic potentials to keep a value near a target).,,,boolean,{'value': 'True'} +settings,interactions,electrostatic_cutoff_distance,Electrostatic Cutoff Distance,"Distance in Angstrom at which a electrostatic interaction is turned off and a long-range non-bonded method is turned on, given as a float.",,nm,float,"{'value': 1.2, 'value_unit': 'nm'}" +settings,interactions,vdw_cutoff_distance,Vdw Cutoff Distance,Distance in Angstrom at which a Van der Waals interaction is turned off and a long-range non-bonded method is turned on.,,nm,float,"{'value': 1.2, 'value_unit': 'nm'}" +settings,interactions,bond_length_constraints_algorithm,Bond Length Constraints Algorithm,"Fix specific molecular degrees of freedom—typically fast bond vibrations involving hydrogen atoms. By eliminating these high-frequency motions, constraints allow for larger integration time steps (e.g., 2 fs instead of 0.5 fs), significantly speeding up simulations without disrupting system dynamics.",,,string,{'value': 'SHAKE'} +settings,interactions,long_range_interaction_method,Long Range Interaction Method,Method used to implement long-range interactions of point charges in the simulation.,,,string,{'value': 'P3M'} +observables,simulation_averages,average_kinetic_energy,Average Kinetic Energy,"Average kinetic energy sampled from the simulation, given as a float.",,kJ/mol,float,"{'value': -2.4, 'value_unit': 'kJ/mol'}" +observables,simulation_averages,average_potential_energy,Average Potential Energy,"Average potential energy sampled from the simulation, given as a float.",,kJ/mol,float,"{'value': -5.6, 'value_unit': 'kJ/mol'}" +observables,simulation_averages,average_enthalpy,Average Enthalpy,"Average enthalpy sampled from the simulation, given as a float.",,kJ/mol,float,"{'value': -3.2, 'value_unit': 'kJ/mol'}" +observables,simulation_averages,average_pressure,Average Pressure,"Average pressure sampled from the simulation, given as a float.",,bar,float,"{'value': 1, 'value_unit': 'bar'}" +observables,simulation_averages,average_temperature,Average Temperature,"Average temperature sampled from the simulation, given as a float.",,K,float,"{'value': 300, 'value_unit': 'K'}" +observables,simulation_averages,average_volume,Average Volume,"Average volume sampled from the simulation, given as a float.",,nm³,float,"{'value': 100, 'value_unit': 'nm³'}" +observables,simulation_averages,average_volume_vector,Average Volume Vector,"Average volume sampled from the simulation, given as a list, (e.g. 10, 10, 10).",,nm,list,"{'value': [1, 1, 1], 'value_unit': 'nm'}" +topology,connectivity,bonds,Bonds?,Are bond parameters present in the topology?,,,boolean,{'value': 'True'} +topology,connectivity,dihedrals,Dihedrals?,Are dihedral parameters present in the topology?,,,boolean,{'value': 'True'} +topology,particles,masses,Masses?,Are masses present in the topology?,,,boolean,{'value': 'True'} +topology,particles,fixed_charges,Fixed Charges?,Are fixed charges on atoms included in the topology?,,,boolean,{'value': 'True'} +topology,particles,system_charge,System Charge,Total electrostatic charge of the system given by the elementary charge (e).,,e,float,"{'value': 0.0, 'value_unit': 'e'}" +topology,particles,coarse_grained,Coarse Grained?,Are atoms coarse-grained?,,,boolean,{'value': 'True'} +topology,particles,resolution,Resolution,Resolution of simulated molecules.,,,string,{'value': 'All Atom'} +trajectory,simulation_box,box_dimensions,Box Dimensions,The lengths/dimensions of the box used to simulate the system.,,nm,list,"{'value': [10, 10, 10], 'value_unit': 'nm'}" +trajectory,simulation_box,box_angles,Box Angles,The angles of the box used to simulate the system.,,degree,list,"{'value': [90, 90, 90], 'value_unit': 'degree'}" +trajectory,simulation_box,box_type,Box Type,Types of box used to simulate the system.,,,string,{'value': 'Cubic'} +trajectory,simulation_box,periodic_boundary_conditions,Periodic Boundary Conditions,What directions in a simulation cell periodic boundaries are set if they are turned on.,,,string,{'value': 'xyz'} +trajectory,trajectory_output,positions,Positions?,Are per-frame positions included in the trajectory?,,,boolean,{'value': 'True'} +trajectory,trajectory_output,forces,Forces?,Are per-frame forces included in the trajectory?,,,boolean,{'value': 'True'} +trajectory,trajectory_output,velocities,Velocities?,Are per-frame velocities included in the trajectory?,,,boolean,{'value': 'True'} +trajectory,trajectory_output,polarizable_charges,Polarizable Charges?,Are per-frame polarizable charges included in the trajectory?,,,boolean,{'value': 'True'} +trajectory,trajectory_output,energies,Energies?,Are per-frame energies included in the trajectory?,,,boolean,{'value': 'True'} +trajectory,trajectory_output,water,Water?,Are water molecules included in the trajectory?,,,boolean,{'value': 'True'} +trajectory,trajectory_output,replica,Replica?,Is this trajectory a replica of another provided trajectory?,,,boolean,{'value': 'True'} +trajectory,trajectory_output,frame_count,Frame Count,Total number of snapshots that make up a trajectory.,1,,integer,{'value': 10000} +composition,system_counts,total_molecule_count,Total Molecule Count,"Total number of simulated molecules, defined as bonded atoms or beads.",1,,integer,{'value': 1} +composition,system_counts,total_atom_count,Total Atom Count,Total number of atoms in the simulation.,1,,integer,{'value': 1} +composition,system_counts,unique_molecule_count,Unique Molecule Count,"Number of unique simulated molecules, defined as bonded atoms or beads.",1,,integer,{'value': 1} +composition,system_counts,salt_concentration,Salt Concentration,Concentration of salt in the solution.,,M,float,"{'value': 0.1, 'value_unit': 'M'}" +composition,molecule_ID,PDB_ID,PDB ID,Protein Data Bank identifier,2VB1,,string,{'value': '2VB1'} +composition,molecule_ID,UNIPROT_ID,UNIPROT ID,UniProt accession ID,P0DP23,,string,{'value': 'P0DP23'} +composition,molecule_ID,SMILES,SMILES,"Simplified Molecular Input Line Entry System (SMILES) ASCII-based line notation used to describe chemical structures. It represents molecular graphs with atoms and bonds, allowing software to convert these short strings into 2D or 3D models.",CN1C=NC2=C1C(=O)N(C(=O)N2C)C,,string,{'value': 'CN1C=NC2=C1C(=O)N(C(=O)N2C)C'} +composition,molecule_ID,InChI,InChI,"The International Chemical Identifier (InChi) is a textual identifier for chemical substances, designed to provide a standard way to encode molecular information","InChI=1S/C8H10N4O2/c1-10-4-9-6-5(10)7(13)12(3)8(14)11(6)2/h4H,1-3H3",,string,"{'value': 'InChI=1S/C8H10N4O2/c1-10-4-9-6-5(10)7(13)12(3)8(14)11(6)2/h4H,1-3H3'}" +composition,molecule_ID,InChIKey,InChIKey,"The condensed, 27 character InChIKey, which is a hashed version of the full InChI (using the SHA-256 algorithm), designed to allow for easy web searches of chemical compounds.",RYYVLZVUVIJVGH-UHFFFAOYSA-N,,string,{'value': 'RYYVLZVUVIJVGH-UHFFFAOYSA-N'} +composition,molecule_ID,alphafold_ID,AlphaFold ID,"AlphaFold predicted protein structure identifier (AlphaFold DB, EMBL-EBI)",AF-P12345-F1,,string,{'value': 'AF-P12345-F1'} +composition,molecule_ID,PubChem_CID,PubChem CID,PubChem CID of chemical molecules and their activities against biological assays.,100101,,string,{'value': '100101'} +composition,molecule_ID,protein_sequence,Protein Sequence,One letter sequence for protein amino acids.,DRVYIHPF,,string,{'value': 'DRVYIHPF'} +composition,molecule_ID,nucleic_sequence,Nucleic Sequence,One letter sequence for nucleic acid nucleotides.,ATGCATCGATCGATCGATCG,,string,{'value': 'ATGCATCGATCGATCGATCG'} +composition,molecule_ID,predicted_structure,Predicted Structure?,Are the molecule positions derived from a prediction?,True,,boolean,{'value': 'True'} +composition,molecule_ID,modified,Modified?,Has the initial model been modified from the original?,True,,boolean,{'value': 'True'} +composition,molecule_ID,molecular_formula,Molecular Formula,The molecular formula of a molecule\,C8H10N4O2,,string,{'value': 'C8H10N4O2'} +composition,molecule_ID,molecular_weight,Molecular Weight,The molecular weight of a molecule.,,g/mol,float,"{'value': 18.0, 'value_unit': 'g/mol'}" +composition,molecule_ID,molecule_charge,Molecule Charge,Electrostatic charge of a molecule.,,e,float,"{'value': -1.0, 'value_unit': 'e'}" +composition,molecule_ID,molecule_count,Molecule Count,"Number of instances of a given molecule, defined as bonded atoms or beads.",1,,integer,{'value': 1} +composition,molecule_ID,atom_count,Atom Count,Number of atoms in a molecule.,1,,integer,{'value': 1} +composition,molecule_ID,monomer_count,Monomer Count,Number of monomeric units in a polymer(e.g. protein or nucleic acid).,1,,integer,{'value': 1} +potentials,water_potential,water_potential_name,Water Potential Name,Force fields used to parametrize water molecules in a simulation.,,,string,{'value': 'TIP3P'} +potentials,water_potential,modified,Modified?,Has the initial model been modified from the original?,True,,boolean,{'value': 'True'} +potentials,protein_potential,protein_potential_name,Protein Potential Name,Force fields used to parametrize amino acids in proteins in a simulation.,,,string,{'value': 'ff19SB'} +potentials,protein_potential,modified,Modified?,Has the initial model been modified from the original?,True,,boolean,{'value': 'True'} +potentials,lipid_potential,lipid_potential_name,Lipid Potential Name,Force fields used to parametrize lipids in a simulation.,,,string,{'value': 'LIPID21'} +potentials,lipid_potential,modified,Modified?,Has the initial model been modified from the original?,True,,boolean,{'value': 'True'} +potentials,nucleic_potential,nucleic_potential_name,Nucleic Potential Name,Force fields used to parametrize nucleic acids in a simulation.,,,string,{'value': 'ff99OL3'} +potentials,nucleic_potential,modified,Modified?,Has the initial model been modified from the original?,True,,boolean,{'value': 'True'} +potentials,carbohydrate_potential,carbohydrate_potential_name,Carbohydrate Potential Name,Force fields used to parametrize carbohydrates in a simulation.,,,string,{'value': 'GLYCAM06'} +potentials,carbohydrate_potential,modified,Modified?,Has the initial model been modified from the original?,True,,boolean,{'value': 'True'} +potentials,polymer_potential,polymer_potential_name,Polymer Potential Name,Force fields used to parametrize polymers in a simulation.,,,string,{'value': 'LignAmb25'} +potentials,polymer_potential,modified,Modified?,Has the initial model been modified from the original?,True,,boolean,{'value': 'True'} +potentials,general_potential,general_potential_name,General Potential Name,Force fields used to parametrize molecules in a simulation.,,,string,{'value': 'GAFF2'} +potentials,general_potential,modified,Modified?,Has the initial model been modified from the original?,True,,boolean,{'value': 'True'} +potentials,machine_learned_potential,machine_learned_potential_name,Machine Learned Potential Name,Machine learned potentials.,,,string,{'value': 'ANI'} +potentials,machine_learned_potential,modified,Modified?,Has the initial model been modified from the original?,True,,boolean,{'value': 'True'} +compute,hardware,execution_platform,Execution Platform,Type of platform used to run the simulation.,,,string,{'value': 'HPC Cluster'} +compute,hardware,node_type,Node Type,Type of compute node used in the system.,,,string,{'value': 'CPU Only'} +compute,hardware,node_count,Node Count,Number of compute nodes used for the run.,,,integer,{'value': '2'} +compute,hardware,CPU_vendor,CPU Vendor,Vendor of the CPU used in the compute nodes.,,,string,{'value': 'AMD'} +compute,hardware,CPU_architecture,CPU Architecture,CPU architecture used by the compute nodes.,,,string,{'value': 'x86'} +compute,hardware,sockets_per_node,Sockets Per Node,Number of physical CPU sockets in each compute node.,,,integer,{'value': 2} +compute,hardware,cores_per_socket,Cores Per Socket,Number of physical CPU cores in each socket.,,,integer,{'value': 2} +compute,hardware,threads_per_core,Threads Per Core,Number of hardware threads per physical core.,,,integer,{'value': 2} +compute,hardware,GPU_vendor,GPU Vendor,Vendor of the GPU used in the compute nodes.,,,string,{'value': 'AMD'} +compute,hardware,GPUs_per_node,GPUs Per Node,Number of GPUs present in each compute node.,,,integer,{'value': 1} +compute,hardware,memory_per_node,Memory Per Node,Amount of memory installed per compute node.,,GB,float,"{'value': 2, 'value_unit': 'GB'}" +compute,software,operating_system,Operating System,List of operating systems installed on the hardware used to perform the simulation.,,,string,{'value': 'Linux'} +compute,software,scheduler,Scheduler,Job scheduler used for simulation execution.,,,string,{'value': 'SLURM'} +compute,software,MPI_library,MPI Library,MPI implementation used for message passing.,,,string,{'value': 'OpenMPI'} +compute,software,container_runtime,Container Runtime,Container runtime used to package and run software.,,,string,{'value': 'Docker'} +compute,performance,wall_time,Wall Time,Total elapsed runtime of the simulation.,,s,float,"{'value': 3600, 'value_unit': 's'}" +compute,performance,energy_consumption,Energy Consumption,Total energy consumed by the simulation run.,,kWh,float,"{'value': 0.119, 'value_unit': 'kWh'}" diff --git a/project/schema_summary.json b/project/schema_summary.json new file mode 100644 index 0000000..39034d8 --- /dev/null +++ b/project/schema_summary.json @@ -0,0 +1,1339 @@ +{ + "stages": { + "label": "Stages", + "hint": "Simulation stages", + "fields": { + "setup": { + "label": "Setup", + "hint": "Setup stage of a simulation.", + "fields": { + "setup_tool": { + "label": "Setup Tool", + "hint": "Tool used to setup a system for simulation.", + "example": { + "value": "pdb4amber" + }, + "typehint": "string" + } + } + }, + "minimisation": { + "label": "Minimisation", + "hint": "Minimisation stage of a simulation.", + "fields": { + "energy_tolerance": { + "label": "Energy Tolerance", + "hint": "Tolerance energy for when minimization stops, this is when the maximum force on any atom is less than this value (default is often 1000 kJ/mol/nm or 10\u22124kcal), given as a float.", + "example": { + "value": 1000, + "value_unit": "kJ/mol/nm" + }, + "default_unit": "kJ/mol/nm", + "typehint": "float" + }, + "number_of_minimisation_steps": { + "label": "Number Of Minimisation Steps", + "hint": "Number of integration steps performed during minimisation of the system, given as an integer.", + "typehint": "integer", + "example": { + "value": 5000 + } + }, + "minimisation_distance_step_size": { + "label": "Minimisation Distance Step Size", + "hint": "The distance the algorithm moves in a single step, controls how large a step the optimizer takes during the initial phase of minimizing the potential energy of a structure, given as a float.", + "example": { + "value": 0.01, + "value_unit": "nm" + }, + "default_unit": "nm", + "typehint": "float" + }, + "minimisation_algorithm": { + "label": "Minimisation Algorithm", + "hint": "Algorithm used to minimise particle interactions.", + "example": { + "value": "Steepest Descent" + }, + "typehint": "string" + }, + "simulation_tool": { + "label": "Simulation Tool", + "hint": "Tools/utility used within simulation engines to perform simulations.", + "example": { + "value": "sander" + }, + "typehint": "string" + }, + "simulation_software": { + "label": "Simulation Software", + "hint": "Simulation software used to perform molecular dynamics simulations and related functions.", + "example": { + "value": "Amber" + }, + "typehint": "string" + } + } + }, + "equilibration": { + "label": "Equilibration", + "hint": "Equilibration stage of a simulation.", + "fields": { + "simulation_tool": { + "label": "Simulation Tool", + "hint": "Tools/utility used within simulation engines to perform simulations.", + "example": { + "value": "sander" + }, + "typehint": "string" + }, + "simulation_software": { + "label": "Simulation Software", + "hint": "Simulation software used to perform molecular dynamics simulations and related functions.", + "example": { + "value": "Amber" + }, + "typehint": "string" + } + } + }, + "production": { + "label": "Production", + "hint": "Production stage of a simulation.", + "fields": { + "simulation_tool": { + "label": "Simulation Tool", + "hint": "Tools/utility used within simulation engines to perform simulations.", + "example": { + "value": "sander" + }, + "typehint": "string" + }, + "simulation_software": { + "label": "Simulation Software", + "hint": "Simulation software used to perform molecular dynamics simulations and related functions.", + "example": { + "value": "Amber" + }, + "typehint": "string" + }, + "simulation_software_version": { + "label": "Simulation Software Version", + "hint": "Version of software used to perform simulation step.", + "typehint": "string", + "example": { + "value": "2014" + } + }, + "simulation_method": { + "label": "Simulation Method", + "hint": "Options for simulation methods.", + "example": { + "value": "Steered Molecular Dynamics (SMD)" + }, + "typehint": "string" + } + } + }, + "analysis": { + "label": "Analysis", + "hint": "Analysis stage of a simulation.", + "fields": { + "analysis_tool": { + "label": "Analysis Tool", + "hint": "Tools used to analyse simulation outputs.", + "example": { + "value": "CPPTRAJ" + }, + "typehint": "string" + }, + "analysis_software": { + "label": "Analysis Software", + "hint": "Software used to analyse simulation outputs.", + "example": { + "value": "Visual Molecular Dynamics (VMD)" + }, + "typehint": "string" + }, + "analysis_method": { + "label": "Analysis Method", + "hint": "Methods used to analyse simulation outputs.", + "example": { + "value": "RMSD" + }, + "typehint": "string" + } + } + } + } + }, + "settings": { + "label": "Settings", + "hint": "Simulation settings", + "fields": { + "ensemble": { + "label": "Ensemble", + "hint": "Ensemble information.", + "fields": { + "ensemble_type": { + "label": "Ensemble Type", + "hint": "Ensemble used in a simulation", + "example": { + "value": "NPT" + }, + "typehint": "string" + }, + "random_seed": { + "label": "Random Seed", + "hint": "Random number used to set (a) distribution of velocities across particles at the start of a simulation and (b) pseudo-random values for dynamics/couplings, given as an integer.", + "typehint": "integer", + "example": { + "value": 123456 + } + } + } + }, + "integrator": { + "label": "Integrator", + "hint": "Integrator information.", + "fields": { + "integrator_algorithm": { + "label": "Integrator Algorithm", + "hint": "Algorithm used to integrate the simulation.", + "example": { + "value": "Velocity-Verlet" + }, + "typehint": "string" + }, + "frame_step": { + "label": "Frame Step", + "hint": "Time between saved snapshots/frames in a simulation, given as a float.", + "example": { + "value": 1e-11, + "value_unit": "s" + }, + "default_unit": "s", + "typehint": "float" + }, + "time_step": { + "label": "Integration Step", + "hint": "Time between integration steps in a simulation, given as a float.", + "example": { + "value": 2e-15, + "value_unit": "s" + }, + "default_unit": "s", + "typehint": "float" + }, + "number_of_steps": { + "label": "Number Of Steps", + "hint": "Number of integration steps performed in the simulation, given as an integer.", + "typehint": "integer", + "example": { + "value": 10000 + } + }, + "simulation_time": { + "label": "Simulation Time", + "hint": "Total time molecular dynamics have been sampled in a simulation trajectory, often given by the number of integration steps multiplied by the simulation time step used by the integrator, given as a float.", + "example": { + "value": 1e-06, + "value_unit": "s" + }, + "default_unit": "s", + "typehint": "float" + } + } + }, + "barostat": { + "label": "Barostat", + "hint": "Barostat information.", + "fields": { + "barostat_algorithm": { + "label": "Barostat Algorithm", + "hint": "Barostat algorithm used to set the pressure in a simulation.", + "example": { + "value": "Nose-Hoover" + }, + "typehint": "string" + }, + "compressibility": { + "label": "Compressibility", + "hint": "Compressibility of the simulated system, given as a float.", + "example": { + "value": 4.46e-05, + "value_unit": "1/bar" + }, + "default_unit": "1/bar", + "typehint": "float" + }, + "compressibility_vector": { + "label": "Compressibility Vector", + "hint": "Compressibility of the simulated system, given as a float.", + "example": { + "value": 4.46e-05, + "value_unit": "1/bar" + }, + "default_unit": "1/bar", + "typehint": "list" + }, + "target_pressure": { + "label": "Target Pressure", + "hint": "Target/reference pressure set to reach in the simulation, given as a float.", + "example": { + "value": 1, + "value_unit": "bar" + }, + "default_unit": "bar", + "typehint": "float" + }, + "target_pressure_vector": { + "label": "Target Pressure Vector", + "hint": "Target/reference pressure set to reach in the simulation, given as a 3x3 array.", + "example": { + "value": [ + [ + 1, + 0, + 0 + ], + [ + 0, + 1, + 0 + ], + [ + 0, + 0, + 1 + ] + ], + "value_unit": "bar" + }, + "default_unit": "bar", + "typehint": "list" + }, + "pressure_time_constant": { + "label": "Pressure Time Constant", + "hint": "Time constant/step (relaxation time of pressure) used for coupling the system pressure, given as a float.", + "example": { + "value": "5e-12", + "value_unit": "s" + }, + "default_unit": "s", + "typehint": "float" + }, + "pressure_coupling_frequency": { + "label": "Pressure Coupling Frequency", + "hint": "Step frequency to apply the barostat.", + "example": { + "value": 2.0, + "value_unit": "1/ps" + }, + "default_unit": "1/ps", + "typehint": "float" + }, + "pressure_coupling_type": { + "label": "Pressure Coupling Type", + "hint": "Coupling type for adjusting box vectors.", + "example": { + "value": "isotropic" + }, + "typehint": "string" + } + } + }, + "thermostat": { + "label": "Thermostat", + "hint": "thermostat information.", + "fields": { + "thermostat_algorithm": { + "label": "Thermostat Algorithm", + "hint": "Thermostat algorithm used to set the temperature in a simulation.", + "example": { + "value": "Bussi" + }, + "typehint": "string" + }, + "target_temperature": { + "label": "Target Temperature", + "hint": "Target/reference temperature set to reach in the simulation, given as a float.", + "example": { + "value": 300, + "value_unit": "K" + }, + "default_unit": "K", + "typehint": "float" + }, + "target_temperature_vector": { + "label": "Target Temperature Vector", + "hint": "Target/reference temperature set to reach in the simulation, given as a list (e.g. 300, 300).", + "example": { + "value": [ + 300, + 300 + ], + "value_unit": "K" + }, + "default_unit": "K", + "typehint": "list" + }, + "collision_frequency": { + "label": "Collision Frequency", + "hint": "Collision frequency for the integrator, given as a float.", + "example": { + "value": 0.1, + "value_unit": "1/ps" + }, + "default_unit": "1/ps", + "typehint": "float" + }, + "temperature_time_constant": { + "label": "Temperature Time Constant", + "hint": "Time constant for coupling the system temperature in seconds units, given as a list (e.g. 0.1, 0.1).", + "example": { + "value": [ + 1e-13, + 1e-13 + ], + "value_unit": "s" + }, + "default_unit": "s", + "typehint": "list" + }, + "coupling_group": { + "label": "Coupling Group", + "hint": "A subset of atoms for which temperature is controlled, often needed for simulating complex systems (e.g., protein in water), used in gromacs, given as a string", + "typehint": "string", + "example": { + "value": "protein" + } + }, + "chain_length": { + "label": "Chain Length", + "hint": "Usually required in the Nos\u00e9-Hoover thermostat, the chain length (e.g., nh-chain-length in GROMACS) is used to maintain canonical distribution, given as an integer.", + "typehint": "integer", + "example": { + "value": 5 + } + }, + "friction_coefficient": { + "label": "Friction Coefficient", + "hint": "Usually used in the Langevin thermostat, the friction coefficient determines the strength of coupling between a system and a heat bath, given as a float.", + "example": { + "value": 0.1, + "value_unit": "a/ps" + }, + "default_unit": "a/ps", + "typehint": "float" + } + } + }, + "interactions": { + "label": "Interactions", + "hint": "Interaction information.", + "fields": { + "restraints": { + "label": "Restraints?", + "hint": "Are any positional restraints applied to molecule dynamics? (Restraints usually use harmonic potentials to keep a value near a target).", + "typehint": "boolean", + "example": { + "value": "True" + } + }, + "electrostatic_cutoff_distance": { + "label": "Electrostatic Cutoff Distance", + "hint": "Distance in Angstrom at which a electrostatic interaction is turned off and a long-range non-bonded method is turned on, given as a float.", + "example": { + "value": 1.2, + "value_unit": "nm" + }, + "default_unit": "nm", + "typehint": "float" + }, + "vdw_cutoff_distance": { + "label": "Vdw Cutoff Distance", + "hint": "Distance in Angstrom at which a Van der Waals interaction is turned off and a long-range non-bonded method is turned on.", + "example": { + "value": 1.2, + "value_unit": "nm" + }, + "default_unit": "nm", + "typehint": "float" + }, + "bond_length_constraints_algorithm": { + "label": "Bond Length Constraints Algorithm", + "hint": "Fix specific molecular degrees of freedom\u2014typically fast bond vibrations involving hydrogen atoms. By eliminating these high-frequency motions, constraints allow for larger integration time steps (e.g., 2 fs instead of 0.5 fs), significantly speeding up simulations without disrupting system dynamics.", + "example": { + "value": "SHAKE" + }, + "typehint": "string" + }, + "long_range_interaction_method": { + "label": "Long Range Interaction Method", + "hint": "Method used to implement long-range interactions of point charges in the simulation.", + "example": { + "value": "P3M" + }, + "typehint": "string" + } + } + } + } + }, + "observables": { + "label": "Observables", + "hint": "Simulation observables.", + "fields": { + "simulation_averages": { + "label": "Simulation Averages", + "hint": "Average values of observables outputted from the simulation.", + "fields": { + "average_kinetic_energy": { + "label": "Average Kinetic Energy", + "hint": "Average kinetic energy sampled from the simulation, given as a float.", + "example": { + "value": -2.4, + "value_unit": "kJ/mol" + }, + "default_unit": "kJ/mol", + "typehint": "float" + }, + "average_potential_energy": { + "label": "Average Potential Energy", + "hint": "Average potential energy sampled from the simulation, given as a float.", + "example": { + "value": -5.6, + "value_unit": "kJ/mol" + }, + "default_unit": "kJ/mol", + "typehint": "float" + }, + "average_enthalpy": { + "label": "Average Enthalpy", + "hint": "Average enthalpy sampled from the simulation, given as a float.", + "example": { + "value": -3.2, + "value_unit": "kJ/mol" + }, + "default_unit": "kJ/mol", + "typehint": "float" + }, + "average_pressure": { + "label": "Average Pressure", + "hint": "Average pressure sampled from the simulation, given as a float.", + "example": { + "value": 1, + "value_unit": "bar" + }, + "default_unit": "bar", + "typehint": "float" + }, + "average_temperature": { + "label": "Average Temperature", + "hint": "Average temperature sampled from the simulation, given as a float.", + "example": { + "value": 300, + "value_unit": "K" + }, + "default_unit": "K", + "typehint": "float" + }, + "average_volume": { + "label": "Average Volume", + "hint": "Average volume sampled from the simulation, given as a float.", + "example": { + "value": 100, + "value_unit": "nm\u00b3" + }, + "default_unit": "nm\u00b3", + "typehint": "float" + }, + "average_volume_vector": { + "label": "Average Volume Vector", + "hint": "Average volume sampled from the simulation, given as a list, (e.g. 10, 10, 10).", + "example": { + "value": [ + 1, + 1, + 1 + ], + "value_unit": "nm" + }, + "default_unit": "nm", + "typehint": "list" + } + } + } + } + }, + "topology": { + "label": "Topology", + "hint": "Topology information.", + "fields": { + "connectivity": { + "label": "Connectivity", + "hint": "Particle connectivity information", + "fields": { + "bonds": { + "label": "Bonds?", + "hint": "Are bond parameters present in the topology?", + "typehint": "boolean", + "example": { + "value": "True" + } + }, + "dihedrals": { + "label": "Dihedrals?", + "hint": "Are dihedral parameters present in the topology?", + "typehint": "boolean", + "example": { + "value": "True" + } + } + } + }, + "particles": { + "label": "Particles", + "hint": "Particles information", + "fields": { + "masses": { + "label": "Masses?", + "hint": "Are masses present in the topology?", + "typehint": "boolean", + "example": { + "value": "True" + } + }, + "fixed_charges": { + "label": "Fixed Charges?", + "hint": "Are fixed charges on atoms included in the topology?", + "typehint": "boolean", + "example": { + "value": "True" + } + }, + "system_charge": { + "label": "System Charge", + "hint": "Total electrostatic charge of the system given by the elementary charge (e).", + "example": { + "value": 0.0, + "value_unit": "e" + }, + "default_unit": "e", + "typehint": "float" + }, + "coarse_grained": { + "label": "Coarse Grained?", + "hint": "Are atoms coarse-grained?", + "typehint": "boolean", + "example": { + "value": "True" + } + }, + "resolution": { + "label": "Resolution", + "hint": "Resolution of simulated molecules.", + "example": { + "value": "All Atom" + }, + "typehint": "string" + } + } + } + } + }, + "trajectory": { + "label": "Trajectory", + "hint": "Trajectory information.", + "fields": { + "simulation_box": { + "label": "Simulation Box", + "hint": "Information about the simulation box.", + "fields": { + "box_dimensions": { + "label": "Box Dimensions", + "hint": "The lengths/dimensions of the box used to simulate the system.", + "example": { + "value": [ + 10, + 10, + 10 + ], + "value_unit": "nm" + }, + "default_unit": "nm", + "typehint": "list" + }, + "box_angles": { + "label": "Box Angles", + "hint": "The angles of the box used to simulate the system.", + "example": { + "value": [ + 90, + 90, + 90 + ], + "value_unit": "degree" + }, + "default_unit": "degree", + "typehint": "list" + }, + "box_type": { + "label": "Box Type", + "hint": "Types of box used to simulate the system.", + "example": { + "value": "Cubic" + }, + "typehint": "string" + }, + "periodic_boundary_conditions": { + "label": "Periodic Boundary Conditions", + "hint": "What directions in a simulation cell periodic boundaries are set if they are turned on.", + "example": { + "value": "xyz" + }, + "typehint": "string" + } + } + }, + "trajectory_output": { + "label": "Trajectory Output", + "hint": "Information included in trajectory files.", + "fields": { + "positions": { + "label": "Positions?", + "hint": "Are per-frame positions included in the trajectory?", + "typehint": "boolean", + "example": { + "value": "True" + } + }, + "forces": { + "label": "Forces?", + "hint": "Are per-frame forces included in the trajectory?", + "typehint": "boolean", + "example": { + "value": "True" + } + }, + "velocities": { + "label": "Velocities?", + "hint": "Are per-frame velocities included in the trajectory?", + "typehint": "boolean", + "example": { + "value": "True" + } + }, + "polarizable_charges": { + "label": "Polarizable Charges?", + "hint": "Are per-frame polarizable charges included in the trajectory?", + "typehint": "boolean", + "example": { + "value": "True" + } + }, + "energies": { + "label": "Energies?", + "hint": "Are per-frame energies included in the trajectory?", + "typehint": "boolean", + "example": { + "value": "True" + } + }, + "water": { + "label": "Water?", + "hint": "Are water molecules included in the trajectory?", + "typehint": "boolean", + "example": { + "value": "True" + } + }, + "replica": { + "label": "Replica?", + "hint": "Is this trajectory a replica of another provided trajectory?", + "typehint": "boolean", + "example": { + "value": "True" + } + }, + "frame_count": { + "label": "Frame Count", + "hint": "Total number of snapshots that make up a trajectory.", + "typehint": "integer", + "placeholder": "1", + "example": { + "value": 10000 + } + } + } + } + } + }, + "composition": { + "label": "Composition", + "hint": "Composition of simulated system.", + "fields": { + "system_counts": { + "label": "System Counts", + "hint": "Entity counts across the simulated system.", + "fields": { + "total_molecule_count": { + "label": "Total Molecule Count", + "hint": "Total number of simulated molecules, defined as bonded atoms or beads.", + "typehint": "integer", + "placeholder": "1", + "example": { + "value": 1 + } + }, + "total_atom_count": { + "label": "Total Atom Count", + "hint": "Total number of atoms in the simulation.", + "typehint": "integer", + "placeholder": "1", + "example": { + "value": 1 + } + }, + "unique_molecule_count": { + "label": "Unique Molecule Count", + "hint": "Number of unique simulated molecules, defined as bonded atoms or beads.", + "typehint": "integer", + "placeholder": "1", + "example": { + "value": 1 + } + }, + "salt_concentration": { + "label": "Salt Concentration", + "hint": "Concentration of salt in the solution.", + "example": { + "value": 0.1, + "value_unit": "M" + }, + "default_unit": "M", + "typehint": "float" + } + } + }, + "molecule_ID": { + "label": "Molecule ID", + "hint": "Persistent identifier of a molecule being simulated.", + "fields": { + "PDB_ID": { + "label": "PDB ID", + "hint": "Protein Data Bank identifier", + "typehint": "string", + "placeholder": "2VB1", + "example": { + "value": "2VB1" + } + }, + "UNIPROT_ID": { + "label": "UNIPROT ID", + "hint": "UniProt accession ID", + "typehint": "string", + "placeholder": "P0DP23", + "example": { + "value": "P0DP23" + } + }, + "SMILES": { + "label": "SMILES", + "hint": "Simplified Molecular Input Line Entry System (SMILES) ASCII-based line notation used to describe chemical structures. It represents molecular graphs with atoms and bonds, allowing software to convert these short strings into 2D or 3D models.", + "typehint": "string", + "placeholder": "CN1C=NC2=C1C(=O)N(C(=O)N2C)C", + "example": { + "value": "CN1C=NC2=C1C(=O)N(C(=O)N2C)C" + } + }, + "InChI": { + "label": "InChI", + "hint": "The International Chemical Identifier (InChi) is a textual identifier for chemical substances, designed to provide a standard way to encode molecular information", + "typehint": "string", + "placeholder": "InChI=1S/C8H10N4O2/c1-10-4-9-6-5(10)7(13)12(3)8(14)11(6)2/h4H,1-3H3", + "example": { + "value": "InChI=1S/C8H10N4O2/c1-10-4-9-6-5(10)7(13)12(3)8(14)11(6)2/h4H,1-3H3" + } + }, + "InChIKey": { + "label": "InChIKey", + "hint": "The condensed, 27 character InChIKey, which is a hashed version of the full InChI (using the SHA-256 algorithm), designed to allow for easy web searches of chemical compounds.", + "typehint": "string", + "placeholder": "RYYVLZVUVIJVGH-UHFFFAOYSA-N", + "example": { + "value": "RYYVLZVUVIJVGH-UHFFFAOYSA-N" + } + }, + "alphafold_ID": { + "label": "AlphaFold ID", + "hint": "AlphaFold predicted protein structure identifier (AlphaFold DB, EMBL-EBI)", + "typehint": "string", + "placeholder": "AF-P12345-F1", + "example": { + "value": "AF-P12345-F1" + } + }, + "PubChem_CID": { + "label": "PubChem CID", + "hint": "PubChem CID of chemical molecules and their activities against biological assays.", + "typehint": "string", + "placeholder": "100101", + "example": { + "value": "100101" + } + }, + "protein_sequence": { + "label": "Protein Sequence", + "hint": "One letter sequence for protein amino acids.", + "typehint": "string", + "placeholder": "DRVYIHPF", + "example": { + "value": "DRVYIHPF" + } + }, + "nucleic_sequence": { + "label": "Nucleic Sequence", + "hint": "One letter sequence for nucleic acid nucleotides.", + "typehint": "string", + "placeholder": "ATGCATCGATCGATCGATCG", + "example": { + "value": "ATGCATCGATCGATCGATCG" + } + }, + "predicted_structure": { + "label": "Predicted Structure?", + "hint": "Are the molecule positions derived from a prediction?", + "typehint": "boolean", + "placeholder": "True", + "example": { + "value": "True" + } + }, + "modified": { + "label": "Modified?", + "hint": "Has the initial model been modified from the original?", + "typehint": "boolean", + "placeholder": "True", + "example": { + "value": "True" + } + }, + "molecular_formula": { + "label": "Molecular Formula", + "hint": "The molecular formula of a molecule\\", + "typehint": "string", + "placeholder": "C8H10N4O2", + "example": { + "value": "C8H10N4O2" + } + }, + "molecular_weight": { + "label": "Molecular Weight", + "hint": "The molecular weight of a molecule.", + "example": { + "value": 18.0, + "value_unit": "g/mol" + }, + "default_unit": "g/mol", + "typehint": "float" + }, + "molecule_charge": { + "label": "Molecule Charge", + "hint": "Electrostatic charge of a molecule.", + "example": { + "value": -1.0, + "value_unit": "e" + }, + "default_unit": "e", + "typehint": "float" + }, + "molecule_count": { + "label": "Molecule Count", + "hint": "Number of instances of a given molecule, defined as bonded atoms or beads.", + "typehint": "integer", + "placeholder": "1", + "example": { + "value": 1 + } + }, + "atom_count": { + "label": "Atom Count", + "hint": "Number of atoms in a molecule.", + "typehint": "integer", + "placeholder": "1", + "example": { + "value": 1 + } + }, + "monomer_count": { + "label": "Monomer Count", + "hint": "Number of monomeric units in a polymer(e.g. protein or nucleic acid).", + "typehint": "integer", + "placeholder": "1", + "example": { + "value": 1 + } + } + } + } + } + }, + "potentials": { + "label": "Potentials", + "hint": "Force field potentials used to describe simulated particles.", + "fields": { + "water_potential": { + "label": "Water Potential", + "hint": "Force field for water molecules.", + "fields": { + "water_potential_name": { + "label": "Water Potential Name", + "hint": "Force fields used to parametrize water molecules in a simulation.", + "example": { + "value": "TIP3P" + }, + "typehint": "string" + }, + "modified": { + "label": "Modified?", + "hint": "Has the initial model been modified from the original?", + "typehint": "boolean", + "placeholder": "True", + "example": { + "value": "True" + } + } + } + }, + "protein_potential": { + "label": "Protein Potential", + "hint": "Force field for proteins.", + "fields": { + "protein_potential_name": { + "label": "Protein Potential Name", + "hint": "Force fields used to parametrize amino acids in proteins in a simulation.", + "example": { + "value": "ff19SB" + }, + "typehint": "string" + }, + "modified": { + "label": "Modified?", + "hint": "Has the initial model been modified from the original?", + "typehint": "boolean", + "placeholder": "True", + "example": { + "value": "True" + } + } + } + }, + "lipid_potential": { + "label": "Lipid Potential", + "hint": "Force field for lipids.", + "fields": { + "lipid_potential_name": { + "label": "Lipid Potential Name", + "hint": "Force fields used to parametrize lipids in a simulation.", + "example": { + "value": "LIPID21" + }, + "typehint": "string" + }, + "modified": { + "label": "Modified?", + "hint": "Has the initial model been modified from the original?", + "typehint": "boolean", + "placeholder": "True", + "example": { + "value": "True" + } + } + } + }, + "nucleic_potential": { + "label": "Nucleic Potential", + "hint": "Force field for nucleic acids.", + "fields": { + "nucleic_potential_name": { + "label": "Nucleic Potential Name", + "hint": "Force fields used to parametrize nucleic acids in a simulation.", + "example": { + "value": "ff99OL3" + }, + "typehint": "string" + }, + "modified": { + "label": "Modified?", + "hint": "Has the initial model been modified from the original?", + "typehint": "boolean", + "placeholder": "True", + "example": { + "value": "True" + } + } + } + }, + "carbohydrate_potential": { + "label": "Carbohydrate Potential", + "hint": "Force field for carbohydrates.", + "fields": { + "carbohydrate_potential_name": { + "label": "Carbohydrate Potential Name", + "hint": "Force fields used to parametrize carbohydrates in a simulation.", + "example": { + "value": "GLYCAM06" + }, + "typehint": "string" + }, + "modified": { + "label": "Modified?", + "hint": "Has the initial model been modified from the original?", + "typehint": "boolean", + "placeholder": "True", + "example": { + "value": "True" + } + } + } + }, + "polymer_potential": { + "label": "Polymer Potential", + "hint": "Force field for polymers (excluding proteins and nucleic acids).", + "fields": { + "polymer_potential_name": { + "label": "Polymer Potential Name", + "hint": "Force fields used to parametrize polymers in a simulation.", + "example": { + "value": "LignAmb25" + }, + "typehint": "string" + }, + "modified": { + "label": "Modified?", + "hint": "Has the initial model been modified from the original?", + "typehint": "boolean", + "placeholder": "True", + "example": { + "value": "True" + } + } + } + }, + "general_potential": { + "label": "General Potential", + "hint": "Force field for molecules (in general).", + "fields": { + "general_potential_name": { + "label": "General Potential Name", + "hint": "Force fields used to parametrize molecules in a simulation.", + "example": { + "value": "GAFF2" + }, + "typehint": "string" + }, + "modified": { + "label": "Modified?", + "hint": "Has the initial model been modified from the original?", + "typehint": "boolean", + "placeholder": "True", + "example": { + "value": "True" + } + } + } + }, + "machine_learned_potential": { + "label": "Machine Learned Potential", + "hint": "ML force field for molecules (in general).", + "fields": { + "machine_learned_potential_name": { + "label": "Machine Learned Potential Name", + "hint": "Machine learned potentials.", + "example": { + "value": "ANI" + }, + "typehint": "string" + }, + "modified": { + "label": "Modified?", + "hint": "Has the initial model been modified from the original?", + "typehint": "boolean", + "placeholder": "True", + "example": { + "value": "True" + } + } + } + } + } + }, + "compute": { + "label": "Compute", + "hint": "Computational environment information.", + "fields": { + "hardware": { + "label": "Hardware", + "hint": "Computer hardware used to perform simulation.", + "fields": { + "execution_platform": { + "label": "Execution Platform", + "hint": "Type of platform used to run the simulation.", + "example": { + "value": "HPC Cluster" + }, + "typehint": "string" + }, + "node_type": { + "label": "Node Type", + "hint": "Type of compute node used in the system.", + "example": { + "value": "CPU Only" + }, + "typehint": "string" + }, + "node_count": { + "label": "Node Count", + "hint": "Number of compute nodes used for the run.", + "typehint": "integer", + "example": { + "value": "2" + } + }, + "CPU_vendor": { + "label": "CPU Vendor", + "hint": "Vendor of the CPU used in the compute nodes.", + "example": { + "value": "AMD" + }, + "typehint": "string" + }, + "CPU_architecture": { + "label": "CPU Architecture", + "hint": "CPU architecture used by the compute nodes.", + "example": { + "value": "x86" + }, + "typehint": "string" + }, + "sockets_per_node": { + "label": "Sockets Per Node", + "hint": "Number of physical CPU sockets in each compute node.", + "typehint": "integer", + "example": { + "value": 2 + } + }, + "cores_per_socket": { + "label": "Cores Per Socket", + "hint": "Number of physical CPU cores in each socket.", + "typehint": "integer", + "example": { + "value": 2 + } + }, + "threads_per_core": { + "label": "Threads Per Core", + "hint": "Number of hardware threads per physical core.", + "typehint": "integer", + "example": { + "value": 2 + } + }, + "GPU_vendor": { + "label": "GPU Vendor", + "hint": "Vendor of the GPU used in the compute nodes.", + "example": { + "value": "AMD" + }, + "typehint": "string" + }, + "GPUs_per_node": { + "label": "GPUs Per Node", + "hint": "Number of GPUs present in each compute node.", + "typehint": "integer", + "example": { + "value": 1 + } + }, + "memory_per_node": { + "label": "Memory Per Node", + "hint": "Amount of memory installed per compute node.", + "example": { + "value": 2, + "value_unit": "GB" + }, + "default_unit": "GB", + "typehint": "float" + } + } + }, + "software": { + "label": "Software", + "hint": "Computer software used to perform simulation.", + "fields": { + "operating_system": { + "label": "Operating System", + "hint": "List of operating systems installed on the hardware used to perform the simulation.", + "example": { + "value": "Linux" + }, + "typehint": "string" + }, + "scheduler": { + "label": "Scheduler", + "hint": "Job scheduler used for simulation execution.", + "example": { + "value": "SLURM" + }, + "typehint": "string" + }, + "MPI_library": { + "label": "MPI Library", + "hint": "MPI implementation used for message passing.", + "example": { + "value": "OpenMPI" + }, + "typehint": "string" + }, + "container_runtime": { + "label": "Container Runtime", + "hint": "Container runtime used to package and run software.", + "example": { + "value": "Docker" + }, + "typehint": "string" + } + } + }, + "performance": { + "label": "Performance", + "hint": "Compute performance during simulation.", + "fields": { + "wall_time": { + "label": "Wall Time", + "hint": "Total elapsed runtime of the simulation.", + "example": { + "value": 3600, + "value_unit": "s" + }, + "default_unit": "s", + "typehint": "float" + }, + "energy_consumption": { + "label": "Energy Consumption", + "hint": "Total energy consumed by the simulation run.", + "example": { + "value": 0.119, + "value_unit": "kWh" + }, + "default_unit": "kWh", + "typehint": "float" + } + } + } + } + } +} \ No newline at end of file diff --git a/project/schema_summary.yaml b/project/schema_summary.yaml index 5a15459..9ab015f 100644 --- a/project/schema_summary.yaml +++ b/project/schema_summary.yaml @@ -3,6 +3,8 @@ composition: molecule_ID: fields: InChI: + example: + value: InChI=1S/C8H10N4O2/c1-10-4-9-6-5(10)7(13)12(3)8(14)11(6)2/h4H,1-3H3 hint: The International Chemical Identifier (InChi) is a textual identifier for chemical substances, designed to provide a standard way to encode molecular information @@ -10,6 +12,8 @@ composition: placeholder: InChI=1S/C8H10N4O2/c1-10-4-9-6-5(10)7(13)12(3)8(14)11(6)2/h4H,1-3H3 typehint: string InChIKey: + example: + value: RYYVLZVUVIJVGH-UHFFFAOYSA-N hint: The condensed, 27 character InChIKey, which is a hashed version of the full InChI (using the SHA-256 algorithm), designed to allow for easy web searches of chemical compounds. @@ -17,17 +21,23 @@ composition: placeholder: RYYVLZVUVIJVGH-UHFFFAOYSA-N typehint: string PDB_ID: + example: + value: 2VB1 hint: Protein Data Bank identifier label: PDB ID placeholder: 2VB1 typehint: string PubChem_CID: + example: + value: '100101' hint: PubChem CID of chemical molecules and their activities against biological assays. label: PubChem CID placeholder: '100101' typehint: string SMILES: + example: + value: CN1C=NC2=C1C(=O)N(C(=O)N2C)C hint: Simplified Molecular Input Line Entry System (SMILES) ASCII-based line notation used to describe chemical structures. It represents molecular graphs with atoms and bonds, allowing software to convert these short @@ -36,60 +46,88 @@ composition: placeholder: CN1C=NC2=C1C(=O)N(C(=O)N2C)C typehint: string UNIPROT_ID: + example: + value: P0DP23 hint: UniProt accession ID label: UNIPROT ID placeholder: P0DP23 typehint: string alphafold_ID: + example: + value: AF-P12345-F1 hint: AlphaFold predicted protein structure identifier (AlphaFold DB, EMBL-EBI) label: AlphaFold ID placeholder: AF-P12345-F1 typehint: string atom_count: + example: + value: 1 hint: Number of atoms in a molecule. label: Atom Count placeholder: '1' typehint: integer modified: + example: + value: 'True' hint: Has the initial model been modified from the original? label: Modified? + placeholder: 'True' typehint: boolean molecular_formula: + example: + value: C8H10N4O2 hint: The molecular formula of a molecule\ label: Molecular Formula placeholder: C8H10N4O2 typehint: string molecular_weight: default_unit: g/mol + example: + value: 18.0 + value_unit: g/mol hint: The molecular weight of a molecule. label: Molecular Weight typehint: float molecule_charge: default_unit: e + example: + value: -1.0 + value_unit: e hint: Electrostatic charge of a molecule. label: Molecule Charge typehint: float molecule_count: + example: + value: 1 hint: Number of instances of a given molecule, defined as bonded atoms or beads. label: Molecule Count placeholder: '1' typehint: integer monomer_count: + example: + value: 1 hint: Number of monomeric units in a polymer(e.g. protein or nucleic acid). label: Monomer Count placeholder: '1' typehint: integer nucleic_sequence: + example: + value: ATGCATCGATCGATCGATCG hint: One letter sequence for nucleic acid nucleotides. label: Nucleic Sequence placeholder: ATGCATCGATCGATCGATCG typehint: string predicted_structure: + example: + value: 'True' hint: Are the molecule positions derived from a prediction? label: Predicted Structure? + placeholder: 'True' typehint: boolean protein_sequence: + example: + value: DRVYIHPF hint: One letter sequence for protein amino acids. label: Protein Sequence placeholder: DRVYIHPF @@ -100,20 +138,29 @@ composition: fields: salt_concentration: default_unit: M + example: + value: 0.1 + value_unit: M hint: Concentration of salt in the solution. label: Salt Concentration typehint: float total_atom_count: + example: + value: 1 hint: Total number of atoms in the simulation. label: Total Atom Count placeholder: '1' typehint: integer total_molecule_count: + example: + value: 1 hint: Total number of simulated molecules, defined as bonded atoms or beads. label: Total Molecule Count placeholder: '1' typehint: integer unique_molecule_count: + example: + value: 1 hint: Number of unique simulated molecules, defined as bonded atoms or beads. label: Unique Molecule Count placeholder: '1' @@ -127,47 +174,70 @@ compute: hardware: fields: CPU_architecture: + example: + value: x86 hint: CPU architecture used by the compute nodes. label: CPU Architecture typehint: string CPU_vendor: + example: + value: AMD hint: Vendor of the CPU used in the compute nodes. label: CPU Vendor typehint: string GPU_vendor: + example: + value: AMD hint: Vendor of the GPU used in the compute nodes. label: GPU Vendor typehint: string GPUs_per_node: + example: + value: 1 hint: Number of GPUs present in each compute node. label: GPUs Per Node typehint: integer cores_per_socket: + example: + value: 2 hint: Number of physical CPU cores in each socket. label: Cores Per Socket typehint: integer execution_platform: + example: + value: HPC Cluster hint: Type of platform used to run the simulation. label: Execution Platform typehint: string memory_per_node: default_unit: GB + example: + value: 2 + value_unit: GB hint: Amount of memory installed per compute node. label: Memory Per Node typehint: float node_count: + example: + value: '2' hint: Number of compute nodes used for the run. label: Node Count typehint: integer node_type: + example: + value: CPU Only hint: Type of compute node used in the system. label: Node Type typehint: string sockets_per_node: + example: + value: 2 hint: Number of physical CPU sockets in each compute node. label: Sockets Per Node typehint: integer threads_per_core: + example: + value: 2 hint: Number of hardware threads per physical core. label: Threads Per Core typehint: integer @@ -177,11 +247,17 @@ compute: fields: energy_consumption: default_unit: kWh + example: + value: 0.119 + value_unit: kWh hint: Total energy consumed by the simulation run. label: Energy Consumption typehint: float wall_time: - default_unit: ns + default_unit: s + example: + value: 3600 + value_unit: s hint: Total elapsed runtime of the simulation. label: Wall Time typehint: float @@ -190,19 +266,27 @@ compute: software: fields: MPI_library: + example: + value: OpenMPI hint: MPI implementation used for message passing. label: MPI Library typehint: string container_runtime: + example: + value: Docker hint: Container runtime used to package and run software. label: Container Runtime typehint: string operating_system: + example: + value: Linux hint: List of operating systems installed on the hardware used to perform the simulation. label: Operating System typehint: string scheduler: + example: + value: SLURM hint: Job scheduler used for simulation execution. label: Scheduler typehint: string @@ -216,36 +300,60 @@ observables: fields: average_enthalpy: default_unit: kJ/mol + example: + value: -3.2 + value_unit: kJ/mol hint: Average enthalpy sampled from the simulation, given as a float. label: Average Enthalpy typehint: float average_kinetic_energy: default_unit: kJ/mol + example: + value: -2.4 + value_unit: kJ/mol hint: Average kinetic energy sampled from the simulation, given as a float. label: Average Kinetic Energy typehint: float average_potential_energy: default_unit: kJ/mol + example: + value: -5.6 + value_unit: kJ/mol hint: Average potential energy sampled from the simulation, given as a float. label: Average Potential Energy typehint: float average_pressure: default_unit: bar + example: + value: 1 + value_unit: bar hint: Average pressure sampled from the simulation, given as a float. label: Average Pressure typehint: float average_temperature: default_unit: K + example: + value: 300 + value_unit: K hint: Average temperature sampled from the simulation, given as a float. label: Average Temperature typehint: float average_volume: default_unit: nm³ + example: + value: 100 + value_unit: nm³ hint: Average volume sampled from the simulation, given as a float. label: Average Volume typehint: float average_volume_vector: default_unit: nm + example: + value: + - 1 + - 1 + - 1 + value_unit: nm hint: Average volume sampled from the simulation, given as a list, (e.g. 10, 10, 10). label: Average Volume Vector @@ -259,58 +367,83 @@ potentials: carbohydrate_potential: fields: carbohydrate_potential_name: + example: + value: GLYCAM06 hint: Force fields used to parametrize carbohydrates in a simulation. label: Carbohydrate Potential Name typehint: string modified: + example: + value: 'True' hint: Has the initial model been modified from the original? label: Modified? + placeholder: 'True' typehint: boolean hint: Force field for carbohydrates. label: Carbohydrate Potential general_potential: fields: general_potential_name: + example: + value: GAFF2 hint: Force fields used to parametrize molecules in a simulation. label: General Potential Name typehint: string modified: + example: + value: 'True' hint: Has the initial model been modified from the original? label: Modified? + placeholder: 'True' typehint: boolean hint: Force field for molecules (in general). label: General Potential lipid_potential: fields: lipid_potential_name: + example: + value: LIPID21 hint: Force fields used to parametrize lipids in a simulation. label: Lipid Potential Name typehint: string modified: + example: + value: 'True' hint: Has the initial model been modified from the original? label: Modified? + placeholder: 'True' typehint: boolean hint: Force field for lipids. label: Lipid Potential machine_learned_potential: fields: machine_learned_potential_name: + example: + value: ANI hint: Machine learned potentials. label: Machine Learned Potential Name typehint: string modified: + example: + value: 'True' hint: Has the initial model been modified from the original? label: Modified? + placeholder: 'True' typehint: boolean hint: ML force field for molecules (in general). label: Machine Learned Potential nucleic_potential: fields: modified: + example: + value: 'True' hint: Has the initial model been modified from the original? label: Modified? + placeholder: 'True' typehint: boolean nucleic_potential_name: + example: + value: ff99OL3 hint: Force fields used to parametrize nucleic acids in a simulation. label: Nucleic Potential Name typehint: string @@ -319,10 +452,15 @@ potentials: polymer_potential: fields: modified: + example: + value: 'True' hint: Has the initial model been modified from the original? label: Modified? + placeholder: 'True' typehint: boolean polymer_potential_name: + example: + value: LignAmb25 hint: Force fields used to parametrize polymers in a simulation. label: Polymer Potential Name typehint: string @@ -331,10 +469,15 @@ potentials: protein_potential: fields: modified: + example: + value: 'True' hint: Has the initial model been modified from the original? label: Modified? + placeholder: 'True' typehint: boolean protein_potential_name: + example: + value: ff19SB hint: Force fields used to parametrize amino acids in proteins in a simulation. label: Protein Potential Name typehint: string @@ -343,10 +486,15 @@ potentials: water_potential: fields: modified: + example: + value: 'True' hint: Has the initial model been modified from the original? label: Modified? + placeholder: 'True' typehint: boolean water_potential_name: + example: + value: TIP3P hint: Force fields used to parametrize water molecules in a simulation. label: Water Potential Name typehint: string @@ -359,41 +507,73 @@ settings: barostat: fields: barostat_algorithm: + example: + value: Nose-Hoover hint: Barostat algorithm used to set the pressure in a simulation. label: Barostat Algorithm typehint: string compressibility: default_unit: 1/bar + example: + value: 4.46e-05 + value_unit: 1/bar hint: Compressibility of the simulated system, given as a float. label: Compressibility typehint: float compressibility_vector: default_unit: 1/bar + example: + value: 4.46e-05 + value_unit: 1/bar hint: Compressibility of the simulated system, given as a float. label: Compressibility Vector typehint: list pressure_coupling_frequency: - hint: Step frequency to apply the barostat, given as an integer. + default_unit: 1/ps + example: + value: 2.0 + value_unit: 1/ps + hint: Step frequency to apply the barostat. label: Pressure Coupling Frequency - typehint: integer + typehint: float pressure_coupling_type: + example: + value: isotropic hint: Coupling type for adjusting box vectors. label: Pressure Coupling Type typehint: string pressure_time_constant: - default_unit: ns + default_unit: s + example: + value: 5e-12 + value_unit: s hint: Time constant/step (relaxation time of pressure) used for coupling the system pressure, given as a float. label: Pressure Time Constant typehint: float target_pressure: default_unit: bar + example: + value: 1 + value_unit: bar hint: Target/reference pressure set to reach in the simulation, given as a float. label: Target Pressure typehint: float target_pressure_vector: default_unit: bar + example: + value: + - - 1 + - 0 + - 0 + - - 0 + - 1 + - 0 + - - 0 + - 0 + - 1 + value_unit: bar hint: Target/reference pressure set to reach in the simulation, given as a 3x3 array. label: Target Pressure Vector @@ -403,10 +583,14 @@ settings: ensemble: fields: ensemble_type: + example: + value: NPT hint: Ensemble used in a simulation label: Ensemble Type typehint: string random_seed: + example: + value: 123456 hint: Random number used to set (a) distribution of velocities across particles at the start of a simulation and (b) pseudo-random values for dynamics/couplings, given as an integer. @@ -417,28 +601,41 @@ settings: integrator: fields: frame_step: - default_unit: ns + default_unit: s + example: + value: 1.0e-11 + value_unit: s hint: Time between saved snapshots/frames in a simulation, given as a float. label: Frame Step typehint: float integrator_algorithm: + example: + value: Velocity-Verlet hint: Algorithm used to integrate the simulation. label: Integrator Algorithm typehint: string number_of_steps: + example: + value: 10000 hint: Number of integration steps performed in the simulation, given as an integer. label: Number Of Steps typehint: integer simulation_time: - default_unit: ns + default_unit: s + example: + value: 1.0e-06 + value_unit: s hint: Total time molecular dynamics have been sampled in a simulation trajectory, often given by the number of integration steps multiplied by the simulation time step used by the integrator, given as a float. label: Simulation Time typehint: float time_step: - default_unit: ns + default_unit: s + example: + value: 2.0e-15 + value_unit: s hint: Time between integration steps in a simulation, given as a float. label: Integration Step typehint: float @@ -447,6 +644,8 @@ settings: interactions: fields: bond_length_constraints_algorithm: + example: + value: SHAKE hint: Fix specific molecular degrees of freedom—typically fast bond vibrations involving hydrogen atoms. By eliminating these high-frequency motions, constraints allow for larger integration time steps (e.g., 2 fs instead @@ -456,22 +655,32 @@ settings: typehint: string electrostatic_cutoff_distance: default_unit: nm + example: + value: 1.2 + value_unit: nm hint: Distance in Angstrom at which a electrostatic interaction is turned off and a long-range non-bonded method is turned on, given as a float. label: Electrostatic Cutoff Distance typehint: float long_range_interaction_method: + example: + value: P3M hint: Method used to implement long-range interactions of point charges in the simulation. label: Long Range Interaction Method typehint: string restraints: + example: + value: 'True' hint: Are any positional restraints applied to molecule dynamics? (Restraints usually use harmonic potentials to keep a value near a target). label: Restraints? typehint: boolean vdw_cutoff_distance: default_unit: nm + example: + value: 1.2 + value_unit: nm hint: Distance in Angstrom at which a Van der Waals interaction is turned off and a long-range non-bonded method is turned on. label: Vdw Cutoff Distance @@ -481,6 +690,8 @@ settings: thermostat: fields: chain_length: + example: + value: 5 hint: Usually required in the Nosé-Hoover thermostat, the chain length (e.g., nh-chain-length in GROMACS) is used to maintain canonical distribution, given as an integer. @@ -488,10 +699,15 @@ settings: typehint: integer collision_frequency: default_unit: 1/ps + example: + value: 0.1 + value_unit: 1/ps hint: Collision frequency for the integrator, given as a float. label: Collision Frequency typehint: float coupling_group: + example: + value: protein hint: A subset of atoms for which temperature is controlled, often needed for simulating complex systems (e.g., protein in water), used in gromacs, given as a string @@ -499,6 +715,9 @@ settings: typehint: string friction_coefficient: default_unit: a/ps + example: + value: 0.1 + value_unit: a/ps hint: Usually used in the Langevin thermostat, the friction coefficient determines the strength of coupling between a system and a heat bath, given as a float. @@ -506,23 +725,38 @@ settings: typehint: float target_temperature: default_unit: K + example: + value: 300 + value_unit: K hint: Target/reference temperature set to reach in the simulation, given as a float. label: Target Temperature typehint: float target_temperature_vector: default_unit: K + example: + value: + - 300 + - 300 + value_unit: K hint: Target/reference temperature set to reach in the simulation, given as a list (e.g. 300, 300). label: Target Temperature Vector typehint: list temperature_time_constant: - default_unit: ns + default_unit: s + example: + value: + - 1.0e-13 + - 1.0e-13 + value_unit: s hint: Time constant for coupling the system temperature in seconds units, - given as a list (e.g. 300, 300). + given as a list (e.g. 0.1, 0.1). label: Temperature Time Constant typehint: list thermostat_algorithm: + example: + value: Bussi hint: Thermostat algorithm used to set the temperature in a simulation. label: Thermostat Algorithm typehint: string @@ -535,14 +769,20 @@ stages: analysis: fields: analysis_method: + example: + value: RMSD hint: Methods used to analyse simulation outputs. label: Analysis Method typehint: string analysis_software: + example: + value: Visual Molecular Dynamics (VMD) hint: Software used to analyse simulation outputs. label: Analysis Software typehint: string analysis_tool: + example: + value: CPPTRAJ hint: Tools used to analyse simulation outputs. label: Analysis Tool typehint: string @@ -551,11 +791,15 @@ stages: equilibration: fields: simulation_software: + example: + value: Amber hint: Simulation software used to perform molecular dynamics simulations and related functions. label: Simulation Software typehint: string simulation_tool: + example: + value: sander hint: Tools/utility used within simulation engines to perform simulations. label: Simulation Tool typehint: string @@ -565,33 +809,47 @@ stages: fields: energy_tolerance: default_unit: kJ/mol/nm + example: + value: 1000 + value_unit: kJ/mol/nm hint: Tolerance energy for when minimization stops, this is when the maximum force on any atom is less than this value (default is often 1000 kJ/mol/nm or 10−4kcal), given as a float. label: Energy Tolerance typehint: float minimisation_algorithm: + example: + value: Steepest Descent hint: Algorithm used to minimise particle interactions. label: Minimisation Algorithm typehint: string minimisation_distance_step_size: default_unit: nm + example: + value: 0.01 + value_unit: nm hint: The distance the algorithm moves in a single step, controls how large a step the optimizer takes during the initial phase of minimizing the potential energy of a structure, given as a float. label: Minimisation Distance Step Size typehint: float number_of_minimisation_steps: + example: + value: 5000 hint: Number of integration steps performed during minimisation of the system, given as an integer. label: Number Of Minimisation Steps typehint: integer simulation_software: + example: + value: Amber hint: Simulation software used to perform molecular dynamics simulations and related functions. label: Simulation Software typehint: string simulation_tool: + example: + value: sander hint: Tools/utility used within simulation engines to perform simulations. label: Simulation Tool typehint: string @@ -600,19 +858,27 @@ stages: production: fields: simulation_method: + example: + value: Steered Molecular Dynamics (SMD) hint: Options for simulation methods. label: Simulation Method typehint: string simulation_software: + example: + value: Amber hint: Simulation software used to perform molecular dynamics simulations and related functions. label: Simulation Software typehint: string simulation_software_version: + example: + value: '2014' hint: Version of software used to perform simulation step. label: Simulation Software Version typehint: string simulation_tool: + example: + value: sander hint: Tools/utility used within simulation engines to perform simulations. label: Simulation Tool typehint: string @@ -621,6 +887,8 @@ stages: setup: fields: setup_tool: + example: + value: pdb4amber hint: Tool used to setup a system for simulation. label: Setup Tool typehint: string @@ -633,10 +901,14 @@ topology: connectivity: fields: bonds: + example: + value: 'True' hint: Are bond parameters present in the topology? label: Bonds? typehint: boolean dihedrals: + example: + value: 'True' hint: Are dihedral parameters present in the topology? label: Dihedrals? typehint: boolean @@ -645,23 +917,34 @@ topology: particles: fields: coarse_grained: + example: + value: 'True' hint: Are atoms coarse-grained? label: Coarse Grained? typehint: boolean fixed_charges: + example: + value: 'True' hint: Are fixed charges on atoms included in the topology? label: Fixed Charges? typehint: boolean masses: + example: + value: 'True' hint: Are masses present in the topology? label: Masses? typehint: boolean resolution: + example: + value: All Atom hint: Resolution of simulated molecules. label: Resolution typehint: string system_charge: default_unit: e + example: + value: 0.0 + value_unit: e hint: Total electrostatic charge of the system given by the elementary charge (e). label: System Charge @@ -676,19 +959,35 @@ trajectory: fields: box_angles: default_unit: degree + example: + value: + - 90 + - 90 + - 90 + value_unit: degree hint: The angles of the box used to simulate the system. label: Box Angles typehint: list box_dimensions: default_unit: nm + example: + value: + - 10 + - 10 + - 10 + value_unit: nm hint: The lengths/dimensions of the box used to simulate the system. label: Box Dimensions typehint: list box_type: + example: + value: Cubic hint: Types of box used to simulate the system. label: Box Type typehint: string periodic_boundary_conditions: + example: + value: xyz hint: What directions in a simulation cell periodic boundaries are set if they are turned on. label: Periodic Boundary Conditions @@ -698,35 +997,51 @@ trajectory: trajectory_output: fields: energies: + example: + value: 'True' hint: Are per-frame energies included in the trajectory? label: Energies? typehint: boolean forces: + example: + value: 'True' hint: Are per-frame forces included in the trajectory? label: Forces? typehint: boolean frame_count: + example: + value: 10000 hint: Total number of snapshots that make up a trajectory. label: Frame Count placeholder: '1' typehint: integer polarizable_charges: + example: + value: 'True' hint: Are per-frame polarizable charges included in the trajectory? label: Polarizable Charges? typehint: boolean positions: + example: + value: 'True' hint: Are per-frame positions included in the trajectory? label: Positions? typehint: boolean replica: + example: + value: 'True' hint: Is this trajectory a replica of another provided trajectory? label: Replica? typehint: boolean velocities: + example: + value: 'True' hint: Are per-frame velocities included in the trajectory? label: Velocities? typehint: boolean water: + example: + value: 'True' hint: Are water molecules included in the trajectory? label: Water? typehint: boolean diff --git a/project/schema_webformfields.json b/project/schema_webformfields.json index d5dc82d..e21839f 100644 --- a/project/schema_webformfields.json +++ b/project/schema_webformfields.json @@ -26,7 +26,10 @@ "mdgx", "parmed" ], - "multiple": false + "multiple": false, + "example": { + "value": "pdb4amber" + } } } }, @@ -46,7 +49,6 @@ "label": "Value", "typehint": "float", "hint": null, - "placeholder": null, "pattern": "^[+-]?\\d+(\\.\\d+)?$" }, "value_unit": { @@ -60,13 +62,20 @@ "multiple": false, "default": "kJ/mol/nm" } + }, + "example": { + "value": 1000, + "value_unit": "kJ/mol/nm" } }, "number_of_minimisation_steps": { "type": "text", "label": "Number Of Minimisation Steps", "typehint": "integer", - "hint": "Number of integration steps performed during minimisation of the system, given as an integer." + "hint": "Number of integration steps performed during minimisation of the system, given as an integer.", + "example": { + "value": 5000 + } }, "minimisation_distance_step_size": { "type": "quantity", @@ -91,6 +100,10 @@ "multiple": false, "default": "nm" } + }, + "example": { + "value": 0.01, + "value_unit": "nm" } }, "minimisation_algorithm": { @@ -105,7 +118,10 @@ "LMOD", "None" ], - "multiple": true + "multiple": true, + "example": { + "value": "Steepest Descent" + } }, "simulation_tool": { "type": "select", @@ -117,7 +133,10 @@ "gem.pmemd", "mdrun" ], - "multiple": true + "multiple": true, + "example": { + "value": "sander" + } }, "simulation_software": { "type": "select", @@ -136,7 +155,10 @@ "ACEMD", "CP2K" ], - "multiple": true + "multiple": true, + "example": { + "value": "Amber" + } } } }, @@ -156,7 +178,10 @@ "gem.pmemd", "mdrun" ], - "multiple": true + "multiple": true, + "example": { + "value": "sander" + } }, "simulation_software": { "type": "select", @@ -175,7 +200,10 @@ "ACEMD", "CP2K" ], - "multiple": true + "multiple": true, + "example": { + "value": "Amber" + } } } }, @@ -195,7 +223,10 @@ "gem.pmemd", "mdrun" ], - "multiple": true + "multiple": true, + "example": { + "value": "sander" + } }, "simulation_software": { "type": "select", @@ -214,13 +245,19 @@ "ACEMD", "CP2K" ], - "multiple": true + "multiple": true, + "example": { + "value": "Amber" + } }, "simulation_software_version": { "type": "text", "label": "Simulation Software Version", "typehint": "string", "hint": "Version of software used to perform simulation step.", + "example": { + "value": "2014" + }, "extracted_only": true, "readonly": true }, @@ -252,7 +289,10 @@ "X-ray and CryoEM Refinement", "Locally Enhanced Sampling" ], - "multiple": true + "multiple": true, + "example": { + "value": "Steered Molecular Dynamics (SMD)" + } } } }, @@ -281,7 +321,10 @@ "PLUMED", "MDanalysis" ], - "multiple": true + "multiple": true, + "example": { + "value": "CPPTRAJ" + } }, "analysis_software": { "type": "select", @@ -293,7 +336,10 @@ "PyMOL", "Avogadro" ], - "multiple": true + "multiple": true, + "example": { + "value": "Visual Molecular Dynamics (VMD)" + } }, "analysis_method": { "type": "select", @@ -308,7 +354,10 @@ "Radius of Gyration", "BAR/PBSA" ], - "multiple": true + "multiple": true, + "example": { + "value": "RMSD" + } } } } @@ -336,13 +385,19 @@ "NVE", "μVT" ], - "multiple": false + "multiple": false, + "example": { + "value": "NPT" + } }, "random_seed": { "type": "text", "label": "Random Seed", "typehint": "integer", - "hint": "Random number used to set (a) distribution of velocities across particles at the start of a simulation and (b) pseudo-random values for dynamics/couplings, given as an integer." + "hint": "Random number used to set (a) distribution of velocities across particles at the start of a simulation and (b) pseudo-random values for dynamics/couplings, given as an integer.", + "example": { + "value": 123456 + } } } }, @@ -362,7 +417,10 @@ "Verlet", "Euler" ], - "multiple": false + "multiple": false, + "example": { + "value": "Velocity-Verlet" + } }, "frame_step": { "type": "quantity", @@ -389,8 +447,12 @@ "fs" ], "multiple": false, - "default": "ns" + "default": "s" } + }, + "example": { + "value": 1e-11, + "value_unit": "s" } }, "time_step": { @@ -418,15 +480,22 @@ "fs" ], "multiple": false, - "default": "ns" + "default": "s" } + }, + "example": { + "value": 2e-15, + "value_unit": "s" } }, "number_of_steps": { "type": "text", "label": "Number Of Steps", "typehint": "integer", - "hint": "Number of integration steps performed in the simulation, given as an integer." + "hint": "Number of integration steps performed in the simulation, given as an integer.", + "example": { + "value": 10000 + } }, "simulation_time": { "type": "quantity", @@ -453,8 +522,12 @@ "fs" ], "multiple": false, - "default": "ns" + "default": "s" } + }, + "example": { + "value": 1e-06, + "value_unit": "s" } } } @@ -477,7 +550,10 @@ "Monte Carlo", "Martyna-Tuckerman-Tobias-Klein" ], - "multiple": false + "multiple": false, + "example": { + "value": "Nose-Hoover" + } }, "compressibility": { "type": "quantity", @@ -489,7 +565,7 @@ "label": "Value", "typehint": "float", "hint": null, - "placeholder": "44.6" + "placeholder": "4.46e" }, "value_unit": { "type": "select", @@ -502,6 +578,10 @@ "multiple": false, "default": "1/bar" } + }, + "example": { + "value": 4.46e-05, + "value_unit": "1/bar" } }, "compressibility_vector": { @@ -514,7 +594,7 @@ "label": "Vector Value", "typehint": "float", "hint": null, - "placeholder": "44.6 1e10-6 1/bar" + "placeholder": "4.46e-05" }, "value_unit": { "type": "select", @@ -527,6 +607,10 @@ "multiple": false, "default": "1/bar" } + }, + "example": { + "value": 4.46e-05, + "value_unit": "1/bar" } }, "target_pressure": { @@ -551,6 +635,10 @@ "multiple": false, "default": "bar" } + }, + "example": { + "value": 1, + "value_unit": "bar" } }, "target_pressure_vector": { @@ -575,6 +663,26 @@ "multiple": false, "default": "bar" } + }, + "example": { + "value": [ + [ + 1, + 0, + 0 + ], + [ + 0, + 1, + 0 + ], + [ + 0, + 0, + 1 + ] + ], + "value_unit": "bar" } }, "pressure_time_constant": { @@ -603,15 +711,41 @@ "fs" ], "multiple": false, - "default": "ns" + "default": "s" } + }, + "example": { + "value": "5e-12", + "value_unit": "s" } }, "pressure_coupling_frequency": { - "type": "text", + "type": "quantity", "label": "Pressure Coupling Frequency", - "typehint": "integer", - "hint": "Step frequency to apply the barostat, given as an integer." + "hint": "Step frequency to apply the barostat.", + "fields": { + "value": { + "type": "text", + "label": "Value", + "typehint": "float", + "hint": null, + "min": 0 + }, + "value_unit": { + "type": "select", + "label": "Value Unit", + "hint": "Units used to describe frequency.", + "options": [ + "1/ps" + ], + "multiple": false, + "default": "1/ps" + } + }, + "example": { + "value": 2.0, + "value_unit": "1/ps" + } }, "pressure_coupling_type": { "type": "select", @@ -623,7 +757,10 @@ "anisotropic", "surface tension" ], - "multiple": false + "multiple": false, + "example": { + "value": "isotropic" + } } } }, @@ -644,7 +781,10 @@ "Nose-Hoover", "Bussi" ], - "multiple": false + "multiple": false, + "example": { + "value": "Bussi" + } }, "target_temperature": { "type": "quantity", @@ -670,6 +810,10 @@ "multiple": false, "default": "K" } + }, + "example": { + "value": 300, + "value_unit": "K" } }, "target_temperature_vector": { @@ -695,6 +839,13 @@ "multiple": false, "default": "K" } + }, + "example": { + "value": [ + 300, + 300 + ], + "value_unit": "K" } }, "collision_frequency": { @@ -719,12 +870,16 @@ "multiple": false, "default": "1/ps" } + }, + "example": { + "value": 0.1, + "value_unit": "1/ps" } }, "temperature_time_constant": { "type": "quantity", "label": "Temperature Time Constant", - "hint": "Time constant for coupling the system temperature in seconds units, given as a list (e.g. 300, 300).", + "hint": "Time constant for coupling the system temperature in seconds units, given as a list (e.g. 0.1, 0.1).", "fields": { "vector_value": { "type": "text", @@ -745,21 +900,34 @@ "fs" ], "multiple": false, - "default": "ns" + "default": "s" } + }, + "example": { + "value": [ + 1e-13, + 1e-13 + ], + "value_unit": "s" } }, "coupling_group": { "type": "text", "label": "Coupling Group", "typehint": "string", - "hint": "A subset of atoms for which temperature is controlled, often needed for simulating complex systems (e.g., protein in water), used in gromacs, given as a string" + "hint": "A subset of atoms for which temperature is controlled, often needed for simulating complex systems (e.g., protein in water), used in gromacs, given as a string", + "example": { + "value": "protein" + } }, "chain_length": { "type": "text", "label": "Chain Length", "typehint": "integer", "hint": "Usually required in the Nosé-Hoover thermostat, the chain length (e.g., nh-chain-length in GROMACS) is used to maintain canonical distribution, given as an integer.", + "example": { + "value": 5 + }, "min": 0 }, "friction_coefficient": { @@ -785,6 +953,10 @@ "multiple": false, "default": "a/ps" } + }, + "example": { + "value": 0.1, + "value_unit": "a/ps" } } } @@ -799,7 +971,10 @@ "type": "checkbox", "label": "Restraints?", "typehint": "boolean", - "hint": "Are any positional restraints applied to molecule dynamics? (Restraints usually use harmonic potentials to keep a value near a target)." + "hint": "Are any positional restraints applied to molecule dynamics? (Restraints usually use harmonic potentials to keep a value near a target).", + "example": { + "value": "True" + } }, "electrostatic_cutoff_distance": { "type": "quantity", @@ -812,7 +987,7 @@ "typehint": "float", "hint": null, "min": 0, - "placeholder": "10" + "placeholder": "1.0" }, "value_unit": { "type": "select", @@ -825,6 +1000,10 @@ "multiple": false, "default": "nm" } + }, + "example": { + "value": 1.2, + "value_unit": "nm" } }, "vdw_cutoff_distance": { @@ -838,7 +1017,7 @@ "typehint": "float", "hint": null, "min": 0, - "placeholder": "10" + "placeholder": "1.0" }, "value_unit": { "type": "select", @@ -851,6 +1030,10 @@ "multiple": false, "default": "nm" } + }, + "example": { + "value": 1.2, + "value_unit": "nm" } }, "bond_length_constraints_algorithm": { @@ -864,7 +1047,10 @@ "LINCS", "CCMA" ], - "multiple": false + "multiple": false, + "example": { + "value": "SHAKE" + } }, "long_range_interaction_method": { "type": "select", @@ -878,7 +1064,10 @@ "FMM", "RF" ], - "multiple": false + "multiple": false, + "example": { + "value": "P3M" + } } } } @@ -906,7 +1095,6 @@ "label": "Value", "typehint": "float", "hint": null, - "placeholder": null, "pattern": "^[+-]?\\d+(\\.\\d+)?$" }, "value_unit": { @@ -920,6 +1108,10 @@ "multiple": false, "default": "kJ/mol" } + }, + "example": { + "value": -2.4, + "value_unit": "kJ/mol" } }, "average_potential_energy": { @@ -932,7 +1124,6 @@ "label": "Value", "typehint": "float", "hint": null, - "placeholder": null, "pattern": "^[+-]?\\d+(\\.\\d+)?$" }, "value_unit": { @@ -946,6 +1137,10 @@ "multiple": false, "default": "kJ/mol" } + }, + "example": { + "value": -5.6, + "value_unit": "kJ/mol" } }, "average_enthalpy": { @@ -958,7 +1153,6 @@ "label": "Value", "typehint": "float", "hint": null, - "placeholder": null, "pattern": "^[+-]?\\d+(\\.\\d+)?$" }, "value_unit": { @@ -972,6 +1166,10 @@ "multiple": false, "default": "kJ/mol" } + }, + "example": { + "value": -3.2, + "value_unit": "kJ/mol" } }, "average_pressure": { @@ -996,6 +1194,10 @@ "multiple": false, "default": "bar" } + }, + "example": { + "value": 1, + "value_unit": "bar" } }, "average_temperature": { @@ -1022,6 +1224,10 @@ "multiple": false, "default": "K" } + }, + "example": { + "value": 300, + "value_unit": "K" } }, "average_volume": { @@ -1047,6 +1253,10 @@ "multiple": false, "default": "nm³" } + }, + "example": { + "value": 100, + "value_unit": "nm³" } }, "average_volume_vector": { @@ -1071,6 +1281,14 @@ "multiple": false, "default": "nm" } + }, + "example": { + "value": [ + 1, + 1, + 1 + ], + "value_unit": "nm" } } } @@ -1093,13 +1311,19 @@ "type": "checkbox", "label": "Bonds?", "typehint": "boolean", - "hint": "Are bond parameters present in the topology?" + "hint": "Are bond parameters present in the topology?", + "example": { + "value": "True" + } }, "dihedrals": { "type": "checkbox", "label": "Dihedrals?", "typehint": "boolean", - "hint": "Are dihedral parameters present in the topology?" + "hint": "Are dihedral parameters present in the topology?", + "example": { + "value": "True" + } } } }, @@ -1113,13 +1337,19 @@ "type": "checkbox", "label": "Masses?", "typehint": "boolean", - "hint": "Are masses present in the topology?" + "hint": "Are masses present in the topology?", + "example": { + "value": "True" + } }, "fixed_charges": { "type": "checkbox", "label": "Fixed Charges?", "typehint": "boolean", - "hint": "Are fixed charges on atoms included in the topology?" + "hint": "Are fixed charges on atoms included in the topology?", + "example": { + "value": "True" + } }, "system_charge": { "type": "quantity", @@ -1143,13 +1373,20 @@ "multiple": false, "default": "e" } + }, + "example": { + "value": 0.0, + "value_unit": "e" } }, "coarse_grained": { "type": "checkbox", "label": "Coarse Grained?", "typehint": "boolean", - "hint": "Are atoms coarse-grained?" + "hint": "Are atoms coarse-grained?", + "example": { + "value": "True" + } }, "resolution": { "type": "select", @@ -1161,7 +1398,10 @@ "Coarse-Grained", "Mesoscale" ], - "multiple": false + "multiple": false, + "example": { + "value": "All Atom" + } } } } @@ -1202,6 +1442,14 @@ "multiple": false, "default": "nm" } + }, + "example": { + "value": [ + 10, + 10, + 10 + ], + "value_unit": "nm" } }, "box_angles": { @@ -1227,6 +1475,14 @@ "multiple": false, "default": "degree" } + }, + "example": { + "value": [ + 90, + 90, + 90 + ], + "value_unit": "degree" } }, "box_type": { @@ -1240,7 +1496,10 @@ "Truncated Octahedron", "Triclinic" ], - "multiple": false + "multiple": false, + "example": { + "value": "Cubic" + } }, "periodic_boundary_conditions": { "type": "select", @@ -1253,7 +1512,10 @@ "xz", "yz" ], - "multiple": false + "multiple": false, + "example": { + "value": "xyz" + } } } }, @@ -1267,49 +1529,73 @@ "type": "checkbox", "label": "Positions?", "typehint": "boolean", - "hint": "Are per-frame positions included in the trajectory?" + "hint": "Are per-frame positions included in the trajectory?", + "example": { + "value": "True" + } }, "forces": { "type": "checkbox", "label": "Forces?", "typehint": "boolean", - "hint": "Are per-frame forces included in the trajectory?" + "hint": "Are per-frame forces included in the trajectory?", + "example": { + "value": "True" + } }, "velocities": { "type": "checkbox", "label": "Velocities?", "typehint": "boolean", - "hint": "Are per-frame velocities included in the trajectory?" + "hint": "Are per-frame velocities included in the trajectory?", + "example": { + "value": "True" + } }, "polarizable_charges": { "type": "checkbox", "label": "Polarizable Charges?", "typehint": "boolean", - "hint": "Are per-frame polarizable charges included in the trajectory?" + "hint": "Are per-frame polarizable charges included in the trajectory?", + "example": { + "value": "True" + } }, "energies": { "type": "checkbox", "label": "Energies?", "typehint": "boolean", - "hint": "Are per-frame energies included in the trajectory?" + "hint": "Are per-frame energies included in the trajectory?", + "example": { + "value": "True" + } }, "water": { "type": "checkbox", "label": "Water?", "typehint": "boolean", - "hint": "Are water molecules included in the trajectory?" + "hint": "Are water molecules included in the trajectory?", + "example": { + "value": "True" + } }, "replica": { "type": "checkbox", "label": "Replica?", "typehint": "boolean", - "hint": "Is this trajectory a replica of another provided trajectory?" + "hint": "Is this trajectory a replica of another provided trajectory?", + "example": { + "value": "True" + } }, "frame_count": { "type": "text", "label": "Frame Count", "typehint": "integer", "hint": "Total number of snapshots that make up a trajectory.", + "example": { + "value": 10000 + }, "placeholder": "1", "min": 0 } @@ -1334,6 +1620,9 @@ "label": "Total Molecule Count", "typehint": "integer", "hint": "Total number of simulated molecules, defined as bonded atoms or beads.", + "example": { + "value": 1 + }, "placeholder": "1", "min": 0 }, @@ -1342,6 +1631,9 @@ "label": "Total Atom Count", "typehint": "integer", "hint": "Total number of atoms in the simulation.", + "example": { + "value": 1 + }, "placeholder": "1", "min": 0 }, @@ -1350,6 +1642,9 @@ "label": "Unique Molecule Count", "typehint": "integer", "hint": "Number of unique simulated molecules, defined as bonded atoms or beads.", + "example": { + "value": 1 + }, "placeholder": "1", "min": 0 }, @@ -1364,7 +1659,7 @@ "typehint": "float", "hint": null, "min": 0, - "placeholder": "1" + "placeholder": "0.1" }, "value_unit": { "type": "select", @@ -1376,6 +1671,10 @@ "multiple": false, "default": "M" } + }, + "example": { + "value": 0.1, + "value_unit": "M" } } } @@ -1391,8 +1690,11 @@ "label": "PDB ID", "typehint": "string", "hint": "Protein Data Bank identifier", - "placeholder": "2VB1", + "example": { + "value": "2VB1" + }, "pattern": "^[0-9A-Za-z]{4}$", + "placeholder": "2VB1", "base_uri": "https://identifiers.org/pdb:" }, "UNIPROT_ID": { @@ -1400,8 +1702,11 @@ "label": "UNIPROT ID", "typehint": "string", "hint": "UniProt accession ID", - "placeholder": "P0DP23", + "example": { + "value": "P0DP23" + }, "pattern": "^[A-Z0-9]{6,10}$", + "placeholder": "P0DP23", "base_uri": "https://identifiers.org/uniprot:" }, "SMILES": { @@ -1409,24 +1714,33 @@ "label": "SMILES", "typehint": "string", "hint": "Simplified Molecular Input Line Entry System (SMILES) ASCII-based line notation used to describe chemical structures. It represents molecular graphs with atoms and bonds, allowing software to convert these short strings into 2D or 3D models.", - "placeholder": "CN1C=NC2=C1C(=O)N(C(=O)N2C)C", - "pattern": "^[A-Za-z0-9@+\\-\\[\\]()=#$:./\\\\%*]+$" + "example": { + "value": "CN1C=NC2=C1C(=O)N(C(=O)N2C)C" + }, + "pattern": "^[A-Za-z0-9@+\\-\\[\\]()=#$:./\\\\%*]+$", + "placeholder": "CN1C=NC2=C1C(=O)N(C(=O)N2C)C" }, "InChI": { "type": "text", "label": "InChI", "typehint": "string", "hint": "The International Chemical Identifier (InChi) is a textual identifier for chemical substances, designed to provide a standard way to encode molecular information", - "placeholder": "InChI=1S/C8H10N4O2/c1-10-4-9-6-5(10)7(13)12(3)8(14)11(6)2/h4H,1-3H3", - "pattern": "^InChI=1S?/[A-Za-z0-9.+\\-]+(/[a-z][^/]*)*$" + "example": { + "value": "InChI=1S/C8H10N4O2/c1-10-4-9-6-5(10)7(13)12(3)8(14)11(6)2/h4H,1-3H3" + }, + "pattern": "^InChI=1S?/[A-Za-z0-9.+\\-]+(/[a-z][^/]*)*$", + "placeholder": "InChI=1S/C8H10N4O2/c1-10-4-9-6-5(10)7(13)12(3)8(14)11(6)2/h4H,1-3H3" }, "InChIKey": { "type": "text", "label": "InChIKey", "typehint": "string", "hint": "The condensed, 27 character InChIKey, which is a hashed version of the full InChI (using the SHA-256 algorithm), designed to allow for easy web searches of chemical compounds.", - "placeholder": "RYYVLZVUVIJVGH-UHFFFAOYSA-N", + "example": { + "value": "RYYVLZVUVIJVGH-UHFFFAOYSA-N" + }, "pattern": "^[A-Z]{14}-[A-Z]{10}(-[A-Z])?$", + "placeholder": "RYYVLZVUVIJVGH-UHFFFAOYSA-N", "base_uri": "https://identifiers.org/inchikey:" }, "alphafold_ID": { @@ -1434,8 +1748,11 @@ "label": "AlphaFold ID", "typehint": "string", "hint": "AlphaFold predicted protein structure identifier (AlphaFold DB, EMBL-EBI)", - "placeholder": "AF-P12345-F1", + "example": { + "value": "AF-P12345-F1" + }, "pattern": "^AF-[A-Z0-9]+-F1$", + "placeholder": "AF-P12345-F1", "base_uri": "https://alphafold.ebi.ac.uk/entry/" }, "PubChem_CID": { @@ -1443,8 +1760,11 @@ "label": "PubChem CID", "typehint": "string", "hint": "PubChem CID of chemical molecules and their activities against biological assays.", - "placeholder": "100101", + "example": { + "value": "100101" + }, "pattern": "^\\d+$", + "placeholder": "100101", "base_uri": "https://identifiers.org/pubchem.compound:" }, "protein_sequence": { @@ -1452,36 +1772,53 @@ "label": "Protein Sequence", "typehint": "string", "hint": "One letter sequence for protein amino acids.", - "placeholder": "DRVYIHPF", - "pattern": "^[ACDEFGHIKLMNPQRSTVWY]+$" + "example": { + "value": "DRVYIHPF" + }, + "pattern": "^[ACDEFGHIKLMNPQRSTVWY]+$", + "placeholder": "DRVYIHPF" }, "nucleic_sequence": { "type": "textarea", "label": "Nucleic Sequence", "typehint": "string", "hint": "One letter sequence for nucleic acid nucleotides.", - "placeholder": "ATGCATCGATCGATCGATCG", - "pattern": "^[ACGTURYSWKMBDHVN]+$" + "example": { + "value": "ATGCATCGATCGATCGATCG" + }, + "pattern": "^[ACGTURYSWKMBDHVN]+$", + "placeholder": "ATGCATCGATCGATCGATCG" }, "predicted_structure": { "type": "checkbox", "label": "Predicted Structure?", "typehint": "boolean", - "hint": "Are the molecule positions derived from a prediction?" + "hint": "Are the molecule positions derived from a prediction?", + "example": { + "value": "True" + }, + "placeholder": "True" }, "modified": { "type": "checkbox", "label": "Modified?", "typehint": "boolean", - "hint": "Has the initial model been modified from the original?" + "hint": "Has the initial model been modified from the original?", + "example": { + "value": "True" + }, + "placeholder": "True" }, "molecular_formula": { "type": "text", "label": "Molecular Formula", "typehint": "string", "hint": "The molecular formula of a molecule\\", - "placeholder": "C8H10N4O2", - "pattern": "^([A-Z][a-z]?\\d*)+$" + "example": { + "value": "C8H10N4O2" + }, + "pattern": "^([A-Z][a-z]?\\d*)+$", + "placeholder": "C8H10N4O2" }, "molecular_weight": { "type": "quantity", @@ -1507,6 +1844,10 @@ "multiple": false, "default": "g/mol" } + }, + "example": { + "value": 18.0, + "value_unit": "g/mol" } }, "molecule_charge": { @@ -1532,6 +1873,10 @@ "multiple": false, "default": "e" } + }, + "example": { + "value": -1.0, + "value_unit": "e" } }, "molecule_count": { @@ -1539,6 +1884,9 @@ "label": "Molecule Count", "typehint": "integer", "hint": "Number of instances of a given molecule, defined as bonded atoms or beads.", + "example": { + "value": 1 + }, "placeholder": "1", "min": 0 }, @@ -1547,6 +1895,9 @@ "label": "Atom Count", "typehint": "integer", "hint": "Number of atoms in a molecule.", + "example": { + "value": 1 + }, "placeholder": "1", "min": 0 }, @@ -1555,6 +1906,9 @@ "label": "Monomer Count", "typehint": "integer", "hint": "Number of monomeric units in a polymer(e.g. protein or nucleic acid).", + "example": { + "value": 1 + }, "placeholder": "1", "min": 0 } @@ -1595,13 +1949,20 @@ "SPC/Fw", "q-SPC/Fw" ], - "multiple": false + "multiple": false, + "example": { + "value": "TIP3P" + } }, "modified": { "type": "checkbox", "label": "Modified?", "typehint": "boolean", - "hint": "Has the initial model been modified from the original?" + "hint": "Has the initial model been modified from the original?", + "example": { + "value": "True" + }, + "placeholder": "True" } } }, @@ -1632,13 +1993,20 @@ "ff14SB_modAA", "ff19SB_modAA" ], - "multiple": false + "multiple": false, + "example": { + "value": "ff19SB" + } }, "modified": { "type": "checkbox", "label": "Modified?", "typehint": "boolean", - "hint": "Has the initial model been modified from the original?" + "hint": "Has the initial model been modified from the original?", + "example": { + "value": "True" + }, + "placeholder": "True" } } }, @@ -1655,13 +2023,20 @@ "options": [ "LIPID21" ], - "multiple": false + "multiple": false, + "example": { + "value": "LIPID21" + } }, "modified": { "type": "checkbox", "label": "Modified?", "typehint": "boolean", - "hint": "Has the initial model been modified from the original?" + "hint": "Has the initial model been modified from the original?", + "example": { + "value": "True" + }, + "placeholder": "True" } } }, @@ -1688,13 +2063,20 @@ "bsc1", "terminal_monophosphate" ], - "multiple": false + "multiple": false, + "example": { + "value": "ff99OL3" + } }, "modified": { "type": "checkbox", "label": "Modified?", "typehint": "boolean", - "hint": "Has the initial model been modified from the original?" + "hint": "Has the initial model been modified from the original?", + "example": { + "value": "True" + }, + "placeholder": "True" } } }, @@ -1713,13 +2095,20 @@ "GLYCAM_06EP", "GLYCAM_06j-1" ], - "multiple": false + "multiple": false, + "example": { + "value": "GLYCAM06" + } }, "modified": { "type": "checkbox", "label": "Modified?", "typehint": "boolean", - "hint": "Has the initial model been modified from the original?" + "hint": "Has the initial model been modified from the original?", + "example": { + "value": "True" + }, + "placeholder": "True" } } }, @@ -1736,13 +2125,20 @@ "options": [ "LignAmb25" ], - "multiple": false + "multiple": false, + "example": { + "value": "LignAmb25" + } }, "modified": { "type": "checkbox", "label": "Modified?", "typehint": "boolean", - "hint": "Has the initial model been modified from the original?" + "hint": "Has the initial model been modified from the original?", + "example": { + "value": "True" + }, + "placeholder": "True" } } }, @@ -1764,13 +2160,20 @@ "GROMOS", "CHARMM" ], - "multiple": false + "multiple": false, + "example": { + "value": "GAFF2" + } }, "modified": { "type": "checkbox", "label": "Modified?", "typehint": "boolean", - "hint": "Has the initial model been modified from the original?" + "hint": "Has the initial model been modified from the original?", + "example": { + "value": "True" + }, + "placeholder": "True" } } }, @@ -1791,13 +2194,20 @@ "UMA", "AceFF" ], - "multiple": false + "multiple": false, + "example": { + "value": "ANI" + } }, "modified": { "type": "checkbox", "label": "Modified?", "typehint": "boolean", - "hint": "Has the initial model been modified from the original?" + "hint": "Has the initial model been modified from the original?", + "example": { + "value": "True" + }, + "placeholder": "True" } } } @@ -1824,7 +2234,10 @@ "Cloud VM", "Local" ], - "multiple": false + "multiple": false, + "example": { + "value": "HPC Cluster" + } }, "node_type": { "type": "select", @@ -1835,13 +2248,19 @@ "GPU Accelerated", "Hybrid CPU GPU" ], - "multiple": false + "multiple": false, + "example": { + "value": "CPU Only" + } }, "node_count": { "type": "text", "label": "Node Count", "typehint": "integer", "hint": "Number of compute nodes used for the run.", + "example": { + "value": "2" + }, "min": 1 }, "CPU_vendor": { @@ -1854,7 +2273,10 @@ "ARM", "Other" ], - "multiple": false + "multiple": false, + "example": { + "value": "AMD" + } }, "CPU_architecture": { "type": "select", @@ -1864,13 +2286,19 @@ "x86", "ARM" ], - "multiple": false + "multiple": false, + "example": { + "value": "x86" + } }, "sockets_per_node": { "type": "text", "label": "Sockets Per Node", "typehint": "integer", "hint": "Number of physical CPU sockets in each compute node.", + "example": { + "value": 2 + }, "min": 1 }, "cores_per_socket": { @@ -1878,6 +2306,9 @@ "label": "Cores Per Socket", "typehint": "integer", "hint": "Number of physical CPU cores in each socket.", + "example": { + "value": 2 + }, "min": 1 }, "threads_per_core": { @@ -1885,6 +2316,9 @@ "label": "Threads Per Core", "typehint": "integer", "hint": "Number of hardware threads per physical core.", + "example": { + "value": 2 + }, "min": 1 }, "GPU_vendor": { @@ -1897,13 +2331,19 @@ "Intel", "None" ], - "multiple": false + "multiple": false, + "example": { + "value": "AMD" + } }, "GPUs_per_node": { "type": "text", "label": "GPUs Per Node", "typehint": "integer", "hint": "Number of GPUs present in each compute node.", + "example": { + "value": 1 + }, "min": 0 }, "memory_per_node": { @@ -1928,6 +2368,10 @@ "multiple": false, "default": "GB" } + }, + "example": { + "value": 2, + "value_unit": "GB" } } } @@ -1947,7 +2391,10 @@ "macOS", "Windows" ], - "multiple": false + "multiple": false, + "example": { + "value": "Linux" + } }, "scheduler": { "type": "select", @@ -1960,7 +2407,10 @@ "SGE", "None" ], - "multiple": false + "multiple": false, + "example": { + "value": "SLURM" + } }, "MPI_library": { "type": "select", @@ -1973,7 +2423,10 @@ "MVAPICH2", "None" ], - "multiple": false + "multiple": false, + "example": { + "value": "OpenMPI" + } }, "container_runtime": { "type": "select", @@ -1985,7 +2438,10 @@ "Podman", "None" ], - "multiple": false + "multiple": false, + "example": { + "value": "Docker" + } } } }, @@ -2020,8 +2476,12 @@ "fs" ], "multiple": false, - "default": "ns" + "default": "s" } + }, + "example": { + "value": 3600, + "value_unit": "s" } }, "energy_consumption": { @@ -2045,6 +2505,10 @@ "multiple": false, "default": "kWh" } + }, + "example": { + "value": 0.119, + "value_unit": "kWh" } } } diff --git a/tests/test_validation/valid_data/test.json b/tests/test_validation/valid_data/test.json index e61415c..8538c95 100644 --- a/tests/test_validation/valid_data/test.json +++ b/tests/test_validation/valid_data/test.json @@ -6,7 +6,7 @@ "integrator_algorithm": "Leap-frog", "time_step": { "value": 0.0, - "value_unit": "ps" + "value_unit": "s" } }, "ensemble": { @@ -56,10 +56,13 @@ "value_unit": "bar" }, "pressure_time_constant": { - "value": 2, - "value_unit": "ps" + "value": 0.0, + "value_unit": "s" + }, + "pressure_coupling_frequency": { + "value": 50, + "value_unit": "1/ps" }, - "pressure_coupling_frequency": 50, "pressure_coupling_type": "isotropic" }, "thermostat": { @@ -73,10 +76,10 @@ }, "temperature_time_constant": { "vector_value": [ - 0.1, - 0.1 + 0.0, + 0.0 ], - "value_unit": "ps" + "value_unit": "s" }, "chain_length": 0, "friction_coefficient": { diff --git a/tests/test_validation/valid_data/test.yaml b/tests/test_validation/valid_data/test.yaml index 1bde1e5..7769776 100644 --- a/tests/test_validation/valid_data/test.yaml +++ b/tests/test_validation/valid_data/test.yaml @@ -41,7 +41,9 @@ settings: pressure_time_constant: value: 2 value_unit: ps - pressure_coupling_frequency: 50 + pressure_coupling_frequency: + value: 50 + value_unit: 1/ps pressure_coupling_type: isotropic thermostat: thermostat_algorithm: Berendsen From 97f2b341ed0507067dcdad9291266e249e6a8ca5 Mon Sep 17 00:00:00 2001 From: Jas Kalayan Date: Fri, 19 Jun 2026 17:33:00 +0100 Subject: [PATCH 2/2] remove cron from CI --- .github/workflows/biosim_schema_project-ci.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/biosim_schema_project-ci.yaml b/.github/workflows/biosim_schema_project-ci.yaml index 3f29125..03e84b3 100644 --- a/.github/workflows/biosim_schema_project-ci.yaml +++ b/.github/workflows/biosim_schema_project-ci.yaml @@ -4,8 +4,6 @@ on: push: branches: [main] pull_request: - schedule: - - cron: '0 8 * * 1-5' workflow_dispatch: jobs: