pyerrors/examples/json_schema.json
2022-02-22 09:31:01 +01:00

343 lines
8.4 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema",
"$id": "https://github.com/fjosw/pyerrors/tree/develop/examples/json_schema.json",
"type": "object",
"title": "pyerrors JSON file format",
"description": "Schema to validate JSON files according to the pyerrors file format 1.0.",
"required": [
"obsdata"
],
"optional": [
"program",
"version",
"who",
"date",
"host",
"description"
],
"properties": {
"program": {
"type": "string",
"description": "The program that was used to write the file",
"examples": [
"pyerrors"
]
},
"version": {
"type": "string",
"description": "The version of the file format.",
"examples": [
"1.0"
]
},
"who": {
"type": "string",
"description": "The username of the creator of this file."
},
"date": {
"type": "string",
"description": "Date, when this file has been written.",
"examples": [
"2021-11-29 09:55:05"
]
},
"host": {
"type": "string",
"description": "Hostname of the machine where the file has been written."
},
"description": {
"type": ["number","string","boolean","object","array","null"],
"description": "A description of the content of the file."
},
"obsdata": {
"type": "array",
"description": "Contains the actual data. One entry per structure. A structure is either a single Obs or a one-dimensional representation of a multi-dimensional object (list, array, Corr). Each Obs inside a structure has to be defined on the same set of configs.",
"items": {
"$ref": "#/$defs/obsdata_items"
}
}
},
"$defs": {
"obsdata_items": {
"type": "object",
"description": "Contains the information for one structure of Observables.",
"required": [
"type",
"value"
],
"optional": [
"layout",
"tag",
"reweighted",
"data",
"cdata"
],
"properties": {
"type": {
"type": "string",
"description": "Specifies the type of the structure, needed for the correct parsing of flattened structures.",
"examples": [
"Obs", "List", "Array", "Corr"
]
},
"layout": {
"type": "string",
"description": "The layout of the structure. One entry per dimension, separated by commas",
"default": "1",
"examples": [
"1", "1, 2", "2, 2, 4"
]
},
"value": {
"type": "array",
"description": "The mean values of all Obs inside the structure.",
"examples": [
[1.2],
[2.3, 2.1, 3.1]
],
"items": [{
"type": "number",
"description": "A mean value of an Obs."
}]
},
"tag": {
"type": ["number","string","boolean","object","array","null"],
"description": "Optional descriptor of the structure."
},
"reweighted": {
"type": "boolean",
"description": "May be used to specify whether the Obs inside the structure have been reweighted."
},
"data": {
"type": "array",
"description": "Contains the data for each ensemble.",
"items": {
"$ref": "#/$defs/ensdata_items"
}
},
"cdata": {
"type": "array",
"description": "Contains the data for each covariance matrix.",
"items": {
"$ref": "#/$defs/cdata_items"
}
}
}
},
"ensdata_items": {
"type": "object",
"description": "The data for one single ensemble",
"required": [
"id",
"replica"
],
"properties": {
"id": {
"type": "string",
"description": "The id of the ensemble"
},
"replica": {
"type": "array",
"description": "Contains the data for each replica of the ensemble.",
"items": {
"$ref": "#/$defs/repdata_items"
}
}
}
},
"repdata_items": {
"type": "object",
"description": "The data for one single replica",
"required": [
"name",
"deltas"
],
"properties": {
"name": {
"type": "string",
"description": "The name of the replica."
},
"deltas": {
"type": "array",
"description": "The actual data: Contains configuration numbers and the deltas, i.e., the deviations from the mean value, for each Obs inside the structure.",
"items": {
"$ref": "#/$defs/deltas_items"
}
}
}
},
"deltas_items": {
"type": "array",
"description": "First entry is the configuration number. Each further entry is the delta, i.e., the deviation from the mean value, for one Obs inside the structure.",
"prefixItems": [{
"type": "integer"
}],
"items": [{
"type": "number"
}]
},
"cdata_items": {
"type": "object",
"description": "Contains the data for one covariance matrix.",
"required": [
"id",
"layout",
"cov",
"grad"
],
"properties": {
"id": {
"type": "string",
"description": "The identifier of the covariance matrix."
},
"layout": {
"type": "string",
"description": "The layout of the NxN covariance matrix",
"examples": [
"1, 1", "2, 2"
]
},
"cov": {
"type": "array",
"description": "Contains the NxN covariance matrix, stored in row-major format.",
"items": [{
"type": "number"
}]
},
"grad": {
"type": "array",
"description": "The gradient of all Obs inside the structure with respect to the corresponding (diagonal) elements of the covariance matrix.",
"items": [{
"type": "array",
"description": "The gradient of all Obs with respect to the Ith element of the covariance matrix, where I is the position of this array inside grad.",
"items": [{
"type": "number"
}]
}]
}
}
}
},
"examples": [
{
"program": "pyerrors 2.0.0+dev",
"version": "1.0",
"who": "s-kuberski",
"date": "2022-02-16 12:59:09 +0100",
"host": "Hostname",
"obsdata": [
{
"type": "Obs",
"layout": "1",
"value": [
1.0
],
"data": [
{
"id": "A",
"replica": [
{
"name": "A|r1",
"deltas": [
[1, -4.579833517667820e-02],
[2, 1.272532469141094e-01],
[3, -7.042514710393744e-02],
[4, -4.800967024769492e-01],
[5, 2.967284377711763e-01],
[6, 3.156118966788146e-01],
[7, 1.139599354351861e-02],
[8, -1.546693901500542e-01]
]
},
{
"name": "A|r2",
"deltas": [
[1, 2.003189752235817e-01],
[2, 1.456782186748891e-01],
[3, -2.417953154609670e-01],
[4, 1.112557347812830e-01],
[5, -6.889549539458262e-02],
[6, 2.984543471692340e-01],
[7, -4.874803852180309e-01],
[8, 4.246392022459267e-02]
]
}
]
},
{
"id": "B",
"replica": [
{
"name": "B|r1",
"deltas": [
[1, -2.726195322210824e-01],
[2, 3.949288132215630e-01],
[3, -2.832514721110847e-01],
[4, -8.371015800402004e-02],
[5, 2.643463355004773e-01],
[6, -2.265154600267616e-02],
[7, -1.954084091845127e-01],
[8, 1.983659688013363e-01]
]
}
]
}
],
"cdata": [
{
"id": "#renorm",
"layout": "2, 2",
"cov": [1.000000000000000e-01, 5.000000000000000e-02, 5.000000000000000e-02, 2.000000000000000e-02],
"grad": [
[1.000000000000000e+00],
[0.000000000000000e+00]
]
}
]
},
{
"type": "List",
"layout": "2",
"value": [
1.2,
0.8333333333333334
],
"data": [
{
"id": "B",
"replica": [
{
"name": "B|r1",
"deltas": [
[1, 2.368958758731594e-01, 1.645110249119163e-01],
[2, 3.164596213857241e-01, 2.197636259623084e-01],
[3, -2.422021289001151e-01, -1.681959228473022e-01],
[4, 1.365207560473117e-01, 9.480608058841092e-02],
[5, -1.958565486752142e-02, -1.360114921355654e-02],
[6, -6.335145310374894e-01, -4.399406465538122e-01],
[7, 1.945374561549609e-02, 1.350954556631673e-02],
[8, 1.859723158834354e-01, 1.291474415857190e-01]
]
}
]
}
],
"cdata": [
{
"id": "renorm",
"layout": "2, 2",
"cov": [1.000000000000000e-01, 5.000000000000000e-02, 5.000000000000000e-02, 2.000000000000000e-02],
"grad": [
[1.000000000000000e+00, -6.944444444444444e-01],
[0.000000000000000e+00, 0.000000000000000e+00]
]
}
]
}
]
}
]
}