chema": "https://json-schema.org/draft/2020-12/schema",
    "$id": "https://download.lammps.org/json/fix-symmetry-schema.json",
    "title": "JSON schema for LAMMPS fix symmetry data files",
    "description": "Version 0.2; last updated 2026-10-27",
    "type": "object",
    "required": ["ops"],
    "additionalProperties": false,
    "patternProperties": {
        "^_": {
            "description": "Entries with names starting with an underscore are comments and ignored."
        }
    },
    "properties": {
        "group_name": {
            "type": "string",
            "description": "Optional descriptive name of the space group (e.g. 'P-1', 'Pm', 'P2_1/c'). Only used in the output of the fix."
        },
        "ops": {
            "description": "List of symmetry operators acting on fractional coordinates of the unit cell: s' = R*s + t. The identity must be included. The operators must form a group modulo lattice translations.",
            "type": "array",
            "minItems": 1,
            "items": {
                "oneOf": [
                    {
                        "description": "Operator in coordinate triplet notation as in the International Tables for Crystallography or CIF files, e.g. '-x,-y,z+1/2' or '-y,x-y,z'.",
                        "type": "string",
                        "pattern": "^[-+0-9xyzXYZ/.* ]+,[-+0-9xyzXYZ/.* ]+,[-+0-9xyzXYZ/.* ]+$"
                    },
                    {
                        "description": "Operator as an integer matrix R and a translation t.",
                        "type": "object",
                        "required": ["R", "t"],
                        "additionalProperties": false,
                        "properties": {
                            "R": {
                                "description": "3x3 integer matrix with determinant 1 or -1.",
                                "type": "array",
                                "minItems": 3,
                                "maxItems": 3,
                                "items": {
                                    "type": "array",
                                    "minItems": 3,
                                    "maxItems": 3,
                                    "items": {"type": "integer"}
                                }
                            },
                            "t": {
                                "description": "Fractional translation with 3 elements. Each may be a number (e.g. 0.5) or a fraction as a string (e.g. \"1/2\").",
                                "type": "array",
                                "minItems": 3,
                                "maxItems": 3,
                                "items": {
                                    "oneOf": [
                                        {"type": "number"},
                                        {"type": "string", "pattern": "^-?[0-9]+(/[0-9]+|\\.[0-9]*)?$"}
                                    ]
                                }
                            }
                        }
                    }
                ]
            }
        },
        "supercell": {
            "description": "Optional number of unit cells along the three box vectors. The operators are converted to fractional coordinates of the box and combined with all translations by a unit cell. Default [1, 1, 1].",
            "type": "array",
            "minItems": 3,
            "maxItems": 3,
            "items": {"type": "integer", "minimum": 1}
        }
    }
}

