start a tools/json folder with molecule schema and README
This commit is contained in:
45
tools/json/README.md
Normal file
45
tools/json/README.md
Normal file
@ -0,0 +1,45 @@
|
||||
This folder contains files and tools for creating, modifying, and validating
|
||||
files in JSON format. This is work in progress while we are adding JSON
|
||||
support
|
||||
|
||||
# JSON file format validation.
|
||||
|
||||
## JSON-Schema files
|
||||
|
||||
We provide schema files for the file formats that LAMMPS supports following
|
||||
the specifications available on [JSON-Schema](https://json-schema.org) webpage.
|
||||
The following files are currently available.
|
||||
|
||||
- `molecule-schema.json` Schema file for the JSON format molecule files.
|
||||
|
||||
These files provide a concise description of the hierarchy and supported fields
|
||||
in JSON file formats. Thus they provide a detailed documentation and can also
|
||||
be used for validating JSON files.
|
||||
|
||||
## Validation of JSON files
|
||||
|
||||
There are multiple tools for JSON file validation available. Here are instructions
|
||||
for how to use a tool called `check-jsonschema` which is available via
|
||||
[PyPi](https://pypi.org/).
|
||||
|
||||
``` bash
|
||||
# Installation into a virtual environment.
|
||||
# Once installed only the activation should be needed
|
||||
python3 -m venv validate-json
|
||||
source validata-json/bin/activate
|
||||
pip install --upgrade pip
|
||||
pip install check-jsonschema
|
||||
|
||||
# Validation of two molecule files "rxn1.json" and "twomols.json" with "molecule-schema.json"
|
||||
check-jsonschema --schemafile molecule-schema.json rxn1.json twomols.json
|
||||
```
|
||||
|
||||
If the files are conforming there should be the output:
|
||||
```
|
||||
ok -- validation done
|
||||
```
|
||||
Otherwise details about the non-conforming fields are given.
|
||||
|
||||
-------
|
||||
|
||||
updated by Axel Kohlmeyer, 2025-05-22
|
||||
134
tools/json/molecule-schema.json
Normal file
134
tools/json/molecule-schema.json
Normal file
@ -0,0 +1,134 @@
|
||||
{
|
||||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||
"$id": "https://download.lammps.org/json/molecule-schema.json",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"application": { "enum": ["LAMMPS"]},
|
||||
"format": {"enum": ["molecule"]},
|
||||
"revision": {
|
||||
"type": "integer",
|
||||
"minimum": 1,
|
||||
"maximum": 1
|
||||
},
|
||||
"title": {"type": "string"},
|
||||
"docs": {"type": "string"},
|
||||
"schema": {"type": "string"},
|
||||
"com": {"type": "array",
|
||||
"prefixItems": [
|
||||
{"type": "number"},
|
||||
{"type": "number"},
|
||||
{"type": "number"}
|
||||
],
|
||||
"items": false
|
||||
},
|
||||
"masstotal": {"type": "number"},
|
||||
"body": {"type": "array",
|
||||
"prefixItems": [
|
||||
{"type": "integer"},
|
||||
{"type": "integer"}
|
||||
],
|
||||
"items": false
|
||||
},
|
||||
"inertia": {"type": "array",
|
||||
"prefixItems": [
|
||||
{"type": "number"},
|
||||
{"type": "number"},
|
||||
{"type": "number"},
|
||||
{"type": "number"},
|
||||
{"type": "number"},
|
||||
{"type": "number"}
|
||||
],
|
||||
"items": false
|
||||
},
|
||||
"coords": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"format": {
|
||||
"type": "array",
|
||||
"prefixItems": [
|
||||
{"enum": ["atom-id"]},
|
||||
{"enum": ["x"]},
|
||||
{"enum": ["y"]},
|
||||
{"enum": ["z"]}
|
||||
],
|
||||
"items": false
|
||||
},
|
||||
"data": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "array",
|
||||
"prefixItems": [
|
||||
{"type": "integer"},
|
||||
{"type": "number"},
|
||||
{"type": "number"},
|
||||
{"type": "number"}
|
||||
],
|
||||
"items": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"types": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"format": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "array",
|
||||
"prefixItems": [
|
||||
{"type": "number"},
|
||||
{"type": ["number", "string"]}
|
||||
],
|
||||
"items": false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"molecules": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"format": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"charges": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"format": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"data": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "number"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user