diff --git a/README.rst b/README.rst index 504d40c..878ed21 100644 --- a/README.rst +++ b/README.rst @@ -61,18 +61,119 @@ Via GitHub (for developers): Usage ----- +``hepdata-validator`` allows you to validate (via the command line or python): + + * A full directory of submission and data files + * A zipped archive file containing all of the files (`full details `_) + * A `single submission file `_ + * Individual data and submission files (via python only) + +Command line +============ + +Installing ``hepdata-validator`` adds the command ``hepdata-validate`` to your path, which allows you to validate a +`HEPData submission `_ offline. + +Examples +^^^^^^^^ + +To validate a submission in the current directory: + +.. code:: bash + + $ hepdata-validate + +To validate a submission in another directory: + +.. code:: bash + + $ hepdata-validate -d ../TestHEPSubmission + +To validate a zip file in the current directory: + +.. code:: bash + + $ hepdata-validate -z TestHEPSubmission.zip + +To validate a single yaml file in the current directory: + +.. code:: bash + + $ hepdata-validate -f hep_submission.yaml + +Usage options +^^^^^^^^^^^^^ + +.. code:: bash + + $ hepdata-validate --help + Usage: hepdata-validate [OPTIONS] + + Offline validation of submission.yaml and YAML data files. Can check either + a single file or a directory + + Options: + -d, --directory TEXT Directory to check (defaults to current working + directory) + -f, --file TEXT Single submission yaml file to check - see + https://hepdata- + submission.readthedocs.io/en/latest/single_yaml.html. + (Overrides directory) + -z, --zipfile TEXT Zipped file (e.g. .zip, .tar.gz, .gzip) to check. + (Overrides directory and file) + --help Show this message and exit. + + +Python +====== + +Validating a full submission +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +To validate a full submission, instantiate a ``FullSubmissionValidator`` object: + +.. code:: python + + from hepdata_validator.full_submission_validator import FullSubmissionValidator + full_submission_validator = FullSubmissionValidator() + + # validate a directory + is_dir_valid = full_submission_validator.validate(directory='TestHEPSubmission') + + # or uncomment to validate a zipped archive + # is_zip_valid = full_submission_validator.validate(zipfile='TestHEPSubmission.zip') + + # or uncomment to validate a single file + # is_file_valid = full_submission_validator.validate(file='hep_submission.yaml') + + # if there are any error messages, they are retrievable through this call + full_submission_validator.get_messages() + + # the error messages can be printed + full_submission_validator.print_errors(submission_file_path) + + # the list of valid files can be retrieved via the `valid_files` property + full_submission_validator.valid_files + + # the list of valid files can be printed + full_submission_validator.print_valid_files() + + +Validating individual files +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + To validate submission files, instantiate a ``SubmissionFileValidator`` object: .. code:: python from hepdata_validator.submission_file_validator import SubmissionFileValidator - + submission_file_validator = SubmissionFileValidator() submission_file_path = 'submission.yaml' - + # the validate method takes a string representing the file path is_valid_submission_file = submission_file_validator.validate(file_path=submission_file_path) - + # if there are any error messages, they are retrievable through this call submission_file_validator.get_messages() @@ -83,14 +184,14 @@ To validate submission files, instantiate a ``SubmissionFileValidator`` object: To validate data files, instantiate a ``DataFileValidator`` object: .. code:: python - + from hepdata_validator.data_file_validator import DataFileValidator - + data_file_validator = DataFileValidator() - + # the validate method takes a string representing the file path data_file_validator.validate(file_path='data.yaml') - + # if there are any error messages, they are retrievable through this call data_file_validator.get_messages() @@ -106,12 +207,12 @@ for the error message lookup map. from hepdata_validator.data_file_validator import DataFileValidator import yaml - + file_contents = yaml.safe_load(open('data.yaml', 'r')) data_file_validator = DataFileValidator() - + data_file_validator.validate(file_path='data.yaml', data=file_contents) - + data_file_validator.get_messages('data.yaml') data_file_validator.print_errors('data.yaml') @@ -131,10 +232,6 @@ For the analogous case of the ``SubmissionFileValidator``: is_valid_submission_file = submission_file_validator.validate(file_path=submission_file_path, data=docs) submission_file_validator.print_errors(submission_file_path) -An example `offline validation script `_ -uses the ``hepdata_validator`` package to validate the ``submission.yaml`` file and all YAML data files of a -HEPData submission. - Schema Versions --------------- @@ -199,4 +296,4 @@ download them. However, in principle, for testing purposes, note that the same m schema_path = 'https://hepdata.net/submission/schemas/1.0.1/' schema_name = 'data_schema.json' -and passing a HEPData YAML data file as the ``file_path`` argument of the ``validate`` method. \ No newline at end of file +and passing a HEPData YAML data file as the ``file_path`` argument of the ``validate`` method. diff --git a/hepdata_validator/__init__.py b/hepdata_validator/__init__.py index 07518f4..7eb4228 100644 --- a/hepdata_validator/__init__.py +++ b/hepdata_validator/__init__.py @@ -24,12 +24,13 @@ import abc import os +from packaging import version as packaging_version from .version import __version__ __all__ = ('__version__', ) -VALID_SCHEMA_VERSIONS = ['1.0.1', '1.0.0', '0.1.0'] +VALID_SCHEMA_VERSIONS = ['1.1.0', '1.0.1', '1.0.0', '0.1.0'] LATEST_SCHEMA_VERSION = VALID_SCHEMA_VERSIONS[0] RAW_SCHEMAS_URL = 'https://raw.githubusercontent.com/HEPData/hepdata-validator/' \ @@ -48,22 +49,16 @@ def __init__(self, *args, **kwargs): self.default_schema_file = '' self.schemas = kwargs.get('schemas', {}) self.schema_folder = kwargs.get('schema_folder', 'schemas') - self.schema_version = kwargs.get('schema_version', LATEST_SCHEMA_VERSION) - if self.schema_version not in VALID_SCHEMA_VERSIONS: - raise ValueError('Invalid schema version ' + self.schema_version) + self.schema_version_string = kwargs.get('schema_version', LATEST_SCHEMA_VERSION) + if self.schema_version_string not in VALID_SCHEMA_VERSIONS: + raise ValueError('Invalid schema version ' + self.schema_version_string) + self.schema_version = packaging_version.parse(self.schema_version_string) - def _get_major_version(self): - """ - Parses the major version of the validator. - - :return: integer corresponding to the validator major version - """ - return int(self.schema_version.split('.')[0]) def _get_schema_filepath(self, schema_filename): full_filepath = os.path.join(self.base_path, self.schema_folder, - self.schema_version, + self.schema_version_string, schema_filename) if not os.path.isfile(full_filepath): diff --git a/hepdata_validator/cli.py b/hepdata_validator/cli.py new file mode 100644 index 0000000..a5de57b --- /dev/null +++ b/hepdata_validator/cli.py @@ -0,0 +1,30 @@ +import sys + +import click + +from .full_submission_validator import FullSubmissionValidator + + +@click.command() +@click.option('--directory', '-d', default='.', help='Directory to check (defaults to current working directory)') +@click.option('--file', '-f', default=None, help='Single submission yaml file to check - see https://hepdata-submission.readthedocs.io/en/latest/single_yaml.html. (Overrides directory)') +@click.option('--zipfile', '-z', default=None, help='Zipped file (e.g. .zip, .tar.gz, .gzip) to check. (Overrides directory and file)') +def validate(directory, file, zipfile): # pragma: no cover + """ + Offline validation of submission.yaml and YAML data files. + Can check either a single file or a directory + """ + file_or_dir_checked = zipfile if zipfile else (file if file else directory) + validator = FullSubmissionValidator() + is_valid = validator.validate(directory, file, zipfile) + if is_valid: + click.echo(f"{file_or_dir_checked} is valid.") + else: + click.echo(f"ERROR: {file_or_dir_checked} is invalid.") + + validator.print_valid_files() + for f in validator.messages.keys(): + validator.print_errors(f) + + if not is_valid: + sys.exit(1) diff --git a/hepdata_validator/data_file_validator.py b/hepdata_validator/data_file_validator.py index dc606be..36ffaae 100644 --- a/hepdata_validator/data_file_validator.py +++ b/hepdata_validator/data_file_validator.py @@ -34,6 +34,8 @@ from hepdata_validator import Validator, ValidationMessage from jsonschema import validate as json_validate, ValidationError +from jsonschema.validators import validator_for +from jsonschema.exceptions import by_relevance __author__ = 'eamonnmaguire' @@ -66,7 +68,7 @@ def load_custom_schema(self, type, schema_file_path=None): else: _schema_file = os.path.join(self.base_path, self.schema_folder, - self.schema_version, + self.schema_version_string, "{0}_schema.json".format(type)) with open(_schema_file, 'r') as f: @@ -117,9 +119,17 @@ def validate(self, **kwargs): json_validate(data, custom_schema) else: with open(self.default_schema_file, 'r') as f: - default_data_schema = json.load(f) - json_validate(data, default_data_schema) - if self._get_major_version() > 0: + data_schema = json.load(f) + # Create validator ourselves so we can tweak the errors + cls = validator_for(data_schema) + v = cls(data_schema) + # Make 'oneOf' errors more relevant to give better error + # messages about 'low' without 'high' etc + sort_fn = by_relevance(strong='oneOf') + for error in sorted(v.iter_errors(data), key=sort_fn): + raise error + + if self.schema_version.major > 0: check_for_zero_uncertainty(data) check_length_values(data) diff --git a/hepdata_validator/full_submission_validator.py b/hepdata_validator/full_submission_validator.py new file mode 100644 index 0000000..6eb1a5a --- /dev/null +++ b/hepdata_validator/full_submission_validator.py @@ -0,0 +1,230 @@ +import os.path +import shutil +import sys +import tempfile + +import yaml + +from hepdata_validator import Validator, ValidationMessage +from .submission_file_validator import SubmissionFileValidator +from .data_file_validator import DataFileValidator + +# We try to load using the CSafeLoader for speed improvements. +try: + from yaml import CSafeLoader as Loader + from yaml import CSafeDumper as Dumper +except ImportError: # pragma: no cover + from yaml import SafeLoader as Loader + from yaml import SafeDumper as Dumper + + +class FullSubmissionValidator(Validator): + + def __init__(self, *args, **kwargs): + super(FullSubmissionValidator, self).__init__(*args, **kwargs) + self.submission_file_validator = SubmissionFileValidator(args, kwargs) + self.data_file_validator = DataFileValidator(args, kwargs) + self.valid_files = [] + + def print_valid_files(self): + for file in self.valid_files: + print(f'\t {file} is valid HEPData YAML.') + + def validate(self, directory=None, file=None, zipfile=None): + """ + Offline validation of submission.yaml and YAML data files. + Can check either a single file or a directory. + + :param type directory: Directory to check (defaults to current working directory). + :param type file: Single submission yaml file to check (overrides directory if both are given) + :param type zipfile: Zipped file (e.g. .zip, .tar.gz, .gzip) to check (overrides directory and file if both are given) + :return: Bool showing whether the submission is valid + :rtype: type + """ + self.single_yaml_file = False + temp_directory = None + self.directory = directory + + try: + # Check input file/directory exists and is valid + if zipfile: + if not os.path.isfile(zipfile): + self.add_validation_message(ValidationMessage( + file=zipfile, message=f"File {zipfile} does not exist." + )) + return False + + # Try extracting file to a temp dir + temp_directory = tempfile.mkdtemp() + try: + shutil.unpack_archive(zipfile, temp_directory) + except Exception as e: + self.add_validation_message(ValidationMessage( + file=zipfile, message=f"Unable to extract file {zipfile}. Error was: {e}" + )) + return False + + # Find submission.yaml in extracted directory + for dir_name, _, files in os.walk(temp_directory): + for filename in files: + if filename == 'submission.yaml': + self.directory = dir_name + + if not self.directory: + self.add_validation_message(ValidationMessage( + file=zipfile, message=f"submission.yaml not found in {zipfile}." + )) + return False + + elif file: + if not os.path.isfile(file): + self.add_validation_message(ValidationMessage( + file=file, message=f"File {file} does not exist." + )) + return False + self.single_yaml_file = True + self.directory = None + else: + self.directory = directory if directory else '.' + if not os.path.isdir(self.directory): + self.add_validation_message(ValidationMessage( + file=self.directory, message=f"Directory {self.directory} does not exist." + )) + return False + + # Get location of the submission.yaml file or the single YAML file. + if self.single_yaml_file: + self.submission_file_path = file + else: + self.submission_file_path = os.path.join(self.directory, 'submission.yaml') + if not os.path.isfile(self.submission_file_path): + self.add_validation_message(ValidationMessage( + file=self.submission_file_path, message=f"No such file {self.submission_file_path}" + )) + return False + + # Open the submission.yaml file and load all YAML documents. + with open(self.submission_file_path, 'r') as stream: + try: + docs = list(yaml.load_all(stream, Loader=Loader)) + except yaml.YAMLError as e: + self.add_validation_message(ValidationMessage( + file=self.submission_file_path, message=f'{self.submission_file_path} is invalid YAML: {str(e)}' + )) + return False + + # Need to remove independent_variables and dependent_variables from single YAML file. + if self.single_yaml_file: + self._create_data_files(docs) + + # Validate the submission.yaml file + is_valid_submission_file = self.submission_file_validator.validate(file_path=self.submission_file_path, data=docs) + if not is_valid_submission_file: + self.add_validation_message(ValidationMessage( + file=self.submission_file_path, message=f'{self.submission_file_path} is invalid HEPData YAML.' + )) + for message in self.submission_file_validator.get_messages(self.submission_file_path): + self.add_validation_message(ValidationMessage( + file=self.submission_file_path, message=message.message + )) + return False + + # Loop over all YAML documents in the submission.yaml file. + for doc in docs: + is_valid_doc_in_submission_file = self._check_doc(doc) + if not is_valid_doc_in_submission_file: + is_valid_submission_file = False + + if is_valid_submission_file: + self.valid_files.insert(0, self.submission_file_path) + + return len(self.messages) == 0 + finally: + if temp_directory: + # Delete temporary Directory + shutil.rmtree(temp_directory) + + def _create_data_files(self, docs): + for doc in docs: + if 'name' in doc: + file_name = doc['name'].replace(' ', '_').replace('/', '-') + '.yaml' + doc['data_file'] = file_name + with open(file_name, 'w') as data_file: + yaml.dump({'independent_variables': doc.pop('independent_variables', None), + 'dependent_variables': doc.pop('dependent_variables', None)}, data_file, Dumper=Dumper) + + def _check_doc(self, doc): + # Skip empty YAML documents. + if not doc: + return True + + is_valid_submission_doc = True + + # Check for presence of local files given as additional_resources. + if 'additional_resources' in doc: + for resource in doc['additional_resources']: + if not resource['location'].startswith('http'): + location = os.path.join(self.directory, resource['location']) + if not os.path.isfile(location): + self.add_validation_message(ValidationMessage( + file=self.submission_file_path, message='%s is missing.' % location + )) + is_valid_submission_doc = False + elif '/' in resource['location']: + self.add_validation_message(ValidationMessage( + file=self.submission_file_path, message='%s should not contain "/".' % resource['location'] + )) + is_valid_submission_doc = False + + # Check for non-empty YAML documents with a 'data_file' key. + if 'data_file' in doc: + + # Check for presence of '/' in data_file value. + if '/' in doc['data_file']: + self.add_validation_message(ValidationMessage( + file=self.submission_file_path, message='%s should not contain "/".' % doc['data_file'] + )) + return False + + # Extract data file from YAML document. + data_file_path = self.directory + '/' + doc['data_file'] if self.directory else doc['data_file'] + if not os.path.isfile(data_file_path): + self.add_validation_message(ValidationMessage( + file=data_file_path, message='%s is missing.' % data_file_path + )) + return is_valid_submission_doc + + user_data_file_path = self.submission_file_path if self.single_yaml_file else data_file_path + + # Just try to load YAML data file without validating schema. + try: + contents = yaml.load(open(data_file_path, 'r'), Loader=Loader) + except yaml.YAMLError as e: + self.add_validation_message(ValidationMessage( + file=user_data_file_path, message=f'{user_data_file_path} is invalid YAML: {str(e)}' + )) + return is_valid_submission_doc + + # Validate the YAML data file + is_valid_data_file = self.data_file_validator.validate(file_path=data_file_path, data=contents) + if not is_valid_data_file: + table_msg = f" ({doc['name']})" if self.single_yaml_file else '' + self.add_validation_message(ValidationMessage( + file=user_data_file_path, message=f'{user_data_file_path}{table_msg} is invalid HEPData YAML.' + )) + if self.single_yaml_file: + is_valid_submission_doc = False + + is_valid_data_file = False + for message in self.data_file_validator.get_messages(data_file_path): + self.add_validation_message(ValidationMessage( + file=user_data_file_path, message=message.message + )) + elif not self.single_yaml_file: + self.valid_files.append(user_data_file_path) + + # For single YAML file, clean up by removing temporary data_file created above. + if self.single_yaml_file: + os.remove(doc['data_file']) + + return is_valid_submission_doc diff --git a/hepdata_validator/schemas/1.1.0/additional_info_schema.json b/hepdata_validator/schemas/1.1.0/additional_info_schema.json new file mode 100644 index 0000000..1b798d7 --- /dev/null +++ b/hepdata_validator/schemas/1.1.0/additional_info_schema.json @@ -0,0 +1,58 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://hepdata.net/submission/schemas/1.1.0/additional_info_schema.json", + "title": "Additional information", + "description": "Optional information concerning a whole submission rather than individual data tables", + "type": "object", + "properties": { + "record_ids": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { "type": [ "string" ] }, + "id": { "type": [ "string", "number" ] } + }, + "required": [ "type", "id" ], + "additionalProperties": false + } + }, + "preprintyear": { + "type": "string", + "title": "Preprint Year", + "description": "Indicates the year when the submission preprint was first available.", + "name": "preprintyear" + }, + "publicationyear": { + "type": "string", + "title": "Publication Year", + "description": "Indicates the year when the submission publication was available.", + "name": "publicationyear" + }, + "dateupdated": { + "type": "string", + "title": "Date Updated", + "description": "Indicates when the submission was last updated.", + "name": "dateupdated" + }, + "modifications": { + "type": "array", + "items": { + "type": "object", + "properties": { + "action": { "type": "string" }, + "who": { "type": "string" } + }, + "required": [ "action", "who" ] + } + }, + "additional_resources": { + "$ref": "additional_resources_schema.json" + }, + "comment": { + "type": "string", + "description": "Information that applies to all data tables." + } + }, + "additionalProperties": true +} diff --git a/hepdata_validator/schemas/1.1.0/additional_resources_schema.json b/hepdata_validator/schemas/1.1.0/additional_resources_schema.json new file mode 100644 index 0000000..98b1758 --- /dev/null +++ b/hepdata_validator/schemas/1.1.0/additional_resources_schema.json @@ -0,0 +1,26 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://hepdata.net/submission/schemas/1.1.0/additional_resources_schema.json", + "title": "Additional resources", + "type": "array", + "items": { + "type": "object", + "properties": { + "location": { "type": "string", "maxLength": 256 }, + "description": { "type": "string" }, + "type": { "type": "string", "maxLength": 64 }, + "license": { + "type": "object", + "properties": { + "name": { "type": "string", "maxLength": 256 }, + "url": { "type": "string", "maxLength": 256 }, + "description": { "type": "string" } + }, + "required": [ "name", "url" ], + "additionalProperties": false + } + }, + "required": [ "location", "description" ], + "additionalProperties": false + } +} diff --git a/hepdata_validator/schemas/1.1.0/data_schema.json b/hepdata_validator/schemas/1.1.0/data_schema.json new file mode 100644 index 0000000..2f3481d --- /dev/null +++ b/hepdata_validator/schemas/1.1.0/data_schema.json @@ -0,0 +1,120 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://hepdata.net/submission/schemas/1.1.0/data_schema.json", + "title": "Data table", + "description": "A HEPData table comprising independent_variables and dependent_variables", + "type": "object", + "properties": { + "independent_variables": { + "type": "array", + "items": { + "type": "object", + "properties": { + "header": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "units": { "type": "string" } + }, + "required": [ "name" ], + "additionalProperties": false + }, + "values": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "properties": { + "value": { "type": [ "string", "number" ] } + }, + "required": ["value"], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "low": { "type": "number" }, + "high": { "type": "number" } + }, + "required": ["low", "high"], + "additionalProperties": false + } + ] + } + } + }, + "required": [ "header", "values" ], + "additionalProperties": false + } + }, + "dependent_variables": { + "type": "array", + "items": { + "type": "object", + "properties": { + "header": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "units": { "type": "string" } + }, + "required": [ "name" ], + "additionalProperties": false + }, + "qualifiers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { "type": "string" }, + "value": { "type": [ "string", "number" ] }, + "units": { "type": "string" } + }, + "required": [ "name", "value" ], + "additionalProperties": false + } + }, + "values": { + "type": "array", + "items": { + "type": "object", + "properties": { + "value": { + "type": [ "string", "number" ] + }, + "errors": { + "type": "array", + "items": { + "type": "object", + "properties": { + "symerror": { "type": [ "number", "string" ] }, + "asymerror": { + "type": "object", + "properties": { + "minus": { "type": [ "number", "string" ] }, + "plus": { "type": [ "number", "string" ] } + }, + "required": [ "minus", "plus" ], + "additionalProperties": false + }, + "label": { "type": "string" } + }, + "oneOf": [{"required": [ "symerror" ]}, {"required": [ "asymerror" ]}], + "additionalProperties": false + } + } + }, + "required": [ "value" ], + "additionalProperties": false + } + } + }, + "required": [ "header", "values" ], + "additionalProperties": false + } + } + }, + "required": [ "independent_variables", "dependent_variables" ], + "additionalProperties": false +} diff --git a/hepdata_validator/schemas/1.1.0/submission_schema.json b/hepdata_validator/schemas/1.1.0/submission_schema.json new file mode 100644 index 0000000..d8e4260 --- /dev/null +++ b/hepdata_validator/schemas/1.1.0/submission_schema.json @@ -0,0 +1,51 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://hepdata.net/submission/schemas/1.1.0/submission_schema.json", + "title": "Submission table", + "description": "Metadata for a HEPData table apart from independent_variables and dependent_variables", + "type": "object", + "properties": { + "name": { "type": "string", "maxLength": 64 }, + "location": { "type": "string", "maxLength": 256 }, + "description": { "type": "string" }, + "keywords": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { "type": "string", "maxLength": 128, "enum": ["cmenergies", "observables", "reactions", "phrases"] }, + "values": { + "type": "array", + "items": { "type": [ "string", "number" ], "maxLength": 128 } + } + }, + "required": [ "name", "values" ], + "additionalProperties": false + } + }, + "data_file": { "type": "string" }, + "data_schema": { + "type": "string", + "description": "Remote location of the JSON schema for the data_file" + }, + "data_license": { + "type": "object", + "properties": { + "name": { "type": "string", "maxLength": 256 }, + "url": { "type": "string", "maxLength": 256 }, + "description": { "type": "string" } + }, + "required": [ "name", "url" ], + "additionalProperties": false + }, + "additional_resources": { + "$ref": "additional_resources_schema.json" + }, + "table_doi": { + "type": "string", + "description": "Present if a user downloads YAML from an existing HEPData record" + } + }, + "required": ["name", "description", "keywords", "data_file"], + "additionalProperties": false +} diff --git a/hepdata_validator/schemas/additional_info_schema.json b/hepdata_validator/schemas/additional_info_schema.json index 6badeee..88a536c 120000 --- a/hepdata_validator/schemas/additional_info_schema.json +++ b/hepdata_validator/schemas/additional_info_schema.json @@ -1 +1 @@ -1.0.1/additional_info_schema.json \ No newline at end of file +1.1.0/additional_info_schema.json \ No newline at end of file diff --git a/hepdata_validator/schemas/additional_resources_schema.json b/hepdata_validator/schemas/additional_resources_schema.json new file mode 120000 index 0000000..47f79fa --- /dev/null +++ b/hepdata_validator/schemas/additional_resources_schema.json @@ -0,0 +1 @@ +1.1.0/additional_resources_schema.json \ No newline at end of file diff --git a/hepdata_validator/schemas/data_schema.json b/hepdata_validator/schemas/data_schema.json index 9bf5c12..2d560f5 120000 --- a/hepdata_validator/schemas/data_schema.json +++ b/hepdata_validator/schemas/data_schema.json @@ -1 +1 @@ -1.0.1/data_schema.json \ No newline at end of file +1.1.0/data_schema.json \ No newline at end of file diff --git a/hepdata_validator/schemas/submission_schema.json b/hepdata_validator/schemas/submission_schema.json index 412f7a5..fd51831 120000 --- a/hepdata_validator/schemas/submission_schema.json +++ b/hepdata_validator/schemas/submission_schema.json @@ -1 +1 @@ -1.0.1/submission_schema.json \ No newline at end of file +1.1.0/submission_schema.json \ No newline at end of file diff --git a/hepdata_validator/submission_file_validator.py b/hepdata_validator/submission_file_validator.py index be6d91f..7d498ea 100644 --- a/hepdata_validator/submission_file_validator.py +++ b/hepdata_validator/submission_file_validator.py @@ -1,6 +1,7 @@ import json -from jsonschema import validate, ValidationError +from jsonschema import validate, ValidationError, RefResolver import os +from packaging import version as packaging_version import re import yaml from yaml.scanner import ScannerError @@ -23,11 +24,14 @@ class SubmissionFileValidator(Validator): base_path = os.path.dirname(__file__) submission_filename = 'submission_schema.json' additional_info_filename = 'additional_info_schema.json' + additional_resources_filename = 'additional_resources_schema.json' def __init__(self, *args, **kwargs): super(SubmissionFileValidator, self).__init__(*args, **kwargs) self.default_schema_file = self._get_schema_filepath(self.submission_filename) self.additional_info_schema = self._get_schema_filepath(self.additional_info_filename) + if self.schema_version >= packaging_version.parse("1.1.0"): + self.additional_resources_schema = self._get_schema_filepath(self.additional_resources_filename) def validate(self, **kwargs): """ @@ -50,6 +54,13 @@ def validate(self, **kwargs): with open(self.additional_info_schema, 'r') as additional_schema: additional_file_section_schema = json.load(additional_schema) + resolver = None + if self.schema_version >= packaging_version.parse("1.1.0"): + with open(self.additional_resources_schema, 'r') as additional_schema: + additional_resources_schema = json.load(additional_schema) + + resolver = RefResolver.from_schema(additional_resources_schema) + # even though we are using the yaml package to load, # it supports JSON and YAML data = kwargs.pop("data", None) @@ -62,20 +73,27 @@ def validate(self, **kwargs): data_file_handle = open(file_path, 'r') data = yaml.load_all(data_file_handle, Loader=Loader) + table_names = [] + table_data_files = [] for data_item_index, data_item in enumerate(data): if data_item is None: continue try: if not data_item_index and 'data_file' not in data_item: - validate(data_item, additional_file_section_schema) + validate(data_item, additional_file_section_schema, resolver=resolver) else: - validate(data_item, submission_file_schema) - if self._get_major_version() > 0: + validate(data_item, submission_file_schema, resolver=resolver) + if self.schema_version.major > 0: check_cmenergies(data_item) + table_names.append(data_item['name']) + table_data_files.append(data_item['data_file']) except ValidationError as ve: self.add_validation_error(file_path, ve) + if self.schema_version >= packaging_version.parse("1.1.0"): + self.check_for_duplicates(file_path, table_names, table_data_files) + if not self.has_errors(file_path): return_value = True @@ -101,6 +119,24 @@ def validate(self, **kwargs): return return_value + def check_for_duplicates(self, file_path, table_names, table_data_files): + for (key, items) in [('name', table_names), ('data_file', table_data_files)]: + seen = set() + duplicates = [] + + for x in items: + if x not in seen: + seen.add(x) + elif x not in duplicates: + duplicates.append(x) + + if duplicates: + for d in duplicates: + self.add_validation_message(ValidationMessage( + file=file_path, + message=f"Duplicate table {key}: {d}" + )) + def check_cmenergies(data_item): """ diff --git a/setup.py b/setup.py index 11b6aea..fc1a98d 100644 --- a/setup.py +++ b/setup.py @@ -83,12 +83,17 @@ def run_tests(self): platforms='any', extras_require=extras_require, install_requires=[ - "pyyaml>=5.4.1", + "click", "jsonschema", + "packaging", + "pyyaml>=5.4.1", "requests", ], test_suite='hepdata_validator.testsuite', tests_require=test_requirements, cmdclass={'test': PyTest}, - python_requires='>=3.6' + python_requires='>=3.6', + entry_points={ + 'console_scripts': ['hepdata-validate=hepdata_validator.cli:validate'], + } ) diff --git a/testsuite/test_cli.py b/testsuite/test_cli.py new file mode 100644 index 0000000..900d3ea --- /dev/null +++ b/testsuite/test_cli.py @@ -0,0 +1,70 @@ +import os + +from click.testing import CliRunner +import pytest + +from hepdata_validator.cli import validate + +@pytest.fixture(scope="module") +def data_path(): + base_dir = os.path.dirname(os.path.realpath(__file__)) + return os.path.join(base_dir, 'test_data') + + +@pytest.fixture(scope="module") +def cli_runner(): + return CliRunner() + + +def test_valid_submission_dir(data_path, cli_runner): + submission_dir = os.path.join(data_path, 'TestHEPSubmission') + result = cli_runner.invoke(validate, ['-d', submission_dir]) + assert result.exit_code == 0 + assert result.output == """{0} is valid. + {0}/submission.yaml is valid HEPData YAML. + {0}/data1.yaml is valid HEPData YAML. + {0}/data2.yaml is valid HEPData YAML. + {0}/data3.yaml is valid HEPData YAML. + {0}/data4.yaml is valid HEPData YAML. + {0}/data5.yaml is valid HEPData YAML. + {0}/data6.yaml is valid HEPData YAML. + {0}/data7.yaml is valid HEPData YAML. + {0}/data8.yaml is valid HEPData YAML. +""".format(submission_dir) + + +def test_valid_submission_zip(data_path, cli_runner): + submission_zip = os.path.join(data_path, 'TestHEPSubmission.zip') + result = cli_runner.invoke(validate, ['-z', submission_zip]) + assert result.exit_code == 0 + lines = result.output.splitlines() + assert lines[0] == f"{submission_zip} is valid." + assert lines[1].endswith("/submission.yaml is valid HEPData YAML.") + for i in list(range(1, 8)): + assert lines[i+1].endswith(f'data{i}.yaml is valid HEPData YAML.') + + +def test_valid_single_yaml(data_path, cli_runner): + submission_file = os.path.join(data_path, '1512299.yaml') + result = cli_runner.invoke(validate, ['-f', submission_file]) + assert result.exit_code == 0 + assert result.output == f"""{submission_file} is valid. + {submission_file} is valid HEPData YAML. +""" + + +def test_invalid_filename(cli_runner): + result = cli_runner.invoke(validate, ['-f', 'notarealfile']) + assert result.exit_code == 1 + assert result.output == """ERROR: notarealfile is invalid. + error - File notarealfile does not exist. +""" + + +def test_invalid_yaml(data_path, cli_runner): + file = os.path.join(data_path, '1512299_invalid.yaml') + result = cli_runner.invoke(validate, ['-f', file]) + assert result.exit_code == 1 + lines = result.output.splitlines() + assert lines[0] == f"ERROR: {file} is invalid." + assert lines[1].strip().startswith(f"error - {file} (Table 1) is invalid HEPData YAML.") diff --git a/testsuite/test_data/1512299.yaml b/testsuite/test_data/1512299.yaml new file mode 100644 index 0000000..34afcc2 --- /dev/null +++ b/testsuite/test_data/1512299.yaml @@ -0,0 +1,5059 @@ +{comment: 'Unfolded differential decay rates of four kinematic variables fully describing + the $\bar B^0 \to D^{*\,+} \, \ell^- \, \bar \nu_\ell$ decay in the $B$-meson + rest frame are presented. Numbers taken from a YODA file provided by Holger Schulz, + in turn prepared from a ROOT file provided by Florian Bernlochner (Belle).'} +--- +dependent_variables: +- header: {name: $\Delta\Gamma/\Delta w$, units: '$10^{-15}$ GeV'} + qualifiers: + - {name: RE, value: '$\bar{B}^0\to D^{*+}\ell^-\bar{\nu}_\ell$'} + values: + - errors: + - {symerror: 0.1149973} + value: 1.320076 + - errors: + - {symerror: 0.1499734} + value: 2.076395 + - errors: + - {symerror: 0.1532286} + value: 2.394007 + - errors: + - {symerror: 0.1638423} + value: 2.565728 + - errors: + - {symerror: 0.1576516} + value: 2.630684 + - errors: + - {symerror: 0.1503906} + value: 2.464774 + - errors: + - {symerror: 0.1415117} + value: 2.249932 + - errors: + - {symerror: 0.1378589} + value: 2.082244 + - errors: + - {symerror: 0.1292038} + value: 1.991329 + - errors: + - {symerror: 0.1362861} + value: 1.83214 +description: The unfolded differential rate as a function of $w$. +independent_variables: +- header: {name: $w$} + values: + - {high: 1.05, low: 1.0} + - {high: 1.1, low: 1.05} + - {high: 1.15, low: 1.1} + - {high: 1.2, low: 1.15} + - {high: 1.25, low: 1.2} + - {high: 1.3, low: 1.25} + - {high: 1.35, low: 1.3} + - {high: 1.4, low: 1.35} + - {high: 1.45, low: 1.4} + - {high: 1.50377, low: 1.45} +keywords: +- name: reactions + values: [BBAR0 --> D*(2010)+ LEPTON- NUBAR] +- name: observables + values: [WIDTH] +- name: phrases + values: [Decay, Charm Production] +name: Table 1 +--- +dependent_variables: +- header: {name: $\Delta\Gamma/\Delta \cos\theta_\nu$, units: '$10^{-15}$ GeV'} + qualifiers: + - {name: RE, value: '$\bar{B}^0\to D^{*+}\ell^-\bar{\nu}_\ell$'} + values: + - errors: + - {symerror: 0.1980013} + value: 2.804054 + - errors: + - {symerror: 0.1415874} + value: 2.297274 + - errors: + - {symerror: 0.1338869} + value: 1.94773 + - errors: + - {symerror: 0.1167089} + value: 1.697506 + - errors: + - {symerror: 0.1150373} + value: 1.581993 + - errors: + - {symerror: 0.1143593} + value: 1.650243 + - errors: + - {symerror: 0.1208367} + value: 1.771547 + - errors: + - {symerror: 0.1409427} + value: 1.996114 + - errors: + - {symerror: 0.1662996} + value: 2.503046 + - errors: + - {symerror: 0.2520561} + value: 3.186291 +description: The unfolded differential rate as a function of $\cos\theta_\nu$. +independent_variables: +- header: {name: $\cos\theta_\nu$} + values: + - {high: -0.8, low: -1.0} + - {high: -0.6, low: -0.8} + - {high: -0.4, low: -0.6} + - {high: -0.2, low: -0.4} + - {high: 0.0, low: -0.2} + - {high: 0.2, low: 0.0} + - {high: 0.4, low: 0.2} + - {high: 0.6, low: 0.4} + - {high: 0.8, low: 0.6} + - {high: 1.0, low: 0.8} +keywords: +- name: reactions + values: [BBAR0 --> D*(2010)+ LEPTON- NUBAR] +- name: observables + values: [WIDTH] +- name: phrases + values: [Decay, Charm Production] +name: Table 2 +--- +dependent_variables: +- header: {name: $\Delta\Gamma/\Delta \cos\theta_\ell$, units: '$10^{-15}$ GeV'} + qualifiers: + - {name: RE, value: '$\bar{B}^0\to D^{*+}\ell^-\bar{\nu}_\ell$'} + values: + - errors: + - {symerror: 0.0745556} + value: 0.7274864 + - errors: + - {symerror: 0.09704621} + value: 1.176108 + - errors: + - {symerror: 0.1125871} + value: 1.637361 + - errors: + - {symerror: 0.1356027} + value: 2.036385 + - errors: + - {symerror: 0.1503262} + value: 2.340971 + - errors: + - {symerror: 0.1592066} + value: 2.501994 + - errors: + - {symerror: 0.1576615} + value: 2.53989 + - errors: + - {symerror: 0.1645043} + value: 2.678038 + - errors: + - {symerror: 0.2103182} + value: 2.828576 + - errors: + - {symerror: 0.2470224} + value: 2.815548 +description: The unfolded differential rate as a function of $\cos\theta_\ell$. +independent_variables: +- header: {name: $\cos\theta_\ell$} + values: + - {high: -0.8, low: -1.0} + - {high: -0.6, low: -0.8} + - {high: -0.4, low: -0.6} + - {high: -0.2, low: -0.4} + - {high: 0.0, low: -0.2} + - {high: 0.2, low: 0.0} + - {high: 0.4, low: 0.2} + - {high: 0.6, low: 0.4} + - {high: 0.8, low: 0.6} + - {high: 1.0, low: 0.8} +keywords: +- name: reactions + values: [BBAR0 --> D*(2010)+ LEPTON- NUBAR] +- name: observables + values: [WIDTH] +- name: phrases + values: [Decay, Charm Production] +name: Table 3 +--- +dependent_variables: +- header: {name: $\Delta\Gamma/\Delta \chi$, units: '$10^{-15}$ GeV'} + qualifiers: + - {name: RE, value: '$\bar{B}^0\to D^{*+}\ell^-\bar{\nu}_\ell$'} + values: + - errors: + - {symerror: 0.1603038} + value: 1.858876 + - errors: + - {symerror: 0.1590942} + value: 2.310846 + - errors: + - {symerror: 0.1646744} + value: 2.585328 + - errors: + - {symerror: 0.1572296} + value: 2.36633 + - errors: + - {symerror: 0.1304245} + value: 1.945463 + - errors: + - {symerror: 0.152497} + value: 1.873821 + - errors: + - {symerror: 0.1496803} + value: 2.111709 + - errors: + - {symerror: 0.1588761} + value: 2.3252 + - errors: + - {symerror: 0.1510489} + value: 2.1516 + - errors: + - {symerror: 0.1623077} + value: 1.886141 +description: The unfolded differential rate as a function of $\chi$. +independent_variables: +- header: {name: $\chi$} + values: + - {high: 0.62832, low: 0.0} + - {high: 1.25664, low: 0.62832} + - {high: 1.88496, low: 1.25664} + - {high: 2.51328, low: 1.88496} + - {high: 3.1416, low: 2.51328} + - {high: 3.76992, low: 3.1416} + - {high: 4.39824, low: 3.76992} + - {high: 5.02656, low: 4.39824} + - {high: 5.65488, low: 5.02656} + - {high: 6.2832, low: 5.65488} +keywords: +- name: reactions + values: [BBAR0 --> D*(2010)+ LEPTON- NUBAR] +- name: observables + values: [WIDTH] +- name: phrases + values: [Decay, Charm Production] +name: Table 4 +--- +dependent_variables: +- header: {name: Correlation, units: ''} + qualifiers: + - {name: RE, value: '$\bar{B}^0\to D^{*+}\ell^-\bar{\nu}_\ell$'} + values: + - {value: 1.0} + - {value: 0.9198639} + - {value: 0.6031224} + - {value: 0.3507121} + - {value: 0.2978477} + - {value: 0.3353124} + - {value: 0.3760429} + - {value: 0.4006477} + - {value: 0.3718988} + - {value: 0.306424} + - {value: 0.3169212} + - {value: 0.3315954} + - {value: 0.3861418} + - {value: 0.4173316} + - {value: 0.4347278} + - {value: 0.4238388} + - {value: 0.399594} + - {value: 0.3911822} + - {value: 0.3831234} + - {value: 0.3461916} + - {value: 0.3055047} + - {value: 0.3538156} + - {value: 0.3870532} + - {value: 0.3967877} + - {value: 0.4134743} + - {value: 0.412404} + - {value: 0.3842066} + - {value: 0.3779641} + - {value: 0.3688883} + - {value: 0.3302719} + - {value: 0.2762251} + - {value: 0.3490857} + - {value: 0.4015483} + - {value: 0.4097006} + - {value: 0.4095141} + - {value: 0.3685686} + - {value: 0.3967668} + - {value: 0.4205821} + - {value: 0.4167636} + - {value: 0.3491422} + - {value: 0.9198639} + - {value: 0.9999999} + - {value: 0.7999673} + - {value: 0.4993052} + - {value: 0.3916978} + - {value: 0.4002674} + - {value: 0.4389338} + - {value: 0.4512786} + - {value: 0.4290042} + - {value: 0.3573262} + - {value: 0.3490724} + - {value: 0.3790887} + - {value: 0.4223386} + - {value: 0.4568611} + - {value: 0.4597854} + - {value: 0.4629895} + - {value: 0.4627465} + - {value: 0.44549} + - {value: 0.4380167} + - {value: 0.379867} + - {value: 0.343012} + - {value: 0.4077064} + - {value: 0.4559584} + - {value: 0.4607846} + - {value: 0.4734842} + - {value: 0.4647465} + - {value: 0.4387167} + - {value: 0.4258567} + - {value: 0.3913566} + - {value: 0.3447934} + - {value: 0.3166861} + - {value: 0.3948301} + - {value: 0.4636876} + - {value: 0.4648443} + - {value: 0.4593887} + - {value: 0.3828682} + - {value: 0.4371622} + - {value: 0.4612569} + - {value: 0.4541091} + - {value: 0.3820845} + - {value: 0.6031224} + - {value: 0.7999673} + - {value: 1.0} + - {value: 0.8321059} + - {value: 0.5983163} + - {value: 0.517828} + - {value: 0.5228921} + - {value: 0.5532238} + - {value: 0.5242777} + - {value: 0.4646957} + - {value: 0.38101} + - {value: 0.4346851} + - {value: 0.5289612} + - {value: 0.5421318} + - {value: 0.5450482} + - {value: 0.5284737} + - {value: 0.5246881} + - {value: 0.5455422} + - {value: 0.5201531} + - {value: 0.462185} + - {value: 0.3962243} + - {value: 0.4733237} + - {value: 0.5439389} + - {value: 0.5714353} + - {value: 0.5780035} + - {value: 0.5596979} + - {value: 0.5001701} + - {value: 0.5036988} + - {value: 0.5188267} + - {value: 0.4677506} + - {value: 0.4021851} + - {value: 0.4745842} + - {value: 0.5478322} + - {value: 0.5621234} + - {value: 0.5522274} + - {value: 0.5208586} + - {value: 0.5496891} + - {value: 0.5570953} + - {value: 0.5315233} + - {value: 0.4740207} + - {value: 0.3507121} + - {value: 0.4993052} + - {value: 0.832106} + - {value: 1.0} + - {value: 0.8305211} + - {value: 0.6507897} + - {value: 0.5524676} + - {value: 0.5724568} + - {value: 0.5447906} + - {value: 0.5002587} + - {value: 0.366372} + - {value: 0.4389144} + - {value: 0.586151} + - {value: 0.5884024} + - {value: 0.591081} + - {value: 0.551545} + - {value: 0.5255122} + - {value: 0.5696145} + - {value: 0.5461472} + - {value: 0.5017912} + - {value: 0.398995} + - {value: 0.4756563} + - {value: 0.5548372} + - {value: 0.5929123} + - {value: 0.5994828} + - {value: 0.5863075} + - {value: 0.5232138} + - {value: 0.5369422} + - {value: 0.5700876} + - {value: 0.5156088} + - {value: 0.4283284} + - {value: 0.4825355} + - {value: 0.5586637} + - {value: 0.5944344} + - {value: 0.5902525} + - {value: 0.5927449} + - {value: 0.5833085} + - {value: 0.5775528} + - {value: 0.5577346} + - {value: 0.5157226} + - {value: 0.2978477} + - {value: 0.3916978} + - {value: 0.5983163} + - {value: 0.8305212} + - {value: 1.0} + - {value: 0.847231} + - {value: 0.5922797} + - {value: 0.4947789} + - {value: 0.4958819} + - {value: 0.4508318} + - {value: 0.3598642} + - {value: 0.4474343} + - {value: 0.5337185} + - {value: 0.5555662} + - {value: 0.5267338} + - {value: 0.5259919} + - {value: 0.5186687} + - {value: 0.5010405} + - {value: 0.5206274} + - {value: 0.4669574} + - {value: 0.3677206} + - {value: 0.4476211} + - {value: 0.5236871} + - {value: 0.5486076} + - {value: 0.5633473} + - {value: 0.5459371} + - {value: 0.5418639} + - {value: 0.5653888} + - {value: 0.4680985} + - {value: 0.3874238} + - {value: 0.3717686} + - {value: 0.4340242} + - {value: 0.5277958} + - {value: 0.5373428} + - {value: 0.5462201} + - {value: 0.4635966} + - {value: 0.5162223} + - {value: 0.5238772} + - {value: 0.5366688} + - {value: 0.4839697} + - {value: 0.3353124} + - {value: 0.4002674} + - {value: 0.517828} + - {value: 0.6507897} + - {value: 0.847231} + - {value: 1.0} + - {value: 0.8118079} + - {value: 0.6020515} + - {value: 0.4913688} + - {value: 0.4223858} + - {value: 0.3677512} + - {value: 0.4501626} + - {value: 0.5659949} + - {value: 0.577222} + - {value: 0.5590023} + - {value: 0.5464232} + - {value: 0.5203364} + - {value: 0.5193035} + - {value: 0.523661} + - {value: 0.4672796} + - {value: 0.3919587} + - {value: 0.4666339} + - {value: 0.5425271} + - {value: 0.5656095} + - {value: 0.5781909} + - {value: 0.5681592} + - {value: 0.5588677} + - {value: 0.5742147} + - {value: 0.5013442} + - {value: 0.4255378} + - {value: 0.4103058} + - {value: 0.4697887} + - {value: 0.5386609} + - {value: 0.5464337} + - {value: 0.5648368} + - {value: 0.5120445} + - {value: 0.5382045} + - {value: 0.5470396} + - {value: 0.5482565} + - {value: 0.4847325} + - {value: 0.3760429} + - {value: 0.4389338} + - {value: 0.5228921} + - {value: 0.5524676} + - {value: 0.5922797} + - {value: 0.8118079} + - {value: 1.0} + - {value: 0.8512704} + - {value: 0.6096553} + - {value: 0.4578392} + - {value: 0.3725603} + - {value: 0.4452238} + - {value: 0.5778059} + - {value: 0.5882692} + - {value: 0.5877809} + - {value: 0.5621049} + - {value: 0.5286225} + - {value: 0.5482084} + - {value: 0.5405946} + - {value: 0.4888916} + - {value: 0.4078023} + - {value: 0.475953} + - {value: 0.5452793} + - {value: 0.5583428} + - {value: 0.5663166} + - {value: 0.5726013} + - {value: 0.5618103} + - {value: 0.5539852} + - {value: 0.5269035} + - {value: 0.4647549} + - {value: 0.4385153} + - {value: 0.4940926} + - {value: 0.5570905} + - {value: 0.5842683} + - {value: 0.6134816} + - {value: 0.5791049} + - {value: 0.5696839} + - {value: 0.5590646} + - {value: 0.5263739} + - {value: 0.4580812} + - {value: 0.4006477} + - {value: 0.4512786} + - {value: 0.5532237} + - {value: 0.5724568} + - {value: 0.4947789} + - {value: 0.6020515} + - {value: 0.8512704} + - {value: 0.9999999} + - {value: 0.8254023} + - {value: 0.6261041} + - {value: 0.3941318} + - {value: 0.4067369} + - {value: 0.5652996} + - {value: 0.5821678} + - {value: 0.6286399} + - {value: 0.5895662} + - {value: 0.5370888} + - {value: 0.5824826} + - {value: 0.5563993} + - {value: 0.5195253} + - {value: 0.3951283} + - {value: 0.4598547} + - {value: 0.533555} + - {value: 0.5664868} + - {value: 0.5655695} + - {value: 0.5775054} + - {value: 0.5517889} + - {value: 0.5526494} + - {value: 0.5810549} + - {value: 0.5369405} + - {value: 0.4545259} + - {value: 0.5054945} + - {value: 0.5522632} + - {value: 0.6018273} + - {value: 0.6117017} + - {value: 0.6303621} + - {value: 0.5830181} + - {value: 0.591129} + - {value: 0.5693963} + - {value: 0.5098516} + - {value: 0.3718988} + - {value: 0.4290042} + - {value: 0.5242777} + - {value: 0.5447906} + - {value: 0.4958819} + - {value: 0.4913688} + - {value: 0.6096553} + - {value: 0.8254024} + - {value: 1.0} + - {value: 0.9065986} + - {value: 0.3774298} + - {value: 0.4102749} + - {value: 0.5051314} + - {value: 0.5336971} + - {value: 0.5761675} + - {value: 0.5687646} + - {value: 0.5362359} + - {value: 0.5449924} + - {value: 0.5271298} + - {value: 0.5016546} + - {value: 0.3555543} + - {value: 0.4233712} + - {value: 0.5053012} + - {value: 0.5486565} + - {value: 0.5527663} + - {value: 0.5507773} + - {value: 0.5396766} + - {value: 0.5353675} + - {value: 0.5171695} + - {value: 0.4723012} + - {value: 0.4197755} + - {value: 0.4970112} + - {value: 0.5339669} + - {value: 0.5397439} + - {value: 0.5472274} + - {value: 0.5338901} + - {value: 0.5298672} + - {value: 0.5425881} + - {value: 0.5396249} + - {value: 0.4909849} + - {value: 0.306424} + - {value: 0.3573262} + - {value: 0.4646957} + - {value: 0.5002587} + - {value: 0.4508317} + - {value: 0.4223858} + - {value: 0.4578393} + - {value: 0.6261041} + - {value: 0.9065986} + - {value: 1.0} + - {value: 0.3263157} + - {value: 0.3555878} + - {value: 0.45616} + - {value: 0.4772956} + - {value: 0.5266804} + - {value: 0.5140792} + - {value: 0.4761577} + - {value: 0.4956195} + - {value: 0.4751918} + - {value: 0.4666305} + - {value: 0.3204636} + - {value: 0.3803371} + - {value: 0.4580238} + - {value: 0.4992045} + - {value: 0.4951063} + - {value: 0.4939886} + - {value: 0.4817699} + - {value: 0.4934392} + - {value: 0.4992527} + - {value: 0.4567957} + - {value: 0.388331} + - {value: 0.4692846} + - {value: 0.4841476} + - {value: 0.4736509} + - {value: 0.4748105} + - {value: 0.4925701} + - {value: 0.4740383} + - {value: 0.4789501} + - {value: 0.4831319} + - {value: 0.4583547} + - {value: 0.3169212} + - {value: 0.3490724} + - {value: 0.38101} + - {value: 0.366372} + - {value: 0.3598642} + - {value: 0.3677512} + - {value: 0.3725603} + - {value: 0.3941318} + - {value: 0.3774298} + - {value: 0.3263156} + - {value: 1.0} + - {value: 0.6612038} + - {value: 0.3559476} + - {value: 0.2941343} + - {value: 0.3294497} + - {value: 0.3347794} + - {value: 0.3189403} + - {value: 0.3436466} + - {value: 0.3353155} + - {value: 0.3124705} + - {value: 0.3142416} + - {value: 0.3508489} + - {value: 0.3889019} + - {value: 0.3947378} + - {value: 0.4039269} + - {value: 0.3946544} + - {value: 0.3755169} + - {value: 0.3737119} + - {value: 0.3858202} + - {value: 0.3348025} + - {value: 0.2779332} + - {value: 0.3697495} + - {value: 0.4212874} + - {value: 0.4124209} + - {value: 0.4078306} + - {value: 0.3890524} + - {value: 0.407084} + - {value: 0.3914492} + - {value: 0.3847999} + - {value: 0.3493619} + - {value: 0.3315954} + - {value: 0.3790887} + - {value: 0.4346851} + - {value: 0.4389144} + - {value: 0.4474343} + - {value: 0.4501626} + - {value: 0.4452238} + - {value: 0.406737} + - {value: 0.4102749} + - {value: 0.3555878} + - {value: 0.6612037} + - {value: 1.0} + - {value: 0.7493617} + - {value: 0.5291846} + - {value: 0.3870321} + - {value: 0.3617816} + - {value: 0.3562778} + - {value: 0.36801} + - {value: 0.3941151} + - {value: 0.3674833} + - {value: 0.3693158} + - {value: 0.4206027} + - {value: 0.4679057} + - {value: 0.4532866} + - {value: 0.4603782} + - {value: 0.4542675} + - {value: 0.4305595} + - {value: 0.4332941} + - {value: 0.3872357} + - {value: 0.3302433} + - {value: 0.327141} + - {value: 0.3977923} + - {value: 0.4665866} + - {value: 0.4723306} + - {value: 0.4866991} + - {value: 0.3980435} + - {value: 0.4396378} + - {value: 0.4362064} + - {value: 0.4218351} + - {value: 0.3818299} + - {value: 0.3861418} + - {value: 0.4223386} + - {value: 0.5289611} + - {value: 0.586151} + - {value: 0.5337185} + - {value: 0.5659949} + - {value: 0.5778059} + - {value: 0.5652996} + - {value: 0.5051315} + - {value: 0.45616} + - {value: 0.3559476} + - {value: 0.7493618} + - {value: 1.0} + - {value: 0.8675869} + - {value: 0.6876299} + - {value: 0.5386035} + - {value: 0.4522239} + - {value: 0.5189107} + - {value: 0.5093999} + - {value: 0.4847413} + - {value: 0.4300192} + - {value: 0.4963526} + - {value: 0.5635991} + - {value: 0.5881406} + - {value: 0.5931021} + - {value: 0.583864} + - {value: 0.5228369} + - {value: 0.5570607} + - {value: 0.6001555} + - {value: 0.5397189} + - {value: 0.4407575} + - {value: 0.4973524} + - {value: 0.561849} + - {value: 0.6178795} + - {value: 0.6279593} + - {value: 0.6304131} + - {value: 0.5801471} + - {value: 0.5785226} + - {value: 0.561484} + - {value: 0.5250121} + - {value: 0.4173316} + - {value: 0.4568611} + - {value: 0.5421318} + - {value: 0.5884024} + - {value: 0.5555662} + - {value: 0.577222} + - {value: 0.5882692} + - {value: 0.5821678} + - {value: 0.5336971} + - {value: 0.4772956} + - {value: 0.2941343} + - {value: 0.5291846} + - {value: 0.8675868} + - {value: 1.0} + - {value: 0.8867846} + - {value: 0.7139812} + - {value: 0.5503827} + - {value: 0.5139188} + - {value: 0.4809273} + - {value: 0.4469745} + - {value: 0.4201996} + - {value: 0.498846} + - {value: 0.5771369} + - {value: 0.6033672} + - {value: 0.6102862} + - {value: 0.5920104} + - {value: 0.5402818} + - {value: 0.5613447} + - {value: 0.5654491} + - {value: 0.5111578} + - {value: 0.4266066} + - {value: 0.4838765} + - {value: 0.5660537} + - {value: 0.6196359} + - {value: 0.63475} + - {value: 0.6042646} + - {value: 0.5742399} + - {value: 0.5742076} + - {value: 0.5736302} + - {value: 0.5256287} + - {value: 0.4347278} + - {value: 0.4597854} + - {value: 0.5450482} + - {value: 0.591081} + - {value: 0.5267338} + - {value: 0.5590022} + - {value: 0.5877809} + - {value: 0.6286399} + - {value: 0.5761675} + - {value: 0.5266804} + - {value: 0.3294497} + - {value: 0.3870321} + - {value: 0.6876299} + - {value: 0.8867845} + - {value: 0.9999999} + - {value: 0.9041975} + - {value: 0.6858584} + - {value: 0.5850355} + - {value: 0.4747399} + - {value: 0.4431033} + - {value: 0.3867853} + - {value: 0.4613464} + - {value: 0.5606052} + - {value: 0.6201776} + - {value: 0.6274429} + - {value: 0.6146054} + - {value: 0.5473815} + - {value: 0.5776805} + - {value: 0.6269868} + - {value: 0.5839519} + - {value: 0.4507834} + - {value: 0.5167991} + - {value: 0.5795819} + - {value: 0.6361788} + - {value: 0.6365596} + - {value: 0.6602257} + - {value: 0.6046078} + - {value: 0.6043881} + - {value: 0.5993031} + - {value: 0.5563946} + - {value: 0.4238388} + - {value: 0.4629895} + - {value: 0.5284737} + - {value: 0.551545} + - {value: 0.5259919} + - {value: 0.5464232} + - {value: 0.5621049} + - {value: 0.5895662} + - {value: 0.5687646} + - {value: 0.5140792} + - {value: 0.3347794} + - {value: 0.3617816} + - {value: 0.5386035} + - {value: 0.7139812} + - {value: 0.9041975} + - {value: 1.0} + - {value: 0.874798} + - {value: 0.6646616} + - {value: 0.4735855} + - {value: 0.3828151} + - {value: 0.3900099} + - {value: 0.4585435} + - {value: 0.5471002} + - {value: 0.5953627} + - {value: 0.6098347} + - {value: 0.6008059} + - {value: 0.5603556} + - {value: 0.5868527} + - {value: 0.5596693} + - {value: 0.5007867} + - {value: 0.4141378} + - {value: 0.4911527} + - {value: 0.5598769} + - {value: 0.5954884} + - {value: 0.598531} + - {value: 0.5785385} + - {value: 0.5833084} + - {value: 0.5999623} + - {value: 0.5955763} + - {value: 0.5335708} + - {value: 0.399594} + - {value: 0.4627465} + - {value: 0.5246881} + - {value: 0.5255121} + - {value: 0.5186686} + - {value: 0.5203364} + - {value: 0.5286225} + - {value: 0.5370888} + - {value: 0.5362359} + - {value: 0.4761577} + - {value: 0.3189403} + - {value: 0.3562778} + - {value: 0.4522239} + - {value: 0.5503826} + - {value: 0.6858584} + - {value: 0.8747981} + - {value: 0.9999999} + - {value: 0.8503855} + - {value: 0.5894997} + - {value: 0.3691803} + - {value: 0.397739} + - {value: 0.460757} + - {value: 0.5243719} + - {value: 0.5478329} + - {value: 0.5785809} + - {value: 0.5768912} + - {value: 0.5493948} + - {value: 0.5675738} + - {value: 0.4929703} + - {value: 0.425794} + - {value: 0.3791833} + - {value: 0.4573005} + - {value: 0.5280042} + - {value: 0.5379244} + - {value: 0.5465757} + - {value: 0.4963853} + - {value: 0.5492527} + - {value: 0.5813083} + - {value: 0.5783583} + - {value: 0.5015352} + - {value: 0.3911822} + - {value: 0.44549} + - {value: 0.5455421} + - {value: 0.5696145} + - {value: 0.5010405} + - {value: 0.5193035} + - {value: 0.5482084} + - {value: 0.5824826} + - {value: 0.5449924} + - {value: 0.4956195} + - {value: 0.3436466} + - {value: 0.36801} + - {value: 0.5189107} + - {value: 0.5139188} + - {value: 0.5850355} + - {value: 0.6646616} + - {value: 0.8503855} + - {value: 1.0} + - {value: 0.8322224} + - {value: 0.5656678} + - {value: 0.4183966} + - {value: 0.4767235} + - {value: 0.533383} + - {value: 0.5662469} + - {value: 0.5942985} + - {value: 0.6037756} + - {value: 0.5402792} + - {value: 0.5648411} + - {value: 0.594165} + - {value: 0.5413501} + - {value: 0.4390939} + - {value: 0.5008727} + - {value: 0.5462788} + - {value: 0.5874393} + - {value: 0.5914048} + - {value: 0.6211942} + - {value: 0.6076893} + - {value: 0.6103566} + - {value: 0.5982845} + - {value: 0.5456824} + - {value: 0.3831233} + - {value: 0.4380167} + - {value: 0.5201531} + - {value: 0.5461472} + - {value: 0.5206274} + - {value: 0.523661} + - {value: 0.5405946} + - {value: 0.5563993} + - {value: 0.5271299} + - {value: 0.4751917} + - {value: 0.3353155} + - {value: 0.394115} + - {value: 0.5093999} + - {value: 0.4809273} + - {value: 0.4747399} + - {value: 0.4735854} + - {value: 0.5894996} + - {value: 0.8322224} + - {value: 1.0} + - {value: 0.8526627} + - {value: 0.3882903} + - {value: 0.4519932} + - {value: 0.5060688} + - {value: 0.5343134} + - {value: 0.5594705} + - {value: 0.5696365} + - {value: 0.5222987} + - {value: 0.522649} + - {value: 0.5237962} + - {value: 0.4723776} + - {value: 0.4413506} + - {value: 0.4891346} + - {value: 0.5204438} + - {value: 0.5589473} + - {value: 0.5665445} + - {value: 0.5524761} + - {value: 0.5705925} + - {value: 0.5706759} + - {value: 0.5638503} + - {value: 0.5011693} + - {value: 0.3461916} + - {value: 0.379867} + - {value: 0.462185} + - {value: 0.5017913} + - {value: 0.4669574} + - {value: 0.4672796} + - {value: 0.4888915} + - {value: 0.5195253} + - {value: 0.5016546} + - {value: 0.4666305} + - {value: 0.3124705} + - {value: 0.3674833} + - {value: 0.4847413} + - {value: 0.4469745} + - {value: 0.4431033} + - {value: 0.3828151} + - {value: 0.3691803} + - {value: 0.5656677} + - {value: 0.8526627} + - {value: 1.0} + - {value: 0.3192773} + - {value: 0.3753234} + - {value: 0.4473194} + - {value: 0.5037894} + - {value: 0.5198082} + - {value: 0.5177358} + - {value: 0.4531388} + - {value: 0.4523339} + - {value: 0.5135452} + - {value: 0.4840072} + - {value: 0.4073142} + - {value: 0.4655105} + - {value: 0.4701914} + - {value: 0.5029043} + - {value: 0.504008} + - {value: 0.5355144} + - {value: 0.5326779} + - {value: 0.5320668} + - {value: 0.5205823} + - {value: 0.4655786} + - {value: 0.3055047} + - {value: 0.343012} + - {value: 0.3962243} + - {value: 0.398995} + - {value: 0.3677205} + - {value: 0.3919587} + - {value: 0.4078023} + - {value: 0.3951283} + - {value: 0.3555543} + - {value: 0.3204636} + - {value: 0.3142416} + - {value: 0.3693158} + - {value: 0.4300192} + - {value: 0.4201996} + - {value: 0.3867853} + - {value: 0.3900099} + - {value: 0.397739} + - {value: 0.4183967} + - {value: 0.3882903} + - {value: 0.3192773} + - {value: 0.9999999} + - {value: 0.9341593} + - {value: 0.6692832} + - {value: 0.3633687} + - {value: 0.2795612} + - {value: 0.3052537} + - {value: 0.3328368} + - {value: 0.3652369} + - {value: 0.3442725} + - {value: 0.2919834} + - {value: 0.287925} + - {value: 0.3295419} + - {value: 0.364684} + - {value: 0.3915796} + - {value: 0.4292277} + - {value: 0.4139487} + - {value: 0.4277495} + - {value: 0.3980491} + - {value: 0.3788583} + - {value: 0.3315495} + - {value: 0.3538156} + - {value: 0.4077064} + - {value: 0.4733237} + - {value: 0.4756564} + - {value: 0.4476211} + - {value: 0.4666339} + - {value: 0.475953} + - {value: 0.4598548} + - {value: 0.4233712} + - {value: 0.3803371} + - {value: 0.3508489} + - {value: 0.4206027} + - {value: 0.4963526} + - {value: 0.4988459} + - {value: 0.4613464} + - {value: 0.4585434} + - {value: 0.460757} + - {value: 0.4767235} + - {value: 0.4519932} + - {value: 0.3753234} + - {value: 0.9341593} + - {value: 0.9999999} + - {value: 0.8472858} + - {value: 0.5267336} + - {value: 0.3821648} + - {value: 0.3697641} + - {value: 0.3961959} + - {value: 0.428742} + - {value: 0.3945717} + - {value: 0.3311924} + - {value: 0.3354506} + - {value: 0.3889115} + - {value: 0.4395747} + - {value: 0.4618291} + - {value: 0.5005998} + - {value: 0.4637537} + - {value: 0.4826257} + - {value: 0.4545754} + - {value: 0.4387223} + - {value: 0.3902832} + - {value: 0.3870532} + - {value: 0.4559584} + - {value: 0.5439389} + - {value: 0.5548372} + - {value: 0.5236871} + - {value: 0.542527} + - {value: 0.5452793} + - {value: 0.533555} + - {value: 0.5053012} + - {value: 0.4580238} + - {value: 0.3889019} + - {value: 0.4679057} + - {value: 0.5635991} + - {value: 0.5771369} + - {value: 0.5606051} + - {value: 0.5471002} + - {value: 0.5243719} + - {value: 0.533383} + - {value: 0.5060688} + - {value: 0.4473195} + - {value: 0.6692832} + - {value: 0.8472858} + - {value: 1.0} + - {value: 0.8306836} + - {value: 0.5970316} + - {value: 0.4725405} + - {value: 0.4568587} + - {value: 0.4890488} + - {value: 0.4714912} + - {value: 0.4128359} + - {value: 0.3828144} + - {value: 0.4429572} + - {value: 0.5070743} + - {value: 0.5357438} + - {value: 0.5708125} + - {value: 0.5339023} + - {value: 0.5474989} + - {value: 0.5293105} + - {value: 0.5121174} + - {value: 0.4717786} + - {value: 0.3967877} + - {value: 0.4607846} + - {value: 0.5714353} + - {value: 0.5929123} + - {value: 0.5486076} + - {value: 0.5656095} + - {value: 0.5583428} + - {value: 0.5664868} + - {value: 0.5486565} + - {value: 0.4992045} + - {value: 0.3947378} + - {value: 0.4532866} + - {value: 0.5881407} + - {value: 0.6033672} + - {value: 0.6201776} + - {value: 0.5953628} + - {value: 0.5478329} + - {value: 0.5662469} + - {value: 0.5343134} + - {value: 0.5037893} + - {value: 0.3633687} + - {value: 0.5267337} + - {value: 0.8306836} + - {value: 1.0} + - {value: 0.8613638} + - {value: 0.632252} + - {value: 0.4943755} + - {value: 0.5028211} + - {value: 0.541155} + - {value: 0.4993515} + - {value: 0.4130652} + - {value: 0.4778479} + - {value: 0.5403696} + - {value: 0.5813455} + - {value: 0.5977463} + - {value: 0.589896} + - {value: 0.5855842} + - {value: 0.5815328} + - {value: 0.5517556} + - {value: 0.5041961} + - {value: 0.4134742} + - {value: 0.4734842} + - {value: 0.5780035} + - {value: 0.5994828} + - {value: 0.5633473} + - {value: 0.5781909} + - {value: 0.5663166} + - {value: 0.5655695} + - {value: 0.5527663} + - {value: 0.4951063} + - {value: 0.4039269} + - {value: 0.4603782} + - {value: 0.5931021} + - {value: 0.6102862} + - {value: 0.6274429} + - {value: 0.6098347} + - {value: 0.5785809} + - {value: 0.5942985} + - {value: 0.5594706} + - {value: 0.5198082} + - {value: 0.2795612} + - {value: 0.3821648} + - {value: 0.5970316} + - {value: 0.8613638} + - {value: 1.0} + - {value: 0.8567884} + - {value: 0.6098678} + - {value: 0.5087815} + - {value: 0.5220264} + - {value: 0.4982412} + - {value: 0.4126756} + - {value: 0.4843712} + - {value: 0.5454515} + - {value: 0.5862091} + - {value: 0.6012638} + - {value: 0.5846082} + - {value: 0.5903722} + - {value: 0.593475} + - {value: 0.5666704} + - {value: 0.4990786} + - {value: 0.412404} + - {value: 0.4647465} + - {value: 0.5596979} + - {value: 0.5863075} + - {value: 0.5459371} + - {value: 0.5681592} + - {value: 0.5726013} + - {value: 0.5775053} + - {value: 0.5507773} + - {value: 0.4939886} + - {value: 0.3946544} + - {value: 0.4542675} + - {value: 0.583864} + - {value: 0.5920105} + - {value: 0.6146053} + - {value: 0.6008059} + - {value: 0.5768912} + - {value: 0.6037756} + - {value: 0.5696365} + - {value: 0.5177358} + - {value: 0.3052537} + - {value: 0.3697641} + - {value: 0.4725405} + - {value: 0.6322519} + - {value: 0.8567884} + - {value: 1.0} + - {value: 0.8207091} + - {value: 0.5958993} + - {value: 0.5271346} + - {value: 0.4947617} + - {value: 0.4258792} + - {value: 0.4979812} + - {value: 0.5415233} + - {value: 0.5852984} + - {value: 0.6016054} + - {value: 0.5836042} + - {value: 0.5794524} + - {value: 0.5857524} + - {value: 0.5723218} + - {value: 0.5042883} + - {value: 0.3842065} + - {value: 0.4387167} + - {value: 0.5001701} + - {value: 0.5232138} + - {value: 0.5418639} + - {value: 0.5588677} + - {value: 0.5618103} + - {value: 0.5517889} + - {value: 0.5396765} + - {value: 0.4817699} + - {value: 0.3755169} + - {value: 0.4305595} + - {value: 0.5228369} + - {value: 0.5402817} + - {value: 0.5473815} + - {value: 0.5603556} + - {value: 0.5493948} + - {value: 0.5402792} + - {value: 0.5222986} + - {value: 0.4531388} + - {value: 0.3328368} + - {value: 0.3961959} + - {value: 0.4568587} + - {value: 0.4943755} + - {value: 0.6098678} + - {value: 0.8207091} + - {value: 1.0} + - {value: 0.8306154} + - {value: 0.5348155} + - {value: 0.3811606} + - {value: 0.3856742} + - {value: 0.4673632} + - {value: 0.5316476} + - {value: 0.539538} + - {value: 0.5628124} + - {value: 0.507857} + - {value: 0.5343922} + - {value: 0.525992} + - {value: 0.5281118} + - {value: 0.4628513} + - {value: 0.3779641} + - {value: 0.4258567} + - {value: 0.5036988} + - {value: 0.5369422} + - {value: 0.5653888} + - {value: 0.5742147} + - {value: 0.5539852} + - {value: 0.5526494} + - {value: 0.5353675} + - {value: 0.4934393} + - {value: 0.3737119} + - {value: 0.4332941} + - {value: 0.5570607} + - {value: 0.5613447} + - {value: 0.5776805} + - {value: 0.5868527} + - {value: 0.5675738} + - {value: 0.5648411} + - {value: 0.522649} + - {value: 0.4523339} + - {value: 0.3652369} + - {value: 0.428742} + - {value: 0.4890488} + - {value: 0.5028211} + - {value: 0.5087815} + - {value: 0.5958993} + - {value: 0.8306155} + - {value: 0.9999999} + - {value: 0.7361072} + - {value: 0.4588076} + - {value: 0.3963798} + - {value: 0.4889209} + - {value: 0.5537978} + - {value: 0.549853} + - {value: 0.5630984} + - {value: 0.5531643} + - {value: 0.5664569} + - {value: 0.5545269} + - {value: 0.5483515} + - {value: 0.4902617} + - {value: 0.3688883} + - {value: 0.3913566} + - {value: 0.5188267} + - {value: 0.5700876} + - {value: 0.4680985} + - {value: 0.5013443} + - {value: 0.5269036} + - {value: 0.5810549} + - {value: 0.5171695} + - {value: 0.4992527} + - {value: 0.3858202} + - {value: 0.3872357} + - {value: 0.6001555} + - {value: 0.5654491} + - {value: 0.6269868} + - {value: 0.5596693} + - {value: 0.4929703} + - {value: 0.594165} + - {value: 0.5237962} + - {value: 0.5135452} + - {value: 0.3442725} + - {value: 0.3945717} + - {value: 0.4714912} + - {value: 0.541155} + - {value: 0.5220264} + - {value: 0.5271347} + - {value: 0.5348155} + - {value: 0.7361072} + - {value: 0.9999999} + - {value: 0.8667954} + - {value: 0.4362362} + - {value: 0.5106664} + - {value: 0.535643} + - {value: 0.5881829} + - {value: 0.5815799} + - {value: 0.7047297} + - {value: 0.6113205} + - {value: 0.5889513} + - {value: 0.5582339} + - {value: 0.5396415} + - {value: 0.3302719} + - {value: 0.3447934} + - {value: 0.4677506} + - {value: 0.5156088} + - {value: 0.3874238} + - {value: 0.4255378} + - {value: 0.4647549} + - {value: 0.5369405} + - {value: 0.4723012} + - {value: 0.4567957} + - {value: 0.3348025} + - {value: 0.3302433} + - {value: 0.5397189} + - {value: 0.5111578} + - {value: 0.5839519} + - {value: 0.5007867} + - {value: 0.4257941} + - {value: 0.54135} + - {value: 0.4723776} + - {value: 0.4840072} + - {value: 0.2919834} + - {value: 0.3311924} + - {value: 0.4128359} + - {value: 0.4993515} + - {value: 0.4982412} + - {value: 0.4947617} + - {value: 0.3811606} + - {value: 0.4588076} + - {value: 0.8667954} + - {value: 1.0} + - {value: 0.3993573} + - {value: 0.4568887} + - {value: 0.4666959} + - {value: 0.5457208} + - {value: 0.5317384} + - {value: 0.6637205} + - {value: 0.5549452} + - {value: 0.5497598} + - {value: 0.5229432} + - {value: 0.5198532} + - {value: 0.2762251} + - {value: 0.3166861} + - {value: 0.4021851} + - {value: 0.4283284} + - {value: 0.3717686} + - {value: 0.4103058} + - {value: 0.4385153} + - {value: 0.4545259} + - {value: 0.4197755} + - {value: 0.388331} + - {value: 0.2779332} + - {value: 0.327141} + - {value: 0.4407575} + - {value: 0.4266066} + - {value: 0.4507834} + - {value: 0.4141378} + - {value: 0.3791833} + - {value: 0.4390939} + - {value: 0.4413506} + - {value: 0.4073142} + - {value: 0.287925} + - {value: 0.3354506} + - {value: 0.3828144} + - {value: 0.4130652} + - {value: 0.4126756} + - {value: 0.4258792} + - {value: 0.3856742} + - {value: 0.3963798} + - {value: 0.4362362} + - {value: 0.3993572} + - {value: 0.9999999} + - {value: 0.8649951} + - {value: 0.4765345} + - {value: 0.3662961} + - {value: 0.3869486} + - {value: 0.4514275} + - {value: 0.4354388} + - {value: 0.3813463} + - {value: 0.290585} + - {value: 0.2616032} + - {value: 0.3490857} + - {value: 0.3948302} + - {value: 0.4745842} + - {value: 0.4825355} + - {value: 0.4340242} + - {value: 0.4697887} + - {value: 0.4940926} + - {value: 0.5054945} + - {value: 0.4970112} + - {value: 0.4692846} + - {value: 0.3697495} + - {value: 0.3977923} + - {value: 0.4973524} + - {value: 0.4838764} + - {value: 0.5167991} + - {value: 0.4911527} + - {value: 0.4573005} + - {value: 0.5008727} + - {value: 0.4891346} + - {value: 0.4655105} + - {value: 0.3295419} + - {value: 0.3889115} + - {value: 0.4429572} + - {value: 0.4778479} + - {value: 0.4843712} + - {value: 0.4979812} + - {value: 0.4673632} + - {value: 0.4889208} + - {value: 0.5106664} + - {value: 0.4568887} + - {value: 0.8649952} + - {value: 1.0} + - {value: 0.7696602} + - {value: 0.5501278} + - {value: 0.4690312} + - {value: 0.4896641} + - {value: 0.4855286} + - {value: 0.4460978} + - {value: 0.373003} + - {value: 0.3247823} + - {value: 0.4015483} + - {value: 0.4636876} + - {value: 0.5478322} + - {value: 0.5586637} + - {value: 0.5277958} + - {value: 0.5386609} + - {value: 0.5570905} + - {value: 0.5522632} + - {value: 0.5339669} + - {value: 0.4841476} + - {value: 0.4212874} + - {value: 0.4665866} + - {value: 0.5618491} + - {value: 0.5660537} + - {value: 0.5795819} + - {value: 0.5598769} + - {value: 0.5280043} + - {value: 0.5462788} + - {value: 0.5204438} + - {value: 0.4701914} + - {value: 0.364684} + - {value: 0.4395747} + - {value: 0.5070742} + - {value: 0.5403697} + - {value: 0.5454515} + - {value: 0.5415233} + - {value: 0.5316477} + - {value: 0.5537978} + - {value: 0.535643} + - {value: 0.4666959} + - {value: 0.4765345} + - {value: 0.7696602} + - {value: 1.0} + - {value: 0.8504587} + - {value: 0.6496646} + - {value: 0.5212811} + - {value: 0.5070499} + - {value: 0.4920191} + - {value: 0.4763865} + - {value: 0.4294471} + - {value: 0.4097006} + - {value: 0.4648443} + - {value: 0.5621234} + - {value: 0.5944344} + - {value: 0.5373428} + - {value: 0.5464337} + - {value: 0.5842683} + - {value: 0.6018273} + - {value: 0.5397439} + - {value: 0.4736509} + - {value: 0.4124209} + - {value: 0.4723306} + - {value: 0.6178795} + - {value: 0.6196359} + - {value: 0.6361788} + - {value: 0.5954884} + - {value: 0.5379244} + - {value: 0.5874392} + - {value: 0.5589473} + - {value: 0.5029043} + - {value: 0.3915796} + - {value: 0.461829} + - {value: 0.5357438} + - {value: 0.5813455} + - {value: 0.5862091} + - {value: 0.5852984} + - {value: 0.539538} + - {value: 0.5498529} + - {value: 0.5881829} + - {value: 0.5457208} + - {value: 0.3662961} + - {value: 0.5501278} + - {value: 0.8504587} + - {value: 0.9999999} + - {value: 0.8733808} + - {value: 0.6653978} + - {value: 0.549638} + - {value: 0.5195854} + - {value: 0.5254974} + - {value: 0.497298} + - {value: 0.4095141} + - {value: 0.4593886} + - {value: 0.5522274} + - {value: 0.5902525} + - {value: 0.5462201} + - {value: 0.5648368} + - {value: 0.6134816} + - {value: 0.6117017} + - {value: 0.5472274} + - {value: 0.4748105} + - {value: 0.4078306} + - {value: 0.4866991} + - {value: 0.6279593} + - {value: 0.63475} + - {value: 0.6365596} + - {value: 0.598531} + - {value: 0.5465757} + - {value: 0.5914047} + - {value: 0.5665445} + - {value: 0.504008} + - {value: 0.4292277} + - {value: 0.5005998} + - {value: 0.5708125} + - {value: 0.5977463} + - {value: 0.6012638} + - {value: 0.6016054} + - {value: 0.5628124} + - {value: 0.5630984} + - {value: 0.5815799} + - {value: 0.5317384} + - {value: 0.3869486} + - {value: 0.4690312} + - {value: 0.6496646} + - {value: 0.8733808} + - {value: 1.0} + - {value: 0.8289874} + - {value: 0.6654938} + - {value: 0.5380112} + - {value: 0.4960644} + - {value: 0.4681868} + - {value: 0.3685686} + - {value: 0.3828682} + - {value: 0.5208586} + - {value: 0.592745} + - {value: 0.4635966} + - {value: 0.5120445} + - {value: 0.5791049} + - {value: 0.6303622} + - {value: 0.5338901} + - {value: 0.4925701} + - {value: 0.3890525} + - {value: 0.3980435} + - {value: 0.6304131} + - {value: 0.6042646} + - {value: 0.6602257} + - {value: 0.5785384} + - {value: 0.4963853} + - {value: 0.6211942} + - {value: 0.5524761} + - {value: 0.5355144} + - {value: 0.4139487} + - {value: 0.4637537} + - {value: 0.5339023} + - {value: 0.589896} + - {value: 0.5846082} + - {value: 0.5836042} + - {value: 0.507857} + - {value: 0.5531643} + - {value: 0.7047297} + - {value: 0.6637205} + - {value: 0.4514275} + - {value: 0.4896641} + - {value: 0.5212811} + - {value: 0.6653978} + - {value: 0.8289874} + - {value: 1.0} + - {value: 0.849272} + - {value: 0.6574922} + - {value: 0.5068032} + - {value: 0.4706579} + - {value: 0.3967668} + - {value: 0.4371622} + - {value: 0.5496891} + - {value: 0.5833086} + - {value: 0.5162223} + - {value: 0.5382044} + - {value: 0.5696839} + - {value: 0.5830181} + - {value: 0.5298672} + - {value: 0.4740383} + - {value: 0.4070841} + - {value: 0.4396378} + - {value: 0.5801471} + - {value: 0.5742399} + - {value: 0.6046078} + - {value: 0.5833084} + - {value: 0.5492528} + - {value: 0.6076892} + - {value: 0.5705925} + - {value: 0.5326778} + - {value: 0.4277495} + - {value: 0.4826257} + - {value: 0.5474989} + - {value: 0.5855843} + - {value: 0.5903722} + - {value: 0.5794524} + - {value: 0.5343922} + - {value: 0.5664569} + - {value: 0.6113206} + - {value: 0.5549452} + - {value: 0.4354388} + - {value: 0.4855286} + - {value: 0.5070499} + - {value: 0.549638} + - {value: 0.6654938} + - {value: 0.849272} + - {value: 1.0} + - {value: 0.8509224} + - {value: 0.5735616} + - {value: 0.4199527} + - {value: 0.4205821} + - {value: 0.461257} + - {value: 0.5570953} + - {value: 0.5775528} + - {value: 0.5238772} + - {value: 0.5470396} + - {value: 0.5590646} + - {value: 0.591129} + - {value: 0.5425881} + - {value: 0.4789502} + - {value: 0.3914492} + - {value: 0.4362064} + - {value: 0.5785226} + - {value: 0.5742075} + - {value: 0.6043881} + - {value: 0.5999623} + - {value: 0.5813083} + - {value: 0.6103566} + - {value: 0.5706759} + - {value: 0.5320668} + - {value: 0.3980491} + - {value: 0.4545754} + - {value: 0.5293105} + - {value: 0.5815328} + - {value: 0.593475} + - {value: 0.5857524} + - {value: 0.525992} + - {value: 0.5545268} + - {value: 0.5889512} + - {value: 0.5497598} + - {value: 0.3813463} + - {value: 0.4460977} + - {value: 0.4920191} + - {value: 0.5195854} + - {value: 0.5380112} + - {value: 0.6574921} + - {value: 0.8509225} + - {value: 0.9999999} + - {value: 0.8100898} + - {value: 0.5654116} + - {value: 0.4167636} + - {value: 0.4541091} + - {value: 0.5315233} + - {value: 0.5577346} + - {value: 0.5366688} + - {value: 0.5482565} + - {value: 0.5263739} + - {value: 0.5693963} + - {value: 0.5396249} + - {value: 0.4831319} + - {value: 0.3847999} + - {value: 0.4218351} + - {value: 0.561484} + - {value: 0.5736302} + - {value: 0.5993031} + - {value: 0.5955763} + - {value: 0.5783583} + - {value: 0.5982845} + - {value: 0.5638504} + - {value: 0.5205823} + - {value: 0.3788583} + - {value: 0.4387223} + - {value: 0.5121174} + - {value: 0.5517555} + - {value: 0.5666704} + - {value: 0.5723218} + - {value: 0.5281118} + - {value: 0.5483515} + - {value: 0.5582339} + - {value: 0.5229431} + - {value: 0.290585} + - {value: 0.3730031} + - {value: 0.4763865} + - {value: 0.5254973} + - {value: 0.4960644} + - {value: 0.5068032} + - {value: 0.5735616} + - {value: 0.8100898} + - {value: 1.0} + - {value: 0.8782399} + - {value: 0.3491422} + - {value: 0.3820845} + - {value: 0.4740207} + - {value: 0.5157226} + - {value: 0.4839697} + - {value: 0.4847325} + - {value: 0.4580812} + - {value: 0.5098516} + - {value: 0.4909849} + - {value: 0.4583547} + - {value: 0.3493619} + - {value: 0.3818299} + - {value: 0.525012} + - {value: 0.5256286} + - {value: 0.5563946} + - {value: 0.5335708} + - {value: 0.5015351} + - {value: 0.5456825} + - {value: 0.5011693} + - {value: 0.4655787} + - {value: 0.3315494} + - {value: 0.3902831} + - {value: 0.4717787} + - {value: 0.5041961} + - {value: 0.4990786} + - {value: 0.5042883} + - {value: 0.4628512} + - {value: 0.4902617} + - {value: 0.5396415} + - {value: 0.5198532} + - {value: 0.2616032} + - {value: 0.3247823} + - {value: 0.4294471} + - {value: 0.497298} + - {value: 0.4681868} + - {value: 0.4706579} + - {value: 0.4199528} + - {value: 0.5654115} + - {value: 0.8782399} + - {value: 1.0} +description: The correlation matrix of the unfolded differential rates. The full + error covariance can be obtained by combining the quoted error in the other tables + with these values. The ordering of the correlations is {$w$, $\cos\theta_\nu$, + $\cos\theta_\ell$, $\chi$}, where each variable has 10 bins. +independent_variables: +- header: {name: Bin} + values: + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} +- header: {name: Bin} + values: + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} +keywords: +- name: reactions + values: [BBAR0 --> D*(2010)+ LEPTON- NUBAR] +- name: observables + values: [WIDTH] +- name: phrases + values: [Decay, Charm Production] +name: Table 5 diff --git a/testsuite/test_data/1512299_invalid.yaml b/testsuite/test_data/1512299_invalid.yaml new file mode 100644 index 0000000..2a4fef6 --- /dev/null +++ b/testsuite/test_data/1512299_invalid.yaml @@ -0,0 +1,5059 @@ +{comment: 'Unfolded differential decay rates of four kinematic variables fully describing + the $\bar B^0 \to D^{*\,+} \, \ell^- \, \bar \nu_\ell$ decay in the $B$-meson + rest frame are presented. Numbers taken from a YODA file provided by Holger Schulz, + in turn prepared from a ROOT file provided by Florian Bernlochner (Belle).'} +--- +dependent_variables: +- header: {name: $\Delta\Gamma/\Delta w$, units: '$10^{-15}$ GeV'} + qualifiers: + - {name: RE, value: '$\bar{B}^0\to D^{*+}\ell^-\bar{\nu}_\ell$'} + values: + - errorss: + - {symerror: 0.1149973} + value: 1.320076 + - errors: + - {symerror: 0.1499734} + value: 2.076395 + - errors: + - {symerror: 0.1532286} + value: 2.394007 + - errors: + - {symerror: 0.1638423} + value: 2.565728 + - errors: + - {symerror: 0.1576516} + value: 2.630684 + - errors: + - {symerror: 0.1503906} + value: 2.464774 + - errors: + - {symerror: 0.1415117} + value: 2.249932 + - errors: + - {symerror: 0.1378589} + value: 2.082244 + - errors: + - {symerror: 0.1292038} + value: 1.991329 + - errors: + - {symerror: 0.1362861} + value: 1.83214 +description: The unfolded differential rate as a function of $w$. +independent_variables: +- header: {name: $w$} + values: + - {high: 1.05, low: 1.0} + - {high: 1.1, low: 1.05} + - {high: 1.15, low: 1.1} + - {high: 1.2, low: 1.15} + - {high: 1.25, low: 1.2} + - {high: 1.3, low: 1.25} + - {high: 1.35, low: 1.3} + - {high: 1.4, low: 1.35} + - {high: 1.45, low: 1.4} + - {high: 1.50377, low: 1.45} +keywords: +- name: reactions + values: [BBAR0 --> D*(2010)+ LEPTON- NUBAR] +- name: observables + values: [WIDTH] +- name: phrases + values: [Decay, Charm Production] +name: Table 1 +--- +dependent_variables: +- header: {name: $\Delta\Gamma/\Delta \cos\theta_\nu$, units: '$10^{-15}$ GeV'} + qualifiers: + - {name: RE, value: '$\bar{B}^0\to D^{*+}\ell^-\bar{\nu}_\ell$'} + values: + - errors: + - {symerror: 0.1980013} + value: 2.804054 + - errors: + - {symerror: 0.1415874} + value: 2.297274 + - errors: + - {symerror: 0.1338869} + value: 1.94773 + - errors: + - {symerror: 0.1167089} + value: 1.697506 + - errors: + - {symerror: 0.1150373} + value: 1.581993 + - errors: + - {symerror: 0.1143593} + value: 1.650243 + - errors: + - {symerror: 0.1208367} + value: 1.771547 + - errors: + - {symerror: 0.1409427} + value: 1.996114 + - errors: + - {symerror: 0.1662996} + value: 2.503046 + - errors: + - {symerror: 0.2520561} + value: 3.186291 +description: The unfolded differential rate as a function of $\cos\theta_\nu$. +independent_variables: +- header: {name: $\cos\theta_\nu$} + values: + - {high: -0.8, low: -1.0} + - {high: -0.6, low: -0.8} + - {high: -0.4, low: -0.6} + - {high: -0.2, low: -0.4} + - {high: 0.0, low: -0.2} + - {high: 0.2, low: 0.0} + - {high: 0.4, low: 0.2} + - {high: 0.6, low: 0.4} + - {high: 0.8, low: 0.6} + - {high: 1.0, low: 0.8} +keywords: +- name: reactions + values: [BBAR0 --> D*(2010)+ LEPTON- NUBAR] +- name: observables + values: [WIDTH] +- name: phrases + values: [Decay, Charm Production] +name: Table 2 +--- +dependent_variables: +- header: {name: $\Delta\Gamma/\Delta \cos\theta_\ell$, units: '$10^{-15}$ GeV'} + qualifiers: + - {name: RE, value: '$\bar{B}^0\to D^{*+}\ell^-\bar{\nu}_\ell$'} + values: + - errors: + - {symerror: 0.0745556} + value: 0.7274864 + - errors: + - {symerror: 0.09704621} + value: 1.176108 + - errors: + - {symerror: 0.1125871} + value: 1.637361 + - errors: + - {symerror: 0.1356027} + value: 2.036385 + - errors: + - {symerror: 0.1503262} + value: 2.340971 + - errors: + - {symerror: 0.1592066} + value: 2.501994 + - errors: + - {symerror: 0.1576615} + value: 2.53989 + - errors: + - {symerror: 0.1645043} + value: 2.678038 + - errors: + - {symerror: 0.2103182} + value: 2.828576 + - errors: + - {symerror: 0.2470224} + value: 2.815548 +description: The unfolded differential rate as a function of $\cos\theta_\ell$. +independent_variables: +- header: {name: $\cos\theta_\ell$} + values: + - {high: -0.8, low: -1.0} + - {high: -0.6, low: -0.8} + - {high: -0.4, low: -0.6} + - {high: -0.2, low: -0.4} + - {high: 0.0, low: -0.2} + - {high: 0.2, low: 0.0} + - {high: 0.4, low: 0.2} + - {high: 0.6, low: 0.4} + - {high: 0.8, low: 0.6} + - {high: 1.0, low: 0.8} +keywords: +- name: reactions + values: [BBAR0 --> D*(2010)+ LEPTON- NUBAR] +- name: observables + values: [WIDTH] +- name: phrases + values: [Decay, Charm Production] +name: Table 3 +--- +dependent_variables: +- header: {name: $\Delta\Gamma/\Delta \chi$, units: '$10^{-15}$ GeV'} + qualifiers: + - {name: RE, value: '$\bar{B}^0\to D^{*+}\ell^-\bar{\nu}_\ell$'} + values: + - errors: + - {symerror: 0.1603038} + value: 1.858876 + - errors: + - {symerror: 0.1590942} + value: 2.310846 + - errors: + - {symerror: 0.1646744} + value: 2.585328 + - errors: + - {symerror: 0.1572296} + value: 2.36633 + - errors: + - {symerror: 0.1304245} + value: 1.945463 + - errors: + - {symerror: 0.152497} + value: 1.873821 + - errors: + - {symerror: 0.1496803} + value: 2.111709 + - errors: + - {symerror: 0.1588761} + value: 2.3252 + - errors: + - {symerror: 0.1510489} + value: 2.1516 + - errors: + - {symerror: 0.1623077} + value: 1.886141 +description: The unfolded differential rate as a function of $\chi$. +independent_variables: +- header: {name: $\chi$} + values: + - {high: 0.62832, low: 0.0} + - {high: 1.25664, low: 0.62832} + - {high: 1.88496, low: 1.25664} + - {high: 2.51328, low: 1.88496} + - {high: 3.1416, low: 2.51328} + - {high: 3.76992, low: 3.1416} + - {high: 4.39824, low: 3.76992} + - {high: 5.02656, low: 4.39824} + - {high: 5.65488, low: 5.02656} + - {high: 6.2832, low: 5.65488} +keywords: +- name: reactions + values: [BBAR0 --> D*(2010)+ LEPTON- NUBAR] +- name: observables + values: [WIDTH] +- name: phrases + values: [Decay, Charm Production] +name: Table 4 +--- +dependent_variables: +- header: {name: Correlation, units: ''} + qualifiers: + - {name: RE, value: '$\bar{B}^0\to D^{*+}\ell^-\bar{\nu}_\ell$'} + values: + - {value: 1.0} + - {value: 0.9198639} + - {value: 0.6031224} + - {value: 0.3507121} + - {value: 0.2978477} + - {value: 0.3353124} + - {value: 0.3760429} + - {value: 0.4006477} + - {value: 0.3718988} + - {value: 0.306424} + - {value: 0.3169212} + - {value: 0.3315954} + - {value: 0.3861418} + - {value: 0.4173316} + - {value: 0.4347278} + - {value: 0.4238388} + - {value: 0.399594} + - {value: 0.3911822} + - {value: 0.3831234} + - {value: 0.3461916} + - {value: 0.3055047} + - {value: 0.3538156} + - {value: 0.3870532} + - {value: 0.3967877} + - {value: 0.4134743} + - {value: 0.412404} + - {value: 0.3842066} + - {value: 0.3779641} + - {value: 0.3688883} + - {value: 0.3302719} + - {value: 0.2762251} + - {value: 0.3490857} + - {value: 0.4015483} + - {value: 0.4097006} + - {value: 0.4095141} + - {value: 0.3685686} + - {value: 0.3967668} + - {value: 0.4205821} + - {value: 0.4167636} + - {value: 0.3491422} + - {value: 0.9198639} + - {value: 0.9999999} + - {value: 0.7999673} + - {value: 0.4993052} + - {value: 0.3916978} + - {value: 0.4002674} + - {value: 0.4389338} + - {value: 0.4512786} + - {value: 0.4290042} + - {value: 0.3573262} + - {value: 0.3490724} + - {value: 0.3790887} + - {value: 0.4223386} + - {value: 0.4568611} + - {value: 0.4597854} + - {value: 0.4629895} + - {value: 0.4627465} + - {value: 0.44549} + - {value: 0.4380167} + - {value: 0.379867} + - {value: 0.343012} + - {value: 0.4077064} + - {value: 0.4559584} + - {value: 0.4607846} + - {value: 0.4734842} + - {value: 0.4647465} + - {value: 0.4387167} + - {value: 0.4258567} + - {value: 0.3913566} + - {value: 0.3447934} + - {value: 0.3166861} + - {value: 0.3948301} + - {value: 0.4636876} + - {value: 0.4648443} + - {value: 0.4593887} + - {value: 0.3828682} + - {value: 0.4371622} + - {value: 0.4612569} + - {value: 0.4541091} + - {value: 0.3820845} + - {value: 0.6031224} + - {value: 0.7999673} + - {value: 1.0} + - {value: 0.8321059} + - {value: 0.5983163} + - {value: 0.517828} + - {value: 0.5228921} + - {value: 0.5532238} + - {value: 0.5242777} + - {value: 0.4646957} + - {value: 0.38101} + - {value: 0.4346851} + - {value: 0.5289612} + - {value: 0.5421318} + - {value: 0.5450482} + - {value: 0.5284737} + - {value: 0.5246881} + - {value: 0.5455422} + - {value: 0.5201531} + - {value: 0.462185} + - {value: 0.3962243} + - {value: 0.4733237} + - {value: 0.5439389} + - {value: 0.5714353} + - {value: 0.5780035} + - {value: 0.5596979} + - {value: 0.5001701} + - {value: 0.5036988} + - {value: 0.5188267} + - {value: 0.4677506} + - {value: 0.4021851} + - {value: 0.4745842} + - {value: 0.5478322} + - {value: 0.5621234} + - {value: 0.5522274} + - {value: 0.5208586} + - {value: 0.5496891} + - {value: 0.5570953} + - {value: 0.5315233} + - {value: 0.4740207} + - {value: 0.3507121} + - {value: 0.4993052} + - {value: 0.832106} + - {value: 1.0} + - {value: 0.8305211} + - {value: 0.6507897} + - {value: 0.5524676} + - {value: 0.5724568} + - {value: 0.5447906} + - {value: 0.5002587} + - {value: 0.366372} + - {value: 0.4389144} + - {value: 0.586151} + - {value: 0.5884024} + - {value: 0.591081} + - {value: 0.551545} + - {value: 0.5255122} + - {value: 0.5696145} + - {value: 0.5461472} + - {value: 0.5017912} + - {value: 0.398995} + - {value: 0.4756563} + - {value: 0.5548372} + - {value: 0.5929123} + - {value: 0.5994828} + - {value: 0.5863075} + - {value: 0.5232138} + - {value: 0.5369422} + - {value: 0.5700876} + - {value: 0.5156088} + - {value: 0.4283284} + - {value: 0.4825355} + - {value: 0.5586637} + - {value: 0.5944344} + - {value: 0.5902525} + - {value: 0.5927449} + - {value: 0.5833085} + - {value: 0.5775528} + - {value: 0.5577346} + - {value: 0.5157226} + - {value: 0.2978477} + - {value: 0.3916978} + - {value: 0.5983163} + - {value: 0.8305212} + - {value: 1.0} + - {value: 0.847231} + - {value: 0.5922797} + - {value: 0.4947789} + - {value: 0.4958819} + - {value: 0.4508318} + - {value: 0.3598642} + - {value: 0.4474343} + - {value: 0.5337185} + - {value: 0.5555662} + - {value: 0.5267338} + - {value: 0.5259919} + - {value: 0.5186687} + - {value: 0.5010405} + - {value: 0.5206274} + - {value: 0.4669574} + - {value: 0.3677206} + - {value: 0.4476211} + - {value: 0.5236871} + - {value: 0.5486076} + - {value: 0.5633473} + - {value: 0.5459371} + - {value: 0.5418639} + - {value: 0.5653888} + - {value: 0.4680985} + - {value: 0.3874238} + - {value: 0.3717686} + - {value: 0.4340242} + - {value: 0.5277958} + - {value: 0.5373428} + - {value: 0.5462201} + - {value: 0.4635966} + - {value: 0.5162223} + - {value: 0.5238772} + - {value: 0.5366688} + - {value: 0.4839697} + - {value: 0.3353124} + - {value: 0.4002674} + - {value: 0.517828} + - {value: 0.6507897} + - {value: 0.847231} + - {value: 1.0} + - {value: 0.8118079} + - {value: 0.6020515} + - {value: 0.4913688} + - {value: 0.4223858} + - {value: 0.3677512} + - {value: 0.4501626} + - {value: 0.5659949} + - {value: 0.577222} + - {value: 0.5590023} + - {value: 0.5464232} + - {value: 0.5203364} + - {value: 0.5193035} + - {value: 0.523661} + - {value: 0.4672796} + - {value: 0.3919587} + - {value: 0.4666339} + - {value: 0.5425271} + - {value: 0.5656095} + - {value: 0.5781909} + - {value: 0.5681592} + - {value: 0.5588677} + - {value: 0.5742147} + - {value: 0.5013442} + - {value: 0.4255378} + - {value: 0.4103058} + - {value: 0.4697887} + - {value: 0.5386609} + - {value: 0.5464337} + - {value: 0.5648368} + - {value: 0.5120445} + - {value: 0.5382045} + - {value: 0.5470396} + - {value: 0.5482565} + - {value: 0.4847325} + - {value: 0.3760429} + - {value: 0.4389338} + - {value: 0.5228921} + - {value: 0.5524676} + - {value: 0.5922797} + - {value: 0.8118079} + - {value: 1.0} + - {value: 0.8512704} + - {value: 0.6096553} + - {value: 0.4578392} + - {value: 0.3725603} + - {value: 0.4452238} + - {value: 0.5778059} + - {value: 0.5882692} + - {value: 0.5877809} + - {value: 0.5621049} + - {value: 0.5286225} + - {value: 0.5482084} + - {value: 0.5405946} + - {value: 0.4888916} + - {value: 0.4078023} + - {value: 0.475953} + - {value: 0.5452793} + - {value: 0.5583428} + - {value: 0.5663166} + - {value: 0.5726013} + - {value: 0.5618103} + - {value: 0.5539852} + - {value: 0.5269035} + - {value: 0.4647549} + - {value: 0.4385153} + - {value: 0.4940926} + - {value: 0.5570905} + - {value: 0.5842683} + - {value: 0.6134816} + - {value: 0.5791049} + - {value: 0.5696839} + - {value: 0.5590646} + - {value: 0.5263739} + - {value: 0.4580812} + - {value: 0.4006477} + - {value: 0.4512786} + - {value: 0.5532237} + - {value: 0.5724568} + - {value: 0.4947789} + - {value: 0.6020515} + - {value: 0.8512704} + - {value: 0.9999999} + - {value: 0.8254023} + - {value: 0.6261041} + - {value: 0.3941318} + - {value: 0.4067369} + - {value: 0.5652996} + - {value: 0.5821678} + - {value: 0.6286399} + - {value: 0.5895662} + - {value: 0.5370888} + - {value: 0.5824826} + - {value: 0.5563993} + - {value: 0.5195253} + - {value: 0.3951283} + - {value: 0.4598547} + - {value: 0.533555} + - {value: 0.5664868} + - {value: 0.5655695} + - {value: 0.5775054} + - {value: 0.5517889} + - {value: 0.5526494} + - {value: 0.5810549} + - {value: 0.5369405} + - {value: 0.4545259} + - {value: 0.5054945} + - {value: 0.5522632} + - {value: 0.6018273} + - {value: 0.6117017} + - {value: 0.6303621} + - {value: 0.5830181} + - {value: 0.591129} + - {value: 0.5693963} + - {value: 0.5098516} + - {value: 0.3718988} + - {value: 0.4290042} + - {value: 0.5242777} + - {value: 0.5447906} + - {value: 0.4958819} + - {value: 0.4913688} + - {value: 0.6096553} + - {value: 0.8254024} + - {value: 1.0} + - {value: 0.9065986} + - {value: 0.3774298} + - {value: 0.4102749} + - {value: 0.5051314} + - {value: 0.5336971} + - {value: 0.5761675} + - {value: 0.5687646} + - {value: 0.5362359} + - {value: 0.5449924} + - {value: 0.5271298} + - {value: 0.5016546} + - {value: 0.3555543} + - {value: 0.4233712} + - {value: 0.5053012} + - {value: 0.5486565} + - {value: 0.5527663} + - {value: 0.5507773} + - {value: 0.5396766} + - {value: 0.5353675} + - {value: 0.5171695} + - {value: 0.4723012} + - {value: 0.4197755} + - {value: 0.4970112} + - {value: 0.5339669} + - {value: 0.5397439} + - {value: 0.5472274} + - {value: 0.5338901} + - {value: 0.5298672} + - {value: 0.5425881} + - {value: 0.5396249} + - {value: 0.4909849} + - {value: 0.306424} + - {value: 0.3573262} + - {value: 0.4646957} + - {value: 0.5002587} + - {value: 0.4508317} + - {value: 0.4223858} + - {value: 0.4578393} + - {value: 0.6261041} + - {value: 0.9065986} + - {value: 1.0} + - {value: 0.3263157} + - {value: 0.3555878} + - {value: 0.45616} + - {value: 0.4772956} + - {value: 0.5266804} + - {value: 0.5140792} + - {value: 0.4761577} + - {value: 0.4956195} + - {value: 0.4751918} + - {value: 0.4666305} + - {value: 0.3204636} + - {value: 0.3803371} + - {value: 0.4580238} + - {value: 0.4992045} + - {value: 0.4951063} + - {value: 0.4939886} + - {value: 0.4817699} + - {value: 0.4934392} + - {value: 0.4992527} + - {value: 0.4567957} + - {value: 0.388331} + - {value: 0.4692846} + - {value: 0.4841476} + - {value: 0.4736509} + - {value: 0.4748105} + - {value: 0.4925701} + - {value: 0.4740383} + - {value: 0.4789501} + - {value: 0.4831319} + - {value: 0.4583547} + - {value: 0.3169212} + - {value: 0.3490724} + - {value: 0.38101} + - {value: 0.366372} + - {value: 0.3598642} + - {value: 0.3677512} + - {value: 0.3725603} + - {value: 0.3941318} + - {value: 0.3774298} + - {value: 0.3263156} + - {value: 1.0} + - {value: 0.6612038} + - {value: 0.3559476} + - {value: 0.2941343} + - {value: 0.3294497} + - {value: 0.3347794} + - {value: 0.3189403} + - {value: 0.3436466} + - {value: 0.3353155} + - {value: 0.3124705} + - {value: 0.3142416} + - {value: 0.3508489} + - {value: 0.3889019} + - {value: 0.3947378} + - {value: 0.4039269} + - {value: 0.3946544} + - {value: 0.3755169} + - {value: 0.3737119} + - {value: 0.3858202} + - {value: 0.3348025} + - {value: 0.2779332} + - {value: 0.3697495} + - {value: 0.4212874} + - {value: 0.4124209} + - {value: 0.4078306} + - {value: 0.3890524} + - {value: 0.407084} + - {value: 0.3914492} + - {value: 0.3847999} + - {value: 0.3493619} + - {value: 0.3315954} + - {value: 0.3790887} + - {value: 0.4346851} + - {value: 0.4389144} + - {value: 0.4474343} + - {value: 0.4501626} + - {value: 0.4452238} + - {value: 0.406737} + - {value: 0.4102749} + - {value: 0.3555878} + - {value: 0.6612037} + - {value: 1.0} + - {value: 0.7493617} + - {value: 0.5291846} + - {value: 0.3870321} + - {value: 0.3617816} + - {value: 0.3562778} + - {value: 0.36801} + - {value: 0.3941151} + - {value: 0.3674833} + - {value: 0.3693158} + - {value: 0.4206027} + - {value: 0.4679057} + - {value: 0.4532866} + - {value: 0.4603782} + - {value: 0.4542675} + - {value: 0.4305595} + - {value: 0.4332941} + - {value: 0.3872357} + - {value: 0.3302433} + - {value: 0.327141} + - {value: 0.3977923} + - {value: 0.4665866} + - {value: 0.4723306} + - {value: 0.4866991} + - {value: 0.3980435} + - {value: 0.4396378} + - {value: 0.4362064} + - {value: 0.4218351} + - {value: 0.3818299} + - {value: 0.3861418} + - {value: 0.4223386} + - {value: 0.5289611} + - {value: 0.586151} + - {value: 0.5337185} + - {value: 0.5659949} + - {value: 0.5778059} + - {value: 0.5652996} + - {value: 0.5051315} + - {value: 0.45616} + - {value: 0.3559476} + - {value: 0.7493618} + - {value: 1.0} + - {value: 0.8675869} + - {value: 0.6876299} + - {value: 0.5386035} + - {value: 0.4522239} + - {value: 0.5189107} + - {value: 0.5093999} + - {value: 0.4847413} + - {value: 0.4300192} + - {value: 0.4963526} + - {value: 0.5635991} + - {value: 0.5881406} + - {value: 0.5931021} + - {value: 0.583864} + - {value: 0.5228369} + - {value: 0.5570607} + - {value: 0.6001555} + - {value: 0.5397189} + - {value: 0.4407575} + - {value: 0.4973524} + - {value: 0.561849} + - {value: 0.6178795} + - {value: 0.6279593} + - {value: 0.6304131} + - {value: 0.5801471} + - {value: 0.5785226} + - {value: 0.561484} + - {value: 0.5250121} + - {value: 0.4173316} + - {value: 0.4568611} + - {value: 0.5421318} + - {value: 0.5884024} + - {value: 0.5555662} + - {value: 0.577222} + - {value: 0.5882692} + - {value: 0.5821678} + - {value: 0.5336971} + - {value: 0.4772956} + - {value: 0.2941343} + - {value: 0.5291846} + - {value: 0.8675868} + - {value: 1.0} + - {value: 0.8867846} + - {value: 0.7139812} + - {value: 0.5503827} + - {value: 0.5139188} + - {value: 0.4809273} + - {value: 0.4469745} + - {value: 0.4201996} + - {value: 0.498846} + - {value: 0.5771369} + - {value: 0.6033672} + - {value: 0.6102862} + - {value: 0.5920104} + - {value: 0.5402818} + - {value: 0.5613447} + - {value: 0.5654491} + - {value: 0.5111578} + - {value: 0.4266066} + - {value: 0.4838765} + - {value: 0.5660537} + - {value: 0.6196359} + - {value: 0.63475} + - {value: 0.6042646} + - {value: 0.5742399} + - {value: 0.5742076} + - {value: 0.5736302} + - {value: 0.5256287} + - {value: 0.4347278} + - {value: 0.4597854} + - {value: 0.5450482} + - {value: 0.591081} + - {value: 0.5267338} + - {value: 0.5590022} + - {value: 0.5877809} + - {value: 0.6286399} + - {value: 0.5761675} + - {value: 0.5266804} + - {value: 0.3294497} + - {value: 0.3870321} + - {value: 0.6876299} + - {value: 0.8867845} + - {value: 0.9999999} + - {value: 0.9041975} + - {value: 0.6858584} + - {value: 0.5850355} + - {value: 0.4747399} + - {value: 0.4431033} + - {value: 0.3867853} + - {value: 0.4613464} + - {value: 0.5606052} + - {value: 0.6201776} + - {value: 0.6274429} + - {value: 0.6146054} + - {value: 0.5473815} + - {value: 0.5776805} + - {value: 0.6269868} + - {value: 0.5839519} + - {value: 0.4507834} + - {value: 0.5167991} + - {value: 0.5795819} + - {value: 0.6361788} + - {value: 0.6365596} + - {value: 0.6602257} + - {value: 0.6046078} + - {value: 0.6043881} + - {value: 0.5993031} + - {value: 0.5563946} + - {value: 0.4238388} + - {value: 0.4629895} + - {value: 0.5284737} + - {value: 0.551545} + - {value: 0.5259919} + - {value: 0.5464232} + - {value: 0.5621049} + - {value: 0.5895662} + - {value: 0.5687646} + - {value: 0.5140792} + - {value: 0.3347794} + - {value: 0.3617816} + - {value: 0.5386035} + - {value: 0.7139812} + - {value: 0.9041975} + - {value: 1.0} + - {value: 0.874798} + - {value: 0.6646616} + - {value: 0.4735855} + - {value: 0.3828151} + - {value: 0.3900099} + - {value: 0.4585435} + - {value: 0.5471002} + - {value: 0.5953627} + - {value: 0.6098347} + - {value: 0.6008059} + - {value: 0.5603556} + - {value: 0.5868527} + - {value: 0.5596693} + - {value: 0.5007867} + - {value: 0.4141378} + - {value: 0.4911527} + - {value: 0.5598769} + - {value: 0.5954884} + - {value: 0.598531} + - {value: 0.5785385} + - {value: 0.5833084} + - {value: 0.5999623} + - {value: 0.5955763} + - {value: 0.5335708} + - {value: 0.399594} + - {value: 0.4627465} + - {value: 0.5246881} + - {value: 0.5255121} + - {value: 0.5186686} + - {value: 0.5203364} + - {value: 0.5286225} + - {value: 0.5370888} + - {value: 0.5362359} + - {value: 0.4761577} + - {value: 0.3189403} + - {value: 0.3562778} + - {value: 0.4522239} + - {value: 0.5503826} + - {value: 0.6858584} + - {value: 0.8747981} + - {value: 0.9999999} + - {value: 0.8503855} + - {value: 0.5894997} + - {value: 0.3691803} + - {value: 0.397739} + - {value: 0.460757} + - {value: 0.5243719} + - {value: 0.5478329} + - {value: 0.5785809} + - {value: 0.5768912} + - {value: 0.5493948} + - {value: 0.5675738} + - {value: 0.4929703} + - {value: 0.425794} + - {value: 0.3791833} + - {value: 0.4573005} + - {value: 0.5280042} + - {value: 0.5379244} + - {value: 0.5465757} + - {value: 0.4963853} + - {value: 0.5492527} + - {value: 0.5813083} + - {value: 0.5783583} + - {value: 0.5015352} + - {value: 0.3911822} + - {value: 0.44549} + - {value: 0.5455421} + - {value: 0.5696145} + - {value: 0.5010405} + - {value: 0.5193035} + - {value: 0.5482084} + - {value: 0.5824826} + - {value: 0.5449924} + - {value: 0.4956195} + - {value: 0.3436466} + - {value: 0.36801} + - {value: 0.5189107} + - {value: 0.5139188} + - {value: 0.5850355} + - {value: 0.6646616} + - {value: 0.8503855} + - {value: 1.0} + - {value: 0.8322224} + - {value: 0.5656678} + - {value: 0.4183966} + - {value: 0.4767235} + - {value: 0.533383} + - {value: 0.5662469} + - {value: 0.5942985} + - {value: 0.6037756} + - {value: 0.5402792} + - {value: 0.5648411} + - {value: 0.594165} + - {value: 0.5413501} + - {value: 0.4390939} + - {value: 0.5008727} + - {value: 0.5462788} + - {value: 0.5874393} + - {value: 0.5914048} + - {value: 0.6211942} + - {value: 0.6076893} + - {value: 0.6103566} + - {value: 0.5982845} + - {value: 0.5456824} + - {value: 0.3831233} + - {value: 0.4380167} + - {value: 0.5201531} + - {value: 0.5461472} + - {value: 0.5206274} + - {value: 0.523661} + - {value: 0.5405946} + - {value: 0.5563993} + - {value: 0.5271299} + - {value: 0.4751917} + - {value: 0.3353155} + - {value: 0.394115} + - {value: 0.5093999} + - {value: 0.4809273} + - {value: 0.4747399} + - {value: 0.4735854} + - {value: 0.5894996} + - {value: 0.8322224} + - {value: 1.0} + - {value: 0.8526627} + - {value: 0.3882903} + - {value: 0.4519932} + - {value: 0.5060688} + - {value: 0.5343134} + - {value: 0.5594705} + - {value: 0.5696365} + - {value: 0.5222987} + - {value: 0.522649} + - {value: 0.5237962} + - {value: 0.4723776} + - {value: 0.4413506} + - {value: 0.4891346} + - {value: 0.5204438} + - {value: 0.5589473} + - {value: 0.5665445} + - {value: 0.5524761} + - {value: 0.5705925} + - {value: 0.5706759} + - {value: 0.5638503} + - {value: 0.5011693} + - {value: 0.3461916} + - {value: 0.379867} + - {value: 0.462185} + - {value: 0.5017913} + - {value: 0.4669574} + - {value: 0.4672796} + - {value: 0.4888915} + - {value: 0.5195253} + - {value: 0.5016546} + - {value: 0.4666305} + - {value: 0.3124705} + - {value: 0.3674833} + - {value: 0.4847413} + - {value: 0.4469745} + - {value: 0.4431033} + - {value: 0.3828151} + - {value: 0.3691803} + - {value: 0.5656677} + - {value: 0.8526627} + - {value: 1.0} + - {value: 0.3192773} + - {value: 0.3753234} + - {value: 0.4473194} + - {value: 0.5037894} + - {value: 0.5198082} + - {value: 0.5177358} + - {value: 0.4531388} + - {value: 0.4523339} + - {value: 0.5135452} + - {value: 0.4840072} + - {value: 0.4073142} + - {value: 0.4655105} + - {value: 0.4701914} + - {value: 0.5029043} + - {value: 0.504008} + - {value: 0.5355144} + - {value: 0.5326779} + - {value: 0.5320668} + - {value: 0.5205823} + - {value: 0.4655786} + - {value: 0.3055047} + - {value: 0.343012} + - {value: 0.3962243} + - {value: 0.398995} + - {value: 0.3677205} + - {value: 0.3919587} + - {value: 0.4078023} + - {value: 0.3951283} + - {value: 0.3555543} + - {value: 0.3204636} + - {value: 0.3142416} + - {value: 0.3693158} + - {value: 0.4300192} + - {value: 0.4201996} + - {value: 0.3867853} + - {value: 0.3900099} + - {value: 0.397739} + - {value: 0.4183967} + - {value: 0.3882903} + - {value: 0.3192773} + - {value: 0.9999999} + - {value: 0.9341593} + - {value: 0.6692832} + - {value: 0.3633687} + - {value: 0.2795612} + - {value: 0.3052537} + - {value: 0.3328368} + - {value: 0.3652369} + - {value: 0.3442725} + - {value: 0.2919834} + - {value: 0.287925} + - {value: 0.3295419} + - {value: 0.364684} + - {value: 0.3915796} + - {value: 0.4292277} + - {value: 0.4139487} + - {value: 0.4277495} + - {value: 0.3980491} + - {value: 0.3788583} + - {value: 0.3315495} + - {value: 0.3538156} + - {value: 0.4077064} + - {value: 0.4733237} + - {value: 0.4756564} + - {value: 0.4476211} + - {value: 0.4666339} + - {value: 0.475953} + - {value: 0.4598548} + - {value: 0.4233712} + - {value: 0.3803371} + - {value: 0.3508489} + - {value: 0.4206027} + - {value: 0.4963526} + - {value: 0.4988459} + - {value: 0.4613464} + - {value: 0.4585434} + - {value: 0.460757} + - {value: 0.4767235} + - {value: 0.4519932} + - {value: 0.3753234} + - {value: 0.9341593} + - {value: 0.9999999} + - {value: 0.8472858} + - {value: 0.5267336} + - {value: 0.3821648} + - {value: 0.3697641} + - {value: 0.3961959} + - {value: 0.428742} + - {value: 0.3945717} + - {value: 0.3311924} + - {value: 0.3354506} + - {value: 0.3889115} + - {value: 0.4395747} + - {value: 0.4618291} + - {value: 0.5005998} + - {value: 0.4637537} + - {value: 0.4826257} + - {value: 0.4545754} + - {value: 0.4387223} + - {value: 0.3902832} + - {value: 0.3870532} + - {value: 0.4559584} + - {value: 0.5439389} + - {value: 0.5548372} + - {value: 0.5236871} + - {value: 0.542527} + - {value: 0.5452793} + - {value: 0.533555} + - {value: 0.5053012} + - {value: 0.4580238} + - {value: 0.3889019} + - {value: 0.4679057} + - {value: 0.5635991} + - {value: 0.5771369} + - {value: 0.5606051} + - {value: 0.5471002} + - {value: 0.5243719} + - {value: 0.533383} + - {value: 0.5060688} + - {value: 0.4473195} + - {value: 0.6692832} + - {value: 0.8472858} + - {value: 1.0} + - {value: 0.8306836} + - {value: 0.5970316} + - {value: 0.4725405} + - {value: 0.4568587} + - {value: 0.4890488} + - {value: 0.4714912} + - {value: 0.4128359} + - {value: 0.3828144} + - {value: 0.4429572} + - {value: 0.5070743} + - {value: 0.5357438} + - {value: 0.5708125} + - {value: 0.5339023} + - {value: 0.5474989} + - {value: 0.5293105} + - {value: 0.5121174} + - {value: 0.4717786} + - {value: 0.3967877} + - {value: 0.4607846} + - {value: 0.5714353} + - {value: 0.5929123} + - {value: 0.5486076} + - {value: 0.5656095} + - {value: 0.5583428} + - {value: 0.5664868} + - {value: 0.5486565} + - {value: 0.4992045} + - {value: 0.3947378} + - {value: 0.4532866} + - {value: 0.5881407} + - {value: 0.6033672} + - {value: 0.6201776} + - {value: 0.5953628} + - {value: 0.5478329} + - {value: 0.5662469} + - {value: 0.5343134} + - {value: 0.5037893} + - {value: 0.3633687} + - {value: 0.5267337} + - {value: 0.8306836} + - {value: 1.0} + - {value: 0.8613638} + - {value: 0.632252} + - {value: 0.4943755} + - {value: 0.5028211} + - {value: 0.541155} + - {value: 0.4993515} + - {value: 0.4130652} + - {value: 0.4778479} + - {value: 0.5403696} + - {value: 0.5813455} + - {value: 0.5977463} + - {value: 0.589896} + - {value: 0.5855842} + - {value: 0.5815328} + - {value: 0.5517556} + - {value: 0.5041961} + - {value: 0.4134742} + - {value: 0.4734842} + - {value: 0.5780035} + - {value: 0.5994828} + - {value: 0.5633473} + - {value: 0.5781909} + - {value: 0.5663166} + - {value: 0.5655695} + - {value: 0.5527663} + - {value: 0.4951063} + - {value: 0.4039269} + - {value: 0.4603782} + - {value: 0.5931021} + - {value: 0.6102862} + - {value: 0.6274429} + - {value: 0.6098347} + - {value: 0.5785809} + - {value: 0.5942985} + - {value: 0.5594706} + - {value: 0.5198082} + - {value: 0.2795612} + - {value: 0.3821648} + - {value: 0.5970316} + - {value: 0.8613638} + - {value: 1.0} + - {value: 0.8567884} + - {value: 0.6098678} + - {value: 0.5087815} + - {value: 0.5220264} + - {value: 0.4982412} + - {value: 0.4126756} + - {value: 0.4843712} + - {value: 0.5454515} + - {value: 0.5862091} + - {value: 0.6012638} + - {value: 0.5846082} + - {value: 0.5903722} + - {value: 0.593475} + - {value: 0.5666704} + - {value: 0.4990786} + - {value: 0.412404} + - {value: 0.4647465} + - {value: 0.5596979} + - {value: 0.5863075} + - {value: 0.5459371} + - {value: 0.5681592} + - {value: 0.5726013} + - {value: 0.5775053} + - {value: 0.5507773} + - {value: 0.4939886} + - {value: 0.3946544} + - {value: 0.4542675} + - {value: 0.583864} + - {value: 0.5920105} + - {value: 0.6146053} + - {value: 0.6008059} + - {value: 0.5768912} + - {value: 0.6037756} + - {value: 0.5696365} + - {value: 0.5177358} + - {value: 0.3052537} + - {value: 0.3697641} + - {value: 0.4725405} + - {value: 0.6322519} + - {value: 0.8567884} + - {value: 1.0} + - {value: 0.8207091} + - {value: 0.5958993} + - {value: 0.5271346} + - {value: 0.4947617} + - {value: 0.4258792} + - {value: 0.4979812} + - {value: 0.5415233} + - {value: 0.5852984} + - {value: 0.6016054} + - {value: 0.5836042} + - {value: 0.5794524} + - {value: 0.5857524} + - {value: 0.5723218} + - {value: 0.5042883} + - {value: 0.3842065} + - {value: 0.4387167} + - {value: 0.5001701} + - {value: 0.5232138} + - {value: 0.5418639} + - {value: 0.5588677} + - {value: 0.5618103} + - {value: 0.5517889} + - {value: 0.5396765} + - {value: 0.4817699} + - {value: 0.3755169} + - {value: 0.4305595} + - {value: 0.5228369} + - {value: 0.5402817} + - {value: 0.5473815} + - {value: 0.5603556} + - {value: 0.5493948} + - {value: 0.5402792} + - {value: 0.5222986} + - {value: 0.4531388} + - {value: 0.3328368} + - {value: 0.3961959} + - {value: 0.4568587} + - {value: 0.4943755} + - {value: 0.6098678} + - {value: 0.8207091} + - {value: 1.0} + - {value: 0.8306154} + - {value: 0.5348155} + - {value: 0.3811606} + - {value: 0.3856742} + - {value: 0.4673632} + - {value: 0.5316476} + - {value: 0.539538} + - {value: 0.5628124} + - {value: 0.507857} + - {value: 0.5343922} + - {value: 0.525992} + - {value: 0.5281118} + - {value: 0.4628513} + - {value: 0.3779641} + - {value: 0.4258567} + - {value: 0.5036988} + - {value: 0.5369422} + - {value: 0.5653888} + - {value: 0.5742147} + - {value: 0.5539852} + - {value: 0.5526494} + - {value: 0.5353675} + - {value: 0.4934393} + - {value: 0.3737119} + - {value: 0.4332941} + - {value: 0.5570607} + - {value: 0.5613447} + - {value: 0.5776805} + - {value: 0.5868527} + - {value: 0.5675738} + - {value: 0.5648411} + - {value: 0.522649} + - {value: 0.4523339} + - {value: 0.3652369} + - {value: 0.428742} + - {value: 0.4890488} + - {value: 0.5028211} + - {value: 0.5087815} + - {value: 0.5958993} + - {value: 0.8306155} + - {value: 0.9999999} + - {value: 0.7361072} + - {value: 0.4588076} + - {value: 0.3963798} + - {value: 0.4889209} + - {value: 0.5537978} + - {value: 0.549853} + - {value: 0.5630984} + - {value: 0.5531643} + - {value: 0.5664569} + - {value: 0.5545269} + - {value: 0.5483515} + - {value: 0.4902617} + - {value: 0.3688883} + - {value: 0.3913566} + - {value: 0.5188267} + - {value: 0.5700876} + - {value: 0.4680985} + - {value: 0.5013443} + - {value: 0.5269036} + - {value: 0.5810549} + - {value: 0.5171695} + - {value: 0.4992527} + - {value: 0.3858202} + - {value: 0.3872357} + - {value: 0.6001555} + - {value: 0.5654491} + - {value: 0.6269868} + - {value: 0.5596693} + - {value: 0.4929703} + - {value: 0.594165} + - {value: 0.5237962} + - {value: 0.5135452} + - {value: 0.3442725} + - {value: 0.3945717} + - {value: 0.4714912} + - {value: 0.541155} + - {value: 0.5220264} + - {value: 0.5271347} + - {value: 0.5348155} + - {value: 0.7361072} + - {value: 0.9999999} + - {value: 0.8667954} + - {value: 0.4362362} + - {value: 0.5106664} + - {value: 0.535643} + - {value: 0.5881829} + - {value: 0.5815799} + - {value: 0.7047297} + - {value: 0.6113205} + - {value: 0.5889513} + - {value: 0.5582339} + - {value: 0.5396415} + - {value: 0.3302719} + - {value: 0.3447934} + - {value: 0.4677506} + - {value: 0.5156088} + - {value: 0.3874238} + - {value: 0.4255378} + - {value: 0.4647549} + - {value: 0.5369405} + - {value: 0.4723012} + - {value: 0.4567957} + - {value: 0.3348025} + - {value: 0.3302433} + - {value: 0.5397189} + - {value: 0.5111578} + - {value: 0.5839519} + - {value: 0.5007867} + - {value: 0.4257941} + - {value: 0.54135} + - {value: 0.4723776} + - {value: 0.4840072} + - {value: 0.2919834} + - {value: 0.3311924} + - {value: 0.4128359} + - {value: 0.4993515} + - {value: 0.4982412} + - {value: 0.4947617} + - {value: 0.3811606} + - {value: 0.4588076} + - {value: 0.8667954} + - {value: 1.0} + - {value: 0.3993573} + - {value: 0.4568887} + - {value: 0.4666959} + - {value: 0.5457208} + - {value: 0.5317384} + - {value: 0.6637205} + - {value: 0.5549452} + - {value: 0.5497598} + - {value: 0.5229432} + - {value: 0.5198532} + - {value: 0.2762251} + - {value: 0.3166861} + - {value: 0.4021851} + - {value: 0.4283284} + - {value: 0.3717686} + - {value: 0.4103058} + - {value: 0.4385153} + - {value: 0.4545259} + - {value: 0.4197755} + - {value: 0.388331} + - {value: 0.2779332} + - {value: 0.327141} + - {value: 0.4407575} + - {value: 0.4266066} + - {value: 0.4507834} + - {value: 0.4141378} + - {value: 0.3791833} + - {value: 0.4390939} + - {value: 0.4413506} + - {value: 0.4073142} + - {value: 0.287925} + - {value: 0.3354506} + - {value: 0.3828144} + - {value: 0.4130652} + - {value: 0.4126756} + - {value: 0.4258792} + - {value: 0.3856742} + - {value: 0.3963798} + - {value: 0.4362362} + - {value: 0.3993572} + - {value: 0.9999999} + - {value: 0.8649951} + - {value: 0.4765345} + - {value: 0.3662961} + - {value: 0.3869486} + - {value: 0.4514275} + - {value: 0.4354388} + - {value: 0.3813463} + - {value: 0.290585} + - {value: 0.2616032} + - {value: 0.3490857} + - {value: 0.3948302} + - {value: 0.4745842} + - {value: 0.4825355} + - {value: 0.4340242} + - {value: 0.4697887} + - {value: 0.4940926} + - {value: 0.5054945} + - {value: 0.4970112} + - {value: 0.4692846} + - {value: 0.3697495} + - {value: 0.3977923} + - {value: 0.4973524} + - {value: 0.4838764} + - {value: 0.5167991} + - {value: 0.4911527} + - {value: 0.4573005} + - {value: 0.5008727} + - {value: 0.4891346} + - {value: 0.4655105} + - {value: 0.3295419} + - {value: 0.3889115} + - {value: 0.4429572} + - {value: 0.4778479} + - {value: 0.4843712} + - {value: 0.4979812} + - {value: 0.4673632} + - {value: 0.4889208} + - {value: 0.5106664} + - {value: 0.4568887} + - {value: 0.8649952} + - {value: 1.0} + - {value: 0.7696602} + - {value: 0.5501278} + - {value: 0.4690312} + - {value: 0.4896641} + - {value: 0.4855286} + - {value: 0.4460978} + - {value: 0.373003} + - {value: 0.3247823} + - {value: 0.4015483} + - {value: 0.4636876} + - {value: 0.5478322} + - {value: 0.5586637} + - {value: 0.5277958} + - {value: 0.5386609} + - {value: 0.5570905} + - {value: 0.5522632} + - {value: 0.5339669} + - {value: 0.4841476} + - {value: 0.4212874} + - {value: 0.4665866} + - {value: 0.5618491} + - {value: 0.5660537} + - {value: 0.5795819} + - {value: 0.5598769} + - {value: 0.5280043} + - {value: 0.5462788} + - {value: 0.5204438} + - {value: 0.4701914} + - {value: 0.364684} + - {value: 0.4395747} + - {value: 0.5070742} + - {value: 0.5403697} + - {value: 0.5454515} + - {value: 0.5415233} + - {value: 0.5316477} + - {value: 0.5537978} + - {value: 0.535643} + - {value: 0.4666959} + - {value: 0.4765345} + - {value: 0.7696602} + - {value: 1.0} + - {value: 0.8504587} + - {value: 0.6496646} + - {value: 0.5212811} + - {value: 0.5070499} + - {value: 0.4920191} + - {value: 0.4763865} + - {value: 0.4294471} + - {value: 0.4097006} + - {value: 0.4648443} + - {value: 0.5621234} + - {value: 0.5944344} + - {value: 0.5373428} + - {value: 0.5464337} + - {value: 0.5842683} + - {value: 0.6018273} + - {value: 0.5397439} + - {value: 0.4736509} + - {value: 0.4124209} + - {value: 0.4723306} + - {value: 0.6178795} + - {value: 0.6196359} + - {value: 0.6361788} + - {value: 0.5954884} + - {value: 0.5379244} + - {value: 0.5874392} + - {value: 0.5589473} + - {value: 0.5029043} + - {value: 0.3915796} + - {value: 0.461829} + - {value: 0.5357438} + - {value: 0.5813455} + - {value: 0.5862091} + - {value: 0.5852984} + - {value: 0.539538} + - {value: 0.5498529} + - {value: 0.5881829} + - {value: 0.5457208} + - {value: 0.3662961} + - {value: 0.5501278} + - {value: 0.8504587} + - {value: 0.9999999} + - {value: 0.8733808} + - {value: 0.6653978} + - {value: 0.549638} + - {value: 0.5195854} + - {value: 0.5254974} + - {value: 0.497298} + - {value: 0.4095141} + - {value: 0.4593886} + - {value: 0.5522274} + - {value: 0.5902525} + - {value: 0.5462201} + - {value: 0.5648368} + - {value: 0.6134816} + - {value: 0.6117017} + - {value: 0.5472274} + - {value: 0.4748105} + - {value: 0.4078306} + - {value: 0.4866991} + - {value: 0.6279593} + - {value: 0.63475} + - {value: 0.6365596} + - {value: 0.598531} + - {value: 0.5465757} + - {value: 0.5914047} + - {value: 0.5665445} + - {value: 0.504008} + - {value: 0.4292277} + - {value: 0.5005998} + - {value: 0.5708125} + - {value: 0.5977463} + - {value: 0.6012638} + - {value: 0.6016054} + - {value: 0.5628124} + - {value: 0.5630984} + - {value: 0.5815799} + - {value: 0.5317384} + - {value: 0.3869486} + - {value: 0.4690312} + - {value: 0.6496646} + - {value: 0.8733808} + - {value: 1.0} + - {value: 0.8289874} + - {value: 0.6654938} + - {value: 0.5380112} + - {value: 0.4960644} + - {value: 0.4681868} + - {value: 0.3685686} + - {value: 0.3828682} + - {value: 0.5208586} + - {value: 0.592745} + - {value: 0.4635966} + - {value: 0.5120445} + - {value: 0.5791049} + - {value: 0.6303622} + - {value: 0.5338901} + - {value: 0.4925701} + - {value: 0.3890525} + - {value: 0.3980435} + - {value: 0.6304131} + - {value: 0.6042646} + - {value: 0.6602257} + - {value: 0.5785384} + - {value: 0.4963853} + - {value: 0.6211942} + - {value: 0.5524761} + - {value: 0.5355144} + - {value: 0.4139487} + - {value: 0.4637537} + - {value: 0.5339023} + - {value: 0.589896} + - {value: 0.5846082} + - {value: 0.5836042} + - {value: 0.507857} + - {value: 0.5531643} + - {value: 0.7047297} + - {value: 0.6637205} + - {value: 0.4514275} + - {value: 0.4896641} + - {value: 0.5212811} + - {value: 0.6653978} + - {value: 0.8289874} + - {value: 1.0} + - {value: 0.849272} + - {value: 0.6574922} + - {value: 0.5068032} + - {value: 0.4706579} + - {value: 0.3967668} + - {value: 0.4371622} + - {value: 0.5496891} + - {value: 0.5833086} + - {value: 0.5162223} + - {value: 0.5382044} + - {value: 0.5696839} + - {value: 0.5830181} + - {value: 0.5298672} + - {value: 0.4740383} + - {value: 0.4070841} + - {value: 0.4396378} + - {value: 0.5801471} + - {value: 0.5742399} + - {value: 0.6046078} + - {value: 0.5833084} + - {value: 0.5492528} + - {value: 0.6076892} + - {value: 0.5705925} + - {value: 0.5326778} + - {value: 0.4277495} + - {value: 0.4826257} + - {value: 0.5474989} + - {value: 0.5855843} + - {value: 0.5903722} + - {value: 0.5794524} + - {value: 0.5343922} + - {value: 0.5664569} + - {value: 0.6113206} + - {value: 0.5549452} + - {value: 0.4354388} + - {value: 0.4855286} + - {value: 0.5070499} + - {value: 0.549638} + - {value: 0.6654938} + - {value: 0.849272} + - {value: 1.0} + - {value: 0.8509224} + - {value: 0.5735616} + - {value: 0.4199527} + - {value: 0.4205821} + - {value: 0.461257} + - {value: 0.5570953} + - {value: 0.5775528} + - {value: 0.5238772} + - {value: 0.5470396} + - {value: 0.5590646} + - {value: 0.591129} + - {value: 0.5425881} + - {value: 0.4789502} + - {value: 0.3914492} + - {value: 0.4362064} + - {value: 0.5785226} + - {value: 0.5742075} + - {value: 0.6043881} + - {value: 0.5999623} + - {value: 0.5813083} + - {value: 0.6103566} + - {value: 0.5706759} + - {value: 0.5320668} + - {value: 0.3980491} + - {value: 0.4545754} + - {value: 0.5293105} + - {value: 0.5815328} + - {value: 0.593475} + - {value: 0.5857524} + - {value: 0.525992} + - {value: 0.5545268} + - {value: 0.5889512} + - {value: 0.5497598} + - {value: 0.3813463} + - {value: 0.4460977} + - {value: 0.4920191} + - {value: 0.5195854} + - {value: 0.5380112} + - {value: 0.6574921} + - {value: 0.8509225} + - {value: 0.9999999} + - {value: 0.8100898} + - {value: 0.5654116} + - {value: 0.4167636} + - {value: 0.4541091} + - {value: 0.5315233} + - {value: 0.5577346} + - {value: 0.5366688} + - {value: 0.5482565} + - {value: 0.5263739} + - {value: 0.5693963} + - {value: 0.5396249} + - {value: 0.4831319} + - {value: 0.3847999} + - {value: 0.4218351} + - {value: 0.561484} + - {value: 0.5736302} + - {value: 0.5993031} + - {value: 0.5955763} + - {value: 0.5783583} + - {value: 0.5982845} + - {value: 0.5638504} + - {value: 0.5205823} + - {value: 0.3788583} + - {value: 0.4387223} + - {value: 0.5121174} + - {value: 0.5517555} + - {value: 0.5666704} + - {value: 0.5723218} + - {value: 0.5281118} + - {value: 0.5483515} + - {value: 0.5582339} + - {value: 0.5229431} + - {value: 0.290585} + - {value: 0.3730031} + - {value: 0.4763865} + - {value: 0.5254973} + - {value: 0.4960644} + - {value: 0.5068032} + - {value: 0.5735616} + - {value: 0.8100898} + - {value: 1.0} + - {value: 0.8782399} + - {value: 0.3491422} + - {value: 0.3820845} + - {value: 0.4740207} + - {value: 0.5157226} + - {value: 0.4839697} + - {value: 0.4847325} + - {value: 0.4580812} + - {value: 0.5098516} + - {value: 0.4909849} + - {value: 0.4583547} + - {value: 0.3493619} + - {value: 0.3818299} + - {value: 0.525012} + - {value: 0.5256286} + - {value: 0.5563946} + - {value: 0.5335708} + - {value: 0.5015351} + - {value: 0.5456825} + - {value: 0.5011693} + - {value: 0.4655787} + - {value: 0.3315494} + - {value: 0.3902831} + - {value: 0.4717787} + - {value: 0.5041961} + - {value: 0.4990786} + - {value: 0.5042883} + - {value: 0.4628512} + - {value: 0.4902617} + - {value: 0.5396415} + - {value: 0.5198532} + - {value: 0.2616032} + - {value: 0.3247823} + - {value: 0.4294471} + - {value: 0.497298} + - {value: 0.4681868} + - {value: 0.4706579} + - {value: 0.4199528} + - {value: 0.5654115} + - {value: 0.8782399} + - {value: 1.0} +description: The correlation matrix of the unfolded differential rates. The full + error covariance can be obtained by combining the quoted error in the other tables + with these values. The ordering of the correlations is {$w$, $\cos\theta_\nu$, + $\cos\theta_\ell$, $\chi$}, where each variable has 10 bins. +independent_variables: +- header: {name: Bin} + values: + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 1} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 2} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 3} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 4} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 5} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 6} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 7} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 8} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 9} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 10} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 11} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 12} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 13} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 14} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 15} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 16} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 17} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 18} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 19} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 20} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 21} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 22} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 23} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 24} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 25} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 26} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 27} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 28} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 29} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 30} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 31} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 32} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 33} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 34} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 35} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 36} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 37} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 38} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 39} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} + - {value: 40} +- header: {name: Bin} + values: + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} + - {value: 1} + - {value: 2} + - {value: 3} + - {value: 4} + - {value: 5} + - {value: 6} + - {value: 7} + - {value: 8} + - {value: 9} + - {value: 10} + - {value: 11} + - {value: 12} + - {value: 13} + - {value: 14} + - {value: 15} + - {value: 16} + - {value: 17} + - {value: 18} + - {value: 19} + - {value: 20} + - {value: 21} + - {value: 22} + - {value: 23} + - {value: 24} + - {value: 25} + - {value: 26} + - {value: 27} + - {value: 28} + - {value: 29} + - {value: 30} + - {value: 31} + - {value: 32} + - {value: 33} + - {value: 34} + - {value: 35} + - {value: 36} + - {value: 37} + - {value: 38} + - {value: 39} + - {value: 40} +keywords: +- name: reactions + values: [BBAR0 --> D*(2010)+ LEPTON- NUBAR] +- name: observables + values: [WIDTH] +- name: phrases + values: [Decay, Charm Production] +name: Table 5 diff --git a/testsuite/test_data/TestHEPSubmission.zip b/testsuite/test_data/TestHEPSubmission.zip new file mode 100644 index 0000000..d43d18a Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission.zip differ diff --git a/testsuite/test_data/TestHEPSubmission/analysis_script.py b/testsuite/test_data/TestHEPSubmission/analysis_script.py new file mode 100644 index 0000000..14b98c8 --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission/analysis_script.py @@ -0,0 +1,129 @@ +from random import gauss +import numpy +from root_numpy import root2array, list_trees, list_branches +from rootpy.io import root_open +from rootpy.tree import Tree, TreeModel +from rootpy.types import FloatCol, Char, IntCol, CharCol, CharArrayCol + + +class ROOTHelpers(object): + def export_root_data_contents(self, rfile): + """ + Uses the root_numpy class to list trees and output them. + :param rfile: Input ROOT file + :return: a dictionary defining the underlying data in the file link. The key is the name of each tree. + """ + for tree in list_trees(rfile): + print 'Processing tree ' + tree + print list_branches(rfile, tree) + arr = root2array(rfile, treename=tree) + print str(arr.view(numpy.recarray)) + + def add_tree_to_file(self, file_name, table_name, table_title, headers, data, mode="update"): + """ + :param table_name + :param table_title + :param headers: should be a dictionary defining each column name and it's data type. + Valid data types are Floats (F) and Integers (I). + So to define a simple X, Y plot where X is an Integer and Y is a Float, + we'd define {'X': 'I', 'Y': 'F'} + :param data: defined as an array of dictionary objects defining the values for each record. + For example, X and Y in the above case would be [{'X':0,'Y':23.12}, {'X':1,'Y':20.12}, ...] + """ + + f = root_open(file_name, mode) + + new_tree = Tree(name=table_name, title=table_title) + new_tree.create_branches(headers) + + for record in data: + for key, value in record.iteritems(): + new_tree[key] = value + new_tree.fill() + + new_tree.write() + + f.close() + + +class MetaDataRecord(TreeModel): + value = CharCol() + + +class DataValue(TreeModel): + """ + For each value, we have its error on the X and Y axes + """ + val = FloatCol() + + err_label = CharArrayCol() + err_minus = FloatCol() + err_plus = FloatCol() + + + +class DataRecord(DataValue.prefix('x_'), DataValue.prefix('y_expected_'), DataValue.prefix('y_observed_')): + i = IntCol() + + +class DataGenerator(object): + + def generate_root_file_with_tree(self, file_name, mode="update"): + f = root_open(file_name, mode) + + # how can we capture the qualifier information? It seems wasteful to have to duplicate it... + tree_meta = Tree(name="Table 1::metadata", title="Table 1", model=DataRecord) + tree_meta.create_branches( + {'reaction': 'C', + 'qualifier_1_type': 'C', + 'qualifier_1_value': 'C', + 'qualifier_2_type': 'C', + 'qualifier_2_value': 'C'} + ) + + tree_meta.reaction = 'P --> P' + tree_meta.qualifier_1_type = 'SQRT(S)' + tree_meta.qualifier_1_value = '8000.0 GeV' + tree_meta.qualifier_1_type = '' + tree_meta.qualifier_1_value = '95% CL Limit' + + tree_meta.fill() + + tree = Tree(name="Table 1::data", title="Table 1", model=DataRecord) + # F - Float, I - Integer + + + for i in xrange(1000): + tree.qual_1_type = "sqrt(s)" + tree.qual_1_value = "8000.0 GeV" + + tree.qual_2_type = "" + tree.qual_2_value = "95% CL upper limit [fb]" + + tree.x_val = gauss(1., 4.) + tree.x_err_y_minus = gauss(0., 1) + tree.x_err_y_plus = gauss(0., 1) + + tree.expected_val = gauss(1., 4.) + tree.expected_err_y_minus = gauss(1., 4.) + tree.expected_err_x_minus = gauss(1., 4.) + + tree.observed_val = gauss(1., 4.) + tree.observed_err_y_minus = gauss(1., 4.) + tree.observed_err_x_minus = gauss(1., 4.) + + tree.i = i + tree.fill() + + tree.write() + + f.close() + + +if __name__ == "__main__": + rh = ROOTHelpers() + dg = DataGenerator() + + dg.generate_root_file_with_tree('/Users/eamonnmaguire/git/CERN/root_data_extractor/data/hsimple.root', + mode="update") + rh.export_root_data_contents('/Users/eamonnmaguire/git/CERN/root_data_extractor/data/hsimple.root') diff --git a/testsuite/test_data/TestHEPSubmission/data1.yaml b/testsuite/test_data/TestHEPSubmission/data1.yaml new file mode 100644 index 0000000..6ae1ada --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission/data1.yaml @@ -0,0 +1,37 @@ +independent_variables: [] +dependent_variables: +- header: {name: SIG(fiducial), units: FB} + qualifiers: + - {name: RE, value: P P --> Z0 < LEPTON+ LEPTON- > Z0 < LEPTON+ LEPTON- > X} + - {name: SQRT(S), units: GEV, value: 7000} + values: + - value: 25.4 + errors: + - asymerror: {minus: -3.0, plus: 3.3} + label: stat + - asymerror: {minus: -1.0, plus: 1.2} + label: sys + - {symerror: 1.0, label: 'sys,lumi'} +- header: {name: SIG(fiducial), units: FB} + qualifiers: + - {name: RE, value: P P --> Z0 < LEPTON+ LEPTON- > Z0* < LEPTON+ LEPTON- > X} + - {name: SQRT(S), units: GEV, value: 7000} + values: + - value: 29.8 + errors: + - asymerror: {minus: -3.5, plus: 3.8} + label: stat + - asymerror: {minus: -1.5, plus: 1.7} + label: sys + - {symerror: 1.2, label: 'sys,lumi'} +- header: {name: SIG(fiducial), units: FB} + qualifiers: + - {name: RE, value: P P --> Z0 < LEPTON+ LEPTON- > Z0 < NU NUBAR > X} + - {name: SQRT(S), units: GEV, value: 7000} + values: + - value: 12.7 + errors: + - asymerror: {minus: -2.9, plus: 3.1} + label: stat + - {symerror: 1.7, label: sys} + - {symerror: 0.5, label: 'sys,lumi'} diff --git a/testsuite/test_data/TestHEPSubmission/data2.yaml b/testsuite/test_data/TestHEPSubmission/data2.yaml new file mode 100644 index 0000000..bb41d94 --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission/data2.yaml @@ -0,0 +1,13 @@ +independent_variables: [] +dependent_variables: +- header: {name: SIG(total), units: FB} + qualifiers: + - {name: RE, value: P P --> Z0 Z0 X} + - {name: SQRT(S), units: GEV, value: 7000} + values: + - value: 6.7 + errors: + - {symerror: 0.7, label: stat} + - asymerror: {minus: -0.3, plus: 0.4} + label: sys + - {symerror: 0.3, label: 'sys,lumi'} \ No newline at end of file diff --git a/testsuite/test_data/TestHEPSubmission/data3.yaml b/testsuite/test_data/TestHEPSubmission/data3.yaml new file mode 100644 index 0000000..beff1d3 --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission/data3.yaml @@ -0,0 +1,33 @@ +independent_variables: +- header: {name: Leading dilepton PT, units: GEV} + values: + - {low: 0, high: 60} + - {low: 60, high: 100} + - {low: 100, high: 200} + - {low: 200, high: 600} +dependent_variables: +- header: {name: 10**6 * 1/SIG(fiducial) * D(SIG(fiducial))/DPT, units: GEV**-1} + qualifiers: + - {name: RE, value: P P --> Z0 < LEPTON+ LEPTON- > Z0 < LEPTON+ LEPTON- > X} + - {name: SQRT(S), units: GEV, value: 7000} + values: + - value: 7000 + errors: + - {symerror: 1100, label: stat} + - {symerror: 79, label: 'sys,detector'} + - {symerror: 15, label: 'sys,background'} + - value: 9800 + errors: + - {symerror: 1600, label: stat} + - {symerror: 75, label: 'sys,detector'} + - {symerror: 15, label: 'sys,background'} + - value: 1600 + errors: + - {symerror: 490, label: stat} + - {symerror: 41, label: 'sys,detector'} + - {symerror: 2, label: 'sys,background'} + - value: 80 + errors: + - {symerror: 60, label: stat} + - {symerror: 2, label: 'sys,detector'} + - {symerror: 0, label: 'sys,background'} \ No newline at end of file diff --git a/testsuite/test_data/TestHEPSubmission/data4.yaml b/testsuite/test_data/TestHEPSubmission/data4.yaml new file mode 100644 index 0000000..946766b --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission/data4.yaml @@ -0,0 +1,27 @@ +independent_variables: +- header: {name: Leading dilepton PT, units: GEV} + values: + - {low: 50, high: 90} + - {low: 90, high: 130} + - {low: 130, high: 200} +dependent_variables: +- header: {name: 10**6 * 1/SIG(fiducial) * D(SIG(fiducial))/DPT, units: GEV**-1} + qualifiers: + - {name: RE, value: P P --> Z0 < LEPTON+ LEPTON- > Z0 < NU NUBAR > X} + - {name: SQRT(S), units: GEV, value: 7000} + values: + - value: 9930 + errors: + - {symerror: 3340, label: stat} + - {symerror: 80, label: 'sys,detector'} + - {symerror: 740, label: 'sys,background'} + - value: 8280 + errors: + - {symerror: 3210, label: stat} + - {symerror: 200, label: 'sys,detector'} + - {symerror: 260, label: 'sys,background'} + - value: 3900 + errors: + - {symerror: 1490, label: stat} + - {symerror: 120, label: 'sys,detector'} + - {symerror: 390, label: 'sys,background'} \ No newline at end of file diff --git a/testsuite/test_data/TestHEPSubmission/data5.yaml b/testsuite/test_data/TestHEPSubmission/data5.yaml new file mode 100644 index 0000000..4549848 --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission/data5.yaml @@ -0,0 +1,33 @@ +independent_variables: +- header: {name: 'Leading dilepton DELTA(PHI(LEPTON+, LEPTON-))', units: GEV} + values: + - {low: 0.0, high: 0.5} + - {low: 0.5, high: 1.0} + - {low: 1.0, high: 1.7} + - {low: 1.7, high: 3.14159} +dependent_variables: +- header: {name: '10**6 * 1/SIG(fiducial) * D(SIG(fiducial))/DDELTA(PHI(LEPTON+,LEPTON-))'} + qualifiers: + - {name: RE, value: P P --> Z0 < LEPTON+ LEPTON- > Z0 < LEPTON+ LEPTON- > X} + - {name: SQRT(S), units: GEV, value: 7000} + values: + - value: 130000 + errors: + - {symerror: 69000, label: stat} + - {symerror: 6600, label: 'sys,detector'} + - {symerror: 10, label: 'sys,background'} + - value: 280000 + errors: + - {symerror: 100000, label: stat} + - {symerror: 9000, label: 'sys,detector'} + - {symerror: 400, label: 'sys,background'} + - value: 260000 + errors: + - {symerror: 80000, label: stat} + - {symerror: 10000, label: 'sys,detector'} + - {symerror: 300, label: 'sys,background'} + - value: 420000 + errors: + - {symerror: 50000, label: stat} + - {symerror: 2000, label: 'sys,detector'} + - {symerror: 300, label: 'sys,background'} \ No newline at end of file diff --git a/testsuite/test_data/TestHEPSubmission/data6.yaml b/testsuite/test_data/TestHEPSubmission/data6.yaml new file mode 100644 index 0000000..b094d0c --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission/data6.yaml @@ -0,0 +1,27 @@ +independent_variables: +- header: {name: 'Leading dilepton DELTA(PHI(LEPTON+,LEPTON-))', units: GEV} + values: + - {low: 0.0, high: 0.5} + - {low: 0.5, high: 1.7} + - {low: 1.7, high: 3.14159} +dependent_variables: +- header: {name: '10**6 * 1/SIG(fiducial) * D(SIG(fiducial))/DDELTA(PHI(LEPTON+,LEPTON-))'} + qualifiers: + - {name: RE, value: 'P P --> Z0 < LEPTON+ LEPTON- > Z0 < NU NUBAR > X'} + - {name: SQRT(S), units: GEV, value: 7000} + values: + - value: 346000 + errors: + - {symerror: 158000, label: stat} + - {symerror: 4000, label: 'sys,detector'} + - {symerror: 19000, label: 'sys,background'} + - value: 569000 + errors: + - {symerror: 91000, label: stat} + - {symerror: 4000, label: 'sys,detector'} + - {symerror: 71000, label: 'sys,background'} + - value: 100000 + errors: + - {symerror: 70000, label: stat} + - {symerror: 2000, label: 'sys,detector'} + - {symerror: 58000, label: 'sys,background'} \ No newline at end of file diff --git a/testsuite/test_data/TestHEPSubmission/data7.yaml b/testsuite/test_data/TestHEPSubmission/data7.yaml new file mode 100644 index 0000000..6e3364b --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission/data7.yaml @@ -0,0 +1,33 @@ +independent_variables: +- header: {name: M(ZZ), units: GEV} + values: + - {low: 0, high: 240} + - {low: 240, high: 300} + - {low: 300, high: 400} + - {low: 400, high: 800} +dependent_variables: +- header: {name: 10**6 * 1/SIG(fiducial) * D(SIG(fiducial))/DM(ZZ)} + qualifiers: + - {name: RE, value: P P --> Z0 < LEPTON+ LEPTON- > Z0 < LEPTON+ LEPTON- > X} + - {name: SQRT(S), units: GeV, value: 7000} + values: + - value: 2200 + errors: + - {label: stat, symerror: 300} + - {label: 'sys,detector', symerror: 40} + - {label: 'sys,background', symerror: 2} + - value: 4500 + errors: + - {label: stat, symerror: 1000} + - {label: 'sys,detector', symerror: 100} + - {label: 'sys,background', symerror: 5} + - value: 1000 + errors: + - {label: stat, symerror: 400} + - {label: 'sys,detector', symerror: 20} + - {label: 'sys,background', symerror: 2} + - value: 280 + errors: + - {label: stat, symerror: 100} + - {label: 'sys,detector', symerror: 10} + - {label: 'sys,background', symerror: 1} \ No newline at end of file diff --git a/testsuite/test_data/TestHEPSubmission/data8.yaml b/testsuite/test_data/TestHEPSubmission/data8.yaml new file mode 100644 index 0000000..9650035 --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission/data8.yaml @@ -0,0 +1,27 @@ +independent_variables: +- header: {name: MT(ZZ), units: GEV} + values: + - {low: 220, high: 250} + - {low: 250, high: 300} + - {low: 300, high: 400} +dependent_variables: +- header: {name: 10**6 * 1/SIG(fiducial) * D(SIG(fiducial))/DMT(ZZ), units: GEV**-1} + qualifiers: + - {name: RE, value: P P --> Z0 < LEPTON+ LEPTON- > Z0 < NU NUBAR > X} + - {name: SQRT(S), units: GEV, value: 7000} + values: + - value: 10500 + errors: + - {symerror: 4400, label: stat} + - {symerror: 300, label: 'sys,detector'} + - {symerror: 1900, label: 'sys,background'} + - value: 6320 + errors: + - {symerror: 2630, label: stat} + - {symerror: 230, label: 'sys,detector'} + - {symerror: 280, label: 'sys,background'} + - value: 3680 + errors: + - {symerror: 1210, label: stat} + - {symerror: 60, label: 'sys,detector'} + - {symerror: 480, label: 'sys,background'} \ No newline at end of file diff --git a/testsuite/test_data/TestHEPSubmission/figFigure10A.png b/testsuite/test_data/TestHEPSubmission/figFigure10A.png new file mode 100644 index 0000000..ce93bab Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission/figFigure10A.png differ diff --git a/testsuite/test_data/TestHEPSubmission/figFigure10B.png b/testsuite/test_data/TestHEPSubmission/figFigure10B.png new file mode 100644 index 0000000..7e85633 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission/figFigure10B.png differ diff --git a/testsuite/test_data/TestHEPSubmission/figFigure8A.png b/testsuite/test_data/TestHEPSubmission/figFigure8A.png new file mode 100644 index 0000000..96af6b0 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission/figFigure8A.png differ diff --git a/testsuite/test_data/TestHEPSubmission/figFigure8B.png b/testsuite/test_data/TestHEPSubmission/figFigure8B.png new file mode 100644 index 0000000..ec66161 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission/figFigure8B.png differ diff --git a/testsuite/test_data/TestHEPSubmission/figFigure9A.png b/testsuite/test_data/TestHEPSubmission/figFigure9A.png new file mode 100644 index 0000000..3faa9e9 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission/figFigure9A.png differ diff --git a/testsuite/test_data/TestHEPSubmission/figFigure9B.png b/testsuite/test_data/TestHEPSubmission/figFigure9B.png new file mode 100644 index 0000000..cb8f1eb Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission/figFigure9B.png differ diff --git a/testsuite/test_data/TestHEPSubmission/root_file.root b/testsuite/test_data/TestHEPSubmission/root_file.root new file mode 100644 index 0000000..6166647 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission/root_file.root differ diff --git a/testsuite/test_data/TestHEPSubmission/submission.yaml b/testsuite/test_data/TestHEPSubmission/submission.yaml new file mode 100644 index 0000000..dff3578 --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission/submission.yaml @@ -0,0 +1,153 @@ +--- +additional_resources: # additional references (e.g. experiment TWiki page for analysis) + - {location: "http://atlas.web.cern.ch/Atlas/GROUPS/PHYSICS/PAPERS/STDM-2012-02/", description: "web page with auxiliary material"} + +comment: | # preserve newlines + CERN-LHC. Measurements of the cross section for ZZ production using the 4l and 2l2nu decay channels in proton-proton collisions at a centre-of-mass energy of 7 TeV with 4.6 fb^-1 of data collected in 2011. The final states used are 4 electrons, 4 muons, 2 electrons and 2 muons, 2 electrons and missing transverse momentum, and 2 muons and missing transverse momentum (MET). + + The cross section values reported in the tables should be multiplied by a factor of 1.0141 to take into account the updated value of the integrated luminosity for the ATLAS 2011 data taking period. The uncertainty on the global normalisation ("Lumi") remains at 1.8%. See Eur.Phys.J. C73 (2013) 2518 for more details. + + The 4l channel fiducial region is defined as: + - 4e, 4mu or 2e2mu + - Ambiguities in pairing are resolved by choosing the combination that results in the smaller value of the sum |mll - mZ| for the two pairs, where mll is the mass of the dilepton system. + - ptLepton > 7 GeV (at least one with ptLepton > 20 (25) GeV for muons (electrons)) + - |etaLepton| < 3.16 + - At least one lepton pair is required to have invariant mass between 66 and 116 GeV. If the second pair also satisfies this, the event is ZZ, otherwise if the second pair satisfies mll > 20 GeV it is ZZ*. + - min(DeltaR(l,l)) > 0.2. + + The 2l2nu channel fiducial region is defined as: + - 2e+MET or 2mu+MET + - ptLepton > 20 GeV + - |etaLepton| < 2.5 + - mll must be between 76 and 106 GeV + - -MET*cos(phi_METZ)>75 GeV, where phi_METZ is the angle between the Z and the MET + - |MET - pTZ| / pTZ < 0.4, where pTZ is the transverse momentum of the dilepton system + - No events with a jet for which ptJet > 25 GeV and |etaJet| < 4.5 + - No events with a third lepton for which ptLepton > 10 GeV + - min(DeltaR(l,l)) > 0.3 + +--- +# Start a new YAML document to indicate a new data table. +# This is Table 1. +name: "Table 1" +location: Data from Page 17 of preprint +description: The measured fiducial cross sections. The first systematic uncertainty is the combined systematic uncertainty excluding luminosity, the second is the luminosity +keywords: # used for searching, possibly multiple values for each keyword + - {name: reactions, values: [P P --> Z0 Z0 X]} + - {name: observables, values: [SIG]} + - {name: cmenergies, values: [7000.0]} # centre-of-mass energy in GeV + - {name: phrases, values: [Inclusive, Integrated Cross Section, Cross Section, Proton-Proton Scattering, Z Production, Z pair Production]} +data_file: data1.yaml +data_license: # (optional) you can specify a license for the data + name: "GPL 2" + url: "url for license" + description: "Tell me about it. This can appear in the main record display" # (optional) +additional_resources: # (optional) + - location: "analysis_script.py" + description: "Analysis script" + - location: "http://github.com/HEPData/hepdata" + description: "Full source code for creating this data" + - location: "root_file.root" + description: "Some file" + license: # (optional) + name: 'GPL 2' + url: "url for license" + description: "Tell me about it. This can appear in the main record display" # (optional) +--- +# This is Table 2. +name: "Table 2" +location: Data from Page 20 of preprint +description: The measured total cross sections. The first systematic uncertainty is the combined systematic uncertainty excluding luminosity, the second is the luminosity +keywords: # used for searching, possibly multiple values for each keyword + - {name: reactions, values: [P P --> Z0 Z0 X]} + - {name: observables, values: [SIG]} + - {name: cmenergies, values: [7000]} # centre-of-mass energy in GeV + - {name: phrases, values: [Inclusive, Integrated Cross Section, Cross Section, Proton-Proton Scattering, Z Production, Z pair Production]} +data_file: data2.yaml +--- +# This is Table 3. +name: "Table 3" +location: Data from Figure 8A +description: Normalized ZZ fiducial cross section (multiplied by 10^6 for readability) in values of the leading reconstructed dilepton pT for the 4 lepton channel. The first systematic uncertainty is detector systematics, the second is background systematic uncertainties +keywords: # used for searching, possibly multiple values for each keyword + - {name: reactions, values: [P P --> Z0 Z0 X]} + - {name: observables, values: [DSIG/DPT]} + - {name: cmenergies, values: [7000]} # centre-of-mass energy in GeV + - {name: phrases, values: [Inclusive, Single Differential Cross Section, Transverse Momentum Dependence, Proton-Proton Scattering, Z Production, Z pair Production]} +data_file: data3.yaml +additional_resources: +- {description: Image file, location: figFigure8A.png} +- {description: Thumbnail image file, location: thumb_figFigure8A.png} +--- +# This is Table 4. +name: "Table 4" +location: Data from Figure 8B +description: Normalized ZZ fiducial cross section (multiplied by 10^6 for readability) in values of the dilepton pT for the 2l2nu channel. The first systematic uncertainty is detector systematics, the second is background systematic uncertainties +keywords: # used for searching, possibly multiple values for each keyword + - {name: reactions, values: [P P --> Z0 Z0 X]} + - {name: observables, values: [DSIG/DPT]} + - {name: cmenergies, values: [7000]} # centre-of-mass energy in GeV + - {name: phrases, values: [Inclusive, Single Differential Cross Section, Transverse Momentum Dependence, Proton-Proton Scattering, Z Production, Z pair Production]} +data_file: data4.yaml +additional_resources: +- {description: Image file, location: figFigure8B.png} +- {description: Thumbnail image file, location: thumb_figFigure8B.png} +--- +# This is Table 5. +name: "Table 5" +location: Data from Figure 9A +description: | # preserve newlines + Normalized ZZ fiducial cross section (multiplied by 10^6 for readability) in values of deltaPhi between the two leptons of the leading dileptons for the 4l channel. The first systematic uncertainty is detector systematics, the second is background systematic uncertainties. + UPDATE (30 APR 2014): extra significant digit added for first bin +keywords: # used for searching, possibly multiple values for each keyword + - {name: reactions, values: [P P --> Z0 Z0 X]} + - {name: observables, values: [DSIG/DPHI]} + - {name: cmenergies, values: [7000]} # centre-of-mass energy in GeV + - {name: phrases, values: [Inclusive, Single Differential Cross Section, Azimuthal Angular Dependence, Proton-Proton Scattering, Z Production, Z pair Production]} +data_file: data5.yaml +additional_resources: +- {description: Image file, location: figFigure9A.png} +- {description: Thumbnail image file, location: thumb_figFigure9A.png} +--- +# This is Table 6. +name: "Table 6" +location: Data from Figure 9B +description: Normalized ZZ fiducial cross section (multiplied by 10^6 for readability) in values of deltaPhi between the two leptons for the 2l2nu channel. The first systematic uncertainty is detector systematics, the second is background systematic uncertainties +keywords: # used for searching, possibly multiple values for each keyword + - {name: reactions, values: ['P P --> Z0 Z0 X, X <-- P']} + - {name: observables, values: [DSIG/DPHI]} + - {name: cmenergies, values: [7000]} # centre-of-mass energy in GeV + - {name: phrases, values: [Inclusive, Single Differential Cross Section, Azimuthal Angular Dependence, Proton-Proton Scattering, Z Production, Z pair Production]} +data_file: data6.yaml +additional_resources: +- {description: Image file, location: figFigure9B.png} +- {description: Thumbnail image file, location: thumb_figFigure9B.png} +--- +# This is Table 7. +name: "Table 7" +location: Data from Figure 10A +description: Normalized ZZ fiducial cross section (multiplied by 10^6 for readability) in values of the mass of the ZZ system for the 4l channel. The first systematic uncertainty is detector systematics, the second is background systematic uncertainties +keywords: # used for searching, possibly multiple values for each keyword + - {name: reactions, values: [P P --> Z0 Z0 X]} + - {name: observables, values: [DSIG/DM]} + - {name: cmenergies, values: [7000]} # centre-of-mass energy in GeV + - {name: phrases, values: [Inclusive, Single Differential Cross Section, Proton-Proton Scattering, Z Production, Z pair Production]} +data_file: data7.yaml +additional_resources: +- {description: Image file, location: figFigure10A.png} +- {description: Thumbnail image file, location: thumb_figFigure10A.png} +--- +# This is Table 8. +name: "Table 8" +location: Data from Figure 10B +description: Normalized ZZ fiducial cross section (multiplied by 10^6 for readability) in values of the transverse mass of the ZZ system for the 2l2nu channel. The first systematic uncertainty is detector systematics, the second is background systematic uncertainties +keywords: # used for searching, possibly multiple values for each keyword + - {name: reactions, values: [P P --> Z0 Z0 X]} + - {name: observables, values: [DSIG/DM]} + - {name: cmenergies, values: [7000]} # centre-of-mass energy in GeV + - {name: phrases, values: [Inclusive, Single Differential Cross Section, Proton-Proton Scattering, Z Production, Z pair Production]} +data_file: data8.yaml +additional_resources: +- {description: Image file, location: figFigure10B.png} +- {description: Thumbnail image file, location: thumb_figFigure10B.png} +# End of YAML file. diff --git a/testsuite/test_data/TestHEPSubmission/thumb_figFigure10A.png b/testsuite/test_data/TestHEPSubmission/thumb_figFigure10A.png new file mode 100644 index 0000000..ce66ba1 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission/thumb_figFigure10A.png differ diff --git a/testsuite/test_data/TestHEPSubmission/thumb_figFigure10B.png b/testsuite/test_data/TestHEPSubmission/thumb_figFigure10B.png new file mode 100644 index 0000000..1573ec2 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission/thumb_figFigure10B.png differ diff --git a/testsuite/test_data/TestHEPSubmission/thumb_figFigure8A.png b/testsuite/test_data/TestHEPSubmission/thumb_figFigure8A.png new file mode 100644 index 0000000..dd8fb24 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission/thumb_figFigure8A.png differ diff --git a/testsuite/test_data/TestHEPSubmission/thumb_figFigure8B.png b/testsuite/test_data/TestHEPSubmission/thumb_figFigure8B.png new file mode 100644 index 0000000..439e977 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission/thumb_figFigure8B.png differ diff --git a/testsuite/test_data/TestHEPSubmission/thumb_figFigure9A.png b/testsuite/test_data/TestHEPSubmission/thumb_figFigure9A.png new file mode 100644 index 0000000..ebedb53 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission/thumb_figFigure9A.png differ diff --git a/testsuite/test_data/TestHEPSubmission/thumb_figFigure9B.png b/testsuite/test_data/TestHEPSubmission/thumb_figFigure9B.png new file mode 100644 index 0000000..2c12f87 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission/thumb_figFigure9B.png differ diff --git a/testsuite/test_data/TestHEPSubmission_invalid/analysis_script.py b/testsuite/test_data/TestHEPSubmission_invalid/analysis_script.py new file mode 100644 index 0000000..14b98c8 --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission_invalid/analysis_script.py @@ -0,0 +1,129 @@ +from random import gauss +import numpy +from root_numpy import root2array, list_trees, list_branches +from rootpy.io import root_open +from rootpy.tree import Tree, TreeModel +from rootpy.types import FloatCol, Char, IntCol, CharCol, CharArrayCol + + +class ROOTHelpers(object): + def export_root_data_contents(self, rfile): + """ + Uses the root_numpy class to list trees and output them. + :param rfile: Input ROOT file + :return: a dictionary defining the underlying data in the file link. The key is the name of each tree. + """ + for tree in list_trees(rfile): + print 'Processing tree ' + tree + print list_branches(rfile, tree) + arr = root2array(rfile, treename=tree) + print str(arr.view(numpy.recarray)) + + def add_tree_to_file(self, file_name, table_name, table_title, headers, data, mode="update"): + """ + :param table_name + :param table_title + :param headers: should be a dictionary defining each column name and it's data type. + Valid data types are Floats (F) and Integers (I). + So to define a simple X, Y plot where X is an Integer and Y is a Float, + we'd define {'X': 'I', 'Y': 'F'} + :param data: defined as an array of dictionary objects defining the values for each record. + For example, X and Y in the above case would be [{'X':0,'Y':23.12}, {'X':1,'Y':20.12}, ...] + """ + + f = root_open(file_name, mode) + + new_tree = Tree(name=table_name, title=table_title) + new_tree.create_branches(headers) + + for record in data: + for key, value in record.iteritems(): + new_tree[key] = value + new_tree.fill() + + new_tree.write() + + f.close() + + +class MetaDataRecord(TreeModel): + value = CharCol() + + +class DataValue(TreeModel): + """ + For each value, we have its error on the X and Y axes + """ + val = FloatCol() + + err_label = CharArrayCol() + err_minus = FloatCol() + err_plus = FloatCol() + + + +class DataRecord(DataValue.prefix('x_'), DataValue.prefix('y_expected_'), DataValue.prefix('y_observed_')): + i = IntCol() + + +class DataGenerator(object): + + def generate_root_file_with_tree(self, file_name, mode="update"): + f = root_open(file_name, mode) + + # how can we capture the qualifier information? It seems wasteful to have to duplicate it... + tree_meta = Tree(name="Table 1::metadata", title="Table 1", model=DataRecord) + tree_meta.create_branches( + {'reaction': 'C', + 'qualifier_1_type': 'C', + 'qualifier_1_value': 'C', + 'qualifier_2_type': 'C', + 'qualifier_2_value': 'C'} + ) + + tree_meta.reaction = 'P --> P' + tree_meta.qualifier_1_type = 'SQRT(S)' + tree_meta.qualifier_1_value = '8000.0 GeV' + tree_meta.qualifier_1_type = '' + tree_meta.qualifier_1_value = '95% CL Limit' + + tree_meta.fill() + + tree = Tree(name="Table 1::data", title="Table 1", model=DataRecord) + # F - Float, I - Integer + + + for i in xrange(1000): + tree.qual_1_type = "sqrt(s)" + tree.qual_1_value = "8000.0 GeV" + + tree.qual_2_type = "" + tree.qual_2_value = "95% CL upper limit [fb]" + + tree.x_val = gauss(1., 4.) + tree.x_err_y_minus = gauss(0., 1) + tree.x_err_y_plus = gauss(0., 1) + + tree.expected_val = gauss(1., 4.) + tree.expected_err_y_minus = gauss(1., 4.) + tree.expected_err_x_minus = gauss(1., 4.) + + tree.observed_val = gauss(1., 4.) + tree.observed_err_y_minus = gauss(1., 4.) + tree.observed_err_x_minus = gauss(1., 4.) + + tree.i = i + tree.fill() + + tree.write() + + f.close() + + +if __name__ == "__main__": + rh = ROOTHelpers() + dg = DataGenerator() + + dg.generate_root_file_with_tree('/Users/eamonnmaguire/git/CERN/root_data_extractor/data/hsimple.root', + mode="update") + rh.export_root_data_contents('/Users/eamonnmaguire/git/CERN/root_data_extractor/data/hsimple.root') diff --git a/testsuite/test_data/TestHEPSubmission_invalid/data1.yaml b/testsuite/test_data/TestHEPSubmission_invalid/data1.yaml new file mode 100644 index 0000000..6ae1ada --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission_invalid/data1.yaml @@ -0,0 +1,37 @@ +independent_variables: [] +dependent_variables: +- header: {name: SIG(fiducial), units: FB} + qualifiers: + - {name: RE, value: P P --> Z0 < LEPTON+ LEPTON- > Z0 < LEPTON+ LEPTON- > X} + - {name: SQRT(S), units: GEV, value: 7000} + values: + - value: 25.4 + errors: + - asymerror: {minus: -3.0, plus: 3.3} + label: stat + - asymerror: {minus: -1.0, plus: 1.2} + label: sys + - {symerror: 1.0, label: 'sys,lumi'} +- header: {name: SIG(fiducial), units: FB} + qualifiers: + - {name: RE, value: P P --> Z0 < LEPTON+ LEPTON- > Z0* < LEPTON+ LEPTON- > X} + - {name: SQRT(S), units: GEV, value: 7000} + values: + - value: 29.8 + errors: + - asymerror: {minus: -3.5, plus: 3.8} + label: stat + - asymerror: {minus: -1.5, plus: 1.7} + label: sys + - {symerror: 1.2, label: 'sys,lumi'} +- header: {name: SIG(fiducial), units: FB} + qualifiers: + - {name: RE, value: P P --> Z0 < LEPTON+ LEPTON- > Z0 < NU NUBAR > X} + - {name: SQRT(S), units: GEV, value: 7000} + values: + - value: 12.7 + errors: + - asymerror: {minus: -2.9, plus: 3.1} + label: stat + - {symerror: 1.7, label: sys} + - {symerror: 0.5, label: 'sys,lumi'} diff --git a/testsuite/test_data/TestHEPSubmission_invalid/data4.yaml b/testsuite/test_data/TestHEPSubmission_invalid/data4.yaml new file mode 100644 index 0000000..946766b --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission_invalid/data4.yaml @@ -0,0 +1,27 @@ +independent_variables: +- header: {name: Leading dilepton PT, units: GEV} + values: + - {low: 50, high: 90} + - {low: 90, high: 130} + - {low: 130, high: 200} +dependent_variables: +- header: {name: 10**6 * 1/SIG(fiducial) * D(SIG(fiducial))/DPT, units: GEV**-1} + qualifiers: + - {name: RE, value: P P --> Z0 < LEPTON+ LEPTON- > Z0 < NU NUBAR > X} + - {name: SQRT(S), units: GEV, value: 7000} + values: + - value: 9930 + errors: + - {symerror: 3340, label: stat} + - {symerror: 80, label: 'sys,detector'} + - {symerror: 740, label: 'sys,background'} + - value: 8280 + errors: + - {symerror: 3210, label: stat} + - {symerror: 200, label: 'sys,detector'} + - {symerror: 260, label: 'sys,background'} + - value: 3900 + errors: + - {symerror: 1490, label: stat} + - {symerror: 120, label: 'sys,detector'} + - {symerror: 390, label: 'sys,background'} \ No newline at end of file diff --git a/testsuite/test_data/TestHEPSubmission_invalid/data5.yaml b/testsuite/test_data/TestHEPSubmission_invalid/data5.yaml new file mode 100644 index 0000000..4549848 --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission_invalid/data5.yaml @@ -0,0 +1,33 @@ +independent_variables: +- header: {name: 'Leading dilepton DELTA(PHI(LEPTON+, LEPTON-))', units: GEV} + values: + - {low: 0.0, high: 0.5} + - {low: 0.5, high: 1.0} + - {low: 1.0, high: 1.7} + - {low: 1.7, high: 3.14159} +dependent_variables: +- header: {name: '10**6 * 1/SIG(fiducial) * D(SIG(fiducial))/DDELTA(PHI(LEPTON+,LEPTON-))'} + qualifiers: + - {name: RE, value: P P --> Z0 < LEPTON+ LEPTON- > Z0 < LEPTON+ LEPTON- > X} + - {name: SQRT(S), units: GEV, value: 7000} + values: + - value: 130000 + errors: + - {symerror: 69000, label: stat} + - {symerror: 6600, label: 'sys,detector'} + - {symerror: 10, label: 'sys,background'} + - value: 280000 + errors: + - {symerror: 100000, label: stat} + - {symerror: 9000, label: 'sys,detector'} + - {symerror: 400, label: 'sys,background'} + - value: 260000 + errors: + - {symerror: 80000, label: stat} + - {symerror: 10000, label: 'sys,detector'} + - {symerror: 300, label: 'sys,background'} + - value: 420000 + errors: + - {symerror: 50000, label: stat} + - {symerror: 2000, label: 'sys,detector'} + - {symerror: 300, label: 'sys,background'} \ No newline at end of file diff --git a/testsuite/test_data/TestHEPSubmission_invalid/data6.yaml b/testsuite/test_data/TestHEPSubmission_invalid/data6.yaml new file mode 100644 index 0000000..b094d0c --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission_invalid/data6.yaml @@ -0,0 +1,27 @@ +independent_variables: +- header: {name: 'Leading dilepton DELTA(PHI(LEPTON+,LEPTON-))', units: GEV} + values: + - {low: 0.0, high: 0.5} + - {low: 0.5, high: 1.7} + - {low: 1.7, high: 3.14159} +dependent_variables: +- header: {name: '10**6 * 1/SIG(fiducial) * D(SIG(fiducial))/DDELTA(PHI(LEPTON+,LEPTON-))'} + qualifiers: + - {name: RE, value: 'P P --> Z0 < LEPTON+ LEPTON- > Z0 < NU NUBAR > X'} + - {name: SQRT(S), units: GEV, value: 7000} + values: + - value: 346000 + errors: + - {symerror: 158000, label: stat} + - {symerror: 4000, label: 'sys,detector'} + - {symerror: 19000, label: 'sys,background'} + - value: 569000 + errors: + - {symerror: 91000, label: stat} + - {symerror: 4000, label: 'sys,detector'} + - {symerror: 71000, label: 'sys,background'} + - value: 100000 + errors: + - {symerror: 70000, label: stat} + - {symerror: 2000, label: 'sys,detector'} + - {symerror: 58000, label: 'sys,background'} \ No newline at end of file diff --git a/testsuite/test_data/TestHEPSubmission_invalid/data7.yaml b/testsuite/test_data/TestHEPSubmission_invalid/data7.yaml new file mode 100644 index 0000000..6e3364b --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission_invalid/data7.yaml @@ -0,0 +1,33 @@ +independent_variables: +- header: {name: M(ZZ), units: GEV} + values: + - {low: 0, high: 240} + - {low: 240, high: 300} + - {low: 300, high: 400} + - {low: 400, high: 800} +dependent_variables: +- header: {name: 10**6 * 1/SIG(fiducial) * D(SIG(fiducial))/DM(ZZ)} + qualifiers: + - {name: RE, value: P P --> Z0 < LEPTON+ LEPTON- > Z0 < LEPTON+ LEPTON- > X} + - {name: SQRT(S), units: GeV, value: 7000} + values: + - value: 2200 + errors: + - {label: stat, symerror: 300} + - {label: 'sys,detector', symerror: 40} + - {label: 'sys,background', symerror: 2} + - value: 4500 + errors: + - {label: stat, symerror: 1000} + - {label: 'sys,detector', symerror: 100} + - {label: 'sys,background', symerror: 5} + - value: 1000 + errors: + - {label: stat, symerror: 400} + - {label: 'sys,detector', symerror: 20} + - {label: 'sys,background', symerror: 2} + - value: 280 + errors: + - {label: stat, symerror: 100} + - {label: 'sys,detector', symerror: 10} + - {label: 'sys,background', symerror: 1} \ No newline at end of file diff --git a/testsuite/test_data/TestHEPSubmission_invalid/data8.yaml b/testsuite/test_data/TestHEPSubmission_invalid/data8.yaml new file mode 100644 index 0000000..045137a --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission_invalid/data8.yaml @@ -0,0 +1,27 @@ +independent_variables: +- header: {name: MT(ZZ), units: GEV} + values: + - {low: 220, high: 250} + - {low: 250, high: 300} + - {low: 300, high: 400} +dependent_variables: +-header: {name: 10**6 * 1/SIG(fiducial) * D(SIG(fiducial))/DMT(ZZ), units: GEV**-1} + qualifiers: + - {name: RE, value: P P --> Z0 < LEPTON+ LEPTON- > Z0 < NU NUBAR > X} + - {name: SQRT(S), units: GEV, value: 7000} + values: + - value: 10500 + errors: + - {symerror: 4400, label: stat} + - {symerror: 300, label: 'sys,detector'} + - {symerror: 1900, label: 'sys,background'} + - value: 6320 + errors: + - {symerror: 2630, label: stat} + - {symerror: 230, label: 'sys,detector'} + - {symerror: 280, label: 'sys,background'} + - value: 3680 + errors: + - {symerror: 1210, label: stat} + - {symerror: 60, label: 'sys,detector'} + - {symerror: 480, label: 'sys,background'} diff --git a/testsuite/test_data/TestHEPSubmission_invalid/figFigure10A.png b/testsuite/test_data/TestHEPSubmission_invalid/figFigure10A.png new file mode 100644 index 0000000..ce93bab Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission_invalid/figFigure10A.png differ diff --git a/testsuite/test_data/TestHEPSubmission_invalid/figFigure10B.png b/testsuite/test_data/TestHEPSubmission_invalid/figFigure10B.png new file mode 100644 index 0000000..7e85633 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission_invalid/figFigure10B.png differ diff --git a/testsuite/test_data/TestHEPSubmission_invalid/figFigure8A.png b/testsuite/test_data/TestHEPSubmission_invalid/figFigure8A.png new file mode 100644 index 0000000..96af6b0 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission_invalid/figFigure8A.png differ diff --git a/testsuite/test_data/TestHEPSubmission_invalid/figFigure8B.png b/testsuite/test_data/TestHEPSubmission_invalid/figFigure8B.png new file mode 100644 index 0000000..ec66161 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission_invalid/figFigure8B.png differ diff --git a/testsuite/test_data/TestHEPSubmission_invalid/figFigure9B.png b/testsuite/test_data/TestHEPSubmission_invalid/figFigure9B.png new file mode 100644 index 0000000..cb8f1eb Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission_invalid/figFigure9B.png differ diff --git a/testsuite/test_data/TestHEPSubmission_invalid/root_file.root b/testsuite/test_data/TestHEPSubmission_invalid/root_file.root new file mode 100644 index 0000000..6166647 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission_invalid/root_file.root differ diff --git a/testsuite/test_data/TestHEPSubmission_invalid/submission.yaml b/testsuite/test_data/TestHEPSubmission_invalid/submission.yaml new file mode 100644 index 0000000..fd60f64 --- /dev/null +++ b/testsuite/test_data/TestHEPSubmission_invalid/submission.yaml @@ -0,0 +1,155 @@ +--- +additional_resources: # additional references (e.g. experiment TWiki page for analysis) + - {location: "http://atlas.web.cern.ch/Atlas/GROUPS/PHYSICS/PAPERS/STDM-2012-02/", description: "web page with auxiliary material"} + +comment: | # preserve newlines + CERN-LHC. Measurements of the cross section for ZZ production using the 4l and 2l2nu decay channels in proton-proton collisions at a centre-of-mass energy of 7 TeV with 4.6 fb^-1 of data collected in 2011. The final states used are 4 electrons, 4 muons, 2 electrons and 2 muons, 2 electrons and missing transverse momentum, and 2 muons and missing transverse momentum (MET). + + The cross section values reported in the tables should be multiplied by a factor of 1.0141 to take into account the updated value of the integrated luminosity for the ATLAS 2011 data taking period. The uncertainty on the global normalisation ("Lumi") remains at 1.8%. See Eur.Phys.J. C73 (2013) 2518 for more details. + + The 4l channel fiducial region is defined as: + - 4e, 4mu or 2e2mu + - Ambiguities in pairing are resolved by choosing the combination that results in the smaller value of the sum |mll - mZ| for the two pairs, where mll is the mass of the dilepton system. + - ptLepton > 7 GeV (at least one with ptLepton > 20 (25) GeV for muons (electrons)) + - |etaLepton| < 3.16 + - At least one lepton pair is required to have invariant mass between 66 and 116 GeV. If the second pair also satisfies this, the event is ZZ, otherwise if the second pair satisfies mll > 20 GeV it is ZZ*. + - min(DeltaR(l,l)) > 0.2. + + The 2l2nu channel fiducial region is defined as: + - 2e+MET or 2mu+MET + - ptLepton > 20 GeV + - |etaLepton| < 2.5 + - mll must be between 76 and 106 GeV + - -MET*cos(phi_METZ)>75 GeV, where phi_METZ is the angle between the Z and the MET + - |MET - pTZ| / pTZ < 0.4, where pTZ is the transverse momentum of the dilepton system + - No events with a jet for which ptJet > 25 GeV and |etaJet| < 4.5 + - No events with a third lepton for which ptLepton > 10 GeV + - min(DeltaR(l,l)) > 0.3 + +--- +# Start a new YAML document to indicate a new data table. +# This is Table 1. +name: "Table 1" +location: Data from Page 17 of preprint +description: The measured fiducial cross sections. The first systematic uncertainty is the combined systematic uncertainty excluding luminosity, the second is the luminosity +keywords: # used for searching, possibly multiple values for each keyword + - {name: reactions, values: [P P --> Z0 Z0 X]} + - {name: observables, values: [SIG]} + - {name: cmenergies, values: [7000.0]} # centre-of-mass energy in GeV + - {name: phrases, values: [Inclusive, Integrated Cross Section, Cross Section, Proton-Proton Scattering, Z Production, Z pair Production]} +data_file: data1.yaml +data_license: # (optional) you can specify a license for the data + name: "GPL 2" + url: "url for license" + description: "Tell me about it. This can appear in the main record display" # (optional) +additional_resources: # (optional) + - location: "analysis_script.py" + description: "Analysis script" + - location: "http://github.com/HEPData/hepdata" + description: "Full source code for creating this data" + - location: "root_file.root" + description: "Some file" + license: # (optional) + name: 'GPL 2' + url: "url for license" + description: "Tell me about it. This can appear in the main record display" # (optional) +--- +# This is not a table +--- +# This is Table 2. +name: "Table 2" +location: Data from Page 20 of preprint +description: The measured total cross sections. The first systematic uncertainty is the combined systematic uncertainty excluding luminosity, the second is the luminosity +keywords: # used for searching, possibly multiple values for each keyword + - {name: reactions, values: [P P --> Z0 Z0 X]} + - {name: observables, values: [SIG]} + - {name: cmenergies, values: [7000]} # centre-of-mass energy in GeV + - {name: phrases, values: [Inclusive, Integrated Cross Section, Cross Section, Proton-Proton Scattering, Z Production, Z pair Production]} +data_file: mydirectory/data2.yaml +--- +# This is Table 3. +name: "Table 3" +location: Data from Figure 8A +description: Normalized ZZ fiducial cross section (multiplied by 10^6 for readability) in values of the leading reconstructed dilepton pT for the 4 lepton channel. The first systematic uncertainty is detector systematics, the second is background systematic uncertainties +keywords: # used for searching, possibly multiple values for each keyword + - {name: reactions, values: [P P --> Z0 Z0 X]} + - {name: observables, values: [DSIG/DPT]} + - {name: cmenergies, values: [7000]} # centre-of-mass energy in GeV + - {name: phrases, values: [Inclusive, Single Differential Cross Section, Transverse Momentum Dependence, Proton-Proton Scattering, Z Production, Z pair Production]} +data_file: data3.yaml +additional_resources: +- {description: Image file, location: figFigure8A.png} +- {description: Thumbnail image file, location: thumb_figFigure8A.png} +--- +# This is Table 4. +name: "Table 4" +location: Data from Figure 8B +description: Normalized ZZ fiducial cross section (multiplied by 10^6 for readability) in values of the dilepton pT for the 2l2nu channel. The first systematic uncertainty is detector systematics, the second is background systematic uncertainties +keywords: # used for searching, possibly multiple values for each keyword + - {name: reactions, values: [P P --> Z0 Z0 X]} + - {name: observables, values: [DSIG/DPT]} + - {name: cmenergies, values: [7000]} # centre-of-mass energy in GeV + - {name: phrases, values: [Inclusive, Single Differential Cross Section, Transverse Momentum Dependence, Proton-Proton Scattering, Z Production, Z pair Production]} +data_file: data4.yaml +additional_resources: +- {description: Image file, location: ../TestHEPSubmission/figFigure8B.png} +- {description: Thumbnail image file, location: thumb_figFigure8B.png} +--- +# This is Table 5. +name: "Table 5" +location: Data from Figure 9A +description: | # preserve newlines + Normalized ZZ fiducial cross section (multiplied by 10^6 for readability) in values of deltaPhi between the two leptons of the leading dileptons for the 4l channel. The first systematic uncertainty is detector systematics, the second is background systematic uncertainties. + UPDATE (30 APR 2014): extra significant digit added for first bin +keywords: # used for searching, possibly multiple values for each keyword + - {name: reactions, values: [P P --> Z0 Z0 X]} + - {name: observables, values: [DSIG/DPHI]} + - {name: cmenergies, values: [7000]} # centre-of-mass energy in GeV + - {name: phrases, values: [Inclusive, Single Differential Cross Section, Azimuthal Angular Dependence, Proton-Proton Scattering, Z Production, Z pair Production]} +data_file: data5.yaml +additional_resources: +- {description: Image file, location: figFigure9A.png} +- {description: Thumbnail image file, location: thumb_figFigure9A.png} +--- +# This is Table 6. +name: "Table 6" +location: Data from Figure 9B +description: Normalized ZZ fiducial cross section (multiplied by 10^6 for readability) in values of deltaPhi between the two leptons for the 2l2nu channel. The first systematic uncertainty is detector systematics, the second is background systematic uncertainties +keywords: # used for searching, possibly multiple values for each keyword + - {name: reactions, values: ['P P --> Z0 Z0 X, X <-- P']} + - {name: observables, values: [DSIG/DPHI]} + - {name: cmenergies, values: [7000]} # centre-of-mass energy in GeV + - {name: phrases, values: [Inclusive, Single Differential Cross Section, Azimuthal Angular Dependence, Proton-Proton Scattering, Z Production, Z pair Production]} +data_file: data6.yaml +additional_resources: +- {description: Image file, location: figFigure9B.png} +- {description: Thumbnail image file, location: thumb_figFigure9B.png} +--- +# This is Table 7. +name: "Table 7" +location: Data from Figure 10A +description: Normalized ZZ fiducial cross section (multiplied by 10^6 for readability) in values of the mass of the ZZ system for the 4l channel. The first systematic uncertainty is detector systematics, the second is background systematic uncertainties +keywords: # used for searching, possibly multiple values for each keyword + - {name: reactions, values: [P P --> Z0 Z0 X]} + - {name: observables, values: [DSIG/DM]} + - {name: cmenergies, values: [7000]} # centre-of-mass energy in GeV + - {name: phrases, values: [Inclusive, Single Differential Cross Section, Proton-Proton Scattering, Z Production, Z pair Production]} +data_file: data7.yaml +additional_resources: +- {description: Image file, location: figFigure10A.png} +- {description: Thumbnail image file, location: thumb_figFigure10A.png} +--- +# This is Table 8. +name: "Table 8" +location: Data from Figure 10B +description: Normalized ZZ fiducial cross section (multiplied by 10^6 for readability) in values of the transverse mass of the ZZ system for the 2l2nu channel. The first systematic uncertainty is detector systematics, the second is background systematic uncertainties +keywords: # used for searching, possibly multiple values for each keyword + - {name: reactions, values: [P P --> Z0 Z0 X]} + - {name: observables, values: [DSIG/DM]} + - {name: cmenergies, values: [7000]} # centre-of-mass energy in GeV + - {name: phrases, values: [Inclusive, Single Differential Cross Section, Proton-Proton Scattering, Z Production, Z pair Production]} +data_file: data8.yaml +additional_resources: +- {description: Image file, location: figFigure10B.png} +- {description: Thumbnail image file, location: thumb_figFigure10B.png} +# End of YAML file. diff --git a/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure10A.png b/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure10A.png new file mode 100644 index 0000000..ce66ba1 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure10A.png differ diff --git a/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure10B.png b/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure10B.png new file mode 100644 index 0000000..1573ec2 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure10B.png differ diff --git a/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure8A.png b/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure8A.png new file mode 100644 index 0000000..dd8fb24 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure8A.png differ diff --git a/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure8B.png b/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure8B.png new file mode 100644 index 0000000..439e977 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure8B.png differ diff --git a/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure9A.png b/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure9A.png new file mode 100644 index 0000000..ebedb53 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure9A.png differ diff --git a/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure9B.png b/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure9B.png new file mode 100644 index 0000000..2c12f87 Binary files /dev/null and b/testsuite/test_data/TestHEPSubmission_invalid/thumb_figFigure9B.png differ diff --git a/testsuite/test_data/invalid_independent_variables_file.yaml b/testsuite/test_data/invalid_independent_variables_file.yaml new file mode 100644 index 0000000..749561d --- /dev/null +++ b/testsuite/test_data/invalid_independent_variables_file.yaml @@ -0,0 +1,22 @@ +--- +independent_variables: + - header: {name: SQRT(S), units: GEV} + values: + - low: 6000 + - high: 7000 + low: 2000 +dependent_variables: + - header: {name: SIG(total), units: FB} + qualifiers: + - {name: RE, value: P P --> Z0 Z0 X} + values: + - value: 6.7 + errors: + - {symerror: 0.45, label: stat} + - {asymerror: {plus: 0.4, minus: -0.3}, label: sys} + - {symerror: 0.34, label: "sys,lumi"} + - value: 5.7 + errors: + - {symerror: 0.4, label: stat} + - {asymerror: {plus: 0.42, minus: 0.31}, label: sys} + - {symerror: 0.4, label: "sys,lumi"} diff --git a/testsuite/test_data/invalid_missing_values.yaml b/testsuite/test_data/invalid_missing_values.yaml new file mode 100644 index 0000000..d2a1fd5 --- /dev/null +++ b/testsuite/test_data/invalid_missing_values.yaml @@ -0,0 +1,10 @@ +--- +independent_variables: + - header: {name: SQRT(S), units: GEV} + values: + - value: 7000 + - value: 8000 +dependent_variables: + - header: {name: SIG(total), units: FB} + qualifiers: + - {name: RE, value: P P --> Z0 Z0 X} diff --git a/testsuite/test_data/invalid_submission_duplicates.yaml b/testsuite/test_data/invalid_submission_duplicates.yaml new file mode 100644 index 0000000..7b18423 --- /dev/null +++ b/testsuite/test_data/invalid_submission_duplicates.yaml @@ -0,0 +1,71 @@ +--- +additional_resources: + - location: "http://github.com/HEPData/hepdata" + description: "Full source code for creating this data" + - location: "http://github.com/HEPData/hepdata" + description: "Full source code for creating this data" +dateupdated: '01/02/2016 10:38:36' +preprintyear: '2015' +publicationyear: '2016' +dateupdated: '01/02/2016 10:38:36' +comment: | # Information that applies to all data tables. + CERN-LHC. Measurements of the cross section for ZZ production using the 4l and 2l2nu decay channels in proton-proton collisions at a centre-of-mass energy of 7 TeV with 4.6 fb^-1 of data collected in 2011. The final states used are 4 electrons, 4 muons, 2 electrons and 2 muons, 2 electrons and missing transverse momentum, and 2 muons and missing transverse momentum (MET). + + The cross section values reported in the tables should be multiplied by a factor of 1.0141 to take into account the updated value of the integrated luminosity for the ATLAS 2011 data taking period. The uncertainty on the global normalisation ("Lumi") remains at 1.8%. See Eur.Phys.J. C73 (2013) 2518 for more details. + + The 4l channel fiducial region is defined as: + - 4e, 4mu or 2e2mu + - Ambiguities in pairing are resolved by choosing the combination that results in the smaller value of the sum |mll - mZ| for the two pairs, where mll is the mass of the dilepton system. + - ptLepton > 7 GeV (at least one with ptLepton > 20 (25) GeV for muons (electrons)) + - |etaLepton| < 3.16 + - At least one lepton pair is required to have invariant mass between 66 and 116 GeV. If the second pair also satisfies this, the event is ZZ, otherwise if the second pair satisfies mll > 20 GeV it is ZZ*. + - min(DeltaR(l,l)) > 0.2. + + The 2l2nu channel fiducial region is defined as: + - 2e+MET or 2mu+MET + - ptLepton > 20 GeV + - |etaLepton| < 2.5 + - mll must be between 76 and 106 GeV + - -MET*cos(phi_METZ)>75 GeV, where phi_METZ is the angle between the Z and the MET + - |MET - pTZ| / pTZ < 0.4, where pTZ is the transverse momentum of the dilepton system + - No events with a jet for which ptJet > 25 GeV and |etaJet| < 4.5 + - No events with a third lepton for which ptLepton > 10 GeV + - min(DeltaR(l,l)) > 0.3 + + +--- +name: "Table 1" +location: Page 17 of preprint +description: The measured fiducial cross sections. The first systematic uncertainty is the combined systematic uncertainty excluding luminosity, the second is the luminosity +keywords: # used for searching, possibly multiple values for each keyword + - { name: reactions, values: [P P --> Z0 Z0 X]} + - { name: observables, values: [SIG]} + - { name: cmenergies, values: [7000]} +data_file: data1.yaml +additional_resources: + - location: "http://github.com/HEPData/hepdata" + description: "Full source code for creating this data" + - location: "http://github.com/HEPData/hepdata" + description: "Full source code for creating this data" + +--- +# This is Table 2. +name: "Table 2" +location: Page 20 of preprint +description: The measured total cross sections. The first systematic uncertainty is the combined systematic uncertainty excluding luminosity, the second is the luminosity +keywords: # used for searching, possibly multiple values for each keyword + - { name: reactions, values: [P P --> Z0 Z0 X]} + - { name: observables, values: [SIG]} + - { name: cmenergies, values: [7000.0-8000.0]} +data_file: data2.yaml + +--- +# This is Table 3 (or is it?) +name: "Table 2" +location: Page 27 of preprint +description: The measured total cross sections. The first systematic uncertainty is the combined systematic uncertainty excluding luminosity, the second is the luminosity +keywords: # used for searching, possibly multiple values for each keyword + - { name: reactions, values: [P P --> Z0 Z0 X]} + - { name: observables, values: [SIG]} + - { name: cmenergies, values: [7000.0-8000.0]} +data_file: data1.yaml diff --git a/testsuite/test_data/invalid_submission_keyword.yaml b/testsuite/test_data/invalid_submission_keyword.yaml new file mode 100644 index 0000000..df6fe67 --- /dev/null +++ b/testsuite/test_data/invalid_submission_keyword.yaml @@ -0,0 +1,61 @@ +--- +additional_resources: + - location: "http://github.com/HEPData/hepdata" + description: "Full source code for creating this data" + - location: "http://github.com/HEPData/hepdata" + description: "Full source code for creating this data" +dateupdated: '01/02/2016 10:38:36' +preprintyear: '2015' +publicationyear: '2016' +dateupdated: '01/02/2016 10:38:36' +comment: | # Information that applies to all data tables. + CERN-LHC. Measurements of the cross section for ZZ production using the 4l and 2l2nu decay channels in proton-proton collisions at a centre-of-mass energy of 7 TeV with 4.6 fb^-1 of data collected in 2011. The final states used are 4 electrons, 4 muons, 2 electrons and 2 muons, 2 electrons and missing transverse momentum, and 2 muons and missing transverse momentum (MET). + + The cross section values reported in the tables should be multiplied by a factor of 1.0141 to take into account the updated value of the integrated luminosity for the ATLAS 2011 data taking period. The uncertainty on the global normalisation ("Lumi") remains at 1.8%. See Eur.Phys.J. C73 (2013) 2518 for more details. + + The 4l channel fiducial region is defined as: + - 4e, 4mu or 2e2mu + - Ambiguities in pairing are resolved by choosing the combination that results in the smaller value of the sum |mll - mZ| for the two pairs, where mll is the mass of the dilepton system. + - ptLepton > 7 GeV (at least one with ptLepton > 20 (25) GeV for muons (electrons)) + - |etaLepton| < 3.16 + - At least one lepton pair is required to have invariant mass between 66 and 116 GeV. If the second pair also satisfies this, the event is ZZ, otherwise if the second pair satisfies mll > 20 GeV it is ZZ*. + - min(DeltaR(l,l)) > 0.2. + + The 2l2nu channel fiducial region is defined as: + - 2e+MET or 2mu+MET + - ptLepton > 20 GeV + - |etaLepton| < 2.5 + - mll must be between 76 and 106 GeV + - -MET*cos(phi_METZ)>75 GeV, where phi_METZ is the angle between the Z and the MET + - |MET - pTZ| / pTZ < 0.4, where pTZ is the transverse momentum of the dilepton system + - No events with a jet for which ptJet > 25 GeV and |etaJet| < 4.5 + - No events with a third lepton for which ptLepton > 10 GeV + - min(DeltaR(l,l)) > 0.3 + + +--- +name: "Table 1" +location: Page 17 of preprint +description: The measured fiducial cross sections. The first systematic uncertainty is the combined systematic uncertainty excluding luminosity, the second is the luminosity +keywords: # used for searching, possibly multiple values for each keyword + - { name: reactions, values: [P P --> Z0 Z0 X]} + - { name: observables, values: [SIG]} + - { name: cmenergies, values: [7000]} +data_file: data1.yaml +additional_resources: + - location: "http://github.com/HEPData/hepdata" + description: "Full source code for creating this data" + - location: "http://github.com/HEPData/hepdata" + description: "Full source code for creating this data" + +--- +# This is Table 2. +name: "Table 2" +location: Page 20 of preprint +description: The measured total cross sections. The first systematic uncertainty is the combined systematic uncertainty excluding luminosity, the second is the luminosity +keywords: # used for searching, possibly multiple values for each keyword + - { name: reactions, values: [P P --> Z0 Z0 X]} + - { name: observables, values: [SIG]} + - { name: cmenergies, values: [7000.0-8000.0]} + - { name: phrases, values: ["abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"]} +data_file: data2.yaml diff --git a/testsuite/test_data/valid_submission.zip b/testsuite/test_data/valid_submission.zip new file mode 100644 index 0000000..f6fb13e Binary files /dev/null and b/testsuite/test_data/valid_submission.zip differ diff --git a/testsuite/test_data_validator.py b/testsuite/test_data_validator.py index c1f6ef3..38b6932 100644 --- a/testsuite/test_data_validator.py +++ b/testsuite/test_data_validator.py @@ -23,7 +23,7 @@ def validator_v0(): @pytest.fixture(scope="module") def validator_v1(): - return DataFileValidator(schema_version='1.0.1') + return DataFileValidator(schema_version='1.1.0') #################################################### @@ -319,6 +319,32 @@ def test_file_with_inconsistent_values_v1(validator_v1, data_path, capsys): assert out.strip() == "error - Inconsistent length of 'values' list: independent_variables [1], dependent_variables [2]" +def test_file_with_invalid_independent_variables_v1(validator_v1, data_path, capsys): + """ + Tests the DataFileValidator V1 against a file with invalid independent variables + """ + file = os.path.join(data_path, 'invalid_independent_variables_file.yaml') + is_valid = validator_v1.validate(file_path=file) + validator_v1.print_errors(file) + + assert is_valid is False + out, err = capsys.readouterr() + assert out.strip() == "error - {'low': 6000} is not valid under any of the given schemas in 'independent_variables[0].values[0]' (expected: {'oneOf': [{'type': 'object', 'properties': {'value': {'type': ['string', 'number']}}, 'required': ['value'], 'additionalProperties': False}, {'type': 'object', 'properties': {'low': {'type': 'number'}, 'high': {'type': 'number'}}, 'required': ['low', 'high'], 'additionalProperties': False}]})" + + +def test_file_with_missing_dependent_values_v1(validator_v1, data_path, capsys): + """ + Tests the DataFileValidator V1 against a file with missing dependent values + """ + file = os.path.join(data_path, 'invalid_missing_values.yaml') + is_valid = validator_v1.validate(file_path=file) + validator_v1.print_errors(file) + + assert is_valid is False + out, err = capsys.readouterr() + assert out.strip() == "error - 'values' is a required property in 'dependent_variables[0]' (expected: {'type': 'object', 'properties': {'header': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'units': {'type': 'string'}}, 'required': ['name'], 'additionalProperties': False}, 'qualifiers': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'value': {'type': ['string', 'number']}, 'units': {'type': 'string'}}, 'required': ['name', 'value'], 'additionalProperties': False}}, 'values': {'type': 'array', 'items': {'type': 'object', 'properties': {'value': {'type': ['string', 'number']}, 'errors': {'type': 'array', 'items': {'type': 'object', 'properties': {'symerror': {'type': ['number', 'string']}, 'asymerror': {'type': 'object', 'properties': {'minus': {'type': ['number', 'string']}, 'plus': {'type': ['number', 'string']}}, 'required': ['minus', 'plus'], 'additionalProperties': False}, 'label': {'type': 'string'}}, 'oneOf': [{'required': ['symerror']}, {'required': ['asymerror']}], 'additionalProperties': False}}}, 'required': ['value'], 'additionalProperties': False}}}, 'required': ['header', 'values'], 'additionalProperties': False})" + + def test_invalid_schema_version(): """ Tests the DataFileValidator creation with an invalid schema version diff --git a/testsuite/test_full_submission_validator.py b/testsuite/test_full_submission_validator.py new file mode 100644 index 0000000..7936cc1 --- /dev/null +++ b/testsuite/test_full_submission_validator.py @@ -0,0 +1,187 @@ +import os + +import pytest + +from hepdata_validator.full_submission_validator import FullSubmissionValidator + + +@pytest.fixture(scope="module") +def data_path(): + base_dir = os.path.dirname(os.path.realpath(__file__)) + return os.path.join(base_dir, 'test_data') + + +@pytest.fixture(scope="module") +def validator_v0(): + return FullSubmissionValidator(schema_version='0.1.0') + + +@pytest.fixture() +def validator_v1(): + return FullSubmissionValidator(schema_version='1.1.0') + + +def test_valid_submission_dir(validator_v1, data_path, capsys): + submission_dir = os.path.join(data_path, 'TestHEPSubmission') + is_valid = validator_v1.validate(directory=submission_dir) + assert is_valid + + validator_v1.print_valid_files() + out, err = capsys.readouterr() + assert out == """ {0}/submission.yaml is valid HEPData YAML. + {0}/data1.yaml is valid HEPData YAML. + {0}/data2.yaml is valid HEPData YAML. + {0}/data3.yaml is valid HEPData YAML. + {0}/data4.yaml is valid HEPData YAML. + {0}/data5.yaml is valid HEPData YAML. + {0}/data6.yaml is valid HEPData YAML. + {0}/data7.yaml is valid HEPData YAML. + {0}/data8.yaml is valid HEPData YAML. +""".format(submission_dir) + + +def test_valid_submission_zip(validator_v1, data_path, capsys): + submission_zip = os.path.join(data_path, 'TestHEPSubmission.zip') + is_valid = validator_v1.validate(zipfile=submission_zip) + assert is_valid + + validator_v1.print_valid_files() + out, err = capsys.readouterr() + lines = out.splitlines() + assert lines[0].endswith("/submission.yaml is valid HEPData YAML.") + for i in list(range(1, 8)): + assert lines[i].endswith(f'data{i}.yaml is valid HEPData YAML.') + + +def test_valid_single_yaml(validator_v1, data_path, capsys): + submission_file = os.path.join(data_path, '1512299.yaml') + is_valid = validator_v1.validate(file=submission_file) + assert is_valid + assert validator_v1.valid_files == [submission_file] + validator_v1.print_valid_files() + out, err = capsys.readouterr() + assert out.strip() == f"{submission_file} is valid HEPData YAML." + + +def test_invalid_input(validator_v1, data_path, capsys): + # Invalid file + is_valid = validator_v1.validate(file='notafile') + assert not is_valid + assert validator_v1.valid_files == [] + validator_v1.print_errors('notafile') + out, err = capsys.readouterr() + lines = out.splitlines() + assert lines[0].strip() == "error - File notafile does not exist." + + # Invalid directory + is_valid = validator_v1.validate(directory='notadirectory') + assert not is_valid + assert validator_v1.valid_files == [] + validator_v1.print_errors('notadirectory') + out, err = capsys.readouterr() + lines = out.splitlines() + assert lines[0].strip() == "error - Directory notadirectory does not exist." + + # Invalid zip (does not exist) + is_valid = validator_v1.validate(zipfile='notazipfile') + assert not is_valid + assert validator_v1.valid_files == [] + validator_v1.print_errors('notazipfile') + out, err = capsys.readouterr() + lines = out.splitlines() + assert lines[0].strip() == "error - File notazipfile does not exist." + + # Invalid zip (not a zip) + file = os.path.join(data_path, 'valid_submission.yaml') + is_valid = validator_v1.validate(zipfile=file) + assert not is_valid + assert validator_v1.valid_files == [] + validator_v1.print_errors(file) + out, err = capsys.readouterr() + lines = out.splitlines() + assert lines[0].strip() == f"error - Unable to extract file {file}. Error was: Unknown archive format '{file}'" + + +def test_missing_submission(validator_v1, data_path, capsys): + # Use current directory (no submission.yaml) + is_valid = validator_v1.validate() + assert not is_valid + assert validator_v1.valid_files == [] + validator_v1.print_errors('./submission.yaml') + out, err = capsys.readouterr() + lines = out.splitlines() + assert lines[0].strip() == "error - No such file ./submission.yaml" + + # Zip without submission.yaml + file = os.path.join(data_path, 'valid_submission.zip') + validator_v1.validate(zipfile=file) + assert not is_valid + assert validator_v1.valid_files == [] + validator_v1.print_errors(file) + out, err = capsys.readouterr() + lines = out.splitlines() + assert lines[0].strip() == f"error - submission.yaml not found in {file}." + + +def test_invalid_submission(validator_v1, data_path, capsys): + file = os.path.join(data_path, 'invalid_submission.yaml') + is_valid = validator_v1.validate(file=file) + assert not is_valid + assert validator_v1.valid_files == [] + validator_v1.print_errors(file) + out, err = capsys.readouterr() + lines = out.splitlines() + assert lines[0].strip() == f"error - {file} is invalid HEPData YAML." + assert lines[1].strip().startswith("error - 'values' is a required property in 'keywords[0]'") + + +def test_invalid_data_single_file(validator_v1, data_path, capsys): + file = os.path.join(data_path, '1512299_invalid.yaml') + is_valid = validator_v1.validate(file=file) + assert not is_valid + assert validator_v1.valid_files == [] + validator_v1.print_errors(file) + out, err = capsys.readouterr() + lines = out.splitlines() + assert lines[0].strip() == f"error - {file} (Table 1) is invalid HEPData YAML." + assert lines[1].strip().startswith("error - Additional properties are not allowed ('errorss' was unexpected) in 'dependent_variables[0].values[0]'") + + +def test_invalid_data_directory(validator_v1, data_path, capsys): + dir = os.path.join(data_path, 'TestHEPSubmission_invalid') + is_valid = validator_v1.validate(directory=dir) + assert not is_valid + expected_valid_files = [os.path.join(dir, f) for f in [ + 'data1.yaml', 'data4.yaml', 'data5.yaml', 'data6.yaml', 'data7.yaml' + ]] + assert validator_v1.valid_files == expected_valid_files + assert validator_v1.has_errors + # Check errors directly rather than with print so we can check they're allocated to the right file + errors = validator_v1.get_messages() + expected_file_names = [ + os.path.join(dir, 'submission.yaml'), + os.path.join(dir, 'data3.yaml'), + os.path.join(dir, 'data8.yaml') + ] + assert set(errors.keys()) == set(expected_file_names) + assert errors[expected_file_names[0]][0].message == 'mydirectory/data2.yaml should not contain "/".' + assert errors[expected_file_names[0]][1].message == '../TestHEPSubmission/figFigure8B.png should not contain "/".' + assert errors[expected_file_names[0]][2].message == f"{dir}/figFigure9A.png is missing." + assert errors[expected_file_names[1]][0].message == f"{dir}/data3.yaml is missing." + assert errors[expected_file_names[2]][0].message == f"""{dir}/data8.yaml is invalid YAML: while parsing a block mapping + in "{dir}/data8.yaml", line 1, column 1 +did not find expected key + in "{dir}/data8.yaml", line 9, column 3""" + + +def test_invalid_syntax_submission(validator_v1, data_path, capsys): + file = os.path.join(data_path, 'invalid_syntax_submission.yaml') + is_valid = validator_v1.validate(file=file) + assert not is_valid + assert validator_v1.valid_files == [] + validator_v1.print_errors(file) + out, err = capsys.readouterr() + assert out.strip() == f"""error - {file} is invalid YAML: while scanning a simple key + in "{file}", line 9, column 1 +could not find expected ':' + in "{file}", line 10, column 1""" diff --git a/testsuite/test_submission_validator.py b/testsuite/test_submission_validator.py index 9dfcccf..bc928b3 100644 --- a/testsuite/test_submission_validator.py +++ b/testsuite/test_submission_validator.py @@ -29,7 +29,7 @@ def validator_v0(): @pytest.fixture(scope="module") def validator_v1(): - return SubmissionFileValidator(schema_version='1.0.1') + return SubmissionFileValidator(schema_version='1.1.0') #################################################### @@ -187,6 +187,36 @@ def test_invalid_license_submission_yaml_v1(validator_v1, data_path, capsys): assert out.strip() == "error - None is not of type 'string' in 'data_license.name' (expected: {'type': 'string', 'maxLength': 256})" +def test_invalid_keyword_submission_yaml_v1(validator_v1, data_path, capsys): + """ + Tests the SubmissionFileValidator V1 against an invalid YAML + """ + + file = os.path.join(data_path, 'invalid_submission_keyword.yaml') + is_valid = validator_v1.validate(file_path=file) + validator_v1.print_errors(file) + + assert is_valid is False + out, err = capsys.readouterr() + assert out.strip() == "error - 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz' is too long in 'keywords[3].values[0]' (expected: {'type': ['string', 'number'], 'maxLength': 128})" + + +def test_invalid_duplicate_names_v1(validator_v1, data_path, capsys): + """ + Tests the SubmissionFileValidator V1 against a file with duplicate + table names and data files + """ + + file = os.path.join(data_path, 'invalid_submission_duplicates.yaml') + is_valid = validator_v1.validate(file_path=file) + validator_v1.print_errors(file) + + assert is_valid is False + out, err = capsys.readouterr() + assert out.strip() == """error - Duplicate table name: Table 2 + error - Duplicate table data_file: data1.yaml""" + + def test_invalid_parser_submission_yaml_v1(validator_v1, data_path, capsys): """ Tests the SubmissionFileValidator V1 against an invalid parser YAML @@ -268,3 +298,25 @@ def test_invalid_cmenergies_submission_yaml_v1(validator_v1, data_path, capsys): assert is_valid is False out, err = capsys.readouterr() assert out.strip() == "error - Invalid value (in GeV) for cmenergies: '7000 GeV' in 'keywords[2].name.cmenergies' (expected: {'type': 'number or hyphen-separated range of numbers e.g. 1.7-4.7'})" + + +def test_check_for_duplicates(validator_v1): + """ + Tests the check_for_duplicates method adds correct errors + """ + validator_v1.check_for_duplicates('myfile1.yaml', ['a', 'b'], ['c', 'd']) + assert not validator_v1.has_errors('myfile1.yaml') + + validator_v1.check_for_duplicates('myfile2.yaml', ['a', 'b', 'a'], ['c', 'd']) + assert validator_v1.has_errors('myfile2.yaml') + messages = validator_v1.get_messages('myfile2.yaml') + assert len(messages) == 1 + assert messages[0].message == 'Duplicate table name: a' + + validator_v1.check_for_duplicates('myfile3.yaml', ['a', 'b', 'a', 'a', 'b'], ['c', 'd', 'd']) + assert validator_v1.has_errors('myfile3.yaml') + messages = validator_v1.get_messages('myfile3.yaml') + assert len(messages) == 3 + assert messages[0].message == 'Duplicate table name: a' + assert messages[1].message == 'Duplicate table name: b' + assert messages[2].message == 'Duplicate table data_file: d'