Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding the trajectories endpoint to OPTIMADE #377

Open
wants to merge 70 commits into
base: develop
Choose a base branch
from
Open
Changes from 68 commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
f49193d
Added specification for the trajectories endpoint
JPBergsma Jul 20, 2021
95092cd
Made corrections to the indentation levels
JPBergsma Jul 20, 2021
a291b59
Multiple small corrections for the trajectories entry
JPBergsma Jul 20, 2021
66556cc
Changed layout JSON code blocks under Examples of a returned trajectory.
JPBergsma Jul 22, 2021
2b841b3
Changed indentation level relationships field and no longer discuss r…
JPBergsma Jul 22, 2021
f4c8e0f
Processed remarks Gian-Marco + minor changes
JPBergsma Jul 26, 2021
05ddb3d
Removed the next_part_trajectory field from the definition as it is a…
JPBergsma Jul 27, 2021
ee8f3dc
Replaced \_ with _ where pandoc did not interpreted \ correctly as es…
JPBergsma Jul 28, 2021
94d2e63
Merge branch 'develop' into JPBergsma_add_Trajectories
JPBergsma Aug 3, 2021
b05bf39
Merge branch 'Materials-Consortia:develop' into JPBergsma_add_Traject…
JPBergsma Aug 23, 2021
fc869a8
added a few more internal links
JPBergsma Aug 30, 2021
5012aed
Merge branch 'Materials-Consortia:develop' into JPBergsma_add_Traject…
JPBergsma Sep 9, 2021
03a194c
Merge branch 'JPBergsma_add_Trajectories' of https://github.com/JPBer…
JPBergsma Sep 9, 2021
0ae7af8
Apply suggestions from code review Giovanni
JPBergsma Sep 9, 2021
7182828
Merge branch 'JPBergsma_add_Trajectories' of https://github.com/JPBer…
JPBergsma Sep 9, 2021
d523efb
added comments Giovani
JPBergsma Sep 13, 2021
84f007c
processed remarks Giovanni
JPBergsma Sep 15, 2021
4dd22d3
Updated examples; specified that the values field is a list; and e fe…
JPBergsma Sep 15, 2021
1ec442d
Placed each sentecnce on a separate line.
JPBergsma Dec 15, 2021
ff99f2e
Merge branch 'develop' into JPBergsma_add_Trajectories
JPBergsma Dec 15, 2021
5ae4993
removed excess tilde
JPBergsma Dec 16, 2021
b52d5a7
Merge branch 'JPBergsma_add_Trajectories' of https://github.com/JPBer…
JPBergsma Dec 16, 2021
e2c7f2c
replaced reference to section 7.3.1-4 with links to the subsections
JPBergsma Dec 16, 2021
18f54c8
added link to "Retrieving trajectory data" from the introduction sect…
JPBergsma Dec 16, 2021
5058ce7
changed the formatting of properties in trajectories section.
JPBergsma Dec 16, 2021
1769178
Corrected spelling mistake
JPBergsma Dec 17, 2021
df284d8
Changed "fields" to "properties at the start of the "Retrieving the t…
JPBergsma Dec 17, 2021
57b801d
Readded uneccesary escape backslashes for underscores so the differen…
JPBergsma Dec 17, 2021
5bbef72
Added example query to show how fields within the reference structure…
JPBergsma Dec 17, 2021
e8af14d
Added that the query parameters first_frame, last_frame and frame_ste…
JPBergsma Dec 17, 2021
e69f8f6
changed frame serialization to frame_serialization_format under in th…
JPBergsma Dec 17, 2021
aed3e17
removed sentence about only returning trajectory data when the proper…
JPBergsma Dec 17, 2021
875f6cc
Removed undetected trailing white space.
JPBergsma Dec 17, 2021
c8d8769
Added missing comma in example available_properties.
JPBergsma Mar 4, 2022
9aadfca
Made the frame index start from 1.
JPBergsma Jun 2, 2022
beaea22
Merge branch 'develop' into JPBergsma_add_Trajectories
JPBergsma Sep 23, 2022
c817004
Processed comments Merkys.
JPBergsma Sep 28, 2022
b51758d
Removed frame and trajectory from Definition of Terms.
JPBergsma Sep 28, 2022
bb6acaa
Further improvements to JSON examples.
JPBergsma Sep 28, 2022
fe6f0d7
Capitalized Structures Entries when referring to section 8.2.
JPBergsma Sep 28, 2022
3789943
removed commas from JSON comment lines.
JPBergsma Sep 29, 2022
5ba755f
Removed lines which stated queries must be performed on the propertie…
JPBergsma Sep 29, 2022
e8c5577
Apply suggestions from code review rartino
JPBergsma Sep 29, 2022
bd3bbd8
processed remark rartino and removed trailing whitespace.
JPBergsma Sep 29, 2022
c32c477
removed trailing white space
JPBergsma Sep 29, 2022
952ef2a
Apply suggestions from code review ml-evs
JPBergsma Oct 4, 2022
4958296
Added extra explanation to field nframes.
JPBergsma Oct 4, 2022
a6cd494
Add remark rartino
JPBergsma Oct 6, 2022
d210a97
Changed MUST to SHOULD for the support level of theg first_frame, las…
JPBergsma Oct 15, 2022
bded2a9
Merge branch 'JPBergsma_add_Trajectories' of https://github.com/JPBer…
JPBergsma Nov 29, 2022
6e82a48
Merge branch 'develop' into JPBergsma_add_Trajectories
JPBergsma Nov 29, 2022
9d0df98
Removed Available properties field.
JPBergsma Dec 7, 2022
c0beb50
Merge branch 'develop' into JPBergsma_add_Trajectories
JPBergsma Dec 7, 2022
a73f5c1
removed last reference to solely using the reference structure for qu…
JPBergsma Dec 7, 2022
a65f586
Removed reference to using the response_field parameter to trigger re…
JPBergsma Dec 8, 2022
7975f03
Merge branch 'develop' into JPBergsma_add_Trajectories
JPBergsma Mar 16, 2023
9b75254
Updated description trajectory endpoint for new ranged property defin…
JPBergsma Mar 20, 2023
68b074e
Updated examples for the changes in the metadata and ranged propertie…
JPBergsma Jun 2, 2023
b5a72e7
Added returned_range_field to example.
JPBergsma Jun 2, 2023
3a0b503
some small changes.
JPBergsma Jun 2, 2023
399c6d7
corrected indexes field in example.
JPBergsma Jun 2, 2023
64714f8
Merge branch 'develop' into JPBergsma_add_Trajectories
JPBergsma Jun 29, 2023
75a97ba
Apply suggestions from code review
JPBergsma Jun 29, 2023
5cd0f98
intermediate state updating trajectory proposal for new developments.
JPBergsma Jun 29, 2023
92d0300
Updated example.
JPBergsma Jun 30, 2023
bea17d9
Small corrections
JPBergsma Jul 4, 2023
b351d46
Apated PR for moving range_ids to property definitions.
JPBergsma Jul 6, 2023
af26757
Changed reference_frame to reference_frames as it is now a list which…
JPBergsma Sep 13, 2023
2023e7f
Update optimade.rst
merkys Jan 18, 2024
68648d0
Update optimade.rst
giovannipizzi Jul 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
200 changes: 197 additions & 3 deletions optimade.rst
Original file line number Diff line number Diff line change
Expand Up @@ -1088,7 +1088,7 @@ Examples:

- :query-url:`http://example.com/optimade/v1/structures?_exmpl_key=A3242DSFJFEJE`
- :query-url:`http://example.com/optimade/v1/structures?_exmpl_warning_verbosity=10`
- :query-url:`http://example.com/optimade/v1/structures?\_exmpl\_filter="elements all in [Al, Si, Ga]"`
- :query-url:`http://example.com/optimade/v1/structures?_exmpl_filter="elements all in [Al, Si, Ga]"`

**Note**: the specification presently makes no attempt to standardize access control mechanisms.
There are security concerns with access control based on URL tokens, and the above example is not to be taken as a recommendation for such a mechanism.
Expand Down Expand Up @@ -1303,6 +1303,7 @@ Example:
"entry_types_by_format": {
"json": [
"structures",
"trajectories",
"calculations"
],
"xml": [
Expand All @@ -1311,6 +1312,7 @@ Example:
},
"available_endpoints": [
"structures",
"trajectories",
"calculations",
"info",
"links"
Expand Down Expand Up @@ -1746,7 +1748,6 @@ The following tokens are used in the filter query component:
- :property:`_exmpl_formula_sum` (a property specific to that database)
- :property:`_exmpl_band_gap`
- :property:`_exmpl_supercell`
- :property:`_exmpl_trajectory`
- :property:`_exmpl_workflow_id`

- **Nested property names** A nested property name is composed of at least two identifiers separated by periods (``.``).
Expand Down Expand Up @@ -2466,6 +2467,7 @@ type
- **Examples**:

- :val:`"structures"`
- :val:`"trajectories"`

immutable\_id
~~~~~~~~~~~~~
Expand Down Expand Up @@ -2522,7 +2524,6 @@ database-provider-specific properties
- :property:`_exmpl_formula_sum`
- :property:`_exmpl_band_gap`
- :property:`_exmpl_supercell`
- :property:`_exmpl_trajectory`
- :property:`_exmpl_workflow_id`

Structures Entries
Expand Down Expand Up @@ -3068,6 +3069,199 @@ structure\_features

- A structure having implicit atoms and using assemblies: :val:`["assemblies", "implicit_atoms"]`

Trajectories Entries
--------------------

- **Description**: The :entry:`trajectories` entry is used to share data belonging to sequences of structures, for example, from molecular dynamics or Monte Carlo simulations.

The individual steps of the trajectories are called frames.
Some examples of the data that can be shared are the particle positions, the pressure and the energies.
:entry:`trajectories` entries have the properties described in the section `Properties Used by Multiple Entry Types`_ as well as the property `nframes`_ and `reference_frames`_.
Furthermore, :entry:`trajectories` can optionally have relationships and database-specific fields.
The properties defined for the structures endpoint can also be used for trajectories.
In this case the values of these properties are however lists of whatever type has been defined for the original structures property.
This allows these properties to change during the trajectory.
The dimension that corresponds to the steps of the trajectory MUST have :field:`range_id` = :val:`"frames"` for that dimension in its property definition, See `Property Definition keys from JSON Schema`_.

nframes
~~~~~~~

- **Description**: The number of frames in the trajectory as exposed by the API.
This value may deviate from the number of steps used to calculate the trajectory.
E.g., for a 10 ps simulation with calculation steps of 1 fs where data is stored once every 50 fs, nframes = 200.
- **Type**: integer
- **Requirements/Conventions**:

- **Support**: MUST be supported by all implementations, i.e., MUST NOT be :val:`null`.
- **Query**: MUST be a queryable property with support for all mandatory filter features.
- The integer value MUST be equal to the length of the trajectory, that is, the number of frames.
- The integer MUST be a positive non-zero value.

- **Querying**:

- A filter that matches trajectories that have exactly 100 frames:
- :filter:`nframes=100`
- A filter that matches trajectories that have between 100 and 1000 frames:
- :filter:`nframes>=100 AND nframes<=1000`

- **Examples**:

- :val:`42`

reference_frames
~~~~~~~~~~~~~~~
merkys marked this conversation as resolved.
Show resolved Hide resolved

- **Description**: The indexes of a set of frames that give a good but very brief overview of the trajectory.
The first frame could for example be a starting configuration, the second a transition state and the third the final state.
- **Type**: list of integers
- **Requirements/Conventions**: The values MUST be larger than or equal to 0 and less than nframes.

JPBergsma marked this conversation as resolved.
Show resolved Hide resolved
- **Support**: OPTIONAL support in implementations, i.e., MAY be :val:`null`.
- **Query**: Support for queries on this property is OPTIONAL.
If supported, filters MAY support only a subset of comparison operators.

- **Examples**:

- :val:`[0, 397, 1000]`


Examples of a returned trajectory
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

This is an example of the data field of a JSON object that could be returned after the following query:
:query-url:`http://example.com/optimade/v1/trajectories/traj00000001`

.. code:: jsonc

{
"data":{
"id": "traj00000001",
"type": "trajectories",
"attributes": {
"last_modified":"2021-07-16T18:02:03Z",
"elements": [["H","O"]],
"nelements": [2],
"elements_ratios": [[0.666667,0.333333]],
"chemical_formula_descriptive": ["H2O"],
"chemical_formula_reduced": ["H2O"],
"chemical_formula_anonymous": ["A2B"],
"dimension_types":[[0,0,0]],
"nperiodic_dimensions": [0],
"lattice_vectors" : [[[4.0,0.0,0.0],[0.0,4.0,0.0],[0.0,0.0,4.0]]],
"cartesian_site_positions" : null,
"nsites":[3],
"species_at_sites":[["O1","H1","H2"]],
"species":[[
{
"name":"O1",
"chemical_symbols":["O"],
"concentration":[1.0]
},
{
"name":"H1",
"chemical_symbols":["H"],
"concentration":[1.0]
},
{
"name":"H2",
"chemical_symbols":["H"],
"concentration":[1.0]
}
]],
"reference_frames": [1],
"nframes": [360],
"_exmpl_temperature": null,
"_exmpl_ekin": null
},
"meta":{
"property_metadata":{
"cartesian_site_positions":{
"range":{
"indexable_dim": ["frames"],
"data_range": [{
"start": 1,
"step": 1,
"stop": 360,
},{
"start": 1,
"step": 1,
"stop": 3,
},{
"start": 1,
"step": 1,
"stop": 3,
}],
"layout":"dense",
"nvalues": 3240
},
},
"_exmpl_temperature":{
"range": {
"nvalues": 144,
"indexable_dim": ["frames"],
"data_range": [
{
"start": 1,
"stop": 360,
"step": null
}
],
"layout": "sparse"
}
},
"_exmpl_ekin":{
"range": {
"nvalues": 180,
"indexable_dim": ["frames"],
"data_range": [
{
"start": 1,
"stop": 360,
"step": 2
}
],
"layout":"dense",
}
}
},
"partial_data_links": {
"cartesian_site_positions": [
{
"format": "jsonlines",
"link": "https://example.org/optimade/v1.2/extensions/partial_data/trajectories/traj00000001/cartesian_site_positions/jsonlines"
},{
"format": "_exmpl_xyz",
"link": "https://example.org/optimade/v1.2/extensions/partial_data/trajectories/traj00000001/cartesian_site_positions/xyz"
},
],
"_exmpl_temperature": [
{
"format": "jsonlines",
"link": "https://example.org/optimade/v1.2/extensions/partial_data/trajectories/traj00000001/temperature/jsonlines"
},
],
"_exmpl_ekin": [
{
"format": "jsonlines",
"link": "https://example.org/optimade/v1.2/extensions/partial_data/trajectories/traj00000001/ekin/jsonlines"
},
]
}
},
"relationships": {
"references": {
"data": [
{
"type": "references",
"id": "dummy/2019"
}
]
}
}
}
//...
}
giovannipizzi marked this conversation as resolved.
Show resolved Hide resolved

Calculations Entries
--------------------

Expand Down
Loading