diff --git a/MANIFEST.in b/MANIFEST.in index ecc6cecf72c1a703675c00834ea40510197687e2..7f087617a77f994a68683dd3f5e4cfd6a12de109 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -21,7 +21,7 @@ recursive-include dependencies/parsers/eelsdb/eelsdbparser *.py metadata.yaml include dependencies/parsers/electronic/README.md recursive-include dependencies/parsers/electronic/electronicparsers *.py metadata.yaml include dependencies/parsers/nexus/README.md -recursive-include dependencies/parsers/nexus/nexusparser *.py -recursive-include dependencies/parsers/nexus/nexusparser/definitions *.xml *.xsd +recursive-include dependencies/parsers/nexus/nexusutils *.py +recursive-include dependencies/parsers/nexus/nexusutils/definitions *.xml *.xsd include dependencies/parsers/workflow/README.md -recursive-include dependencies/parsers/workflow/workflowparsers *.py metadata.yaml \ No newline at end of file +recursive-include dependencies/parsers/workflow/workflowparsers *.py metadata.yaml diff --git a/dependencies/nomad-remote-tools-hub b/dependencies/nomad-remote-tools-hub index 337f2f6bec54d5142f1ea1276f737cc4060c1a35..2c0607a861d582ec96b4301bb34ba9afbee37316 160000 --- a/dependencies/nomad-remote-tools-hub +++ b/dependencies/nomad-remote-tools-hub @@ -1 +1 @@ -Subproject commit 337f2f6bec54d5142f1ea1276f737cc4060c1a35 +Subproject commit 2c0607a861d582ec96b4301bb34ba9afbee37316 diff --git a/dependencies/parsers/nexus b/dependencies/parsers/nexus index c31c4252304fc5632f5103ab4a7393a101f3390c..7536be8962f797d987e4e07f7982f8ffe3c514d0 160000 --- a/dependencies/parsers/nexus +++ b/dependencies/parsers/nexus @@ -1 +1 @@ -Subproject commit c31c4252304fc5632f5103ab4a7393a101f3390c +Subproject commit 7536be8962f797d987e4e07f7982f8ffe3c514d0 diff --git a/examples/data/apm/README.md b/examples/data/apm/README.md new file mode 100644 index 0000000000000000000000000000000000000000..fb7c80f4591a562d3736f03733b17d5c46e0abb4 --- /dev/null +++ b/examples/data/apm/README.md @@ -0,0 +1,110 @@ +# An Electronic Lab Notebook (ELN) Example for Atom Probe Microscopy (APM) + +## Introduction + +This example shows how the NOMAD ELN functionalities can be used to collect +required metadata for groups, fields, and attributes for creating a dataset +which is compliant with the NeXus NXapm application definition. + +The NeXus NXapm data model is documented here [NXapm](https://fairmat-experimental.github.io/nexus-fairmat-proposal) + +Specifically, this example works together with vendor/community file formats +(POS, ePOS, APT, and RNG or RRNG, respectively) which contain the tomographic +reconstruction and associated ranging data to interpret ion species from +mass-to-charge-state ratio values. This ELN can be used to collect metadata which +are currently not stored in vendor or community files including details about the +specimen, the instrument, users, and post-processing steps. + +This example upload contains the following entries: +- A schema in NOMAD's *archive.yaml* format: *nxapm.schema.archive.yaml* +- A schema instance file used by NOMAD *nxapm.archive.json* which is filled for educational purpose with values for the example. +- The primary consumer of this json file is NOMAD and its internal data management system. +- Another schema instance file used by the nomad-parser-nexus *eln_data.yaml*. This file contains all entered +quantities from the ELN GUI (after the save button was stored). +The example is also filled for educational purpose with values matching those in nxapm.archive.json. +This file stores metadata with value and units. The file is updated each time the save button in the ELN GUI is clicked. +The file is used by the [NOMAD-PARSER-NEXUS](https://github.com/nomad-coe/nomad-parser-nexus) which creates +NeXus files, like those for atom probe matching the NXapm application definition. + +This example is configured to take an example dataset and call the nomad-parser-nexus dataconverter +which creates a NeXus file that is compliant with NXapm. Once completed, this file is available +in the upload section/staging area. This makes also these files explorable with H5Web visualization +through the files menu. + +This example comes with a measured dataset which is meant for testing and exploration of the ELN and +NORTH container functionalities. The scientific dataset is a tomographic reconstruction of an +ODS steel specimen which was measured and characterized by [J. Wang and coworkers](https://doi.org/10.1017/S1431927618015386) +- R31_06365-v02.pos (the reconstruction) +- R31_06365-v02.rrng (the range file) + +## Creating NeXus files + +When you modify the content inside the ELN and click the save button, the data from the ELN will +be parsed and combined with the POS and RRNG file to create the NXS file. You can replace +these files with your own and accordingly use the ELN to enter metadata for your own datasets. +Upon saving, a NeXus/HDF5 file will be created for your specific dataset. + +The drag-and-drop functionality of the upload section can be used to pass your reconstruction +and range file onto the respective file upload fields of the ELN. After clicking the save button, +the newly entered metadata and files will be processed on-the-fly and a NeXus file, +compliant with NXapm will be generated. + +Currently, the implementation supports reconstructions in POS, ePOS and APT file format +(the one generated by APSuite from AMETEK/Cameca). Range files are accepted in +RNG or RRNG format. + +## Where to go from now + +With an example in your upload **you should go to the Analytics tab in the** NOMAD OASIS menu bar +and **start up the apmtools container**. The container connects your upload with a set of +containerized software tools for post-processing and exploring atom probe data in substantial more detail. + +These tools contain currently the +- [Leoben APT_analyzer](https://github.com/areichm/APT_analyzer) by Alexander Reichmann et al. (Lorenz Romaner's team at Montanuniversität Leoben) +- The [paraprobe-toolbox](https://gitlab.com/paraprobe/paraprobe-toolbox) by Markus Kühbach et al. (developed mainly at his time with the Max-Planck-Institut für Eisenforschung GmbH) + +**Once running, the apmtools container offers a jupyter lab server in which the tools are installed.** +**Further examples are available in the container. To access these you can start with the Cheatsheet.ipynb** +inside the **/home/atom_probe_tools directory.** + +Once you have explored the example datasets you should also explore and realize that the +containers are mounted with your uploads section. The respective directory in the apmtools container +is the **/config** directory. The key benefit of this container design is that you can use a simple +command in a jupyter notebook cell after your analyses + +``` +! mv *.png /config +``` + +This will move for example all generated figures (replace the file extension with a specific +name or file type) from the working directory in the container into your upload section. +H5Web can be used to display the content of HDF5 files, such as results and config files +of the paraprobe-toolbox. Please keep in mind that the config files for the tools of the +paraprobe-toolbox are already fully described with NeXus. You can find the respective schema descriptions here +[NXapm_paraprobe](https://fairmat-experimental.github.io/nexus-fairmat-proposal) + +The result files of these tools however are not yet fully described with NeXus, so no default plots will +be available here but you can still conveniently explore all the data as they are HDF5 files +which H5Web can present to you. + +## Summary + +The example is meant as a starting point. You can download the schema file and extend it to collect +further metadata (e. g. for adding optional quantities defined in NXapm) based on what is relevant for +your laboratory and use case. Also you can explore the implementation of the example to customize it for +your own needs. We would be happy if you could support us with improving this example and the associated +schemes by leaving us comments via the nexus-fairmat-proposal pages or by contacting us via +the various channels. We are also very happy to guide you on how to customize these functionalities +for your own laboratory and needs. + +Consult our [documentation on the NOMAD Archive and Metainfo](https://nomad-lab.eu/prod/v1/docs/archive.html) +to learn more about schemes. + +## Questions, comments, suggestions? + +For general questions regarding the APM tools and if you're interested in building one for your +own research workflow or your colleagues and group, you are very welcome +[Markus Kühbach](https://www.fair-di.eu/fairmat/fairmat_/fairmatteam) from the FAIRmat consortium. + +## Known bugs + diff --git a/examples/data/apm/apm.archive.json b/examples/data/apm/apm.archive.json new file mode 100644 index 0000000000000000000000000000000000000000..6a501c4cb7f105e294d4cd1f503ea22da379a895 --- /dev/null +++ b/examples/data/apm/apm.archive.json @@ -0,0 +1,88 @@ +{ + "data": { + "m_def": "../upload/raw/nxapm.schema.archive.yaml#/definitions/section_definitions/0", + "reader": "apm", + "nxdl": "NXapm.nxdl", + "input_files": [ + "eln_data.yaml", + "R31_06365-v02.pos", + "R31_06365-v02.rrng" + ], + "entry": { + "attr_version": "nexus-fairmat-proposal successor of 50433d9039b3f33299bab338998acb5335cd8951", + "definition": "NXapm", + "experiment_identifier": "R31-06365-v02", + "experiment_description": "some details for nomad, ODS steel precipitates for testing a developmental clustering algorithm called OPTICS.", + "start_time": "2022-09-20T20:00:00+00:00", + "end_time": "2022-09-22T20:00:00+00:00", + "program": "IVAS", + "program__attr_version": "3.6.4", + "run_number": "6365", + "operation_mode": "apt" + }, + "user": [ + { + "name": "Jing Wang" + }, + { + "name": "Daniel Schreiber" + } + ], + "specimen": { + "name": "ODS-Specimen 1", + "sample_history": "undocumented", + "preparation_date": "2022-09-12T20:01:00+00:00", + "short_title": "ODS", + "atom_types": [ + "Fe", + "Cr", + "Y", + "O" + ], + "description": "ODS steel, i.e. material with Y2O3 dispersoids" + }, + "atom_probe": { + "instrument_name": "LEAP 3000", + "flight_path_length": 0.9, + "fabrication_vendor": "AMETEK/Camcca", + "fabrication_model": "LEAP3000", + "fabrication_identifier": "n/a", + "fabrication_capabilities": "n/a", + "reflectron_applied": true, + "local_electrode_name": "electrode 1", + "ion_detector_type": "mcp_dld", + "ion_detector_name": "none", + "ion_detector_model": "cameca", + "ion_detector_serial_number": "n/a", + "stage_lab_base_temperature": 30, + "analysis_chamber_pressure": 1e-10, + "specimen_monitoring_initial_radius": 30, + "specimen_monitoring_shank_angle": 5, + "specimen_monitoring_detection_rate": 0.6, + "control_software_program": "IVAS", + "control_software_program__attr_version": "3.6.4", + "pulser": { + "pulse_mode": "laser", + "pulse_frequency": 250, + "pulse_fraction": 0.1, + "laser_gun_name": "laser", + "laser_gun_wavelength": 4.8e-7, + "laser_gun_power": 2e-8, + "laser_gun_pulse_energy": 1.2e-11 + } + }, + "reconstruction": { + "program": "IVAS", + "program__attr_version": "3.6.4", + "protocol_name": "cameca", + "parameter": "kf = 1.8, ICF = 1.02, Vat = 60 at/nm^3", + "crystallographic_calibration": "n/a" + }, + "ranging": { + "program": "IVAS", + "program__attr_version": "3.6.4" + }, + "output": "output.nxs" + }, + "m_ref_archives": {} +} \ No newline at end of file diff --git a/examples/data/apm/downloads.archive.yaml b/examples/data/apm/downloads.archive.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f1fc960c656162cf75d8694642c1f1256857200d --- /dev/null +++ b/examples/data/apm/downloads.archive.yaml @@ -0,0 +1,8 @@ +data: + m_def: nomad.datamodel.metainfo.downloads.Downloads + mainfiles: + - apm.archive.json + downloads: + - url: https://zenodo.org/record/6808516/files/R31_06365-v02.tar.gz?download=1 + output: R31_06365-v02.tar.gz + extract: true \ No newline at end of file diff --git a/examples/data/apm/eln_data.yaml b/examples/data/apm/eln_data.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5eea73472718d094ecc038098fe6a1fcd9d26cac --- /dev/null +++ b/examples/data/apm/eln_data.yaml @@ -0,0 +1,81 @@ +atom_probe: + analysis_chamber_pressure: + unit: torr + value: 1.0e-10 + control_software_program: IVAS + control_software_program__attr_version: 3.6.4 + fabrication_capabilities: n/a + fabrication_identifier: n/a + fabrication_model: LEAP3000 + fabrication_vendor: AMETEK/Camcca + flight_path_length: + unit: m + value: 0.9 + instrument_name: LEAP 3000 + ion_detector_model: cameca + ion_detector_name: none + ion_detector_serial_number: n/a + ion_detector_type: mcp_dld + local_electrode_name: electrode 1 + pulser: + laser_gun_name: laser + laser_gun_power: + unit: W + value: 2.0e-08 + laser_gun_pulse_energy: + unit: J + value: 1.2e-11 + laser_gun_wavelength: + unit: m + value: 4.8e-07 + pulse_fraction: 0.1 + pulse_frequency: + unit: kHz + value: 250 + pulse_mode: laser + reflectron_applied: true + specimen_monitoring_detection_rate: 0.6 + specimen_monitoring_initial_radius: + unit: nm + value: 30 + specimen_monitoring_shank_angle: + unit: ° + value: 5 + stage_lab_base_temperature: + unit: K + value: 30 +entry: + attr_version: nexus-fairmat-proposal successor of 50433d9039b3f33299bab338998acb5335cd8951 + definition: NXapm + end_time: '2022-09-22T20:00:00+00:00' + experiment_description: some details for nomad, ODS steel precipitates for testing + a developmental clustering algorithm called OPTICS. + experiment_identifier: R31-06365-v02 + operation_mode: apt + program: IVAS + program__attr_version: 3.6.4 + run_number: '6365' + start_time: '2022-09-20T20:00:00+00:00' +ranging: + program: IVAS + program__attr_version: 3.6.4 +reconstruction: + crystallographic_calibration: n/a + parameter: kf = 1.8, ICF = 1.02, Vat = 60 at/nm^3 + program: IVAS + program__attr_version: 3.6.4 + protocol_name: cameca +specimen: + atom_types: + - Fe + - Cr + - Y + - O + description: ODS steel, i.e. material with Y2O3 dispersoids + name: ODS-Specimen 1 + preparation_date: '2022-09-12T20:01:00+00:00' + sample_history: undocumented + short_title: ODS +user: +- name: Jing Wang +- name: Daniel Schreiber diff --git a/examples/data/apm/nxapm.schema.archive.yaml b/examples/data/apm/nxapm.schema.archive.yaml new file mode 100644 index 0000000000000000000000000000000000000000..958a17c66b8a0813613018e925856a3856c9da68 --- /dev/null +++ b/examples/data/apm/nxapm.schema.archive.yaml @@ -0,0 +1,661 @@ +# group, field, and attribute names match to NXapm, for further details +# what each field should contain consult the respective docstring of the +# quantity in NXapm +definitions: + name: 'apm' + # 'ELN/application definition schema for atom probe microscopy (APM) experiments.' + sections: # section definitions what were back in the old days msection base classes + # Operator: + # Specimen: + AtomProbeMicroscopy: # the actual schema + # nomad.datamodel.metainfo.eln.NexusParser + base_sections: + - 'nomad.datamodel.metainfo.eln.NexusDataConverter' + - 'nomad.datamodel.data.EntryData' + # base_section: nomad.datamodel.data.EntryData + m_annotations: + # Here you can set your default values for the reader and nxdl. + template: + reader: apm + nxdl: NXapm.nxdl + # Listing quantities in the hide component will not show them in the ELN. + # This would be useful to make the default values set in `template` fixed. + # Leave the hide key even if you want to pass an empty list like in this example. + eln: + # hide: ['nxdl', 'reader'] + hide: [] + sub_sections: + entry: + section: + description: | + Generic details about an experiment. + m_annotations: + eln: + overview: true + quantities: + attr_version: + type: + type_kind: Enum + type_data: + - 'nexus-fairmat-proposal successor of 50433d9039b3f33299bab338998acb5335cd8951' + description: Hashvalue of the NeXus application definition file + m_annotations: + eln: + component: RadioEnumEditQuantity + definition: + type: + type_kind: Enum + type_data: + - NXapm + description: NeXus NXDL schema to which this file conforms + m_annotations: + eln: + component: RadioEnumEditQuantity + experiment_identifier: + type: str + description: GUID of the experiment + m_annotations: + eln: + component: StringEditQuantity + experiment_description: + type: str + description: Free text details about the experiment + m_annotations: + eln: + component: StringEditQuantity + start_time: + type: Datetime + description: ISO 8601 time code with local time zone offset to UTC when the experiment started. + m_annotations: + eln: + component: DateTimeEditQuantity + end_time: + type: Datetime + description: ISO 8601 time code with local time zone offset to UTC when the experiment ended. + m_annotations: + eln: + component: DateTimeEditQuantity + program: + type: str + description: Name of the program used to create this file. + m_annotations: + eln: + component: StringEditQuantity + program__attr_version: + type: str + description: Version plus build number, commit hash, or description of the program to support reproducibility. + m_annotations: + eln: + component: StringEditQuantity + run_number: + type: str + description: Identifier in the instrument control software given for this experiment. + m_annotations: + eln: + component: StringEditQuantity + # experiment_documentation(NXnote): + # thumbnail(NXnote): + # attr_type: + operation_mode: + type: + type_kind: Enum + type_data: + - apt + - fim + - apt_fim + - other + description: | + What type of atom probe microscope experiment is performed. + APT experiments use no imaging gas while FIM does. + m_annotations: + eln: + component: RadioEnumEditQuantity + # inputfile_reconstruction: + # type: str + # description: | + # Place to drag-and-drop the file containing the result of the measurement. + # This result has to be the tomographic reconstruction. + # Accepted file formats are POS, ePOS, and APT (from APSuite). + # m_annotations: + # eln: + # component: FileEditQuantity + # inputfile_range_file: + # type: str + # description: | + # Place to drag-and-drop a file which contains the result of a ranging of + # the mass-to-charge-state ratio values to assigned ion labels. + # Accepted file formats are RNG, and RRNG. + # m_annotations: + # eln: + # component: FileEditQuantity + user: + repeats: true + section: + description: | + Contact information and eventually details of at least one person + involved in the taking of the microscope session. + m_annotations: + eln: + quantities: + name: + type: str + description: Given (first) name and surname. + m_annotations: + eln: + component: StringEditQuantity + email: + type: str + description: Email address of the user at the point in time when the experiment was performed. + m_annotations: + eln: + component: StringEditQuantity + affiliation: + type: str + description: Name of the affiliation of the user at the point in time when the experiment was performed. + m_annotations: + eln: + component: StringEditQuantity + address: + type: str + description: Postal address of the affiliation. + m_annotations: + eln: + component: StringEditQuantity + orcid: + type: str + description: Globally unique identifier of the user as offered by services like OrcID or ResearcherID. + m_annotations: + eln: + component: StringEditQuantity + orcid_platform: + type: str + description: Name of the OrcID or ResearcherID where the account under orcid is registered. + m_annotations: + eln: + component: StringEditQuantity + telephone_number: + type: str + description: (Business) (tele)phone number of the user at the point in time when the experiment was performed. + m_annotations: + eln: + component: StringEditQuantity + role: + type: str + description: Which role does the user have in the place and at the point in time when the experiment was performed? Technician operating the microscope. Student, postdoc, principle investigator, guest are common examples. + m_annotations: + eln: + component: StringEditQuantity + social_media_name: + type: str + description: Account name that is associated with the user in social media platforms. + m_annotations: + eln: + component: StringEditQuantity + social_media_platform: + type: str + description: Name of the social media platform where the account under social_media_name is registered. + m_annotations: + eln: + component: StringEditQuantity + specimen: + section: + description: | + Details about the specimen and its immediate environment. + m_annotations: + eln: + quantities: + name: + type: str + description: | + GUID which distinguishes the specimen from all others and especially + the predecessor/origin from where the specimen was cut. + In cases where the specimen was e.g. site-specifically cut from + samples or in cases of an instrument session during which multiple + specimens are loaded, the name has to be descriptive enough to + resolve which specimen on e.g. the microtip array was taken. + This field must not be used for an alias of the specimen. + Instead, use short_title. + m_annotations: + eln: + component: StringEditQuantity + sample_history: + type: str + description: | + Reference to the location of or a GUID providing as many details + as possible of the material, its microstructure, and its + thermo-chemo-mechanical processing/preparation history. + m_annotations: + eln: + component: StringEditQuantity + preparation_date: + type: Datetime + description: | + ISO 8601 time code with local time zone offset to UTC information when + the measured specimen surface was actively prepared. + m_annotations: + eln: + component: DateTimeEditQuantity + short_title: + type: str + description: Possibility to give an abbreviation of the specimen name field. + m_annotations: + eln: + component: StringEditQuantity + # atom_types should be a list of strings + atom_types: + type: str + shape: ['*'] + description: | + Use Hill's system for listing elements of the periodic table which + are inside or attached to the surface of the specimen and thus + relevant from a scientific point of view. + m_annotations: + eln: + component: StringEditQuantity + description: + type: str + description: | + Discouraged free text field to be used in the case when properly + designed records for the sample_history are not available. + m_annotations: + eln: + component: StringEditQuantity + # composition_element_symbol: + # type: str + # shape: ['*'] + # description: | + # Chemical symbol. + # m_annotations: + # eln: + # component: StringEditQuantity + # composition_mass_fraction: + # type: np.float64 + # shape: ['*'] + # description: | + # Composition but this can be atomic or mass fraction. + # Best is you specify which you want. Under the hood oasis uses pint + # /nomad/nomad/units is the place where you can predefine exotic + # constants and units for a local oasis instance + # m_annotations: + # eln: + # component: NumberEditQuantity + # minValue: 0. + # maxValue: 1. + # composition_mass_fraction_error: + # type: np.float64 + # shape: ['*'] + # description: | + # Composition but this can be atomic or mass fraction. + # Also here best to be specific. If people write at.-% but mean wt.-% you + # cannot guard yourself against this + # m_annotations: + # eln: + # component: NumberEditQuantity + # minValue: 0. + # maxValue: 1. + atom_probe: + section: + description: | + The instrument and the lab in which it stands. + m_annotations: + eln: + quantities: + instrument_name: + type: str + description: Given name of the atom probe at the hosting institution. + m_annotations: + eln: + component: StringEditQuantity + location: + type: str + description: Location of the lab or place where the instrument is installed. Using GEOREF is preferred. + # (NXfabrication): + flight_path_length: + type: np.float64 + unit: meter + description: | + The space inside the atom probe that ions pass through nominally + when they leave the specimen and travel to the detector. + m_annotations: + eln: + component: NumberEditQuantity + defaultDisplayUnit: meter + minValue: 0.0 + maxValue: 10.0 + field_of_view(NX_FLOAT): + type: np.float64 + unit: meter + description: | + The nominal diameter of the specimen ROI which is measured in the + experiment. Physically, the specimen cannot be measured completely + because ions may launch but not become detected or hit elsewhere. + fabrication_vendor: + type: str + description: Name of the manufacturer/company, i.e. AMETEK/Cameca. + m_annotations: + eln: + component: StringEditQuantity + fabrication_model: + type: str + description: Model name of the instrument + m_annotations: + eln: + component: StringEditQuantity + fabrication_identifier: + type: str + description: Serial number/identifier of the instrument as issued by the manufacturer + m_annotations: + eln: + component: StringEditQuantity + fabrication_capabilities: + type: str + description: Capabilities of the instrument + m_annotations: + eln: + component: StringEditQuantity + # analysis_chamber(NXchamber): + # load_lock_chamber(NXchamber): + # buffer_chamber(NXchamber): + # getter_pump(NXpump): + # roughening_pump(NXpump): + # turbomolecular_pump(NXpump): + reflectron_applied: + type: bool + description: Is a reflectron installed and was it used? + m_annotations: + eln: + component: BoolEditQuantity + local_electrode_name: + type: str + description: Identifier of the local_electrode in the control software database. + m_annotations: + eln: + component: StringEditQuantity + # local_electrode__(NXaperture_em): + # ion_detector(NXdetector): + ion_detector_type: + type: + type_kind: Enum + type_data: + - mcp_dld + - phosphor_ccd + - other + description: | + Type of the ToF-taking detector system + Examples are mcp_dld, phosphor_ccd, or other + m_annotations: + eln: + component: RadioEnumEditQuantity + ion_detector_name: + type: str + description: Given name or alias of the detector + m_annotations: + eln: + component: StringEditQuantity + ion_detector_model: + type: str + description: Given brand or model name by the manufacturer. + m_annotations: + eln: + component: StringEditQuantity + ion_detector_serial_number: + type: str + description: Given hardware name/serial number or hash identifier issued by the manufacturer. + m_annotations: + eln: + component: StringEditQuantity + # fabrication_vendor: + # signal_amplitude(NX_FLOAT): + stage_lab_base_temperature: + type: np.float64 + unit: kelvin + description: | + Average temperature at the specimen base, i.e. + base temperature, during the measurement. + m_annotations: + eln: + component: NumberEditQuantity + defaultDisplayUnit: kelvin + minValue: 0.0 + maxValue: 273.15 + analysis_chamber_pressure: + type: np.float64 + unit: torr + description: | + Average pressure in the analysis chamber during the measurement. + m_annotations: + eln: + component: NumberEditQuantity + defaultDisplayUnit: torr + minValue: 0.0 + maxValue: 1500.12 + specimen_monitoring_initial_radius: + type: np.float64 + unit: nanometer + description: | + Ideally measured or best elaborated guess of the initial radius of the specimen. + m_annotations: + eln: + component: NumberEditQuantity + defaultDisplayUnit: nanometer + minValue: 1.0 + maxValue: 1000.0 + specimen_monitoring_shank_angle: + type: np.float64 + unit: degree + descriptions: | + Ideally measured or best elaborated guess of the shank angle. + This is a measure of the specimen taper. + m_annotations: + eln: + component: NumberEditQuantity + defaultDisplayUnit: degree + minValue: 0.0 + maxValue: 90.0 + specimen_monitoring_detection_rate: + type: np.float64 + descriptions: | + Average detection rate over the course of the experiment. + m_annotations: + eln: + component: NumberEditQuantity + minValue: 0.0 + maxValue: 1.0 + control_software_program: + type: str + description: | + Name of the control software of the microscope + used during acquisition (e.g. IVAS/APSuite). + m_annotations: + eln: + component: StringEditQuantity + control_software_program__attr_version: + type: str + description: Version plus build number, commit hash, or description of the program to support reproducibility. + m_annotations: + eln: + component: StringEditQuantity + sub_sections: + pulser: + section: + description: Details about the pulsing device and method + m_annotations: + eln: + quantities: + pulse_mode: + type: + type_kind: Enum + type_data: + - laser + - high_voltage + - laser_and_high_voltage + description: | + Which pulsing mode was used? + m_annotations: + eln: + component: RadioEnumEditQuantity + pulse_frequency: + type: np.float64 + unit: kilohertz + description: Pulse frequency + m_annotations: + eln: + component: NumberEditQuantity + defaultDisplayUnit: kilohertz + minValue: 0.0 + maxValue: 10000.0 + pulse_fraction: + type: np.float64 + description: Pulse fraction + m_annotations: + eln: + component: NumberEditQuantity + minValue: 0.0 + maxValue: 1.0 + laser_gun_name: + type: str + description: Given name/alias. + m_annotations: + eln: + component: StringEditQuantity + laser_gun_wavelength: + type: np.float64 + unit: meter + description: Nominal wavelength of the laser radiation. + m_annotations: + eln: + component: NumberEditQuantity + defaultDisplayUnit: nanometer + minValue: 0.0 + laser_gun_power: + type: np.float64 + unit: watt + description: | + Nominal power of the laser source while + illuminating the specimen. + m_annotations: + eln: + component: NumberEditQuantity + defaultDisplayUnit: nanowatt + minValue: 0.0 + laser_gun_pulse_energy: + type: np.float64 + unit: joule + description: Average energy of the laser at peak of each pulse. + m_annotations: + eln: + component: NumberEditQuantity + defaultDisplayUnit: picojoule + minValue: 0.0 + # control_software: + # section: + # description: Which control software was used e.g. IVAS/APSuite + # m_annotations: + # eln: + # quantities: + # program: + # type: str + # description: | + # Name of the program used to control the instrument during the measurement. + # Examples are IVAS or APSuite for Cameca/AMETEK local electrode atom probes. + # m_annotations: + # eln: + # component: StringEditQuantity + # program__attr_version: + # type: str + # description: | + # Version plus build number, commit hash, or description + # of the program to support reproducibility. + # m_annotations: + # eln: + # component: StringEditQuantity + # (NXstage_lab): + # (NXdata): + # (NXcoordinate_system_set): + # (NXmonitor): + reconstruction: + section: + description: Details about the reconstruction + m_annotations: + eln: + quantities: + program: + type: str + description: | + Name of the program used to perform the reconstruction with. + Examples are IVAS, APSuite, or names of open-source tools. + m_annotations: + eln: + component: StringEditQuantity + program__attr_version: + type: str + description: Version plus build number, commit hash, or description of the program to support reproducibility. + m_annotations: + eln: + component: StringEditQuantity + protocol_name: + type: + type_kind: Enum + type_data: + - bas + - geiser + - gault + - cameca + - other + description: | + Qualitative statement about which reconstruction protocol was used. + Bas maps currently to bas_modified. + Cameca maps currently to apsuite. + Add more details in the parameter text field, + e.g. reconstruction parameter. + m_annotations: + eln: + component: RadioEnumEditQuantity + parameter: + type: str + description: | + Different reconstruction protocols exist. Although these approaches + are qualitatively similar, each protocol uses different parameters + (and interprets these differently). The source code to IVAS/APSuite + is not open. For now users should store reconstruction parameter + in a collection, i.e. here with a free-text field. + m_annotations: + eln: + component: StringEditQuantity + crystallographic_calibration: + type: str + description: | + Different strategies for crystallographic calibration of the + reconstruction are possible. The field is required and details + should be specified in free-text at least. If the not crystallographic + calibration was performed the field should be filled with the n/a, + meaning not applied. + m_annotations: + eln: + component: StringEditQuantity + ranging: + section: + description: Details about the ranging definitions. + m_annotations: + eln: + quantities: + program: + type: str + description: | + Name of the program used to perform the ranging with. + Examples are IVAS, APSuite, or names of open-source tools. + m_annotations: + eln: + component: StringEditQuantity + program__attr_version: + type: str + description: Version plus build number, commit hash, or description of the program to support reproducibility. + m_annotations: + eln: + component: StringEditQuantity + # number_of_iontypes + # maximum_number_of_atoms_per_molecular_ion + # mass_to_charge_distribution + # background_quantification + # peak_search_and_deconvolution + # peak_identification taken over from program and program__attr_version diff --git a/examples/data/eln/schema.archive.yaml b/examples/data/eln/schema.archive.yaml index 36f145ba859ace251d75b8c16da61970b98ee02f..09514f70a578a7a09c165d461f91bbf4de3fed6d 100644 --- a/examples/data/eln/schema.archive.yaml +++ b/examples/data/eln/schema.archive.yaml @@ -206,7 +206,6 @@ definitions: m_annotations: eln: component: NumberEditQuantity # A component to enter numbers (with units) - minValue: 0 duration: type: np.float64 unit: s diff --git a/examples/data/em_spctrscpy/README.md b/examples/data/em_spctrscpy/README.md new file mode 100644 index 0000000000000000000000000000000000000000..699b1f5a07e730e9ac0a54183e88874848692b90 --- /dev/null +++ b/examples/data/em_spctrscpy/README.md @@ -0,0 +1,92 @@ +# An Electronic Lab Notebook (ELN) Example for Electron Microscopy (EM) + +## Introduction + +This example shows how the NOMAD ELN functionalities can be used to collect +required metadata for groups, fields, and attributes for creating a dataset +which is compliant with the NeXus NXem application definition. + +Specifically, this example shows how I/O functionalities of hyperspy can be used +to load data of spectroscopy experiments from three exemplar file formats, namely +Bruker BCF, Velox EMD, and DigitalMicrograph DM3 into NOMAD OASIS. The implementation +shows how instances of NeXus base classes like NXspectrum_set_em_xray, +NXspectrum_set_em_eels, and NXimage_set_em_adf can be created and registered inside +instances of NXevent_data_em. The example shows how all these base classes can be +composed and stored inside a NeXus/HDF5 file. + +This makes the example relevant for researchers who work within the fields of +scanning electron microscopy (SEM) EDS/EDX, transmission electron microscopy +(EDS/STEM), and electron energy loss spectroscopy (EELS). + +The NeXus NXem data model is documented here [NXem](https://fairmat-experimental.github.io/nexus-fairmat-proposal) + +This example also shows how the NOMAD OASIS ELN functionalities can be used +to supplement a NeXus file with metadata which are currently or usually not stored +in vendor or community files including details about the specimen, the instrument, +users, and post-processing steps. + +This example upload contains the following entries: +- A schema in NOMAD's *archive.yaml* format: *nxem.schema.archive.yaml* +- A schema instance file used by NOMAD *nxem.archive.json* which is filled for educational purpose with values for the example. +- The primary consumer of this json file is NOMAD and its internal data management system. +- Another schema instance file used by the nomad-parser-nexus *eln_data.yaml*. This file contains all entered +quantities from the ELN GUI (after the save button was stored). The example is also filled for educational purposes +with values matching those in nxem.archive.json. +Files are updated each time the save button in the ELN GUI is clicked. +The eln_data.yaml file is used by the [NOMAD-PARSER-NEXUS](https://github.com/nomad-coe/nomad-parser-nexus). + +This example is configured to take an example dataset and call the nomad-parser-nexus dataconverter +which creates a NeXus file compliant with NXem. Once completed, this file is available in the +upload section/staging area. This makes also these files explorable with H5Web visualization +through the files menu. + +This example comes with a measured datasets which are meant for testing and exploring. +The datasets include two examples kindly shared by Adrien Teurtrie and Cécile Hebert at EPFL +(Bruker BCF, Velox EMD), and a Digital Micrograph DM3 file with EELS data measured and kindly +shared by Hannah Nerl and Christoph Koch. + +## Creating NeXus files + +When you modify the ELN and click the save button, the data from the ELN will be +parsed and combined with the content from the vendor file to create the NXS file. +You can replace these files with your own and accordingly use the ELN to enter your +own metadata. Upon saving, a NeXus/HDF5 file in NXapm format will be created for your specific dataset. + +With this functionality, you can use this example as a template to translate your own +datasets into NeXus. The drag-and-drop functionality of the upload section can be +used to pass your vendor file onto the respective file upload fields of the ELN. +After clicking the save button, the newly entered metadata and files will be processed +on-the-fly and a new NeXus file, compliant with NXem will be generated. + +## Where to go from now + +With an example in your upload **you can explore** the content in H5Web. +Furthermore, you can work with the data by starting for instance +a generic jupyterlab container via the **Analytics tab in the** NOMAD OASIS +menu bar. This container is a part of the Nomad Remote Tools Hub (NORTH) service. + +**Once running, the container offers a jupyter-lab server and notebook.** + +## Summary + +The example is meant as a starting point. You can download the schema file and extend the +schema to collect further metadata (e. g. for adding optional quantities defined in NXem) based +on what is relevant for your laboratory and use case. Also you can explore the implementation +of the example to customize it for your own needs. We would be happy if you could support us +with improving this example and the associated schemes by leaving us comments via the +nexus-fairmat-proposal pages or by contacting us via the various channels. +We are also very happy to guide you on how to customize these functionalities +for your own laboratory and needs. + +Consult our [documentation on the NOMAD Archive and Metainfo](https://nomad-lab.eu/prod/v1/docs/archive.html) +to learn more about schemes. + +## Questions, comments, suggestions? + +For general questions regarding the EM tools and if you're interested in building one for your +own research workflow or your colleagues and group you are very welcome to contact +[Markus Kühbach](https://www.fair-di.eu/fairmat/fairmat_/fairmatteam) from the FAIRmat consortium. + + +## Known bugs + diff --git a/examples/data/em_spctrscpy/downloads.archive.yaml b/examples/data/em_spctrscpy/downloads.archive.yaml new file mode 100644 index 0000000000000000000000000000000000000000..3b9a6bf5a20d73acdd1f078804bf1c64e12ce233 --- /dev/null +++ b/examples/data/em_spctrscpy/downloads.archive.yaml @@ -0,0 +1,8 @@ +data: + m_def: nomad.datamodel.metainfo.downloads.Downloads + mainfiles: + - em.archive.json + downloads: + - url: https://www.zenodo.org/record/7050774/files/em-spctrscpy-sprint9-example.zip?download=1 + output: em-spctrscpy-sprint9-example.zip + extract: true \ No newline at end of file diff --git a/examples/data/em_spctrscpy/eln_data.yaml b/examples/data/em_spctrscpy/eln_data.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e9683551f27a80fb5b69258890b4f77ba7e2887b --- /dev/null +++ b/examples/data/em_spctrscpy/eln_data.yaml @@ -0,0 +1,61 @@ +em_lab: + detector: + - type: EDS detector + ebeam_column: + aberration_correction: + applied: true + aperture_em: + - name: C1 + value: 4 + electron_gun: + emitter_type: cold_cathode_field_emitter + voltage: + unit: V + value: 200000 + fabrication: + capabilities: '---' + identifier: talos + model: TALOS + vendor: FEI + instrument_name: TALOS + location: fEPFL + optical_system_em: + beam_current: + unit: A + value: 1.2e-11 + beam_current_description: estimated + magnification: 610000 + semi_convergence_angle: + unit: rad + value: 0.2 + stage_lab: + description: double tilt + name: nothing +entry: + attr_version: nexus-fairmat-proposal successor of 50433d9039b3f33299bab338998acb5335cd8951 + definition: NXem + end_time: '2022-09-21T19:16:00+00:00' + experiment_description: 1613_si + experiment_identifier: 1613_si + program: Velox + program__attr_version: v6.8 + start_time: '2022-09-20T19:16:00+00:00' +sample: + atom_types: + - Al + - Nd + - O + description: test + method: experiment + name: 1613_Si + preparation_date: '2022-09-15T19:15:00+00:00' + sample_history: unknown + short_title: '1613' + thickness: + unit: m + value: 2.0e-08 +user: +- name: MarkusK + orcid: '0000' +- email: '----' + name: MarkusS diff --git a/examples/data/em_spctrscpy/em.archive.json b/examples/data/em_spctrscpy/em.archive.json new file mode 100644 index 0000000000000000000000000000000000000000..960d9d3a91e14189e9264ee312778fe432d52167 --- /dev/null +++ b/examples/data/em_spctrscpy/em.archive.json @@ -0,0 +1,87 @@ +{ + "data": { + "m_def": "../upload/raw/nxem.schema.archive.yaml#/definitions/section_definitions/0", + "reader": "em_spctrscpy", + "nxdl": "NXem.nxdl", + "input_files": [ + "eln_data.yaml", + "EELS_map_2_ROI_1_location_4.dm3" + ], + "output": "output.nxs", + "entry": { + "attr_version": "nexus-fairmat-proposal successor of 50433d9039b3f33299bab338998acb5335cd8951", + "definition": "NXem", + "experiment_identifier": "1613_si", + "experiment_description": "1613_si", + "start_time": "2022-09-20T19:16:00+00:00", + "end_time": "2022-09-21T19:16:00+00:00", + "program": "Velox", + "program__attr_version": "v6.8" + }, + "user": [ + { + "name": "MarkusK", + "orcid": "0000" + }, + { + "name": "MarkusS", + "email": "----" + } + ], + "sample": { + "method": "experiment", + "name": "1613_Si", + "sample_history": "unknown", + "preparation_date": "2022-09-15T19:15:00+00:00", + "short_title": "1613", + "atom_types": [ + "Al", + "Nd", + "O" + ], + "description": "test", + "thickness": 2e-8 + }, + "em_lab": { + "instrument_name": "TALOS", + "location": "fEPFL", + "fabrication": { + "vendor": "FEI", + "model": "TALOS", + "identifier": "talos", + "capabilities": "---" + }, + "ebeam_column": { + "electron_gun": { + "voltage": 200000, + "emitter_type": "cold_cathode_field_emitter" + }, + "aperture_em": [ + { + "name": "C1", + "value": 4 + } + ], + "aberration_correction": { + "applied": true + } + }, + "optical_system_em": { + "magnification": 610000, + "semi_convergence_angle": 0.2, + "beam_current": 1.2e-11, + "beam_current_description": "estimated" + }, + "detector": [ + { + "type": "EDS detector" + } + ], + "stage_lab": { + "name": "nothing", + "description": "double tilt" + } + } + }, + "m_ref_archives": {} +} \ No newline at end of file diff --git a/examples/data/em_spctrscpy/nxem.schema.archive.yaml b/examples/data/em_spctrscpy/nxem.schema.archive.yaml new file mode 100644 index 0000000000000000000000000000000000000000..199d47a3b73241fd778bee2c97564e471a617997 --- /dev/null +++ b/examples/data/em_spctrscpy/nxem.schema.archive.yaml @@ -0,0 +1,508 @@ +# group, field, and attribute names match to NXem, for further details +# what each field should contain consult the respective docstring of the +# quantity in NXem +definitions: + name: 'em' + # 'ELN/application definition schema for electron microscopy (EM) experiments.' + sections: # section definitions what were back in the old days msection base classes + # Operator: + # Specimen: + ElectronMicroscopy: # the actual schema + # nomad.datamodel.metainfo.eln.NexusParser + base_sections: + - 'nomad.datamodel.metainfo.eln.NexusDataConverter' + - 'nomad.datamodel.data.EntryData' + # base_section: nomad.datamodel.data.EntryData + m_annotations: + # Here you can set your default values for the reader and nxdl. + template: + reader: em_spctrscpy + nxdl: NXem.nxdl + # Listing quantities in the hide component will not show them in the ELN. + # This would be useful to make the default values set in `template` fixed. + # Leave the hide key even if you want to pass an empty list like in this example. + eln: + # hide: ['nxdl', 'reader'] + hide: [] + sub_sections: + entry: + section: + description: | + Generic details about an experiment. + m_annotations: + eln: + overview: true + quantities: + attr_version: + type: + type_kind: Enum + type_data: + - 'nexus-fairmat-proposal successor of 50433d9039b3f33299bab338998acb5335cd8951' + description: Hashvalue of the NeXus application definition file + m_annotations: + eln: + component: RadioEnumEditQuantity + definition: + type: + type_kind: Enum + type_data: + - NXem + description: NeXus NXDL schema to which this file conforms + m_annotations: + eln: + component: RadioEnumEditQuantity + experiment_identifier: + type: str + description: GUID of the experiment + m_annotations: + eln: + component: StringEditQuantity + experiment_description: + type: str + description: Free text details about the experiment + m_annotations: + eln: + component: StringEditQuantity + start_time: + type: Datetime + description: | + ISO 8601 time code with local time zone offset to UTC + when the microscope session started. + m_annotations: + eln: + component: DateTimeEditQuantity + end_time: + type: Datetime + description: | + ISO 8601 time code with local time zone offset to UTC + when the microscope session ended. + m_annotations: + eln: + component: DateTimeEditQuantity + program: + type: str + description: Name of the program used to create this file. + m_annotations: + eln: + component: StringEditQuantity + program__attr_version: + type: str + description: Version plus build number, commit hash, or description of the program to support reproducibility. + m_annotations: + eln: + component: StringEditQuantity + # experiment_documentation(NXnote): + # thumbnail(NXnote): + # attr_type: + # inputfile: + # type: str + # description: not used + # m_annotations: + # eln: + # component: FileEditQuantity + user: + repeats: true + section: + description: | + Contact information and eventually details of at least one person + involved in the taking of the microscope session. + m_annotations: + eln: + quantities: + name: + type: str + description: Given (first) name and surname. + m_annotations: + eln: + component: StringEditQuantity + email: + type: str + description: Email address of the user at the point in time when the experiment was performed. + m_annotations: + eln: + component: StringEditQuantity + affiliation: + type: str + description: Name of the affiliation of the user at the point in time when the experiment was performed. + m_annotations: + eln: + component: StringEditQuantity + address: + type: str + description: Postal address of the affiliation. + m_annotations: + eln: + component: StringEditQuantity + orcid: + type: str + description: Globally unique identifier of the user as offered by services like OrcID or ResearcherID. + m_annotations: + eln: + component: StringEditQuantity + orcid_platform: + type: str + description: Name of the OrcID or ResearcherID where the account under orcid is registered. + m_annotations: + eln: + component: StringEditQuantity + telephone_number: + type: str + description: (Business) (tele)phone number of the user at the point in time when the experiment was performed. + m_annotations: + eln: + component: StringEditQuantity + role: + type: str + description: Which role does the user have in the place and at the point in time when the experiment was performed? Technician operating the microscope. Student, postdoc, principle investigator, guest are common examples. + m_annotations: + eln: + component: StringEditQuantity + social_media_name: + type: str + description: Account name that is associated with the user in social media platforms. + m_annotations: + eln: + component: StringEditQuantity + social_media_platform: + type: str + description: Name of the social media platform where the account under social_media_name is registered. + m_annotations: + eln: + component: StringEditQuantity + sample: + section: + description: | + Details about the sample and its immediate environment. + m_annotations: + eln: + quantities: + method: + type: + type_kind: Enum + type_data: + - experiment + - simulation + m_annotations: + eln: + component: RadioEnumEditQuantity + name: + type: str + description: | + GUID which distinguishes the specimen from all others and especially + the predecessor/origin from where the specimen was cut. + In cases where the specimen was e.g. site-specifically cut from + samples or in cases of an instrument session during which multiple + specimens are loaded, the name has to be descriptive enough to + resolve which specimen was taken. This field must not be used for an + alias of the specimen. Instead, use short_title. + + In cases where multiple specimens have been loaded into the microscope + the name has to identify the specific one, whose results are stored + by this NXentry, because a single NXentry should be used only for + the characterization of a single specimen. + Details about the specimen preparation should be stored in the + sample history. + m_annotations: + eln: + component: StringEditQuantity + sample_history: + type: str + description: | + Reference to the location of or a GUID providing as many details + as possible of the material, its microstructure, and its + thermo-chemo-mechanical processing/preparation history. + m_annotations: + eln: + component: StringEditQuantity + preparation_date: + type: Datetime + description: | + ISO 8601 time code with local time zone offset to UTC information when + the measured specimen surface was last actively prepared before + loading the sample into the microscope. + m_annotations: + eln: + component: DateTimeEditQuantity + short_title: + type: str + description: Possibility to give an abbreviation or alias of the specimen name field. + m_annotations: + eln: + component: StringEditQuantity + # atom_types should be a list of strings + atom_types: + type: str + shape: ['*'] + description: | + Use Hill's system for listing elements of the periodic table which + are inside or attached to the surface of the specimen and thus + relevant from a scientific point of view. + m_annotations: + eln: + component: StringEditQuantity + description: + type: str + description: | + Discouraged free text field to be used in the case when properly + designed records for the sample_history are not available. + m_annotations: + eln: + component: StringEditQuantity + thickness: + type: np.float64 + unit: meter + description: | + (Measured) sample thickness. The information is recorded to qualify + if the beam used was likely able to shine through the specimen. + m_annotations: + eln: + component: NumberEditQuantity + defaultDisplayUnit: nanometer + minValue: 0.0 + # density: + # type: np.float64 + # unit: g/cm^3 # how to do? + # description: | + # (Measured) density of the specimen. For multi-layered specimens + # this field should only be used to describe the density of the excited volume. + # For scanning electron microscopy the usage of this field is discouraged + # and instead an instance of an NXinteraction_volume_em for individual + # NXevent_data_em instances can provide a much better description of + # the relevant details why one would otherwise ask to store the + # density of the specimen. + # m_annotations: + # eln: + # component: NumberEditQuantity + # defaultDisplayUnit: g/cm^3 + # minValue: 0.0 + em_lab: + section: + description: | + Metadata of the microscope and the lab in which it stands. + m_annotations: + eln: + quantities: + instrument_name: + type: str + description: Given name of the atom probe at the hosting institution. + m_annotations: + eln: + component: StringEditQuantity + location: + type: str + description: Location of the lab or place where the instrument is installed. Using GEOREF is preferred. + m_annotations: + eln: + component: StringEditQuantity + sub_sections: + fabrication: + section: + description: Details about the microscope fabrication. + m_annotations: + eln: + quantities: + # sub_sections: + vendor: + type: str + description: Company name of the manufacturer. + m_annotations: + eln: + component: StringEditQuantity + model: + type: str + description: Version or model of the component named by the manufacturer. + m_annotations: + eln: + component: StringEditQuantity + identifier: + type: str + description: Ideally, (globally) unique persistent identifier, i.e. a serial number or hash identifier of the component. + m_annotations: + eln: + component: StringEditQuantity + capabilities: + type: str + description: Free-text list with eventually multiple terms of functionalities which the component offers. + m_annotations: + eln: + component: StringEditQuantity + ebeam_column: + section: + description: Components to form a controlled electron beam + m_annotations: + eln: + # quantities: + sub_sections: + electron_gun: + section: + description: The source which creates the electron beam + m_annotations: + eln: + quantities: + name: + type: str + description: Given name/alias + m_annotations: + eln: + component: StringEditQuantity + voltage: + type: np.float64 + description: | + Voltage relevant to compute the energy of the + electrons immediately after they left the gun. + unit: volt + m_annotations: + eln: + component: NumberEditQuantity + defaultDisplayUnit: kilovolt + minValue: 0.0 + maxValue: 1.1e6 + emitter_type: + type: + type_kind: Enum + type_data: + - filament + - schottky + - cold_cathode_field_emitter + - other + description: | + Emitter type used to create the beam. + m_annotations: + eln: + component: RadioEnumEditQuantity + # emitter_material: + # type: str + # description: Material of which the emitter is build, e.g. the filament material. + # m_annotations: + # eln: + # component: StringEditQuantity + aperture_em: + repeats: true + section: + description: Used apertures. + m_annotations: + eln: + quantities: + name: + type: str + description: Given name/alias of the aperture. + m_annotations: + eln: + component: StringEditQuantity + value: + type: np.float64 + description: Relevant value from the control software. + m_annotations: + eln: + component: NumberEditQuantity + # NXlens_em + aberration_correction: + section: + description: Aberration corrector details. + m_annotations: + eln: + quantities: + applied: + type: bool + description: Was the corrector used? + m_annotations: + eln: + component: BoolEditQuantity + # ibeam_column: + # ebeam_deflector: + # ibeam_deflector: + # stage_lab: + optical_system_em: + section: + description: Qualifying the electron optical system + m_annotations: + eln: + quantities: + camera_length: + type: np.float64 + unit: meter + m_annotations: + eln: + component: NumberEditQuantity + defaultDisplayUnit: m + minValue: 0.0 + magnification: + type: np.float64 + m_annotations: + eln: + component: NumberEditQuantity + minValue: 1.0 + defocus: + type: np.float64 + unit: meter + m_annotations: + eln: + component: NumberEditQuantity + defaultDisplayUnit: nm + semi_convergence_angle: + type: np.float64 + unit: radian + m_annotations: + eln: + component: NumberEditQuantity + defaultDisplayUnit: radian + # field_of_view: + # type: np.float64 + # unit: meter + # m_annotations: + # eln: + # component: NumberEditQuantity + # defaultDisplayUnit: nm + working_distance: + type: np.float64 + unit: meter + m_annotations: + eln: + component: NumberEditQuantity + defaultDisplayUnit: mm + beam_current: + type: np.float64 + unit: ampere + m_annotations: + eln: + component: NumberEditQuantity + defaultDisplayUnit: picoampere + minValue: 0.0 + beam_current_description: + type: str + m_annotations: + eln: + component: StringEditQuantity + detector: + repeats: true + section: + description: | + Description of the type of detector. + m_annotations: + eln: + quantities: + type: + type: str + description: Free text option to write further details about the detector. + m_annotations: + eln: + component: StringEditQuantity + # (NXpump) + stage_lab: + section: + description: A stage lab which can hold, align, orient, and prepare a specimen. + m_annotations: + eln: + quantities: + name: + type: str + description: Given name/alias for the stage. + m_annotations: + eln: + component: StringEditQuantity + description: + type: str + description: Ideally, a (globally) unique persistent identifier, link, or text to a resource which gives further details. + m_annotations: + eln: + component: StringEditQuantity diff --git a/examples/data/iv_temp/IV_temp.archive.json b/examples/data/iv_temp/IV_temp.archive.json new file mode 100644 index 0000000000000000000000000000000000000000..d284bbbfa10583411aaaa08a5b367b20c498bb12 --- /dev/null +++ b/examples/data/iv_temp/IV_temp.archive.json @@ -0,0 +1,13 @@ +{ + "data": { + "m_def": "../upload/raw/IV_temp.schema.archive.yaml#/definitions/section_definitions/0", + "reader": "json_map", + "nxdl": "NXiv_temp.nxdl", + "input_files": [ + "IV_temp.mapping.json", + "IV_temp.h5" + ], + "output": "IV_temp.nxs" + }, + "m_ref_archives": {} +} \ No newline at end of file diff --git a/examples/data/iv_temp/IV_temp.h5 b/examples/data/iv_temp/IV_temp.h5 new file mode 100644 index 0000000000000000000000000000000000000000..2df3fa5bae3e4810608f612e2d0f35a8457d3216 Binary files /dev/null and b/examples/data/iv_temp/IV_temp.h5 differ diff --git a/examples/data/iv_temp/IV_temp.ipynb b/examples/data/iv_temp/IV_temp.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..56d4aaa97dabbf3445719e63de22947dd683a2f0 --- /dev/null +++ b/examples/data/iv_temp/IV_temp.ipynb @@ -0,0 +1,196 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "b3a07ad5", + "metadata": {}, + "source": [ + "## Install missing packages" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "65a32250-cfcb-4179-bfaa-1a9e3a08fc16", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Collecting lmfit\n", + " Downloading lmfit-1.0.3.tar.gz (292 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m292.5/292.5 KB\u001b[0m \u001b[31m3.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n", + "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25ldone\n", + "\u001b[?25hCollecting asteval>=0.9.22\n", + " Downloading asteval-0.9.27-py3-none-any.whl (17 kB)\n", + "Requirement already satisfied: numpy>=1.18 in /opt/conda/lib/python3.9/site-packages (from lmfit) (1.21.5)\n", + "Requirement already satisfied: scipy>=1.4 in /opt/conda/lib/python3.9/site-packages (from lmfit) (1.8.0)\n", + "Collecting uncertainties>=3.0.1\n", + " Downloading uncertainties-3.1.7-py2.py3-none-any.whl (98 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m98.4/98.4 KB\u001b[0m \u001b[31m11.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", + "\u001b[?25hCollecting future\n", + " Downloading future-0.18.2.tar.gz (829 kB)\n", + "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m829.2/829.2 KB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n", + "\u001b[?25h Preparing metadata (setup.py) ... \u001b[?25ldone\n", + "\u001b[?25hBuilding wheels for collected packages: lmfit, future\n", + " Building wheel for lmfit (setup.py) ... \u001b[?25ldone\n", + "\u001b[?25h Created wheel for lmfit: filename=lmfit-1.0.3-py3-none-any.whl size=84413 sha256=b9a9a8f2e589b50b5dc95f5f379c7f08cafc9d6e303a478f25be88e9cd2a5562\n", + " Stored in directory: /home/jovyan/.cache/pip/wheels/76/f4/32/c336957bfd694c7746f4df19b74e08d918ada688fe1349cca2\n", + " Building wheel for future (setup.py) ... \u001b[?25ldone\n", + "\u001b[?25h Created wheel for future: filename=future-0.18.2-py3-none-any.whl size=491070 sha256=319fae78dac9c677828bfca92d897fe1f74448d40f8758e739c3dc9331030a6c\n", + " Stored in directory: /home/jovyan/.cache/pip/wheels/2f/a0/d3/4030d9f80e6b3be787f19fc911b8e7aa462986a40ab1e4bb94\n", + "Successfully built lmfit future\n", + "Installing collected packages: future, asteval, uncertainties, lmfit\n", + "Successfully installed asteval-0.9.27 future-0.18.2 lmfit-1.0.3 uncertainties-3.1.7\n", + "Note: you may need to restart the kernel to use updated packages.\n" + ] + } + ], + "source": [ + "pip install lmfit" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "146542b7", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import h5py\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import lmfit" + ] + }, + { + "cell_type": "markdown", + "id": "c5bc22d2", + "metadata": {}, + "source": [ + "## Read Nexus file" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "c2032ddb-397a-4f9c-a27c-be63cd94cf16", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n" + ] + } + ], + "source": [ + "file = h5py.File(os.getcwd() + \"/IV_temp.nxs\")\n", + "temperatures = file['/entry/data/temperature']\n", + "voltages = file['/entry/data/voltage']\n", + "currents = file['/entry/data/current']\n", + "voltages = np.array(voltages).flatten()" + ] + }, + { + "cell_type": "markdown", + "id": "2660d39d", + "metadata": {}, + "source": [ + "## Run a simple fitting and calculate the resistance" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "9c3e4f07-0aeb-483c-a571-c3361f11003c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "stdColors = plt.rcParams['axes.prop_cycle'].by_key()['color']\n", + "fitmodel = lmfit.models.LinearModel()\n", + "\n", + "resistances = []\n", + "plt.figure()\n", + "for i,temperature in enumerate(temperatures):\n", + " plt.plot(voltages, currents[i*len(voltages):(i+1)*len(voltages)], 'x', label=f'T = {temperature} K', color=stdColors[i])\n", + " result = fitmodel.fit(currents[i*len(voltages):(i+1)*len(voltages)], x=voltages)\n", + " plt.plot(voltages, result.best_fit, color=stdColors[i])\n", + " \n", + " resistances.append(result.params['slope'].value)\n", + " \n", + "plt.legend()\n", + "plt.xlabel('voltage (V)')\n", + "plt.ylabel('current (A)')\n", + "\n", + "plt.figure()\n", + "plt.plot(np.array(temperatures), resistances, 'x')\n", + "plt.xlabel('temperature (K)')\n", + "plt.ylabel('resistance ($\\Omega$)')\n", + "plt.tight_layout()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2e27215b-b860-4e7e-8133-3398e72d462c", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.7" + }, + "vscode": { + "interpreter": { + "hash": "87f5da4a2ff473bca99f340815244c4c037408ffc7defb627265e8f3f8a2a06e" + } + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/examples/data/iv_temp/IV_temp.mapping.json b/examples/data/iv_temp/IV_temp.mapping.json new file mode 100644 index 0000000000000000000000000000000000000000..4fcbb1e343e5330400d7a024b949f2721de98edc --- /dev/null +++ b/examples/data/iv_temp/IV_temp.mapping.json @@ -0,0 +1,39 @@ +{ + "/@default": "entry", + "/ENTRY[entry]/@default": "data", + "/ENTRY[entry]/DATA[data]/current": {"link":"/entry/instrument/environment/current_sensor/value"}, + "/ENTRY[entry]/DATA[data]/current_295C": {"link":"/entry/instrument/environment/current_sensor/value", "shape":"0:11"}, + "/ENTRY[entry]/DATA[data]/current_300C": {"link":"/entry/instrument/environment/current_sensor/value", "shape":"11:22"}, + "/ENTRY[entry]/DATA[data]/current_305C": {"link":"/entry/instrument/environment/current_sensor/value", "shape":"22:33"}, + "/ENTRY[entry]/DATA[data]/current_310C": {"link":"/entry/instrument/environment/current_sensor/value", "shape":"33:44"}, + "/ENTRY[entry]/DATA[data]/temperature": {"link":"/entry/instrument/environment/temperature_controller/value", "shape":"::11"}, + "/ENTRY[entry]/DATA[data]/voltage": {"link":"/entry/instrument/environment/voltage_controller/value", "shape":"0:11"}, + "/ENTRY[entry]/DATA[data]/@axes": ["voltage"], + "/ENTRY[entry]/DATA[data]/@signal": "current_295C", + "/ENTRY[entry]/DATA[data]/@auxiliary_signals": ["current_300C", "current_305C", "current_310C"], + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/current_sensor/value": "/2022-11-17T15:07:57.131502+01:00/Simple_Sweep/SMU_mesI1", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/current_sensor/model": "/2022-11-17T15:07:57.131502+01:00/devices/SMU/SMU_idn", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/current_sensor/name": "/2022-11-17T15:07:57.131502+01:00/devices/SMU/device_class_name", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/current_sensor/short_name": "SMU", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/current_sensor/attached_to": "sample", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/current_sensor/run_control": false, + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/temperature_controller/value": "/2022-11-17T15:07:57.131502+01:00/Simple_Sweep/PID_current_value", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/temperature_controller/model": "/2022-11-17T15:07:57.131502+01:00/devices/DMM/DMM_idn", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/temperature_controller/name": "/2022-11-17T15:07:57.131502+01:00/devices/DMM/device_class_name", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/temperature_controller/short_name": "DMM", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/temperature_controller/attached_to": "Pt1000", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/temperature_controller/run_control": false, + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/temperature_controller/type": "Pt1000", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/voltage_controller/value": "/2022-11-17T15:07:57.131502+01:00/Simple_Sweep/SMU_mesV1", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/voltage_controller/name": "/2022-11-17T15:07:57.131502+01:00/devices/SMU/device_class_name", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/voltage_controller/model": "/2022-11-17T15:07:57.131502+01:00/devices/SMU/SMU_idn", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/voltage_controller/short_name": "SMU", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/voltage_controller/attached_to": "sample", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/voltage_controller/run_control": true, + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/voltage_controller/high_trip_value": 0.1, + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/voltage_controller/lower_trip_value": -0.1, + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/PID[pid]/K_p_value": "/2022-11-17T15:07:57.131502+01:00/devices/PID/PID_kp", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/PID[pid]/K_i_value": "/2022-11-17T15:07:57.131502+01:00/devices/PID/PID_ki", + "/ENTRY[entry]/INSTRUMENT[instrument]/ENVIRONMENT[environment]/PID[pid]/K_d_value": "/2022-11-17T15:07:57.131502+01:00/devices/PID/PID_kd", + "/ENTRY[entry]/definition": "NXiv_temp" +} \ No newline at end of file diff --git a/examples/data/iv_temp/IV_temp.pickle b/examples/data/iv_temp/IV_temp.pickle new file mode 100644 index 0000000000000000000000000000000000000000..2202b023aade6d5ac50ed4bba7f2ed5de43b5788 Binary files /dev/null and b/examples/data/iv_temp/IV_temp.pickle differ diff --git a/examples/data/iv_temp/IV_temp.schema.archive.yaml b/examples/data/iv_temp/IV_temp.schema.archive.yaml new file mode 100644 index 0000000000000000000000000000000000000000..cecab87604f7e4b8c0d729d1027043f9aeb491e3 --- /dev/null +++ b/examples/data/iv_temp/IV_temp.schema.archive.yaml @@ -0,0 +1,18 @@ +definitions: + name: "IV Temp ELN Example" + sections: + IV_TEMP: + base_sections: + - "nomad.datamodel.metainfo.eln.NexusDataConverter" + - "nomad.datamodel.data.EntryData" + m_annotations: + template: + reader: json_map + nxdl: NXiv_temp.nxdl + input_files": [ + "IV_temp.mapping.json", + "IV_temp.pickle" + ] + output: IV_temp.nxs + eln: + hide: [] diff --git a/examples/data/iv_temp/README.md b/examples/data/iv_temp/README.md new file mode 100644 index 0000000000000000000000000000000000000000..5c37f05e76b0325ca5ed941290a74d72536800bb --- /dev/null +++ b/examples/data/iv_temp/README.md @@ -0,0 +1,30 @@ + + +# Introduction + +This is an example of a PID controlled sensor sweep scan. The temperature is set using a PID controller. Then for the set temperature a voltage sweep is performed. For each of the voltages, the current is measured. This is repeated for a given list of temperatures. + +This specific data was capured using a Bluesky controlled system. This was then saved into a binary file using Pickle. This example shows how such a dataset could be converted using the JSONMapReader of the NexusParser. +The data is mapped on to a Nexus application definition for IV Temperature measurements, [NXiv_temp](https://fairmat-experimental.github.io/nexus-fairmat-proposal/50433d9039b3f33299bab338998acb5335cd8951/classes/contributed_definitions/NXiv_temp.html#nxiv-temp). + +# Viewing uploaded data + +Below, you find an overview of your uploaded data. +Click on the `> /` button to get a list of your data or select **FILES** from the top menu of this upload. +You may add your own files to the upload or experiment with the pre-existing electronic lab book example. +The ELN follows the general structure of NOMAD ELN templates and you may refer to the [documentation](https://nomad-lab.eu/prod/v1/staging/docs/archive.html) or a [YouTube tutorial](https://youtu.be/o5ETHmGmnaI) (~1h) +for further information. +When the ELN is saved a NeXus file will be generated from the provided example data. +You may also view your supplied or generated NeXus files here with the H5Web viewer. +To do so open the **FILES** tab and just select a `.nxs` file. + +# Using a Jupyter Notebook + +This example comes with a very simple Jupyter Notebook that shows how one could easily get access to a Python environment with access to all your data in one place. +To give this a go, click the **FILES** tab and select `iv_temp.ipynb`. Feel free to modify this or just create a new one to try! + +# Where to go from here? + +If you're interested in using this pipeline and NOMAD in general you'll find support at [FAIRmat](https://www.fairmat-nfdi.eu/fairmat/consortium). + +If you have any questions about this example you may contact [Sherjeel Shabih](https://www.fairmat-nfdi.eu/fairmat/fairmat_/fairmatteam) from the FAIRmat consortium. diff --git a/examples/data/theory/README.md b/examples/data/theory/README.md new file mode 100644 index 0000000000000000000000000000000000000000..8df5263fdb7234953e0b694c917269f83bc9ab87 --- /dev/null +++ b/examples/data/theory/README.md @@ -0,0 +1,4 @@ +This upload demonstrate the basic use of NOMAD's *parsers*. For many *electronic +structure codes* (VASP, etc.), NOMAD provides parsers. You simply upload +the *input and output files* of your simulations and NOMAD parsers are extracting +all necessary metadata to produce a **FAIR** dataset. \ No newline at end of file diff --git a/examples/data/theory/downloads.archive.yaml b/examples/data/theory/downloads.archive.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e434e5e2d0ca2994b285e37176c04bc703b7d31a --- /dev/null +++ b/examples/data/theory/downloads.archive.yaml @@ -0,0 +1,15 @@ +data: + m_def: nomad.datamodel.metainfo.downloads.Downloads + mainfiles: + - Cu2Se/1/aims.out + - ZnSe/2/ZnSe_ZB.scf + - ZnSe/4/vasprun.xml.relax1 + - Cu2Se/2/aims.out + - ZnSe/3/output_in_0.01 + - ZnSe/1/run.abo + - Sn2Se/2/vasprun.xml.relax1.gz + - Sn2Se/1/INFO_GS.OUT + downloads: + - url: https://www.dropbox.com/s/8zd7aqe91lza2r4/theory-example-upload.zip?dl=1 + output: theory-example-upload.zip + extract: true \ No newline at end of file diff --git a/examples/data/theory/nomad.json b/examples/data/theory/nomad.json new file mode 100644 index 0000000000000000000000000000000000000000..244e356bf2f8dabd85ace3541d817fa2a5aaf0a0 --- /dev/null +++ b/examples/data/theory/nomad.json @@ -0,0 +1,52 @@ +{ + "entries": { + "Cu2Se/1/aims.out": { + "comment": "This example was originally published by Thomas Purcell, Christian Carbogno.", + "references": [ + "https://nomad-lab.eu/prod/v1/gui/entry/id/4xjU-M2pT4yAaFpKIT0ZPg/Su0iFxLi39s5My8iH5gKV_oygsty" + ] + }, + "Cu2Se/2/aims.out": { + "comment": "This example was originally published by Gabrielle Koknat.", + "references": [ + "https://nomad-lab.eu/prod/v1/gui/entry/id/ZUs-GhnEQHKvQ1U3doV-gg/FPTMxaNEzVZdayO9gBJW_WmHVg6-" + ] + }, + "Sn2Se/1/INFO_GS.OUT": { + "comment": "This example was originally published by Maria Troppenz, Claudia Draxl et al.", + "references": [ + "https://nomad-lab.eu/prod/v1/gui/entry/id/yzxGZlGmTUCgmpteBtwZcQ/ybBAoOcSe1s-WbzDhmzQsV9ed_zr" + ] + }, + "Sn2Se/2/vasprun.xml.relax1.gz": { + "comment": "This example was originally provided by the Materials Project.", + "references": [ + "https://nomad-lab.eu/prod/v1/gui/entry/id/Ua1Y1CwLRIiHm8bxSFXtzQ/q7bL6-zZp3kLMZm5qIsaKfp3X4ui" + ] + }, + "ZnSe/1/run.abo": { + "comment": "This example was originally published by Guido Petretto.", + "references": [ + "https://nomad-lab.eu/prod/v1/gui/search/entries/entry/id/Nobo2gnHQBif8DEEjlc6vQ/u2QyVkLoKdmlBh3U52tL-4BNdc13" + ] + }, + "ZnSe/2/ZnSe_ZB.scf": { + "comment": "This example was originally published by William Huhn.", + "references": [ + "https://nomad-lab.eu/prod/v1/gui/entry/id/s-py5D2SS4WH0DuefMnhLQ/mTcx6b-rdggOYWuTEuIXDgrv-Zio" + ] + }, + "ZnSe/3/output_in_0.01": { + "comment": "This example was originally published by Honghui Shang.", + "references": [ + "https://nomad-lab.eu/prod/v1/gui/search/entries/entry/id/Nobo2gnHQBif8DEEjlc6vQ/q8_Y3WclA0FXWlgqQPZh0MEtzB1B" + ] + }, + "ZnSe/3/vasprun.xml.relax1": { + "comment": "This example was originally published by the AFLOW project.", + "references": [ + "https://nomad-lab.eu/prod/v1/gui/search/entries/entry/id/meXhMmSQRVaDHeGfvzRJ1w/qtrZAuzkNvvgqidLGmN14gObDsek" + ] + } + } +} \ No newline at end of file diff --git a/examples/data/uploads/example_uploads.yml b/examples/data/uploads/example_uploads.yml index 442df6d2e47039193d572fd85bc9ed1fa7a9e3f3..333c479dfcb349ea46044f6ceb538e3507439625 100644 --- a/examples/data/uploads/example_uploads.yml +++ b/examples/data/uploads/example_uploads.yml @@ -22,3 +22,61 @@ tables: file in combination with a custom schema. The schema describes what the columns in the excel file mean and NOMAD can parse everything accordingly to produce a **FAIR** dataset. +ellips: + path: examples/data/uploads/ellips.zip + title: Ellipsometry + description: | + This example presents the capabilities of the NOMAD platform to store and standardize ellipsometry data. + It shows the generation of a NeXus file according to the [NXellipsometry](https://manual.nexusformat.org/classes/contributed_definitions/NXellipsometry.html#nxellipsometry) + application definition and a successive analysis of a SiO2 on Si Psi/Delta measurement. +mpes: + path: examples/data/uploads/mpes.zip + title: Mpes + description: | + This example presents the capabilities of the NOMAD platform to store and standardize multi photoemission spectroscopy (MPES) experimental data. It contains three major examples: + + - Taking a pre-binned file, here stored in a h5 file, and converting it into the standardized MPES NeXus format. + There exists a [NeXus application definition for MPES](https://manual.nexusformat.org/classes/contributed_definitions/NXmpes.html#nxmpes) which details the internal structure of such a file. + - Binning of raw data (see [here](https://www.nature.com/articles/s41597-020-00769-8) for additional resources) into a h5 file and consecutively generating a NeXus file from it. + - An analysis example using data in the NeXus format and employing the [pyARPES](https://github.com/chstan/arpes) analysis tool to reproduce the main findings of [this paper](https://arxiv.org/pdf/2107.07158.pdf). +xps: + path: examples/data/uploads/xps.zip + title: XPS + description: | + This example presents the capabilities of the NOMAD platform to store and standardize XPS data. + It shows the generation of a NeXus file according to the + [NXmpes](https://manual.nexusformat.org/classes/contributed_definitions/NXmpes.html#nxmpes) + application definition and a successive analysis of an example data set. +apm: + path: examples/data/uploads/apm.zip + title: Electronic Lab Notebook for Atom Probe Microscopy (APM) + description: | + This is an example for atom probe microscopy. + The example contains a custom NOMAD *schema* to create an **Electronic + Lab Notebook (ELN)** with which users can enter metadata that are usually + not stored in vendor or community file formats. The example serves two + purposes. On the one hand it shows how custom NOMAD *schema* can be + created for a research community, here atom probe. On the other hand it + shows how all required data in a NeXus NXapm file can be added to supplement + content from vendor and community files. +em_spctrscpy: + path: examples/data/uploads/em_spctrscpy.zip + title: Electronic Lab Notebook for Electron Microscopy (EM) + description: | + This is an example for electron microscopy. + Specifically for spectroscopy methods in the SEM and TEM, exemplified + for energy-dispersive X-ray (EDXS/EDS) spectroscopy and + electron energy loss spectroscopy (EELS). + The example contains a custom NOMAD *schema* to create an **Electronic + Lab Notebook (ELN)** with which users can enter metadata that are usually + not stored in vendor or community file formats. The example serves two + purposes. On the one hand it shows how custom NOMAD *schema* can be + created for a research community, here electron microscopy. On the other hand + it shows how required data in a NeXus NXem file can be added to supplement + content from vendor and community files. +iv_temp: + path: examples/data/uploads/iv_temp.zip + title: Sensor Scan - IV Temperature Curve + description: | + This example shows users how to take data from a Python framework and map it out to a Nexus application definition for IV Temperature measurements, [NXiv_temp](https://fairmat-experimental.github.io/nexus-fairmat-proposal/1c3806dba40111f36a16d0205cc39a5b7d52ca2e/classes/contributed_definitions/NXiv_temp.html#nxiv-temp). + We use the Nexus ELN features of Nomad to generate a Nexus file. diff --git a/examples/docs/downloads.archive.yaml b/examples/docs/downloads.archive.yaml new file mode 100644 index 0000000000000000000000000000000000000000..5ab29bf3c93e94aa73cac84b664b2cc1cb311bd8 --- /dev/null +++ b/examples/docs/downloads.archive.yaml @@ -0,0 +1,8 @@ +data: + m_def: nomad.datamodel.metainfo.downloads.Downloads + mainfiles: + - downloads/ZnSe/4/vasprun.xml.relax1 + downloads: + - url: https://www.dropbox.com/s/8zd7aqe91lza2r4/theory-example-upload.zip?dl=1 + output: downloads/upload.zip + extract: true \ No newline at end of file diff --git a/gui/src/components/entry/properties/SectionCard.js b/gui/src/components/entry/properties/SectionCard.js index bdbe32b150328a82a7cef99eacd3e6b072f8068e..83d4ee958d225045cae93d1db1f48f5634273f13 100644 --- a/gui/src/components/entry/properties/SectionCard.js +++ b/gui/src/components/entry/properties/SectionCard.js @@ -29,6 +29,7 @@ import Quantity, {QuantityCell, QuantityRow, QuantityTable} from '../../Quantity import {Editor} from '@tinymce/tinymce-react' import { pluralize } from '../../../utils' import {Matrix} from '../../archive/visualizations' +import { isEditable } from '../../archive/metainfo' const useStyles = makeStyles(theme => ({ subSection: { @@ -197,7 +198,7 @@ const SectionCard = React.memo(({archivePath, sectionDef, section, readOnly, ... )} - {readOnly + {(readOnly || !isEditable(sectionDef)) ? ( `_ \n* `Chip-based designs `_ \n* `Further chip-based designs `_\n* `Stages in transmission electron microscopy `_ (page 103, table 4.2) \n* `Further stages in transmission electron microscopy `_ (page 124ff)\n* `Specimens in atom probe `_ (page 47ff)\n* `Exemplar micro-manipulators `_", - "links": [ - "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-stage-lab-group" - ], - "more": { - "nx_kind": "group", - "nx_category": "base", - "nx_name": "NXstage_lab", - "nx_type": "NXstage_lab", - "nx_optional": false, - "nx_extends": "NXobject" - }, - "base_sections": [ - "/packages/18/section_definitions/128" - ], - "quantities": [ + }, { "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 0, + "m_parent_index": 4, "m_parent_sub_section": "quantities", - "name": "base_temperature", - "description": "Average temperature at the specimen base, i.e. base temperature, during the\nmeasurement.", + "name": "standing_voltage__field", + "description": "Direct current voltage between the specimen and the\n(local electrode) in the case of local electrode atom\nprobe (LEAP) instrument.", "links": [ - "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-stage-lab-base-temperature-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-pulser-standing-voltage-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_FLOAT", - "nx_name": "base_temperature", - "nx_units": "NX_TEMPERATURE", - "nx_optional": false + "nx_name": "standing_voltage", + "nx_units": "NX_VOLTAGE", + "nx_optional": false, + "nx_recommended": "true" }, "type": { "type_kind": "numpy", "type_data": "float64" }, "shape": [], - "dimensionality": "[temperature]", + "dimensionality": "[energy] / [current] / [time]", "flexible_unit": true } - ] - }, - { - "m_def": "nomad.metainfo.metainfo.Section", - "m_parent_index": 12, - "m_parent_sub_section": "inner_section_definitions", - "name": "control_software", - "description": "The majority of atom probe microscopes come from a\nsingle commercial manufacturer `AMETEK (formerly Cameca) `_.\nTheir instruments are controlled via an(/a set) of integrated\ninstrument control system(s) (APSuite/IVAS/DAVis).\n\nBy contrast, instruments which were built by individual\nresearch groups such as of the French (GPM, Rouen, France),\nthe Schmitz (Inspico, Stuttgart, Germany),\nthe Felfer (Oxcart, Erlangen, Germany),\nthe Northwestern (D. Isheim, Seidman group et al.),\nor the PNNL group (Pacific Northwest National Laborary,\nPortland, Oregon, U.S.) have other solutions\nto control the instrument.\n\nSome of which are modularized and open,\nsome of which realize also integrated control units with\nportions of eventually undisclosed source code and\n(so far) lacking (support of)/open APIs.\n\nCurrently, there is no accepted/implemented\ncommunity-specific API for getting finely granularized\naccess to such control settings.\n\nThese considerations motivated the design of the NXapm\napplication definition in that it stores quantities in NXcollection.\ngroups to begin with. Holding heterogeneous, not yet standardized\nbut relevant pieces of information is the purpose of this collection.", - "links": [ - "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-control-software-group", - "https://www.atomprobe.com" - ], - "more": { - "nx_kind": "group", - "nx_category": "base", - "nx_name": "control_software", - "nx_type": "NXcollection", - "nx_optional": "true", - "nx_extends": "NXobject", - "nx_ignoreExtraGroups": "true", - "nx_ignoreExtraFields": "true", - "nx_ignoreExtraAttributes": "true" - }, - "base_sections": [ - "/packages/18/section_definitions/15" ], "sub_sections": [ { "m_def": "nomad.metainfo.metainfo.SubSection", "m_parent_index": 0, "m_parent_sub_section": "sub_sections", - "name": "analysis_chamber", + "name": "laser_gun", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/5/inner_section_definitions/0", + "repeats": false + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 1, + "m_parent_sub_section": "sub_sections", + "name": "laser_beam", "variable": false, "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/12/inner_section_definitions/0", + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/5/inner_section_definitions/1", "repeats": false } ], @@ -60949,123 +61892,406 @@ "m_def": "nomad.metainfo.metainfo.Section", "m_parent_index": 0, "m_parent_sub_section": "inner_section_definitions", - "name": "analysis_chamber", - "description": "Track time-dependent settings over the course of the measurement about the\nenvironment in the analysis chamber such as gas pressure values etc.", + "name": "laser_gun", + "description": "Atom probe microscopes use controlled laser, voltage,\nor a combination of pulsing strategies to trigger the\nexcitation and eventual field evaporation/emission of\nan ion during an experiment.\nIf pulse_mode is set to laser or laser_and_voltage (e.g. for\nLEAP6000-type instruments) having the group/section laser_gun\nis required and the following of its fields have to be filled:\n\n* name \n* wavelength \n* energy ", "links": [ - "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-control-software-analysis-chamber-group" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-pulser-laser-gun-group" ], "more": { "nx_kind": "group", "nx_category": "base", - "nx_name": "analysis_chamber", - "nx_type": "NXcollection", - "nx_optional": "true", + "nx_name": "laser_gun", + "nx_type": "NXsource", + "nx_optional": false, "nx_extends": "NXobject", - "nx_ignoreExtraGroups": "true", - "nx_ignoreExtraFields": "true", - "nx_ignoreExtraAttributes": "true" + "nx_recommended": "true" }, "base_sections": [ - "/packages/18/section_definitions/15" + "/packages/20/section_definitions/151/inner_section_definitions/1" + ], + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "default__attribute", + "variable": false, + "more": { + "nx_name": "default" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } ], "quantities": [ { "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "pressure", - "description": "Average pressure in the analysis chamber.", + "name": "name__field", + "description": "Given name/alias.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-pulser-laser-gun-name-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "name", + "nx_optional": false, + "nx_minOccurs": "0", + "nx_maxOccurs": "1", + "nx_recommended": "true" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true, + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "short_name__attribute", + "variable": false, + "more": { + "nx_name": "short_name", + "nx_type": "NX_CHAR", + "nx_optional": "true" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "wavelength__field", + "description": "Nominal wavelength of the laser radiation.", "links": [ - "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-control-software-analysis-chamber-pressure-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-pulser-laser-gun-wavelength-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_FLOAT", - "nx_name": "pressure", - "nx_units": "NX_PRESSURE", - "nx_optional": false + "nx_name": "wavelength", + "nx_units": "NX_WAVELENGTH", + "nx_optional": false, + "nx_recommended": "true" + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[length]", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "power__field", + "description": "Nominal power of the laser source while illuminating the specimen.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-pulser-laser-gun-power-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_FLOAT", + "nx_name": "power", + "nx_units": "NX_POWER", + "nx_optional": false, + "nx_recommended": "true" + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[power]", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 3, + "m_parent_sub_section": "quantities", + "name": "pulse_energy__field", + "description": "Average energy of the laser at peak of each pulse.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-pulser-laser-gun-pulse-energy-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "pulse_energy", + "nx_units": "NX_ENERGY", + "nx_optional": "true", + "nx_recommended": "true" }, "type": { "type_kind": "numpy", "type_data": "float64" }, "shape": [], - "dimensionality": "[pressure]", + "dimensionality": "[energy]", "flexible_unit": true } + ], + "sub_sections": [ + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 0, + "m_parent_sub_section": "sub_sections", + "name": "FABRICATION", + "variable": true, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/5/inner_section_definitions/0/inner_section_definitions/0", + "repeats": true + } + ], + "inner_section_definitions": [ + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 0, + "m_parent_sub_section": "inner_section_definitions", + "name": "NXfabrication", + "description": "Details about a component as defined by its manufacturer.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-pulser-laser-gun-fabrication-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXfabrication", + "nx_type": "NXfabrication", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/151/inner_section_definitions/1/inner_section_definitions/0" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "identifier__field", + "description": "Ideally, (globally) unique persistent identifier, i.e.\na serial number or hash identifier of the component.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-pulser-laser-gun-fabrication-identifier-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "identifier", + "nx_recommended": "true", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "capabilities__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-pulser-laser-gun-fabrication-capabilities-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "capabilities", + "nx_optional": "true" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + } + ] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 1, + "m_parent_sub_section": "inner_section_definitions", + "name": "laser_beam", + "description": "Details about specific positions along the focused laser beam\nwhich illuminates the (atom probe) specimen.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-pulser-laser-beam-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "laser_beam", + "nx_type": "NXbeam", + "nx_optional": false, + "nx_extends": "NXobject", + "nx_recommended": "true" + }, + "base_sections": [ + "/packages/20/section_definitions/151/inner_section_definitions/2" + ], + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "default__attribute", + "variable": false, + "more": { + "nx_name": "default" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } + ], + "sub_sections": [ + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 0, + "m_parent_sub_section": "sub_sections", + "name": "pinhole_position", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/5/inner_section_definitions/1/inner_section_definitions/0", + "repeats": false + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 1, + "m_parent_sub_section": "sub_sections", + "name": "spot_position", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/5/inner_section_definitions/1/inner_section_definitions/1", + "repeats": false + } + ], + "inner_section_definitions": [ + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 0, + "m_parent_sub_section": "inner_section_definitions", + "name": "pinhole_position", + "description": "Track time-dependent settings over the course of the\nmeasurement where the laser beam exits the \nfocusing optics.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-pulser-laser-beam-pinhole-position-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "pinhole_position", + "nx_type": "NXcollection", + "nx_optional": false, + "nx_extends": "NXobject", + "nx_ignoreExtraGroups": "true", + "nx_ignoreExtraFields": "true", + "nx_ignoreExtraAttributes": "true", + "nx_recommended": "true" + }, + "base_sections": [ + "/packages/20/section_definitions/151/inner_section_definitions/2/inner_section_definitions/0" + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 1, + "m_parent_sub_section": "inner_section_definitions", + "name": "spot_position", + "description": "Track time-dependent settings over the course of the\nmeasurement where the laser hits the specimen.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-pulser-laser-beam-spot-position-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "spot_position", + "nx_type": "NXcollection", + "nx_optional": false, + "nx_extends": "NXobject", + "nx_ignoreExtraGroups": "true", + "nx_ignoreExtraFields": "true", + "nx_ignoreExtraAttributes": "true", + "nx_recommended": "true" + }, + "base_sections": [ + "/packages/20/section_definitions/151/inner_section_definitions/2/inner_section_definitions/1" + ] + } ] } ] }, { "m_def": "nomad.metainfo.metainfo.Section", - "m_parent_index": 13, + "m_parent_index": 6, "m_parent_sub_section": "inner_section_definitions", - "name": "specimen_monitoring", - "description": "A place where details about the initial shape of the specimen\ncan be stored. Ideally, here also data about the shape evolution\nof the specimen can be stored. There are currently very few\ntechniques which can measure the shape evolution:\n\n* Correlative electron microscopy coupled with modeling \n but this usually takes an interrupted experiment \n in which the specimen is transferred, an image taken, \n and a new evaporation sequence initiated. \n Examples are `I. Mouton et al. `_ and `C. Fletcher `_.\n* Another, less accurate method, though, is to monitor \n the specimen evolution via the in-built camera system \n (if available) in the instrument. \n* Another method is to use correlated scanning force microscopy \n methods like reported in `C. Fleischmann `_. \n* A continuous monitoring of the specimen in a \n correlative electron microscopy/atom probe experiment \n is planned to be developed by `T. Kelly et al. `_ ", + "name": "stage_lab", + "description": "A stage lab can be used to hold, align, orient, and prepare a specimen.\n\nModern stages are multi-functional devices. Many of which offer a controlled\nenvironment around (a part) of the specimen. Stages enable experimentalists\nto apply stimuli. A stage_lab is a multi-purpose/-functional tools which\ncan have multiple actuators, sensors, and other components.\n\nWith such stages comes the need for storing various (meta)data \nthat are generated while manipulating the sample.\n\nModern stages realize a hierarchy of components: For example the specimen\nmight be mounted on a multi-axial tilt rotation holder. This holder is \nfixed in the support unit which connects the holder to the rest of the\nmicroscope.\n\nIn other examples, taken from atom probe microscopy, researchers may work\nwith wire samples which are clipped into a larger fixing unit for\nconvenience and enable for a more careful specimen handling.\nThis fixture unit is known in atom probe jargon as a stub.\nStubs in turn are positioned onto pucks.\nPucks are then loaded onto carousels.\nA carousel is a carrier unit with which eventually entire sets of specimens\ncan be moved in between parts of the microscope.\n\nAn NXstage_lab instance reflects this hierarchical design. The stage is the \nroot of the hierarchy. A stage carries the holder.\nIn the case that it is not practical to distinguish these two layers,\nthe holder should be given preference.\n\nSome examples for stage_labs in applications:\n\n* A nanoparticle on a copper grid. The copper grid is the holder. \n The grid itself is fixed to the stage. \n* An atom probe specimen fixed in a stub. In this case the stub can be \n considered the holder, while the cryostat temperature control unit is \n a component of the stage. \n* Samples with arrays of specimens, like a microtip on a microtip array \n is an example of a three-layer hierarchy commonly employed for \n efficient sequential processing of atom probe experiments. \n* With one entry of an application definition only one microtip should be \n described. Therefore, the microtip is the specimen, \n the array is the holder and the remaining mounting unit \n that is attached to the cryo-controller is the stage. \n* For in-situ experiments with e.g. chips with read-out electronics \n as actuators, the chips are again placed in a larger unit. \n* Other examples are (quasi) in-situ experiments where experimentalists \n anneal or deform the specimen via e.g. in-situ tensile testing machines \n which are mounted on the specimen holder. \n\nTo cover for an as flexible design of complex stages, users should nest\nmultiple instances of NXstage_lab objects according to their needs to reflect\nthe differences between what they consider as the holder and what \nthey consider is the stage.\n\nInstances should be named with integers starting from 1 as the top level unit.\nIn the microtip example stage_lab_1 for the stage, stage_lab_2 for the holder\n(microtip array), stage_lab_3 for the microtip specimen, respectively. \nThe depends_on keyword should be used with relative or absolute naming inside\nthe file to specify how different stage_lab instances build a hierarchy\nif this is not obvious from numbered identifiers like the stage_lab_1 to \nstage_lab 3 example. The lower it is the number the higher it is the\nrank in the hierarchy.\n\nFor specific details and inspiration about stages in electron microscopes:\n\n* `Holders with multiple axes `_ \n* `Chip-based designs `_ \n* `Further chip-based designs `_\n* `Stages in transmission electron microscopy `_ (page 103, table 4.2) \n* `Further stages in transmission electron microscopy `_ (page 124ff)\n* `Specimens in atom probe `_ (page 47ff)\n* `Exemplar micro-manipulators `_", "links": [ - "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-specimen-monitoring-group", - "https://doi.org/10.1017/S1431927618016161", - "https://doi.org/10.1088/1361-6463/abaaa6", - "https://doi.org/10.1016/j.ultramic.2018.08.010", - "https://doi.org/10.1017/S1431927620022205" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-stage-lab-group" ], "more": { "nx_kind": "group", "nx_category": "base", - "nx_name": "specimen_monitoring", - "nx_type": "NXcollection", - "nx_optional": "true", - "nx_extends": "NXobject", - "nx_ignoreExtraGroups": "true", - "nx_ignoreExtraFields": "true", - "nx_ignoreExtraAttributes": "true" + "nx_name": "stage_lab", + "nx_type": "NXstage_lab", + "nx_optional": false, + "nx_extends": "NXobject" }, "base_sections": [ - "/packages/18/section_definitions/15" + "/packages/20/section_definitions/188" ], "quantities": [ { "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "initial_radius", - "description": "Ideally measured or best elaborated guess of the initial radius of the specimen.", - "links": [ - "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-specimen-monitoring-initial-radius-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "initial_radius", - "nx_units": "NX_LENGTH", - "nx_optional": false - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [], - "dimensionality": "[length]", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 1, - "m_parent_sub_section": "quantities", - "name": "shank_angle", - "description": "Ideally measured or best elaborated guess of the shank angle.\nThis is a measure of the specimen taper. Define it in such a way\nthat the base of the specimen is modelled as a conical frustrum so\nthat the shank angle is the (shortest) angle between the specimen\nspace z-axis and a vector on the lateral surface of the cone.", + "name": "base_temperature__field", + "description": "Average temperature at the specimen base, i.e.\nbase_temperature during the measurement.", "links": [ - "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-specimen-monitoring-shank-angle-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-stage-lab-base-temperature-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_FLOAT", - "nx_name": "shank_angle", - "nx_units": "NX_ANGLE", + "nx_name": "base_temperature", + "nx_units": "NX_TEMPERATURE", "nx_optional": false }, "type": { @@ -61073,155 +62299,867 @@ "type_data": "float64" }, "shape": [], - "dimensionality": "[angle]", + "dimensionality": "[temperature]", "flexible_unit": true } ] }, { "m_def": "nomad.metainfo.metainfo.Section", - "m_parent_index": 14, + "m_parent_index": 7, "m_parent_sub_section": "inner_section_definitions", - "name": "ion_impact_positions", - "description": "Details about where ions hit the ion_detector and data processing\nsteps related to analog-to-digital conversion of detector signals\ninto ion hit positions. For AMETEK LEAP instruments this processing\ntakes place partly in the control unit of the detector partly\nin the software. The process is controlled by the acquisition/\ninstrument control software (IVAS/APSuite/DAVis).\nThe exact details are not documented by AMETEK in an open manner.\nFor instruments built by individual research groups,\nlike the Oxcart instrument, individual timing data from the\ndelay-line detector are openly accessible.", + "name": "load_lock_chamber", + "description": "Component of an instrument to store or place objects and specimens.", "links": [ - "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ion-impact-positions-group" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-load-lock-chamber-group" ], "more": { "nx_kind": "group", "nx_category": "base", - "nx_name": "ion_impact_positions", - "nx_type": "NXprocess", - "nx_optional": false, - "nx_extends": "NXobject", - "nx_recommended": "true" + "nx_name": "load_lock_chamber", + "nx_type": "NXchamber", + "nx_optional": "true", + "nx_extends": "NXobject" }, "base_sections": [ - "/packages/18/section_definitions/93" + "/packages/20/section_definitions/48" ], - "attributes": [ + "quantities": [ { - "m_def": "nomad.metainfo.metainfo.Attribute", + "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "default", + "m_parent_sub_section": "quantities", + "name": "name__field", + "description": "Given name/alias.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-load-lock-chamber-name-field" + ], "variable": false, "more": { - "nx_name": "default" + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "name", + "nx_optional": "true" }, "type": { "type_kind": "python", "type_data": "str" }, - "shape": [] - } - ], - "quantities": [ + "shape": [], + "flexible_unit": true + }, { "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 0, + "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "program", - "description": "Given name of the program that was used to perform this computation.\nApart from the classical approach to use AMETEK software for this\nprocessing step, a number of open-source alternative tools exists.", + "name": "description__field", + "description": "Free-text field for describing details about the chamber.\nFor example out of which material was the chamber built.", "links": [ - "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ion-impact-positions-program-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-load-lock-chamber-description-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_CHAR", - "nx_name": "program", - "nx_optional": false + "nx_name": "description", + "nx_optional": "true" }, "type": { "type_kind": "python", "type_data": "str" }, "shape": [], - "flexible_unit": true, - "attributes": [ - { - "m_def": "nomad.metainfo.metainfo.Attribute", - "name": "version", - "variable": false, - "more": { - "nx_name": "version", - "nx_type": "NX_CHAR" - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [] - } - ] + "flexible_unit": true }, { "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 1, + "m_parent_index": 2, "m_parent_sub_section": "quantities", - "name": "arrival_time_pairs", - "description": "Raw readings from the analog-to-digital-converter\ntiming circuits of the detector wires.", + "name": "pressure__field", + "description": "Average pressure in the load_lock_chamber.", "links": [ - "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ion-impact-positions-arrival-time-pairs-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-load-lock-chamber-pressure-field" ], "variable": false, "more": { "nx_kind": "field", - "nx_type": "NX_NUMBER", - "nx_name": "arrival_time_pairs", - "nx_recommended": "true", - "nx_units": "NX_TIME", + "nx_type": "NX_FLOAT", + "nx_name": "pressure", + "nx_units": "NX_PRESSURE", "nx_optional": false }, "type": { "type_kind": "numpy", "type_data": "float64" }, - "shape": [ - "n_ions", - "n_dld_wires", - 2 - ], - "dimensionality": "[time]", + "shape": [], + "dimensionality": "[pressure]", + "flexible_unit": true + } + ], + "sub_sections": [ + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 0, + "m_parent_sub_section": "sub_sections", + "name": "FABRICATION", + "variable": true, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/7/inner_section_definitions/0", + "repeats": true + } + ], + "inner_section_definitions": [ + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 0, + "m_parent_sub_section": "inner_section_definitions", + "name": "NXfabrication", + "description": "Details about a component as defined by its manufacturer.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-load-lock-chamber-fabrication-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXfabrication", + "nx_type": "NXfabrication", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/48/inner_section_definitions/0" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "identifier__field", + "description": "Ideally, (globally) unique persistent identifier, i.e.\na serial number or hash identifier of the component.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-load-lock-chamber-fabrication-identifier-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "identifier", + "nx_recommended": "true", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "capabilities__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-load-lock-chamber-fabrication-capabilities-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "capabilities", + "nx_optional": "true" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + } + ] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 8, + "m_parent_sub_section": "inner_section_definitions", + "name": "buffer_chamber", + "description": "Component of an instrument to store or place objects and specimens.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-buffer-chamber-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "buffer_chamber", + "nx_type": "NXchamber", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/48" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "name__field", + "description": "Given name/alias.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-buffer-chamber-name-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "name", + "nx_optional": "true" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "description__field", + "description": "Free-text field for describing details about the chamber.\nFor example out of which material was the chamber built.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-buffer-chamber-description-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "description", + "nx_optional": "true" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], "flexible_unit": true }, { "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 2, "m_parent_sub_section": "quantities", - "name": "hit_positions", - "description": "Evaluated ion impact coordinates at the detector\n(either as computed from the arrival time data\nor as reported by the control software).", + "name": "pressure__field", + "description": "Average pressure in the buffer chamber.", "links": [ - "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ion-impact-positions-hit-positions-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-buffer-chamber-pressure-field" ], "variable": false, "more": { "nx_kind": "field", - "nx_type": "NX_NUMBER", - "nx_name": "hit_positions", - "nx_units": "NX_LENGTH", + "nx_type": "NX_FLOAT", + "nx_name": "pressure", + "nx_units": "NX_PRESSURE", "nx_optional": false }, "type": { "type_kind": "numpy", "type_data": "float64" }, - "shape": [ - "n_ions", - 2 + "shape": [], + "dimensionality": "[pressure]", + "flexible_unit": true + } + ], + "sub_sections": [ + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 0, + "m_parent_sub_section": "sub_sections", + "name": "FABRICATION", + "variable": true, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/8/inner_section_definitions/0", + "repeats": true + } + ], + "inner_section_definitions": [ + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 0, + "m_parent_sub_section": "inner_section_definitions", + "name": "NXfabrication", + "description": "Details about a component as defined by its manufacturer.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-buffer-chamber-fabrication-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXfabrication", + "nx_type": "NXfabrication", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/48/inner_section_definitions/0" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "identifier__field", + "description": "Ideally, (globally) unique persistent identifier, i.e.\na serial number or hash identifier of the component.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-buffer-chamber-fabrication-identifier-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "identifier", + "nx_recommended": "true", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "capabilities__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-buffer-chamber-fabrication-capabilities-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "capabilities", + "nx_optional": "true" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + } + ] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 9, + "m_parent_sub_section": "inner_section_definitions", + "name": "getter_pump", + "description": "Device to reduce an atmosphere to a controlled remaining pressure level.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-getter-pump-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "getter_pump", + "nx_type": "NXpump", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/152" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "design__field", + "description": "Principle type of the pump.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-getter-pump-design-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "design", + "nx_optional": false, + "nx_recommended": "true" + }, + "type": { + "type_kind": "Enum", + "type_data": [ + "membrane", + "rotary_vane", + "roots", + "turbo_molecular" + ] + }, + "shape": [], + "flexible_unit": true + } + ], + "sub_sections": [ + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 0, + "m_parent_sub_section": "sub_sections", + "name": "FABRICATION", + "variable": true, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/9/inner_section_definitions/0", + "repeats": true + } + ], + "inner_section_definitions": [ + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 0, + "m_parent_sub_section": "inner_section_definitions", + "name": "NXfabrication", + "description": "Details about a component as defined by its manufacturer.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-getter-pump-fabrication-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXfabrication", + "nx_type": "NXfabrication", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/152/inner_section_definitions/0" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "identifier__field", + "description": "Ideally, (globally) unique persistent identifier, i.e.\na serial number or hash identifier of the component.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-getter-pump-fabrication-identifier-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "identifier", + "nx_recommended": "true", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "capabilities__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-getter-pump-fabrication-capabilities-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "capabilities", + "nx_optional": "true" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + } + ] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 10, + "m_parent_sub_section": "inner_section_definitions", + "name": "roughening_pump", + "description": "Device to reduce an atmosphere to a controlled remaining pressure level.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-roughening-pump-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "roughening_pump", + "nx_type": "NXpump", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/152" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "design__field", + "description": "Principle type of the pump.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-roughening-pump-design-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "design", + "nx_optional": false, + "nx_recommended": "true" + }, + "type": { + "type_kind": "Enum", + "type_data": [ + "membrane", + "rotary_vane", + "roots", + "turbo_molecular" + ] + }, + "shape": [], + "flexible_unit": true + } + ], + "sub_sections": [ + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 0, + "m_parent_sub_section": "sub_sections", + "name": "FABRICATION", + "variable": true, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/10/inner_section_definitions/0", + "repeats": true + } + ], + "inner_section_definitions": [ + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 0, + "m_parent_sub_section": "inner_section_definitions", + "name": "NXfabrication", + "description": "Details about a component as defined by its manufacturer.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-roughening-pump-fabrication-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXfabrication", + "nx_type": "NXfabrication", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/152/inner_section_definitions/0" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "identifier__field", + "description": "Ideally, (globally) unique persistent identifier, i.e.\na serial number or hash identifier of the component.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-roughening-pump-fabrication-identifier-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "identifier", + "nx_recommended": "true", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "capabilities__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-roughening-pump-fabrication-capabilities-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "capabilities", + "nx_optional": "true" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + } + ] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 11, + "m_parent_sub_section": "inner_section_definitions", + "name": "turbomolecular_pump", + "description": "Device to reduce an atmosphere to a controlled remaining pressure level.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-turbomolecular-pump-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "turbomolecular_pump", + "nx_type": "NXpump", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/152" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "design__field", + "description": "Principle type of the pump.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-turbomolecular-pump-design-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "design", + "nx_optional": false, + "nx_recommended": "true" + }, + "type": { + "type_kind": "Enum", + "type_data": [ + "membrane", + "rotary_vane", + "roots", + "turbo_molecular" + ] + }, + "shape": [], + "flexible_unit": true + } + ], + "sub_sections": [ + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 0, + "m_parent_sub_section": "sub_sections", + "name": "FABRICATION", + "variable": true, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/11/inner_section_definitions/0", + "repeats": true + } + ], + "inner_section_definitions": [ + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 0, + "m_parent_sub_section": "inner_section_definitions", + "name": "NXfabrication", + "description": "Details about a component as defined by its manufacturer.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-turbomolecular-pump-fabrication-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXfabrication", + "nx_type": "NXfabrication", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/152/inner_section_definitions/0" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "identifier__field", + "description": "Ideally, (globally) unique persistent identifier, i.e.\na serial number or hash identifier of the component.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-turbomolecular-pump-fabrication-identifier-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "identifier", + "nx_recommended": "true", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "capabilities__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-turbomolecular-pump-fabrication-capabilities-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "capabilities", + "nx_optional": "true" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + } + ] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 12, + "m_parent_sub_section": "inner_section_definitions", + "name": "specimen_monitoring", + "description": "A place where details about the initial shape of the specimen\ncan be stored. Ideally, here also data about the shape evolution\nof the specimen can be stored. There are currently very few\ntechniques which can measure the shape evolution:\n\n* Correlative electron microscopy coupled with modeling \n but this usually takes an interrupted experiment \n in which the specimen is transferred, an image taken, \n and a new evaporation sequence initiated. \n Examples are `I. Mouton et al. `_ \n and `C. Fletcher `_. \n* Another method, which is less accurate though, is to monitor \n the specimen evolution via the in-built camera system \n (if available) in the instrument. \n* Another method is to use correlated scanning force microscopy \n methods like reported in `C. Fleischmann `_. \n* A continuous monitoring of the specimen in a \n correlative electron microscopy/atom probe experiment \n is planned to be developed by `T. Kelly et al. `_ \n Nothing can be said about the outcome of this research yet but \n here is where such spatio-temporally data could be stored. ", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-specimen-monitoring-group", + "https://doi.org/10.1017/S1431927618016161", + "https://doi.org/10.1088/1361-6463/abaaa6", + "https://doi.org/10.1016/j.ultramic.2018.08.010", + "https://doi.org/10.1017/S1431927620022205" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "specimen_monitoring", + "nx_type": "NXcollection", + "nx_optional": false, + "nx_extends": "NXobject", + "nx_ignoreExtraGroups": "true", + "nx_ignoreExtraFields": "true", + "nx_ignoreExtraAttributes": "true", + "nx_recommended": "true" + }, + "base_sections": [ + "/packages/20/section_definitions/51" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "initial_radius__field", + "description": "Ideally measured or best elaborated guess of the\ninitial radius of the specimen.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-specimen-monitoring-initial-radius-field" ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_FLOAT", + "nx_name": "initial_radius", + "nx_units": "NX_LENGTH", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], "dimensionality": "[length]", "flexible_unit": true }, { "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 3, + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "shank_angle__field", + "description": "Ideally measured or best elaborated guess of the shank angle.\nThis is a measure of the specimen taper. Define it in such a way\nthat the base of the specimen is modelled as a conical frustrum so\nthat the shank angle is the (shortest) angle between the specimen\nspace z-axis and a vector on the lateral surface of the cone.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-specimen-monitoring-shank-angle-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_FLOAT", + "nx_name": "shank_angle", + "nx_units": "NX_ANGLE", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[angle]", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, "m_parent_sub_section": "quantities", - "name": "detection_rate", + "name": "detection_rate__field", "description": "Average detection rate over the course of the experiment.", "links": [ - "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ion-impact-positions-detection-rate-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-specimen-monitoring-detection-rate-field" ], "variable": false, "more": { @@ -61241,12 +63179,330 @@ } ] }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 13, + "m_parent_sub_section": "inner_section_definitions", + "name": "control_software", + "description": "The majority of atom probe microscopes come from a\nsingle commercial manufacturer `AMETEK (formerly Cameca) `_.\nTheir instruments are controlled via an(/a set) of integrated\ninstrument control system(s) (APSuite/IVAS/DAVis).\n\nBy contrast, instruments which were built by individual\nresearch groups such as of the French (GPM, Rouen, France),\nthe Schmitz (Inspico, Stuttgart, Germany),\nthe Felfer (Oxcart, Erlangen, Germany),\nthe Northwestern (D. Isheim, Seidman group et al.),\nor the PNNL group (Pacific Northwest National Laborary,\nPortland, Oregon, U.S.) have other solutions\nto control the instrument.\n\nSome of which are modularized and open,\nsome of which realize also integrated control units with\nportions of eventually undisclosed source code and\n(so far) lacking (support of)/open APIs.\n\nCurrently, there is no accepted/implemented\ncommunity-specific API for getting finely granularized\naccess to such control settings.\n\nThese considerations motivated the design of the NXapm\napplication definition in that it stores quantities in NXcollection.\ngroups to begin with. Holding heterogeneous, not yet standardized\nbut relevant pieces of information is the purpose of this collection.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-control-software-group", + "https://www.atomprobe.com" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "control_software", + "nx_type": "NXcollection", + "nx_optional": false, + "nx_extends": "NXobject", + "nx_ignoreExtraGroups": "true", + "nx_ignoreExtraFields": "true", + "nx_ignoreExtraAttributes": "true" + }, + "base_sections": [ + "/packages/20/section_definitions/51" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "program__field", + "description": "Name of the control software of the microscope \nused during acquisition (e.g. IVAS/APSuite).", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-control-software-program-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "program", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true, + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "version__attribute", + "variable": false, + "more": { + "nx_name": "version", + "nx_type": "NX_CHAR" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } + ] + } + ], + "sub_sections": [ + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 0, + "m_parent_sub_section": "sub_sections", + "name": "buffer_chamber", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/13/inner_section_definitions/0", + "repeats": false + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 1, + "m_parent_sub_section": "sub_sections", + "name": "load_lock_chamber", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/13/inner_section_definitions/1", + "repeats": false + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 2, + "m_parent_sub_section": "sub_sections", + "name": "analysis_chamber", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/13/inner_section_definitions/2", + "repeats": false + } + ], + "inner_section_definitions": [ + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 0, + "m_parent_sub_section": "inner_section_definitions", + "name": "buffer_chamber", + "description": "Track time-dependent details over the course of the measurement about the\nbuffer_chamber.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-control-software-buffer-chamber-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "buffer_chamber", + "nx_type": "NXcollection", + "nx_optional": "true", + "nx_extends": "NXobject", + "nx_ignoreExtraGroups": "true", + "nx_ignoreExtraFields": "true", + "nx_ignoreExtraAttributes": "true" + }, + "base_sections": [ + "/packages/20/section_definitions/51" + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 1, + "m_parent_sub_section": "inner_section_definitions", + "name": "load_lock_chamber", + "description": "Track time-dependent details over the course of the measurement about the\nload_lock_chamber.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-control-software-load-lock-chamber-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "load_lock_chamber", + "nx_type": "NXcollection", + "nx_optional": "true", + "nx_extends": "NXobject", + "nx_ignoreExtraGroups": "true", + "nx_ignoreExtraFields": "true", + "nx_ignoreExtraAttributes": "true" + }, + "base_sections": [ + "/packages/20/section_definitions/51" + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 2, + "m_parent_sub_section": "inner_section_definitions", + "name": "analysis_chamber", + "description": "Track time-dependent details over the course of the measurement about the\nanalysis_chamber.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-control-software-analysis-chamber-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "analysis_chamber", + "nx_type": "NXcollection", + "nx_optional": "true", + "nx_extends": "NXobject", + "nx_ignoreExtraGroups": "true", + "nx_ignoreExtraFields": "true", + "nx_ignoreExtraAttributes": "true" + }, + "base_sections": [ + "/packages/20/section_definitions/51" + ] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 14, + "m_parent_sub_section": "inner_section_definitions", + "name": "ion_impact_positions", + "description": "Details about where ions hit the ion_detector and data processing\nsteps related to analog-to-digital conversion of detector signals\ninto ion hit positions. For AMETEK LEAP instruments this processing\ntakes place partly in the control unit of the detector partly\nin the software. The process is controlled by the acquisition/\ninstrument control software (IVAS/APSuite/DAVis).\nThe exact details are not documented by AMETEK in an open manner.\nFor instruments built by individual research groups,\nlike the Oxcart instrument, individual timing data from the\ndelay-line detector are openly accessible.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ion-impact-positions-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "ion_impact_positions", + "nx_type": "NXprocess", + "nx_optional": false, + "nx_extends": "NXobject", + "nx_recommended": "true" + }, + "base_sections": [ + "/packages/20/section_definitions/150" + ], + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "default__attribute", + "variable": false, + "more": { + "nx_name": "default" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "program__field", + "description": "Given name of the program that was used to perform this computation.\nApart from the classical approach to use AMETEK software for this\nprocessing step, a number of open-source alternative tools exists.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ion-impact-positions-program-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "program", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true, + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "name": "version__attribute", + "variable": false, + "more": { + "nx_name": "version", + "nx_type": "NX_CHAR" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "arrival_time_pairs__field", + "description": "Raw readings from the analog-to-digital-converter\ntiming circuits of the detector wires.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ion-impact-positions-arrival-time-pairs-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "arrival_time_pairs", + "nx_recommended": "true", + "nx_units": "NX_TIME", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [ + "n_ions", + "n_dld_wires", + 2 + ], + "dimensionality": "[time]", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "hit_positions__field", + "description": "Evaluated ion impact coordinates at the detector\n(either as computed from the arrival time data\nor as reported by the control software).", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ion-impact-positions-hit-positions-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "hit_positions", + "nx_units": "NX_LENGTH", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [ + "n_ions", + 2 + ], + "dimensionality": "[length]", + "flexible_unit": true + } + ] + }, { "m_def": "nomad.metainfo.metainfo.Section", "m_parent_index": 15, "m_parent_sub_section": "inner_section_definitions", "name": "hit_multiplicity", - "description": "Data post-processing step which is, like the impact position analyses, \nalso usually executed in the integrated control software. \nThis processing yields how many ions were detected with each pulse.\n\nIt is possible that multiple ions evaporate and hit the same or \ndifferent pixels of the detector on the same pulse. \nThese data form the basis to analyses of the so-called\n(hit) multiplicity of an ion. \nMultiplicity must not be confused with how many \natoms of the same element or isotope, respectively,\na molecular ion contains (which is encoded with the\nisotope_vector field of each NXion instance.", + "description": "Data post-processing step which is, like the impact position analyses,\nusually executed in the integrated control software. This processing\nyields how many ions were detected with each pulse.\n\nIt is possible that multiple ions evaporate and hit the same or\ndifferent pixels of the detector on the same pulse.\nThese data form the basis to analyses of the so-called\n(hit) multiplicity of an ion.\n\nMultiplicity must not be confused with how many atoms \nf the same element or isotope, respectively, a molecular\nion contains (which is instead encoded with the\nisotope_vector field of each NXion instance).", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-hit-multiplicity-group" ], @@ -61260,14 +63516,14 @@ "nx_recommended": "true" }, "base_sections": [ - "/packages/18/section_definitions/93" + "/packages/20/section_definitions/150" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "default", + "name": "default__attribute", "variable": false, "more": { "nx_name": "default" @@ -61284,7 +63540,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "program", + "name": "program__field", "description": "Given name of the program that was used to perform this computation.\nApart from the classical approach to use AMETEK software for this\nprocessing step, a number of open-source alternative tools exists.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-hit-multiplicity-program-field" @@ -61305,7 +63561,7 @@ "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", - "name": "version", + "name": "version__attribute", "variable": false, "more": { "nx_name": "version", @@ -61323,7 +63579,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "pulses_since_last_ion", + "name": "pulses_since_last_ion__field", "description": "Number of pulses since the last detected ion pulse.\nFor multi-hit records, after the first record, this is zero.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-hit-multiplicity-pulses-since-last-ion-field" @@ -61351,7 +63607,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 2, "m_parent_sub_section": "quantities", - "name": "hit_multiplicity", + "name": "hit_multiplicity__field", "description": "Hit multiplicity.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-hit-multiplicity-hit-multiplicity-field" @@ -61379,7 +63635,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 3, "m_parent_sub_section": "quantities", - "name": "pulse_id", + "name": "pulse_id__field", "description": "Number of pulses since the start of the atom probe run/evaporation sequence.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-hit-multiplicity-pulse-id-field" @@ -61409,7 +63665,7 @@ "m_parent_index": 16, "m_parent_sub_section": "inner_section_definitions", "name": "ion_filtering", - "description": "Like impact position and hit multiplicity computations, \nion filtering is a data post-processing step with which users\nidentify which of the detected ions should be included\nin the voltage-and-bowl correction.\nThis post-processing is usually performed via GUI interaction\nin the reconstruction pipeline of IVAS/APSuite.", + "description": "Like impact position and hit multiplicity computations,\nion filtering is a data post-processing step with which users\nidentify which of the detected ions should be included\nin the voltage-and-bowl correction.\nThis post-processing is usually performed via GUI interaction\nin the reconstruction pipeline of IVAS/APSuite.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ion-filtering-group" ], @@ -61423,14 +63679,14 @@ "nx_recommended": "true" }, "base_sections": [ - "/packages/18/section_definitions/93" + "/packages/20/section_definitions/150" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "default", + "name": "default__attribute", "variable": false, "more": { "nx_name": "default" @@ -61447,7 +63703,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "program", + "name": "program__field", "description": "Given name of the program that was used to perform this computation.\nApart from the classical approach to use AMETEK software for this\nprocessing step, a number of open-source alternative tools exists.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ion-filtering-program-field" @@ -61468,7 +63724,7 @@ "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", - "name": "version", + "name": "version__attribute", "variable": false, "more": { "nx_name": "version", @@ -61486,7 +63742,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "evaporation_id_included", + "name": "evaporation_id_included__field", "description": "Bitmask which is set to true if the ion is considered and false otherwise.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ion-filtering-evaporation-id-included-field" @@ -61514,7 +63770,7 @@ "m_parent_index": 17, "m_parent_sub_section": "inner_section_definitions", "name": "voltage_and_bowl_correction", - "description": "Data post-processing step to correct for ion impact \nposition flight path differences, detector biases, \nand nonlinearities. This step is usually performed\nwith commercial software.", + "description": "Data post-processing step to correct for ion impact\nposition flight path differences, detector biases,\nand nonlinearities. This step is usually performed\nwith commercial software.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-voltage-and-bowl-correction-group" ], @@ -61528,14 +63784,14 @@ "nx_recommended": "true" }, "base_sections": [ - "/packages/18/section_definitions/93" + "/packages/20/section_definitions/150" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "default", + "name": "default__attribute", "variable": false, "more": { "nx_name": "default" @@ -61552,7 +63808,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "program", + "name": "program__field", "description": "Given name of the program that was used to perform this computation.\nApart from the classical approach to use AMETEK software for this\nprocessing step, a number of open-source alternative tools exists.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-voltage-and-bowl-correction-program-field" @@ -61573,7 +63829,7 @@ "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", - "name": "version", + "name": "version__attribute", "variable": false, "more": { "nx_name": "version", @@ -61591,8 +63847,8 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "raw_tof", - "description": "Raw time-of-flight data as read out from the acquisition software if these data\nare available and accessible.", + "name": "raw_tof__field", + "description": "Raw time-of-flight data as read out from the acquisition software\nif these data are available and accessible.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-voltage-and-bowl-correction-raw-tof-field" ], @@ -61619,7 +63875,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 2, "m_parent_sub_section": "quantities", - "name": "calibrated_tof", + "name": "calibrated_tof__field", "description": "Calibrated time-of-flight.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-voltage-and-bowl-correction-calibrated-tof-field" @@ -61653,7 +63909,7 @@ "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/17/inner_section_definitions/0", + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/17/inner_section_definitions/0", "repeats": false } ], @@ -61663,7 +63919,7 @@ "m_parent_index": 0, "m_parent_sub_section": "inner_section_definitions", "name": "tof_calibration", - "description": "The key idea and algorithm of the voltage-and-bowl correction \nis qualitatively similar for instruments of different manufacturers\nor research groups.\n\nSpecific differences exists though in the form of different\ncalibration models. For now we do not wish to resolve or \ngeneralize these differences. Rather the purpose of this collection\nis to provide a container where model-specific parameters\nand calibration models can be stored if users know these\nfor sure.\n\nFor AMETEK LEAP atom probes this should be the place for\nstoring initial calibration values. These values are\naccessible normally only by AMETEK service engineers.\nThey use these for calibrating the detector and instrument.\n\nUsers can also use this NXcollection for storing the\niteratively identified calibrations which scientists\nwill get displayed in e.g. AP Suite while they execute\nthe voltage-and-bowl correction as a part of the\nreconstruction pipeline in APSuite.", + "description": "The key idea and algorithm of the voltage-and-bowl correction is\nqualitatively similar for instruments of different manufacturers\nor research groups.\n\nSpecific differences exists though in the form of different\ncalibration models. For now we do not wish to resolve or\ngeneralize these differences. Rather the purpose of this collection\nis to provide a container where model-specific parameters\nand calibration models can be stored if users know these\nfor sure.\n\nFor AMETEK LEAP instruments this should be the place for\nstoring initial calibration values. These values are\naccessible normally only by AMETEK service engineers.\nThey use these for calibrating the detector and instrument.\n\nUsers can also use this NXcollection for storing the\niteratively identified calibrations which scientists\nwill see displayed in e.g. APSuite while they execute\nthe voltage-and-bowl correction as a part of the\nreconstruction pipeline in APSuite.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-voltage-and-bowl-correction-tof-calibration-group" ], @@ -61680,7 +63936,7 @@ "nx_recommended": "true" }, "base_sections": [ - "/packages/18/section_definitions/15" + "/packages/20/section_definitions/51" ] } ] @@ -61704,14 +63960,14 @@ "nx_recommended": "true" }, "base_sections": [ - "/packages/18/section_definitions/93" + "/packages/20/section_definitions/150" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "default", + "name": "default__attribute", "variable": false, "more": { "nx_name": "default" @@ -61728,7 +63984,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "program", + "name": "program__field", "description": "Given name of the program that was used to perform this computation.\nApart from the classical approach to use AMETEK software for this\nprocessing step, a number of open-source alternative tools exists.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-mass-to-charge-conversion-program-field" @@ -61749,7 +64005,7 @@ "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", - "name": "version", + "name": "version__attribute", "variable": false, "more": { "nx_name": "version", @@ -61767,8 +64023,8 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "mass_to_charge", - "description": "Mass-to-charge-state ratios", + "name": "mass_to_charge__field", + "description": "Mass-to-charge-state ratio values.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-mass-to-charge-conversion-mass-to-charge-field" ], @@ -61800,7 +64056,7 @@ "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/18/inner_section_definitions/0", + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/18/inner_section_definitions/0", "repeats": false } ], @@ -61827,7 +64083,7 @@ "nx_recommended": "true" }, "base_sections": [ - "/packages/18/section_definitions/15" + "/packages/20/section_definitions/51" ] } ] @@ -61851,14 +64107,14 @@ "nx_recommended": "true" }, "base_sections": [ - "/packages/18/section_definitions/93" + "/packages/20/section_definitions/150" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "default", + "name": "default__attribute", "variable": false, "more": { "nx_name": "default" @@ -61875,7 +64131,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "program", + "name": "program__field", "description": "Given name of the program that was used to perform this computation.\nSimilar comments as voltage_and_bowl_correction apply.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-reconstruction-program-field" @@ -61896,7 +64152,7 @@ "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", - "name": "version", + "name": "version__attribute", "variable": false, "more": { "nx_name": "version", @@ -61914,7 +64170,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "protocol_name", + "name": "protocol_name__field", "description": "Qualitative statement about which reconstruction protocol was used.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-reconstruction-protocol-name-field" @@ -61924,18 +64180,15 @@ "nx_kind": "field", "nx_type": "NX_CHAR", "nx_name": "protocol_name", - "nx_recommended": "true", "nx_optional": false }, "type": { "type_kind": "Enum", "type_data": [ - "bas_original", - "bas_modified", + "bas", "geiser", "gault", - "ivas", - "apsuite", + "cameca", "other" ] }, @@ -61946,7 +64199,53 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 2, "m_parent_sub_section": "quantities", - "name": "reconstructed_positions", + "name": "parameter__field", + "description": "Different reconstruction protocols exist. Although these approaches\nare qualitatively similar, each protocol uses different parameters\n(and interprets these differently). The source code to IVAS/APSuite\nis not open. For now users should store reconstruction parameter\nin a collection.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-reconstruction-parameter-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "parameter", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 3, + "m_parent_sub_section": "quantities", + "name": "crystallographic_calibration__field", + "description": "Different strategies for crystallographic calibration of the\nreconstruction are possible. The field is required and details\nshould be specified in free-text at least. If the not crystallographic\ncalibration was performed the field should be filled with the n/a,\nmeaning not applied.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-reconstruction-crystallographic-calibration-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "crystallographic_calibration", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 4, + "m_parent_sub_section": "quantities", + "name": "reconstructed_positions__field", "description": "Three-dimensional reconstructed positions of the ions.\nInterleaved array of x, y, z positions in the specimen space.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-reconstruction-reconstructed-positions-field" @@ -61976,24 +64275,12 @@ "m_def": "nomad.metainfo.metainfo.SubSection", "m_parent_index": 0, "m_parent_sub_section": "sub_sections", - "name": "parameter", - "variable": false, - "more": { - "nx_kind": "group" - }, - "sub_section": "/packages/18/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/19/inner_section_definitions/0", - "repeats": false - }, - { - "m_def": "nomad.metainfo.metainfo.SubSection", - "m_parent_index": 1, - "m_parent_sub_section": "sub_sections", "name": "naive_point_cloud_density_map", "variable": false, "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/19/inner_section_definitions/1", + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/19/inner_section_definitions/0", "repeats": false } ], @@ -62002,31 +64289,6 @@ "m_def": "nomad.metainfo.metainfo.Section", "m_parent_index": 0, "m_parent_sub_section": "inner_section_definitions", - "name": "parameter", - "description": "Different reconstruction protocols exist. Although these approaches\nare qualitatively similar, each protocol uses different parameters\n(and interprets these differently). The source code to IVAS/APSuite\nis not open. For now users should store reconstruction parameter\nin a collection.", - "links": [ - "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-reconstruction-parameter-group" - ], - "more": { - "nx_kind": "group", - "nx_category": "base", - "nx_name": "parameter", - "nx_type": "NXcollection", - "nx_optional": false, - "nx_extends": "NXobject", - "nx_ignoreExtraGroups": "true", - "nx_ignoreExtraFields": "true", - "nx_ignoreExtraAttributes": "true", - "nx_recommended": "true" - }, - "base_sections": [ - "/packages/18/section_definitions/15" - ] - }, - { - "m_def": "nomad.metainfo.metainfo.Section", - "m_parent_index": 1, - "m_parent_sub_section": "inner_section_definitions", "name": "naive_point_cloud_density_map", "description": "To get a first overview of the reconstructed dataset,\nthe format conversion computes a simple 3d histogram\nof the ion density using one nanometer cubic bins without\napplying smoothening algorithms on this histogram.", "links": [ @@ -62041,14 +64303,14 @@ "nx_extends": "NXobject" }, "base_sections": [ - "/packages/18/section_definitions/93" + "/packages/20/section_definitions/150" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "default", + "name": "default__attribute", "variable": false, "more": { "nx_name": "default" @@ -62065,7 +64327,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "program", + "name": "program__field", "description": "Given name of the program that was used to perform this computation.\nApart from the classical approach to use AMETEK software for this\nprocessing step, a number of open-source alternative tools exists.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-reconstruction-naive-point-cloud-density-map-program-field" @@ -62086,7 +64348,7 @@ "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", - "name": "version", + "name": "version__attribute", "variable": false, "more": { "nx_name": "version", @@ -62111,7 +64373,7 @@ "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/19/inner_section_definitions/1/inner_section_definitions/0", + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/19/inner_section_definitions/0/inner_section_definitions/0", "repeats": true } ], @@ -62136,14 +64398,14 @@ "nx_ignoreExtraAttributes": "true" }, "base_sections": [ - "/packages/18/section_definitions/25" + "/packages/20/section_definitions/71" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "auxiliary_signals", + "name": "auxiliary_signals__attribute", "variable": false, "more": { "nx_name": "auxiliary_signals" @@ -62158,7 +64420,7 @@ "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 1, "m_parent_sub_section": "attributes", - "name": "signal", + "name": "signal__attribute", "variable": false, "more": { "nx_name": "signal" @@ -62173,7 +64435,7 @@ "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 2, "m_parent_sub_section": "attributes", - "name": "axes", + "name": "axes__attribute", "variable": false, "more": { "nx_name": "axes" @@ -62188,7 +64450,7 @@ "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 3, "m_parent_sub_section": "attributes", - "name": "AXISNAME_indices", + "name": "AXISNAME_indices__attribute", "variable": true, "more": { "nx_name": "AXISNAME_indices", @@ -62204,7 +64466,7 @@ "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 4, "m_parent_sub_section": "attributes", - "name": "long_name", + "name": "long_name__attribute", "variable": false, "more": { "nx_name": "long_name" @@ -62221,7 +64483,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "counts", + "name": "counts__field", "description": "Array of counts for each bin.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-reconstruction-naive-point-cloud-density-map-data-counts-field" @@ -62250,7 +64512,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "zpos", + "name": "zpos__field", "description": "Bin positions along the z axis.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-reconstruction-naive-point-cloud-density-map-data-zpos-field" @@ -62275,7 +64537,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 2, "m_parent_sub_section": "quantities", - "name": "ypos", + "name": "ypos__field", "description": "Bin positions along the y axis.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-reconstruction-naive-point-cloud-density-map-data-ypos-field" @@ -62300,7 +64562,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 3, "m_parent_sub_section": "quantities", - "name": "xpos", + "name": "xpos__field", "description": "Bin positions along the x axis.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-reconstruction-naive-point-cloud-density-map-data-xpos-field" @@ -62349,14 +64611,14 @@ "nx_recommended": "true" }, "base_sections": [ - "/packages/18/section_definitions/93" + "/packages/20/section_definitions/150" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "default", + "name": "default__attribute", "variable": false, "more": { "nx_name": "default" @@ -62373,7 +64635,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "program", + "name": "program__field", "description": "Given name of the program that was used to perform this computation.\nApart from the classical approach to use AMETEK software for this\nprocessing step, a number of open-source alternative tools exists.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-program-field" @@ -62394,7 +64656,7 @@ "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", - "name": "version", + "name": "version__attribute", "variable": false, "more": { "nx_name": "version", @@ -62412,8 +64674,8 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "number_of_ion_types", - "description": "How many ion types are distinguished.\nIf no ranging was performed each ion is of the special unknown type.", + "name": "number_of_ion_types__field", + "description": "How many ion types are distinguished.\nIf no ranging was performed each ion is of the special unknown type.\nThe iontype ID of this unknown type is 0 which is a reserve value.\nConsequently, iontypes start counting from 1.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-number-of-ion-types-field" ], @@ -62437,8 +64699,8 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 2, "m_parent_sub_section": "quantities", - "name": "maximum_number_of_atoms_per_molecular_ion", - "description": "Assumed maximum value that suffices to store all relevant\nmolecular ions, even the most complicated ones. \nCurrently a value of 32 is used.", + "name": "maximum_number_of_atoms_per_molecular_ion__field", + "description": "Assumed maximum value that suffices to store all relevant\nmolecular ions, even the most complicated ones.\nCurrently a value of 32 is used.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-maximum-number-of-atoms-per-molecular-ion-field" ], @@ -62469,7 +64731,7 @@ "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/20/inner_section_definitions/0", + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/20/inner_section_definitions/0", "repeats": false }, { @@ -62481,7 +64743,7 @@ "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/20/inner_section_definitions/1", + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/20/inner_section_definitions/1", "repeats": false }, { @@ -62493,7 +64755,7 @@ "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/20/inner_section_definitions/2", + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/20/inner_section_definitions/2", "repeats": false }, { @@ -62505,7 +64767,7 @@ "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/20/inner_section_definitions/3", + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/20/inner_section_definitions/3", "repeats": false } ], @@ -62515,7 +64777,7 @@ "m_parent_index": 0, "m_parent_sub_section": "inner_section_definitions", "name": "mass_to_charge_distribution", - "description": "Specifies the computation of the mass-to-charge histogram.\nUsually mass-to-charge values are studied as an ensemble quantity,\nspecifically these values are binned.\nThe (NXprocess) stores the settings of this binning.", + "description": "Specifies the computation of the mass-to-charge histogram.\nUsually mass-to-charge values are studied as an ensemble quantity,\nspecifically these values are binned.\nThis (NXprocess) stores the settings of this binning.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-mass-to-charge-distribution-group" ], @@ -62529,14 +64791,14 @@ "nx_recommended": "true" }, "base_sections": [ - "/packages/18/section_definitions/93" + "/packages/20/section_definitions/150" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "default", + "name": "default__attribute", "variable": false, "more": { "nx_name": "default" @@ -62553,7 +64815,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "program", + "name": "program__field", "description": "Given name of the program that was used to perform this computation.\nApart from the classical approach to use AMETEK software for this\nprocessing step, a number of open-source alternative tools exists.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-mass-to-charge-distribution-program-field" @@ -62574,7 +64836,7 @@ "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", - "name": "version", + "name": "version__attribute", "variable": false, "more": { "nx_name": "version", @@ -62592,8 +64854,8 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "range_minmax", - "description": "Smallest and largest mass-to-charge value.", + "name": "range_minmax__field", + "description": "Smallest and largest mass-to-charge-state ratio value.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-mass-to-charge-distribution-range-minmax-field" ], @@ -62618,8 +64880,8 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 2, "m_parent_sub_section": "quantities", - "name": "range_increment", - "description": "Binning width", + "name": "range_increment__field", + "description": "Binning width of the mass-to-charge-state ratio values.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-mass-to-charge-distribution-range-increment-field" ], @@ -62649,7 +64911,7 @@ "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/20/inner_section_definitions/0/inner_section_definitions/0", + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/20/inner_section_definitions/0/inner_section_definitions/0", "repeats": false } ], @@ -62674,14 +64936,14 @@ "nx_ignoreExtraAttributes": "true" }, "base_sections": [ - "/packages/18/section_definitions/25" + "/packages/20/section_definitions/71" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "auxiliary_signals", + "name": "auxiliary_signals__attribute", "variable": false, "more": { "nx_name": "auxiliary_signals" @@ -62696,7 +64958,7 @@ "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 1, "m_parent_sub_section": "attributes", - "name": "signal", + "name": "signal__attribute", "variable": false, "more": { "nx_name": "signal" @@ -62711,7 +64973,7 @@ "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 2, "m_parent_sub_section": "attributes", - "name": "axes", + "name": "axes__attribute", "variable": false, "more": { "nx_name": "axes" @@ -62726,7 +64988,7 @@ "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 3, "m_parent_sub_section": "attributes", - "name": "AXISNAME_indices", + "name": "AXISNAME_indices__attribute", "variable": true, "more": { "nx_name": "AXISNAME_indices", @@ -62742,7 +65004,7 @@ "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 4, "m_parent_sub_section": "attributes", - "name": "long_name", + "name": "long_name__attribute", "variable": false, "more": { "nx_name": "long_name" @@ -62759,7 +65021,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "counts", + "name": "counts__field", "description": "Array of counts for each bin.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-mass-to-charge-distribution-mass-spectrum-counts-field" @@ -62786,8 +65048,8 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "bin_ends", - "description": "End of mass-to-charge-state ratio bin.", + "name": "bin_ends__field", + "description": "End of value for each mass-to-charge-state ratio bin.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-mass-to-charge-distribution-mass-spectrum-bin-ends-field" ], @@ -62829,14 +65091,14 @@ "nx_recommended": "true" }, "base_sections": [ - "/packages/18/section_definitions/93" + "/packages/20/section_definitions/150" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "default", + "name": "default__attribute", "variable": false, "more": { "nx_name": "default" @@ -62853,7 +65115,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "program", + "name": "program__field", "description": "Given name of the program that was used to perform this computation.\nApart from the classical approach to use AMETEK software for this\nprocessing step, a number of open-source alternative tools exists.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-background-quantification-program-field" @@ -62874,7 +65136,7 @@ "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", - "name": "version", + "name": "version__attribute", "variable": false, "more": { "nx_name": "version", @@ -62895,7 +65157,7 @@ "m_parent_index": 2, "m_parent_sub_section": "inner_section_definitions", "name": "peak_search_and_deconvolution", - "description": "How where peaks in the background-corrected \nmass-to-charge histogram identified?", + "description": "How where peaks in the background-corrected in the histogram\nof mass-to-charge-state ratio values identified?", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-peak-search-and-deconvolution-group" ], @@ -62909,14 +65171,14 @@ "nx_recommended": "true" }, "base_sections": [ - "/packages/18/section_definitions/93" + "/packages/20/section_definitions/150" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "default", + "name": "default__attribute", "variable": false, "more": { "nx_name": "default" @@ -62933,7 +65195,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "program", + "name": "program__field", "description": "Given name of the program that was used to perform this computation.\nApart from the classical approach to use AMETEK software for this\nprocessing step, a number of open-source alternative tools exists.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-peak-search-and-deconvolution-program-field" @@ -62954,7 +65216,7 @@ "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", - "name": "version", + "name": "version__attribute", "variable": false, "more": { "nx_name": "version", @@ -62979,7 +65241,7 @@ "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/20/inner_section_definitions/2/inner_section_definitions/0", + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/20/inner_section_definitions/2/inner_section_definitions/0", "repeats": true } ], @@ -62999,41 +65261,97 @@ "nx_name": "NXpeak", "nx_type": "NXpeak", "nx_optional": false, - "nx_extends": "NXobject" + "nx_extends": "NXobject", + "nx_minOccurs": "0", + "nx_maxOccurs": "unbounded" }, "base_sections": [ - "/packages/18/section_definitions/89" - ] - } - ] - }, - { - "m_def": "nomad.metainfo.metainfo.Section", - "m_parent_index": 3, - "m_parent_sub_section": "inner_section_definitions", - "name": "peak_identification", - "description": "Details about how peaks, with taking into account\nerror models, were interpreted as ion types or not.", - "links": [ - "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-peak-identification-group" - ], - "more": { - "nx_kind": "group", - "nx_category": "base", - "nx_name": "peak_identification", - "nx_type": "NXprocess", - "nx_optional": false, - "nx_extends": "NXobject", - "nx_recommended": "true" - }, + "/packages/20/section_definitions/145" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "label__field", + "description": "Human-readable identifier to specify which concept/entity\nthe peak represents/identifies.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-peak-search-and-deconvolution-peak-label-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "label", + "nx_optional": false, + "nx_recommended": "true" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "peak_model__field", + "description": "Is the peak described analytically via a functional form\nor is it empirically defined via measured/reported\nintensity/counts as a function of an independent variable.\n\nIf the functional form is not empirical or gaussian, users\nshould enter other for the peak_model and add relevant details\nin the NXcollection.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-peak-search-and-deconvolution-peak-peak-model-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "peak_model", + "nx_optional": false + }, + "type": { + "type_kind": "Enum", + "type_data": [ + "empirical", + "gaussian", + "lorentzian", + "other" + ] + }, + "shape": [], + "flexible_unit": true + } + ] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 3, + "m_parent_sub_section": "inner_section_definitions", + "name": "peak_identification", + "description": "Details about how peaks, with taking into account\nerror models, were interpreted as ion types or not.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-peak-identification-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "peak_identification", + "nx_type": "NXprocess", + "nx_optional": false, + "nx_extends": "NXobject", + "nx_recommended": "true" + }, "base_sections": [ - "/packages/18/section_definitions/93" + "/packages/20/section_definitions/150" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "default", + "name": "default__attribute", "variable": false, "more": { "nx_name": "default" @@ -63050,7 +65368,7 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "program", + "name": "program__field", "description": "Given name of the program that was used to perform this computation.\nApart from the classical approach to use AMETEK software for this\nprocessing step, a number of open-source alternative tools exists.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-peak-identification-program-field" @@ -63071,7 +65389,7 @@ "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", - "name": "version", + "name": "version__attribute", "variable": false, "more": { "nx_name": "version", @@ -63096,7 +65414,7 @@ "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/20/inner_section_definitions/3/inner_section_definitions/0", + "sub_section": "/packages/20/section_definitions/3/inner_section_definitions/0/inner_section_definitions/7/inner_section_definitions/20/inner_section_definitions/3/inner_section_definitions/0", "repeats": true } ], @@ -63119,14 +65437,14 @@ "nx_extends": "NXobject" }, "base_sections": [ - "/packages/18/section_definitions/67" + "/packages/20/section_definitions/118" ], "quantities": [ { "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "isotope_vector", + "name": "isotope_vector__field", "description": "A vector of isotope hash values.\nThese values have to be stored in an array, sorted in decreasing order.\nThe array is filled with zero hash values indicating unused places.\nThe individual hash values are built with the following hash function:\n\nThe hash value :math:`H` is :math:`H = Z + N*256` with :math:`Z`\nthe number of protons and :math:`N` the number of neutrons\nof each isotope respectively.\n\nZ and N have to be 8-bit unsigned integers.\nFor the rationale behind this `M. K\u00fchbach et al. (2021) `_", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-peak-identification-ion-isotope-vector-field" @@ -63151,18 +65469,19 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "charge_state", - "description": "Signed charge state of the ion in multiples of electron charge.\n\nOnly positive values will be measured in atom probe microscopy as the\nions are accelerated by a negatively signed bias electric field.\nIn the case that the charge state is not explicitly recoverable,\nthe value should be set to zero.\n\nIn atom probe microscopy this is for example the case when using\nclassical range file formats like RNG, RRNG for atom probe data.\nThese file formats do not document the charge state explicitly.\nThey report the number of atoms of each element per molecular ion\nsurplus the mass-to-charge-state-ratio interval.\nWith this it is possible to recover the charge state only for\nspecific molecular ions as the accumulated mass of the molecular ion\nis defined by the isotopes, which without knowing the charge leads\nto an underconstrained problem.\nDetails on ranging can be found in the literature: `M. K. Miller `_", + "name": "nuclid_list__field", + "description": "A supplementary row vector which decodes the isotope_vector into\na human-readable matrix of nuclids with the following formatting:\n\nThe first row specifies the isotope mass, i.e. using the hashvalues from\nthe isotope_vector this is :math:`Z + N`. As an example for a carbon-14\nisotope the number is 14.\nThe second row specifies the number of protons :math:`Z`, e.g. 6 for the\ncarbon-14 example. This row matrix is thus a mapping the notation of\nusing superscribed isotope mass and subscripted number of protons to identify\nisotopes.\nUnused places filling up to n_ivecmax should be filled with zero.", "links": [ - "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-peak-identification-ion-charge-state-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-peak-identification-ion-nuclid-list-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_UINT", - "nx_name": "charge_state", - "nx_units": "NX_DIMENSIONLESS", - "nx_optional": false + "nx_name": "nuclid_list", + "nx_units": "NX_UNITLESS", + "nx_optional": false, + "nx_recommended": "true" }, "type": { "type_kind": "numpy", @@ -63176,7 +65495,32 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 2, "m_parent_sub_section": "quantities", - "name": "mass_to_charge_range", + "name": "charge_state__field", + "description": "Signed charge state of the ion in multiples of electron charge.\n\nOnly positive values will be measured in atom probe microscopy as the\nions are accelerated by a negatively signed bias electric field.\nIn the case that the charge state is not explicitly recoverable,\nthe value should be set to zero.\n\nIn atom probe microscopy this is for example the case when using\nclassical range file formats like RNG, RRNG for atom probe data.\nThese file formats do not document the charge state explicitly.\nThey report the number of atoms of each element per molecular ion\nsurplus the mass-to-charge-state-ratio interval.\nWith this it is possible to recover the charge state only for\nspecific molecular ions as the accumulated mass of the molecular ion\nis defined by the isotopes, which without knowing the charge leads\nto an underconstrained problem.\nDetails on ranging can be found in the literature: `M. K. Miller `_", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-peak-identification-ion-charge-state-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_INT", + "nx_name": "charge_state", + "nx_units": "NX_CHARGE", + "nx_optional": "true" + }, + "type": { + "type_kind": "numpy", + "type_data": "int64" + }, + "shape": [], + "dimensionality": "[charge]", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 3, + "m_parent_sub_section": "quantities", + "name": "mass_to_charge_range__field", "description": "Associated lower (mqmin) and upper (mqmax) bounds of \nmass-to-charge-state ratio interval(s) [mqmin, mqmax]\n(boundaries included) for which the respective ion is labelled\nas an ion of the here referred to ion_type.", "links": [ "https://manual.nexusformat.org/classes/contributed_definitions/NXapm.html#nxapm-entry-atom-probe-ranging-peak-identification-ion-mass-to-charge-range-field" @@ -63193,10 +65537,7 @@ "type_kind": "numpy", "type_data": "float64" }, - "shape": [ - "n_ranges", - 2 - ], + "shape": [], "flexible_unit": true } ] @@ -63215,35 +65556,231 @@ "m_def": "nomad.metainfo.metainfo.Section", "m_parent_index": 4, "m_parent_sub_section": "section_definitions", - "name": "NXarchive", - "description": "This is a definition for data to be archived by ICAT (http://www.icatproject.org/).\n\n.. text from the icatproject.org site\n\n the database (with supporting software) that provides an \n interface to all ISIS experimental data and will provide \n a mechanism to link all aspects of ISIS research from \n proposal through to publication. ", + "name": "NXapm_input_ranging", + "description": "Metadata to ranging definitions made for a dataset in atom probe microscopy.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-group", - "http://www.icatproject.org/" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-input-ranging.html#nxapm-input-ranging-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXapm_input_ranging", + "nx_type": "group", + "nx_optional": true, + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/138" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "filename__field", + "description": "Name of (NeXus)/HDF5 file which stores ranging definitions which define\nhow mass-to-charge-state ratios map to iontypes and which iontypes are\ndistinguished. The UNKNOWNTYPE iontype (unranged) is the default iontype.\nThe ID of this special iontype is always reserved as 0. Each ion\nis assigned to the UNKNOWNTYPE by default. Iontypes are assigned\nby checking if the mass-to-charge-state ratio of an ion matches\nto any of the defined mass-to-charge-state ratio intervals.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-input-ranging.html#nxapm-input-ranging-filename-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "filename", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true, + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "version__attribute", + "variable": false, + "more": { + "nx_name": "version", + "nx_type": "NX_CHAR" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "group_name_iontypes__field", + "description": "Name of the group (prefix to the individual ranging definitions)\ninside the HDF5 file which refers to the ranging definition to use.\nA HDF5 file can store multiple ranging definitions. Using an ID is\nthe mechanism to distinguish which specific ranging (version) will\nbe processed. Reconstruction and ranging IDs can differ.\nThey specify different IDs.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-input-ranging.html#nxapm-input-ranging-group-name-iontypes-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "group_name_iontypes", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 5, + "m_parent_sub_section": "section_definitions", + "name": "NXapm_input_reconstruction", + "description": "Metadata of a dataset (tomographic reconstruction) in atom probe microscopy.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-input-reconstruction.html#nxapm-input-reconstruction-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXapm_input_reconstruction", + "nx_type": "group", + "nx_optional": true, + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/138" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "filename__field", + "description": "Name of the (NeXus)/HDF5 file which stores reconstructed ion position\nand mass-to-charge-state ratios. Such an HDF5 file can store multiple\nreconstructions. Using an identifier (ID) is the mechanism which\nparaprobe uses to distinguish which specific reconstruction will\nbe processed. With this design it is possible that the same HDF5\nfile stores multiple versions of a reconstruction of e.g. the same\nor different measured datasets, respectively.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-input-reconstruction.html#nxapm-input-reconstruction-filename-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "filename", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true, + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "version__attribute", + "variable": false, + "more": { + "nx_name": "version", + "nx_type": "NX_CHAR" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "dataset_name_reconstruction__field", + "description": "Name of the dataset inside the HDF5 file which refers to the\nspecific reconstructed ion positions to use for this analysis.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-input-reconstruction.html#nxapm-input-reconstruction-dataset-name-reconstruction-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "dataset_name_reconstruction", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "dataset_name_mass_to_charge__field", + "description": "Name of the dataset inside the HDF5 file which refers to the\nspecific mass-to-charge-state ratios to use for this analysis.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-input-reconstruction.html#nxapm-input-reconstruction-dataset-name-mass-to-charge-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "dataset_name_mass_to_charge", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 6, + "m_parent_sub_section": "section_definitions", + "name": "NXapm_paraprobe_config_clusterer", + "description": "Configuration of a paraprobe-clusterer tool run in atom probe microscopy.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-group" ], "more": { "nx_kind": "group", "nx_category": "application", - "nx_name": "NXarchive", + "nx_name": "NXapm_paraprobe_config_clusterer", "nx_type": "group", "nx_optional": false, "nx_extends": "NXobject" }, "base_sections": [ - "/packages/18/section_definitions/83" + "/packages/20/section_definitions/138" ], "sub_sections": [ { "m_def": "nomad.metainfo.metainfo.SubSection", "m_parent_index": 0, "m_parent_sub_section": "sub_sections", - "name": "entry", - "variable": false, + "name": "ENTRY", + "variable": true, "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/4/inner_section_definitions/0", - "repeats": false + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0", + "repeats": true } ], "inner_section_definitions": [ @@ -63251,28 +65788,28 @@ "m_def": "nomad.metainfo.metainfo.Section", "m_parent_index": 0, "m_parent_sub_section": "inner_section_definitions", - "name": "entry", - "description": "(**required**) :ref:`NXentry` describes the measurement.\n\nThe top-level NeXus group which contains all the data and associated\ninformation that comprise a single measurement.\nIt is mandatory that there is at least one\ngroup of this type in the NeXus file. ", + "name": "NXentry", + "description": "(**required**) :ref:`NXentry` describes the measurement. \n\nThe top-level NeXus group which contains all the data and associated\ninformation that comprise a single measurement. \nIt is mandatory that there is at least one\ngroup of this type in the NeXus file.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-group" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-group" ], "more": { "nx_kind": "group", "nx_category": "base", - "nx_name": "entry", + "nx_name": "NXentry", "nx_type": "NXentry", "nx_optional": false, "nx_extends": "NXobject" }, "base_sections": [ - "/packages/18/section_definitions/39" + "/packages/20/section_definitions/86" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "default", + "name": "default__attribute", "variable": false, "more": { "nx_name": "default" @@ -63287,7 +65824,7 @@ "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 1, "m_parent_sub_section": "attributes", - "name": "IDF_Version", + "name": "IDF_Version__attribute", "variable": true, "more": { "nx_name": "IDF_Version" @@ -63302,10 +65839,10 @@ "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 2, "m_parent_sub_section": "attributes", - "name": "index", + "name": "version__attribute", "variable": false, "more": { - "nx_name": "index" + "nx_name": "version" }, "type": { "type_kind": "python", @@ -63319,41 +65856,77 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "title", - "description": "Extended title for entry", + "name": "definition__field", + "description": "Official NeXus NXDL schema with which this file was written.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-title-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-definition-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_CHAR", - "nx_name": "title", + "nx_name": "definition", "nx_optional": false, - "nx_minOccurs": "0", + "nx_minOccurs": "1", "nx_maxOccurs": "1" }, "type": { - "type_kind": "python", - "type_data": "str" + "type_kind": "Enum", + "type_data": [ + "NXapm_paraprobe_config_clusterer" + ] }, "shape": [], - "flexible_unit": true + "flexible_unit": true, + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "version__attribute", + "variable": false, + "more": { + "nx_name": "version", + "nx_type": "NX_CHAR" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + }, + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 1, + "m_parent_sub_section": "attributes", + "name": "URL__attribute", + "variable": true, + "more": { + "nx_name": "URL", + "nx_type": "NX_CHAR" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } + ] }, { "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "experiment_identifier", - "description": "unique identifier for the experiment", + "name": "program__field", + "description": "Given name of the program/software/tool with which this NeXus\n(configuration) file was generated.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-experiment-identifier-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-program-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_CHAR", - "nx_name": "experiment_identifier", + "nx_name": "program", "nx_optional": false }, "type": { @@ -63361,24 +65934,41 @@ "type_data": "str" }, "shape": [], - "flexible_unit": true + "flexible_unit": true, + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "version__attribute", + "variable": false, + "more": { + "nx_name": "version", + "nx_type": "NX_CHAR" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } + ] }, { "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 2, "m_parent_sub_section": "quantities", - "name": "experiment_description", - "description": "Brief description of the experiment and its objectives", + "name": "analysis_identifier__field", + "description": "Ideally, a (globally persistent) unique identifier for referring\nto this analysis.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-experiment-description-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-analysis-identifier-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_CHAR", - "nx_name": "experiment_description", - "nx_optional": "true", - "nx_recommended": "true" + "nx_name": "analysis_identifier", + "nx_optional": "true" }, "type": { "type_kind": "python", @@ -63391,17 +65981,17 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 3, "m_parent_sub_section": "quantities", - "name": "collection_identifier", - "description": "ID of user or DAQ define group of data files ", + "name": "analysis_description__field", + "description": "Possibility for leaving a free-text description about this analysis.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-collection-identifier-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-analysis-description-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_CHAR", - "nx_name": "collection_identifier", - "nx_optional": false + "nx_name": "analysis_description", + "nx_optional": "true" }, "type": { "type_kind": "python", @@ -63414,91 +66004,17 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 4, "m_parent_sub_section": "quantities", - "name": "collection_description", - "description": "Brief summary of the collection, including grouping criteria ", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-collection-description-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "collection_description", - "nx_optional": false - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [], - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 5, - "m_parent_sub_section": "quantities", - "name": "entry_identifier", - "description": "unique identifier for this measurement as provided by the facility", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-entry-identifier-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "entry_identifier", - "nx_optional": false - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [], - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 6, - "m_parent_sub_section": "quantities", - "name": "start_time", - "description": "Starting time of measurement", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-start-time-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_DATE_TIME", - "nx_name": "start_time", - "nx_optional": false, - "nx_minOccurs": "0", - "nx_maxOccurs": "1" - }, - "type": { - "type_kind": "custom", - "type_data": "nomad.metainfo.metainfo._Datetime" - }, - "shape": [], - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 7, - "m_parent_sub_section": "quantities", - "name": "end_time", - "description": "Ending time of measurement", + "name": "time_stamp__field", + "description": "ISO 8601 formatted time code with local time zone offset to UTC\ninformation included when this configuration file was created.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-end-time-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-time-stamp-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_DATE_TIME", - "nx_name": "end_time", - "nx_optional": false, - "nx_recommended": "true", - "nx_minOccurs": "0", - "nx_maxOccurs": "1" + "nx_name": "time_stamp", + "nx_optional": false }, "type": { "type_kind": "custom", @@ -63509,240 +66025,27 @@ }, { "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 8, - "m_parent_sub_section": "quantities", - "name": "duration", - "description": "TODO: needs documentation", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-duration-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "duration", - "nx_units": "NX_TIME", - "nx_optional": false - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [], - "dimensionality": "[time]", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 9, + "m_parent_index": 5, "m_parent_sub_section": "quantities", - "name": "collection_time", - "description": "TODO: needs documentation", + "name": "number_of_processes__field", + "description": "How many clustering processes should the tool execute.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-collection-time-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-number-of-processes-field" ], "variable": false, "more": { "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "collection_time", - "nx_units": "NX_TIME", + "nx_type": "NX_UINT", + "nx_name": "number_of_processes", + "nx_units": "NX_UNITLESS", "nx_optional": false }, "type": { "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [], - "dimensionality": "[time]", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 10, - "m_parent_sub_section": "quantities", - "name": "run_cycle", - "description": "TODO: needs documentation", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-run-cycle-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "run_cycle", - "nx_optional": false - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [], - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 11, - "m_parent_sub_section": "quantities", - "name": "revision", - "description": "revision ID of this file, may be after recalibration, reprocessing etc.", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-revision-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "revision", - "nx_optional": false - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [], - "flexible_unit": true, - "attributes": [ - { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "comment", - "variable": false, - "more": { - "nx_name": "comment" - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [] - } - ] - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 12, - "m_parent_sub_section": "quantities", - "name": "definition", - "description": "Official NeXus NXDL schema to which this file conforms ", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-definition-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "definition", - "nx_optional": false, - "nx_minOccurs": "1", - "nx_maxOccurs": "1" - }, - "type": { - "type_kind": "Enum", - "type_data": [ - "NXarchive" - ] - }, - "shape": [], - "flexible_unit": true, - "attributes": [ - { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "version", - "variable": false, - "more": { - "nx_name": "version", - "nx_type": "NX_CHAR" - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [] - }, - { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 1, - "m_parent_sub_section": "attributes", - "name": "URL", - "variable": true, - "more": { - "nx_name": "URL" - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [] - } - ] - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 13, - "m_parent_sub_section": "quantities", - "name": "program", - "description": "The program and version used for generating this file", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-program-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "program", - "nx_optional": false - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [], - "flexible_unit": true, - "attributes": [ - { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "version", - "variable": false, - "more": { - "nx_name": "version" - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [] - } - ] - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 14, - "m_parent_sub_section": "quantities", - "name": "release_date", - "description": "when this file is to be released into PD", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-release-date-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "release_date", - "nx_units": "NX_TIME", - "nx_optional": false - }, - "type": { - "type_kind": "python", - "type_data": "str" + "type_data": "uint64" }, "shape": [], - "dimensionality": "[time]", + "dimensionality": "1", "flexible_unit": true } ], @@ -63751,36 +66054,24 @@ "m_def": "nomad.metainfo.metainfo.SubSection", "m_parent_index": 0, "m_parent_sub_section": "sub_sections", - "name": "user", + "name": "cameca_to_nexus", "variable": false, "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/4/inner_section_definitions/0/inner_section_definitions/0", + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/0", "repeats": false }, { "m_def": "nomad.metainfo.metainfo.SubSection", "m_parent_index": 1, "m_parent_sub_section": "sub_sections", - "name": "instrument", - "variable": false, - "more": { - "nx_kind": "group" - }, - "sub_section": "/packages/18/section_definitions/4/inner_section_definitions/0/inner_section_definitions/1", - "repeats": false - }, - { - "m_def": "nomad.metainfo.metainfo.SubSection", - "m_parent_index": 2, - "m_parent_sub_section": "sub_sections", - "name": "sample", + "name": "cluster_analysis", "variable": false, "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/4/inner_section_definitions/0/inner_section_definitions/2", + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/1", "repeats": false } ], @@ -63789,28 +66080,30 @@ "m_def": "nomad.metainfo.metainfo.Section", "m_parent_index": 0, "m_parent_sub_section": "inner_section_definitions", - "name": "user", - "description": "Contact information for a user. \n\nThe format allows more \nthan one user with the same affiliation and contact information, \nbut a second :ref:`NXuser` group should be used if they have different \naffiliations, etc.", + "name": "cameca_to_nexus", + "description": "This process maps results from cluster analyses performed with IVAS/APSuite\ninto an interoperable representation. Specifically in this process\nparaprobe-clusterer takes results from clustering methods from other tools\nof the APM community, like IVAS/APSuite. These results are usually reported\nin two ways. Either as an explicit list of reconstructed ion positions.\nIn the case of IVAS these positions are reported through a text file\nwith a cluster label for each position.\n\nAlternatively, the list of positions is reported, as it is the case for\nAMETEK (IVAS/AP Suite) but the cluster labels are specified implicitly\nonly in the following way: The mass-to-charge-state ratio column of a\nwhat is effectively a file formatted like POS is used to assign a hypothetical\nmass-to-charge value which resolves a floating point representation\nof the cluster ID.\n\nAnother case can occur where all disjoint floating point values,\ni.e. here cluster labels, are reported and then a dictionary is created\nhow each value matches to a cluster ID.\n\nIn general the cluster ID zero is reserved for marking the dataset\nas to not be assigned to any cluster. Therefore, indices of disjoint\nclusters start at 1.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-user-group" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-group" ], "more": { "nx_kind": "group", "nx_category": "base", - "nx_name": "user", - "nx_type": "NXuser", + "nx_name": "cameca_to_nexus", + "nx_type": "NXprocess", "nx_optional": false, - "nx_extends": "NXobject" + "nx_extends": "NXobject", + "nx_minOccurs": "0", + "nx_maxOccurs": "1" }, "base_sections": [ - "/packages/18/section_definitions/140" + "/packages/20/section_definitions/150" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "default", + "name": "default__attribute", "variable": false, "more": { "nx_name": "default" @@ -63827,16 +66120,16 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "name", - "description": "Name of user responsible for this entry", + "name": "ion_position_filename__field", + "description": "Name of HDF5 file which stores reconstructed ion positions.\nThis file should have been generated by from the community or vendor format.\nThis file not necessarily contains all the of the dataset because\nspatial filters might have been applied in commercial software prior\nto executing the cluster analysis so that e.g. only positions within a\nROI are reported by the commercial software.\nPOS files from IVAS have to be converted first.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-user-name-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-ion-position-filename-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_CHAR", - "nx_name": "name", + "nx_name": "ion_position_filename", "nx_optional": false }, "type": { @@ -63850,16 +66143,16 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "role", - "description": "role of the user", + "name": "dataset_name_positions__field", + "description": "Name of the dataset inside the HDF5 file ion_position_filename\nwhich refers to the specific positions to use for this analysis.\nThe referred to dataset has to be formatted as an array of shape\n(n_positions, 3).", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-user-role-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-dataset-name-positions-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_CHAR", - "nx_name": "role", + "nx_name": "dataset_name_positions", "nx_optional": false }, "type": { @@ -63873,16 +66166,16 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 2, "m_parent_sub_section": "quantities", - "name": "facility_user_id", - "description": "ID of the user in the facility burocracy database", + "name": "cluster_indices_filename__field", + "description": "Name of the HDF5 file which stores mass-to-charge-state-ratio values\n(in the case of IVAS/APSuite) or other numbers which can be interpreted\nas cluster labels.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-user-facility-user-id-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-cluster-indices-filename-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_CHAR", - "nx_name": "facility_user_id", + "nx_name": "cluster_indices_filename", "nx_optional": false }, "type": { @@ -63891,110 +66184,132 @@ }, "shape": [], "flexible_unit": true - } - ] - }, - { - "m_def": "nomad.metainfo.metainfo.Section", - "m_parent_index": 1, - "m_parent_sub_section": "inner_section_definitions", - "name": "instrument", - "description": "Collection of the components of the instrument or beamline.\n\nTemplate of instrument descriptions comprising various beamline components. \nEach component will also be a NeXus group defined by its distance from the \nsample. Negative distances represent beamline components that are before the \nsample while positive distances represent components that are after the sample. \nThis device allows the unique identification of beamline components in a way \nthat is valid for both reactor and pulsed instrumentation.", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-instrument-group" - ], - "more": { - "nx_kind": "group", - "nx_category": "base", - "nx_name": "instrument", - "nx_type": "NXinstrument", - "nx_optional": false, - "nx_extends": "NXobject" - }, - "base_sections": [ - "/packages/18/section_definitions/65" - ], - "attributes": [ + }, { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "default", + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 3, + "m_parent_sub_section": "quantities", + "name": "dataset_name_cluster_indices__field", + "description": "Name of the dataset inside the HDF5 file cluster_indices_filename\nwhich refers to the specifically encoded cluster indices.\nThe referred to dataset has to be formatted as an array of shape\n(n_positions, 1).", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-dataset-name-cluster-indices-field" + ], "variable": false, "more": { - "nx_name": "default" + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "dataset_name_cluster_indices", + "nx_optional": false }, "type": { "type_kind": "python", "type_data": "str" }, - "shape": [] - } - ], - "quantities": [ + "shape": [], + "flexible_unit": true + }, { "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 0, + "m_parent_index": 4, "m_parent_sub_section": "quantities", - "name": "name", - "description": "Name of instrument", + "name": "mapping_dictionary_keyword__field", + "description": "The list of all keywords of a dictionary which maps implicit cluster\nindices like those from IVAS/APSuite which were0ass-to-charge-state ratios.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-instrument-name-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-mapping-dictionary-keyword-field" ], "variable": false, "more": { "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "name", - "nx_optional": false, - "nx_minOccurs": "1" + "nx_type": "NX_NUMBER", + "nx_name": "mapping_dictionary_keyword", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [ + "n_disjoint_clusters" + ], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 5, + "m_parent_sub_section": "quantities", + "name": "mapping_dictionary_value__field", + "description": "The list of all values of a dictionary which maps implicit cluster\nindices like those from IVAS/APSuite which were0ass-to-charge-state ratios.\nThe sequences of mapping_dictionary_keyword and mapping_dictionary_value\nhave to match.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-mapping-dictionary-value-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_UINT", + "nx_name": "mapping_dictionary_value", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [ + "n_disjoint_clusters" + ], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 6, + "m_parent_sub_section": "quantities", + "name": "recover_evaporation_id__field", + "description": "Specifies if the tool should try to recover for each position the closest\nmatching position from dataset/dataset_name_reconstruction (within\nfloating point accuracy). This can be useful for instance when users\nwish to recover the original evaporation ID which IVAS/AP Suite drops\nfor instance when writing their *.indexed.* cluster results files.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-recover-evaporation-id-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_BOOLEAN", + "nx_name": "recover_evaporation_id", + "nx_units": "NX_UNITLESS", + "nx_optional": false }, "type": { "type_kind": "python", - "type_data": "str" + "type_data": "bool" }, "shape": [], - "flexible_unit": true, - "attributes": [ - { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "short_name", - "variable": false, - "more": { - "nx_name": "short_name", - "nx_optional": "true" - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [] - } - ] + "dimensionality": "1", + "flexible_unit": true }, { "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 1, + "m_parent_index": 7, "m_parent_sub_section": "quantities", - "name": "description", - "description": "Brief description of the instrument", + "name": "recover_bitmask__field", + "description": "Specifies if the tool should try to recover, after a recovery of the\nevaporation IDs a bitmask which identifies which of the positions\nin dataset/dataset/dataset_name_reconstruction where covered\nby the IVAS/APSuite cluster analysis. This can be useful to recover\nthe region of interest.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-instrument-description-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-recover-bitmask-field" ], "variable": false, "more": { "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "description", + "nx_type": "NX_BOOLEAN", + "nx_name": "recover_bitmask", + "nx_units": "NX_UNITLESS", "nx_optional": false }, "type": { "type_kind": "python", - "type_data": "str" + "type_data": "bool" }, "shape": [], + "dimensionality": "1", "flexible_unit": true } ], @@ -64003,13 +66318,73 @@ "m_def": "nomad.metainfo.metainfo.SubSection", "m_parent_index": 0, "m_parent_sub_section": "sub_sections", - "name": "SOURCE", - "variable": true, + "name": "dataset", + "variable": false, "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/4/inner_section_definitions/0/inner_section_definitions/1/inner_section_definitions/0", - "repeats": true + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/0", + "repeats": false + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 1, + "m_parent_sub_section": "sub_sections", + "name": "iontypes", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/1", + "repeats": false + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 2, + "m_parent_sub_section": "sub_sections", + "name": "spatial_filter", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/2", + "repeats": false + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 3, + "m_parent_sub_section": "sub_sections", + "name": "evaporation_id_filter", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/3", + "repeats": false + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 4, + "m_parent_sub_section": "sub_sections", + "name": "iontype_filter", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/4", + "repeats": false + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 5, + "m_parent_sub_section": "sub_sections", + "name": "hit_multiplicity_filter", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/5", + "repeats": false } ], "inner_section_definitions": [ @@ -64017,90 +66392,148 @@ "m_def": "nomad.metainfo.metainfo.Section", "m_parent_index": 0, "m_parent_sub_section": "inner_section_definitions", - "name": "NXsource", - "description": "The neutron or x-ray storage ring/facility.", + "name": "dataset", + "description": "Metadata of a dataset (tomographic reconstruction) in atom probe microscopy.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-instrument-source-group" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-dataset-group" ], "more": { "nx_kind": "group", "nx_category": "base", - "nx_name": "NXsource", - "nx_type": "NXsource", + "nx_name": "dataset", + "nx_type": "NXapm_input_reconstruction", "nx_optional": false, "nx_extends": "NXobject" }, "base_sections": [ - "/packages/18/section_definitions/65/inner_section_definitions/23" + "/packages/20/section_definitions/5" ], - "attributes": [ + "quantities": [ { - "m_def": "nomad.metainfo.metainfo.Attribute", + "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "default", + "m_parent_sub_section": "quantities", + "name": "filename__field", + "description": "Name of the (NeXus)/HDF5 file which stores reconstructed ion position\nand mass-to-charge-state ratios. Such an HDF5 file can store multiple\nreconstructions. Using an identifier (ID) is the mechanism which\nparaprobe uses to distinguish which specific reconstruction will\nbe processed. With this design it is possible that the same HDF5\nfile stores multiple versions of a reconstruction of e.g. the same\nor different measured datasets, respectively.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-dataset-filename-field" + ], "variable": false, "more": { - "nx_name": "default" + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "filename", + "nx_optional": false }, "type": { "type_kind": "python", "type_data": "str" }, - "shape": [] - } - ], - "quantities": [ + "shape": [], + "flexible_unit": true, + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "version__attribute", + "variable": false, + "more": { + "nx_name": "version", + "nx_type": "NX_CHAR" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } + ] + }, { "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 0, + "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "type", - "description": "type of radiation source (pick one from the enumerated list and spell exactly)", + "name": "dataset_name_reconstruction__field", + "description": "Name of the dataset inside the HDF5 file which refers to the\nspecific reconstructed ion positions to use for this analysis.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-instrument-source-type-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-dataset-dataset-name-reconstruction-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_CHAR", - "nx_name": "type", - "nx_optional": false, - "nx_minOccurs": "0", - "nx_maxOccurs": "1" + "nx_name": "dataset_name_reconstruction", + "nx_optional": false }, "type": { - "type_kind": "Enum", - "type_data": [ - "Spallation Neutron Source", - "Pulsed Reactor Neutron Source", - "Reactor Neutron Source", - "Synchrotron X-Ray Source", - "Pulsed Muon Source", - "Rotating Anode X-Ray", - "Fixed Tube X-Ray" - ] + "type_kind": "python", + "type_data": "str" }, "shape": [], "flexible_unit": true }, { "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 1, + "m_parent_index": 2, "m_parent_sub_section": "quantities", - "name": "name", - "description": "Name of source", + "name": "dataset_name_mass_to_charge__field", + "description": "Name of the dataset inside the HDF5 file which refers to the\nspecific mass-to-charge-state ratios to use for this analysis.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-instrument-source-name-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-dataset-dataset-name-mass-to-charge-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_CHAR", - "nx_name": "name", - "nx_optional": false, - "nx_minOccurs": "0", - "nx_maxOccurs": "1" + "nx_name": "dataset_name_mass_to_charge", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 1, + "m_parent_sub_section": "inner_section_definitions", + "name": "iontypes", + "description": "Metadata to ranging definitions made for a dataset in atom probe microscopy.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-iontypes-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "iontypes", + "nx_type": "NXapm_input_ranging", + "nx_optional": false, + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/4" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "filename__field", + "description": "Name of (NeXus)/HDF5 file which stores ranging definitions which define\nhow mass-to-charge-state ratios map to iontypes and which iontypes are\ndistinguished. The UNKNOWNTYPE iontype (unranged) is the default iontype.\nThe ID of this special iontype is always reserved as 0. Each ion\nis assigned to the UNKNOWNTYPE by default. Iontypes are assigned\nby checking if the mass-to-charge-state ratio of an ion matches\nto any of the defined mass-to-charge-state ratio intervals.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-iontypes-filename-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "filename", + "nx_optional": false }, "type": { "type_kind": "python", @@ -64113,11 +66546,11 @@ "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "short_name", + "name": "version__attribute", "variable": false, "more": { - "nx_name": "short_name", - "nx_optional": "true" + "nx_name": "version", + "nx_type": "NX_CHAR" }, "type": { "type_kind": "python", @@ -64129,192 +66562,874 @@ }, { "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 2, + "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "probe", - "description": "type of radiation probe (pick one from the enumerated list and spell exactly)", + "name": "group_name_iontypes__field", + "description": "Name of the group (prefix to the individual ranging definitions)\ninside the HDF5 file which refers to the ranging definition to use.\nA HDF5 file can store multiple ranging definitions. Using an ID is\nthe mechanism to distinguish which specific ranging (version) will\nbe processed. Reconstruction and ranging IDs can differ.\nThey specify different IDs.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-instrument-source-probe-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-iontypes-group-name-iontypes-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_CHAR", - "nx_name": "probe", - "nx_optional": false, - "nx_minOccurs": "0", - "nx_maxOccurs": "1" + "nx_name": "group_name_iontypes", + "nx_optional": false }, "type": { - "type_kind": "Enum", - "type_data": [ - "neutron", - "x-ray", - "electron" - ] + "type_kind": "python", + "type_data": "str" }, "shape": [], "flexible_unit": true } ] - } - ] - }, - { - "m_def": "nomad.metainfo.metainfo.Section", - "m_parent_index": 2, - "m_parent_sub_section": "inner_section_definitions", - "name": "sample", - "description": "Any information on the sample. \n\nThis could include scanned variables that\nare associated with one of the data dimensions, e.g. the magnetic field, or\nlogged data, e.g. monitored temperature vs elapsed time.", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-sample-group" - ], - "more": { - "nx_kind": "group", - "nx_category": "base", - "nx_name": "sample", - "nx_type": "NXsample", - "nx_optional": false, - "nx_extends": "NXobject" - }, - "base_sections": [ - "/packages/18/section_definitions/105" - ], - "attributes": [ + }, { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "default", - "variable": false, + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 2, + "m_parent_sub_section": "inner_section_definitions", + "name": "spatial_filter", + "description": "Spatial filter to filter entries within a region-of-interest based on their position.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-group" + ], "more": { - "nx_name": "default" + "nx_kind": "group", + "nx_category": "base", + "nx_name": "spatial_filter", + "nx_type": "NXspatial_filter", + "nx_optional": "true", + "nx_extends": "NXobject" }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [] - } - ], - "quantities": [ + "base_sections": [ + "/packages/20/section_definitions/179" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "windowing_method__field", + "description": "Qualitative statement which specifies which spatial filtering with respective\ngeometric primitives or bitmask is used. These settings are possible:\n\n* entire_dataset, no filter is applied, the entire dataset is used. \n* union_of_primitives, a filter with (rotated) geometric primitives. \n All ions in or on the surface of the primitives are considered \n while all other ions are ignored. \n* bitmasked_points, a boolean array whose bits encode with 1 \n which ions should be included. Those ions whose bit is set to 0 \n will be excluded. Users of python can use the bitfield operations \n of the numpy package to define such bitfields. \n\nConditions:\nIn the case that windowing_method is entire_dataset all entries are processed.\nIn the case that windowing_method is union_of_primitives,\nit is possible to specify none or all types of primitives\n(ellipsoids, cylinder, hexahedra). If no primitives are specified\nthe filter falls back to entire_dataset.\nIn the case that windowing_method is bitmask, the bitmask has to be defined;\notherwise the filter falls back to entire dataset.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-windowing-method-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "windowing_method", + "nx_optional": false, + "nx_minOccurs": "1" + }, + "type": { + "type_kind": "Enum", + "type_data": [ + "entire_dataset", + "union_of_primitives", + "bitmask" + ] + }, + "shape": [], + "flexible_unit": true + } + ], + "sub_sections": [ + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 0, + "m_parent_sub_section": "sub_sections", + "name": "CG_ELLIPSOID_SET", + "variable": true, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/2/inner_section_definitions/0", + "repeats": true + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 1, + "m_parent_sub_section": "sub_sections", + "name": "CG_CYLINDER_SET", + "variable": true, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/2/inner_section_definitions/1", + "repeats": true + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 2, + "m_parent_sub_section": "sub_sections", + "name": "CG_HEXAHEDRON_SET", + "variable": true, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/2/inner_section_definitions/2", + "repeats": true + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 3, + "m_parent_sub_section": "sub_sections", + "name": "CS_FILTER_BOOLEAN_MASK", + "variable": true, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/2/inner_section_definitions/3", + "repeats": true + } + ], + "inner_section_definitions": [ + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 0, + "m_parent_sub_section": "inner_section_definitions", + "name": "NXcg_ellipsoid_set", + "description": "Computational geometry description of a set of ellipsoids in Euclidean space.\n\nIndividual ellipsoids can have different half axes.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-ellipsoid-set-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXcg_ellipsoid_set", + "nx_type": "NXcg_ellipsoid_set", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/179/inner_section_definitions/0" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "dimensionality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-ellipsoid-set-dimensionality-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "dimensionality", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "cardinality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-ellipsoid-set-cardinality-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "cardinality", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "identifier_offset__field", + "description": "Integer which specifies the first index to be used for distinguishing\nidentifiers for ellipsoids. Identifiers are defined either implicitly\nor explicitly. For implicit indexing the identifiers are defined on the\ninterval [identifier_offset, identifier_offset+c-1].\nFor explicit indexing the identifier array has to be defined.\n\nThe identifier_offset field can for example be used to communicate if the\nidentifiers are expected to start from 1 (referred to as Fortran-/Matlab-)\nor from 0 (referred to as C-, Python-style index notation) respectively.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-ellipsoid-set-identifier-offset-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_INT", + "nx_name": "identifier_offset", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "int64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 3, + "m_parent_sub_section": "quantities", + "name": "center__field", + "description": "Geometric center of the ellipsoids. This can be the center of mass.\nDimensionality and cardinality of the point and ellipsoid set have to match.\nThe identifier_offset and identifier field of NXcg_point_set do not need\nto be used as they should be same as the identifier_offset and the\nidentifier for the ellipsoids.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-ellipsoid-set-center-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "center", + "nx_units": "NX_LENGTH", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[length]", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 4, + "m_parent_sub_section": "quantities", + "name": "half_axes_radii__field", + "description": "In the case that ellipsoids have different radii use this field\ninstead of half_axes_radius.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-ellipsoid-set-half-axes-radii-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "half_axes_radii", + "nx_units": "NX_LENGTH", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[length]", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 5, + "m_parent_sub_section": "quantities", + "name": "orientation__field", + "description": "Direction unit vector which points along the largest half-axes.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-ellipsoid-set-orientation-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "orientation", + "nx_units": "NX_DIMENSIONLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 1, + "m_parent_sub_section": "inner_section_definitions", + "name": "NXcg_cylinder_set", + "description": "Computational geometry description of a set of cylinders in Euclidean space.\n\nThe members of the set can have different size. For each member the position\nof the center and the height is mandatory. The radius can either be defined\nin the radius field or by filling both the upper and the lower radius field.\nThe latter case can be used to represent truncated cones.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-cylinder-set-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXcg_cylinder_set", + "nx_type": "NXcg_cylinder_set", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/179/inner_section_definitions/1" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "dimensionality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-cylinder-set-dimensionality-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "dimensionality", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "Enum", + "type_data": [ + "3" + ] + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "cardinality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-cylinder-set-cardinality-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "cardinality", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "identifier_offset__field", + "description": "Integer which specifies the first index to be used for distinguishing\nidentifiers for cylinders. Identifiers are defined either implicitly\nor explicitly. For implicit indexing the identifiers are defined on the\ninterval [identifier_offset, identifier_offset+c-1].\nFor explicit indexing the identifier array has to be defined.\n\nThe identifier_offset field can for example be used to communicate if the\nidentifiers are expected to start from 1 (referred to as Fortran-/Matlab-)\nor from 0 (referred to as C-, Python-style index notation) respectively.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-cylinder-set-identifier-offset-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_INT", + "nx_name": "identifier_offset", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "int64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 3, + "m_parent_sub_section": "quantities", + "name": "center__field", + "description": "The geometric center of each member.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-cylinder-set-center-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "center", + "nx_units": "NX_LENGTH", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[length]", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 4, + "m_parent_sub_section": "quantities", + "name": "height__field", + "description": "A direction vector which is parallel to the cylinder/cone axis and\nwhose magnitude is the height of the cylinder/cone.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-cylinder-set-height-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "height", + "nx_units": "NX_LENGTH", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[length]", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 5, + "m_parent_sub_section": "quantities", + "name": "radii__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-cylinder-set-radii-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "radii", + "nx_units": "NX_LENGTH", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[length]", + "flexible_unit": true + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 2, + "m_parent_sub_section": "inner_section_definitions", + "name": "NXcg_hexahedron_set", + "description": "Computational geometry description of a set of hexahedra in Euclidean space.\n\nThe hexahedra do not have to be connected, can have different size,\ncan intersect, and be rotated.\nThis class can also be used to describe cuboids or cubes, axis-aligned or not.\nThe class represents different access and description levels to offer both\napplied scientists and computational geometry experts to use the same\nbase class but rather their specific view on the data:\n\n* Most simple many experimentalists wish to communicate dimensions/the size\n of specimens. In this case the alignment with axes is not relevant as\n eventually the only relevant information to convey is the volume of the \n specimen.\n* In many cases, take for instance an experiment where a specimen was taken\n from a specifically deformed piece of material, e.g. cold-rolled,\n channel-die deformed, the orientation of the specimen edges with the\n experiment coordinate system can be of very high relevance.\n Examples include to know which specimen edge is parallel to the rolling,\n the transverse, or the normal direction.\n* Sufficient to pinpoint the sample and laboratory/experiment coordinate\n system, the above-mentioned descriptions are not detailed enough though\n to create a CAD model of the specimen.\n* Therefore, groups and fields for an additional, computational-geometry-\n based view of the hexahedra is offered which serve different computational\n tasks: storage-oriented simple views or detailed topological/graph-based\n descriptions.\n\nHexahedra are important geometrical primitives, which are among the most\nfrequently used elements in finite element meshing/modeling.\n\nHexahedra have to be non-degenerated, closed, and built of polygons\nwhich are not self-intersecting.\n\nThe term hexahedra will be used throughout this base class but includes\nthe especially in engineering and more commonly used special cases,\ncuboid, cube, box, axis-aligned bounding box (AABB), optimal bounding\nbox (OBB).\n\nAn axis-aligned bounding box is a common data object in\ncomputational science and codes to represent a cuboid whose edges\nare aligned with a coordinate system. As a part of binary trees these\nare important data objects for time as well as space efficient queries\nof geometric primitives in techniques like kd-trees.\n\nAn optimal bounding box is a common data object which provides the best\ntight fitting box about an arbitrary object. In general such boxes are\nrotated. Exact and substantially faster in practice approximate algorithms\nexist for computing optimal or near optimal bounding boxes for point sets.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-hexahedron-set-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXcg_hexahedron_set", + "nx_type": "NXcg_hexahedron_set", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/179/inner_section_definitions/2" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "dimensionality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-hexahedron-set-dimensionality-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "dimensionality", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "Enum", + "type_data": [ + "3" + ] + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "cardinality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-hexahedron-set-cardinality-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "cardinality", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "identifier_offset__field", + "description": "Integer which specifies the first index to be used for distinguishing\nhexahedra. Identifiers are defined either implicitly\nor explicitly. For implicit indexing the identifiers are defined on the\ninterval [identifier_offset, identifier_offset+c-1].\nFor explicit indexing the identifier array has to be defined.\n\nThe identifier_offset field can for example be used to communicate if the\nidentifiers are expected to start from 1 (referred to as Fortran-/Matlab-)\nor from 0 (referred to as C-, Python-style index notation) respectively.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-hexahedron-set-identifier-offset-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_INT", + "nx_name": "identifier_offset", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "int64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + } + ], + "sub_sections": [ + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 0, + "m_parent_sub_section": "sub_sections", + "name": "hexahedra", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/2/inner_section_definitions/2/inner_section_definitions/0", + "repeats": false + } + ], + "inner_section_definitions": [ + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 0, + "m_parent_sub_section": "inner_section_definitions", + "name": "hexahedra", + "description": "A simple approach to describe the entire set of hexahedra when the\nmain intention is to store the shape of the hexahedra for visualization.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cg-hexahedron-set-hexahedra-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "hexahedra", + "nx_type": "NXcg_face_list_data_structure", + "nx_optional": false, + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/34/inner_section_definitions/5" + ] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 3, + "m_parent_sub_section": "inner_section_definitions", + "name": "NXcs_filter_boolean_mask", + "description": "Computer science base class for packing and unpacking booleans.\n\nOne use case is processing of object sets (like point cloud data).\nWhen one applies e.g. a spatial filter to a set of points to define which \npoints are analyzed and which not, it is useful to document which points were\ntaken. One can store this information in a compact manner with an array of \nboolean values. If the value is True the point is taken, else it is not.\n\nIf the points are identified by an array of integer identifiers and an \narbitrary spatial filtering, the boolean array will be filled with True and False\nvalues in an arbitrary manner. Especially when the number of points is large,\nfor instance several thousands and more, some situations can be more efficiently\nstored if one would not store the boolean array but just list the identifiers\nof the points taken. For instance if within a set of 1000 points only one point is\ntaken, it would take (naively) 4000 bits to store the array but only 32 bits\nto store e.g. the ID of that taken point. Of course the 4000 bit field is so \nsparse that it could be compressed resulting also in a substantial reduction \nof the storage demands. Therefore boolean masks are useful compact descriptions\nto store information about set memberships in a compact manner. \nIn general it is true, though, that which representation is best, i.e. \nmost compact (especially when compressed) depends strongly on occupation of\nthe array.\n\nThis base class just bookkeeps metadata to inform software about necessary \nmodulo operations to decode the set membership of each object. This is useful\nbecause the number of objects not necessarily is an integer multiple of the bit depth.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cs-filter-boolean-mask-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXcs_filter_boolean_mask", + "nx_type": "NXcs_filter_boolean_mask", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/179/inner_section_definitions/3" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "number_of_objects__field", + "description": "Number of objects represented by the mask.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cs-filter-boolean-mask-number-of-objects-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_UINT", + "nx_name": "number_of_objects", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "bitdepth__field", + "description": "Number of bits assumed matching on a default datatype.\n(e.g. 8 bits for a C-style uint8).", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cs-filter-boolean-mask-bitdepth-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_UINT", + "nx_name": "bitdepth", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "mask__field", + "description": "The unsigned integer array representing the content of the mask.\nIf padding is used the padded bits have to be set to 0.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cs-filter-boolean-mask-mask-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_UINT", + "nx_name": "mask", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 3, + "m_parent_sub_section": "quantities", + "name": "identifier__field", + "description": "Link to/or array of identifiers for the objects. The decoded mask is\ninterpreted consecutively, i.e. the first bit in the mask matches\nto the first identifier, the second bit in the mask to the second\nidentifier and so on and so forth.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-spatial-filter-cs-filter-boolean-mask-identifier-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_UINT", + "nx_name": "identifier", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "flexible_unit": true + } + ] + } + ] + }, { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 0, - "m_parent_sub_section": "quantities", - "name": "name", - "description": "Descriptive name of sample", + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 3, + "m_parent_sub_section": "inner_section_definitions", + "name": "evaporation_id_filter", + "description": "Settings of a filter to sample entries based on their value.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-sample-name-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-evaporation-id-filter-group" ], - "variable": false, "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "name", - "nx_optional": false, - "nx_maxOccurs": "1", - "nx_minOccurs": "0" - }, - "type": { - "type_kind": "python", - "type_data": "str" + "nx_kind": "group", + "nx_category": "base", + "nx_name": "evaporation_id_filter", + "nx_type": "NXsubsampling_filter", + "nx_optional": "true", + "nx_extends": "NXobject" }, - "shape": [], - "flexible_unit": true + "base_sections": [ + "/packages/20/section_definitions/191" + ] }, { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 1, - "m_parent_sub_section": "quantities", - "name": "sample_id", - "description": "Unique database id of the sample", + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 4, + "m_parent_sub_section": "inner_section_definitions", + "name": "iontype_filter", + "description": "Settings of a filter to select or remove entries based on their value.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-sample-sample-id-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-iontype-filter-group" ], - "variable": false, "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "sample_id", - "nx_optional": false - }, - "type": { - "type_kind": "python", - "type_data": "str" + "nx_kind": "group", + "nx_category": "base", + "nx_name": "iontype_filter", + "nx_type": "NXmatch_filter", + "nx_optional": "true", + "nx_extends": "NXobject" }, - "shape": [], - "flexible_unit": true + "base_sections": [ + "/packages/20/section_definitions/126" + ] }, { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 2, - "m_parent_sub_section": "quantities", - "name": "description", - "description": "Description of the sample", + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 5, + "m_parent_sub_section": "inner_section_definitions", + "name": "hit_multiplicity_filter", + "description": "Settings of a filter to select or remove entries based on their value.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-sample-description-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cameca-to-nexus-hit-multiplicity-filter-group" ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "hit_multiplicity_filter", + "nx_type": "NXmatch_filter", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/126" + ] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 1, + "m_parent_sub_section": "inner_section_definitions", + "name": "cluster_analysis", + "description": "This process performs a cluster analysis on a reconstructed dataset\nor a portion of the reconstruction.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "cluster_analysis", + "nx_type": "NXprocess", + "nx_optional": false, + "nx_extends": "NXobject", + "nx_minOccurs": "0", + "nx_maxOccurs": "1" + }, + "base_sections": [ + "/packages/20/section_definitions/150" + ], + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "default__attribute", "variable": false, "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "description", - "nx_optional": "true" + "nx_name": "default" }, "type": { "type_kind": "python", "type_data": "str" }, - "shape": [], - "flexible_unit": true - }, + "shape": [] + } + ], + "quantities": [ { "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 3, + "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "type", + "name": "clustering_algorithm__field", + "description": "Name of the algorithm.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-sample-type-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-clustering-algorithm-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_CHAR", - "nx_name": "type", + "nx_name": "clustering_algorithm", "nx_optional": false }, "type": { - "type_kind": "Enum", - "type_data": [ - "sample", - "sample+can", - "calibration sample", - "normalisation sample", - "simulated data", - "none", - "sample_environment" - ] + "type_kind": "python", + "type_data": "str" }, "shape": [], "flexible_unit": true }, { "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 4, + "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "chemical_formula", - "description": "Chemical formula formatted according to CIF conventions", + "name": "clustering_parameter__field", + "description": "A text representation like a JSON/YAML dictionary with the\nparameter of the clustering_algorithm.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-sample-chemical-formula-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-clustering-parameter-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_CHAR", - "nx_name": "chemical_formula", - "nx_optional": false, - "nx_recommended": "true" + "nx_name": "clustering_parameter", + "nx_optional": false }, "type": { "type_kind": "python", @@ -64322,254 +67437,1044 @@ }, "shape": [], "flexible_unit": true - }, + } + ], + "sub_sections": [ { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 5, - "m_parent_sub_section": "quantities", - "name": "preparation_date", - "description": "Date of preparation of the sample", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-sample-preparation-date-field" - ], + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 0, + "m_parent_sub_section": "sub_sections", + "name": "dataset", "variable": false, "more": { - "nx_kind": "field", - "nx_type": "NX_DATE_TIME", - "nx_name": "preparation_date", - "nx_optional": false, - "nx_units": "NX_TIME", - "nx_recommended": "true" - }, - "type": { - "type_kind": "python", - "type_data": "str" + "nx_kind": "group" }, - "shape": [], - "dimensionality": "[time]", - "flexible_unit": true + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/1/inner_section_definitions/0", + "repeats": false }, { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 6, - "m_parent_sub_section": "quantities", - "name": "situation", - "description": "Description of the environment the sample is in: \nair, vacuum, oxidizing atmosphere, dehydrated, etc.", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-sample-situation-field" - ], + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 1, + "m_parent_sub_section": "sub_sections", + "name": "iontypes", "variable": false, "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "situation", - "nx_optional": false + "nx_kind": "group" }, - "type": { - "type_kind": "Enum", - "type_data": [ - "air", - "vacuum", - "inert atmosphere", - "oxidising atmosphere", - "reducing atmosphere", - "sealed can", - "other" - ] + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/1/inner_section_definitions/1", + "repeats": false + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 2, + "m_parent_sub_section": "sub_sections", + "name": "spatial_filter", + "variable": false, + "more": { + "nx_kind": "group" }, - "shape": [], - "flexible_unit": true + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/1/inner_section_definitions/2", + "repeats": false }, { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 7, - "m_parent_sub_section": "quantities", - "name": "temperature", - "description": "Sample temperature. This could be a scanned variable", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-sample-temperature-field" - ], + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 3, + "m_parent_sub_section": "sub_sections", + "name": "evaporation_id_filter", "variable": false, "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "temperature", - "nx_units": "NX_TEMPERATURE", - "nx_optional": false, - "nx_minOccurs": "0", - "nx_maxOccurs": "1" + "nx_kind": "group" }, - "type": { - "type_kind": "numpy", - "type_data": "float64" + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/1/inner_section_definitions/3", + "repeats": false + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 4, + "m_parent_sub_section": "sub_sections", + "name": "iontype_filter", + "variable": false, + "more": { + "nx_kind": "group" }, - "shape": [], - "dimensionality": "[temperature]", - "flexible_unit": true + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/1/inner_section_definitions/4", + "repeats": false }, { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 8, - "m_parent_sub_section": "quantities", - "name": "magnetic_field", - "description": "Applied magnetic field", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-sample-magnetic-field-field" - ], + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 5, + "m_parent_sub_section": "sub_sections", + "name": "hit_multiplicity_filter", "variable": false, "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "magnetic_field", - "nx_units": "NX_CURRENT", - "nx_optional": false + "nx_kind": "group" }, - "type": { - "type_kind": "numpy", - "type_data": "float64" + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/1/inner_section_definitions/5", + "repeats": false + } + ], + "inner_section_definitions": [ + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 0, + "m_parent_sub_section": "inner_section_definitions", + "name": "dataset", + "description": "Metadata of a dataset (tomographic reconstruction) in atom probe microscopy.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-dataset-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "dataset", + "nx_type": "NXapm_input_reconstruction", + "nx_optional": false, + "nx_extends": "NXobject" }, - "shape": [], - "dimensionality": "[current]", - "repeats": false, - "flexible_unit": true, - "attributes": [ + "base_sections": [ + "/packages/20/section_definitions/5" + ], + "quantities": [ { - "m_def": "nomad.metainfo.metainfo.Attribute", + "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "direction", + "m_parent_sub_section": "quantities", + "name": "filename__field", + "description": "Name of the (NeXus)/HDF5 file which stores reconstructed ion position\nand mass-to-charge-state ratios. Such an HDF5 file can store multiple\nreconstructions. Using an identifier (ID) is the mechanism which\nparaprobe uses to distinguish which specific reconstruction will\nbe processed. With this design it is possible that the same HDF5\nfile stores multiple versions of a reconstruction of e.g. the same\nor different measured datasets, respectively.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-dataset-filename-field" + ], "variable": false, "more": { - "nx_name": "direction" + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "filename", + "nx_optional": false }, "type": { - "type_kind": "Enum", - "type_data": [ - "x", - "y", - "z" - ] + "type_kind": "python", + "type_data": "str" }, - "shape": [] - } - ] - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 9, - "m_parent_sub_section": "quantities", - "name": "electric_field", - "description": "Applied electric field", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-sample-electric-field-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "electric_field", - "nx_units": "NX_VOLTAGE", - "nx_optional": false - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [], - "dimensionality": "[energy] / [current] / [time]", - "flexible_unit": true, - "attributes": [ + "shape": [], + "flexible_unit": true, + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "version__attribute", + "variable": false, + "more": { + "nx_name": "version", + "nx_type": "NX_CHAR" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } + ] + }, { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "direction", + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "dataset_name_reconstruction__field", + "description": "Name of the dataset inside the HDF5 file which refers to the\nspecific reconstructed ion positions to use for this analysis.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-dataset-dataset-name-reconstruction-field" + ], "variable": false, "more": { - "nx_name": "direction" + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "dataset_name_reconstruction", + "nx_optional": false }, "type": { - "type_kind": "Enum", - "type_data": [ - "x", - "y", - "z" - ] + "type_kind": "python", + "type_data": "str" }, - "shape": [] + "shape": [], + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "dataset_name_mass_to_charge__field", + "description": "Name of the dataset inside the HDF5 file which refers to the\nspecific mass-to-charge-state ratios to use for this analysis.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-dataset-dataset-name-mass-to-charge-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "dataset_name_mass_to_charge", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true } ] }, { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 10, - "m_parent_sub_section": "quantities", - "name": "stress_field", - "description": "Applied external stress field", + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 1, + "m_parent_sub_section": "inner_section_definitions", + "name": "iontypes", + "description": "Metadata to ranging definitions made for a dataset in atom probe microscopy.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-sample-stress-field-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-iontypes-group" ], - "variable": false, "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "stress_field", - "nx_units": "NX_UNITLESS", - "nx_optional": false - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" + "nx_kind": "group", + "nx_category": "base", + "nx_name": "iontypes", + "nx_type": "NXapm_input_ranging", + "nx_optional": false, + "nx_extends": "NXobject" }, - "shape": [], - "dimensionality": "1", - "flexible_unit": true, - "attributes": [ + "base_sections": [ + "/packages/20/section_definitions/4" + ], + "quantities": [ { - "m_def": "nomad.metainfo.metainfo.Attribute", + "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "direction", + "m_parent_sub_section": "quantities", + "name": "filename__field", + "description": "Name of (NeXus)/HDF5 file which stores ranging definitions which define\nhow mass-to-charge-state ratios map to iontypes and which iontypes are\ndistinguished. The UNKNOWNTYPE iontype (unranged) is the default iontype.\nThe ID of this special iontype is always reserved as 0. Each ion\nis assigned to the UNKNOWNTYPE by default. Iontypes are assigned\nby checking if the mass-to-charge-state ratio of an ion matches\nto any of the defined mass-to-charge-state ratio intervals.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-iontypes-filename-field" + ], "variable": false, "more": { - "nx_name": "direction" + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "filename", + "nx_optional": false }, "type": { - "type_kind": "Enum", - "type_data": [ - "x", - "y", - "z" - ] + "type_kind": "python", + "type_data": "str" }, - "shape": [] + "shape": [], + "flexible_unit": true, + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "version__attribute", + "variable": false, + "more": { + "nx_name": "version", + "nx_type": "NX_CHAR" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "group_name_iontypes__field", + "description": "Name of the group (prefix to the individual ranging definitions)\ninside the HDF5 file which refers to the ranging definition to use.\nA HDF5 file can store multiple ranging definitions. Using an ID is\nthe mechanism to distinguish which specific ranging (version) will\nbe processed. Reconstruction and ranging IDs can differ.\nThey specify different IDs.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-iontypes-group-name-iontypes-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "group_name_iontypes", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true } ] }, { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 11, - "m_parent_sub_section": "quantities", - "name": "pressure", - "description": "Applied pressure", + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 2, + "m_parent_sub_section": "inner_section_definitions", + "name": "spatial_filter", + "description": "Spatial filter to filter entries within a region-of-interest based on their position.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarchive.html#nxarchive-entry-sample-pressure-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-group" ], - "variable": false, "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "pressure", - "nx_units": "NX_PRESSURE", - "nx_optional": false + "nx_kind": "group", + "nx_category": "base", + "nx_name": "spatial_filter", + "nx_type": "NXspatial_filter", + "nx_optional": "true", + "nx_extends": "NXobject" }, - "type": { - "type_kind": "numpy", - "type_data": "float64" + "base_sections": [ + "/packages/20/section_definitions/179" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "windowing_method__field", + "description": "Qualitative statement which specifies which spatial filtering with respective\ngeometric primitives or bitmask is used. These settings are possible:\n\n* entire_dataset, no filter is applied, the entire dataset is used. \n* union_of_primitives, a filter with (rotated) geometric primitives. \n All ions in or on the surface of the primitives are considered \n while all other ions are ignored. \n* bitmasked_points, a boolean array whose bits encode with 1 \n which ions should be included. Those ions whose bit is set to 0 \n will be excluded. Users of python can use the bitfield operations \n of the numpy package to define such bitfields. \n\nConditions:\nIn the case that windowing_method is entire_dataset all entries are processed.\nIn the case that windowing_method is union_of_primitives,\nit is possible to specify none or all types of primitives\n(ellipsoids, cylinder, hexahedra). If no primitives are specified\nthe filter falls back to entire_dataset.\nIn the case that windowing_method is bitmask, the bitmask has to be defined;\notherwise the filter falls back to entire dataset.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-windowing-method-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "windowing_method", + "nx_optional": false, + "nx_minOccurs": "1" + }, + "type": { + "type_kind": "Enum", + "type_data": [ + "entire_dataset", + "union_of_primitives", + "bitmask" + ] + }, + "shape": [], + "flexible_unit": true + } + ], + "sub_sections": [ + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 0, + "m_parent_sub_section": "sub_sections", + "name": "CG_ELLIPSOID_SET", + "variable": true, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/1/inner_section_definitions/2/inner_section_definitions/0", + "repeats": true + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 1, + "m_parent_sub_section": "sub_sections", + "name": "CG_CYLINDER_SET", + "variable": true, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/1/inner_section_definitions/2/inner_section_definitions/1", + "repeats": true + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 2, + "m_parent_sub_section": "sub_sections", + "name": "CG_HEXAHEDRON_SET", + "variable": true, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/1/inner_section_definitions/2/inner_section_definitions/2", + "repeats": true + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 3, + "m_parent_sub_section": "sub_sections", + "name": "CS_FILTER_BOOLEAN_MASK", + "variable": true, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/1/inner_section_definitions/2/inner_section_definitions/3", + "repeats": true + } + ], + "inner_section_definitions": [ + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 0, + "m_parent_sub_section": "inner_section_definitions", + "name": "NXcg_ellipsoid_set", + "description": "Computational geometry description of a set of ellipsoids in Euclidean space.\n\nIndividual ellipsoids can have different half axes.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-ellipsoid-set-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXcg_ellipsoid_set", + "nx_type": "NXcg_ellipsoid_set", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/179/inner_section_definitions/0" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "dimensionality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-ellipsoid-set-dimensionality-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "dimensionality", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "cardinality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-ellipsoid-set-cardinality-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "cardinality", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "identifier_offset__field", + "description": "Integer which specifies the first index to be used for distinguishing\nidentifiers for ellipsoids. Identifiers are defined either implicitly\nor explicitly. For implicit indexing the identifiers are defined on the\ninterval [identifier_offset, identifier_offset+c-1].\nFor explicit indexing the identifier array has to be defined.\n\nThe identifier_offset field can for example be used to communicate if the\nidentifiers are expected to start from 1 (referred to as Fortran-/Matlab-)\nor from 0 (referred to as C-, Python-style index notation) respectively.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-ellipsoid-set-identifier-offset-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_INT", + "nx_name": "identifier_offset", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "int64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 3, + "m_parent_sub_section": "quantities", + "name": "center__field", + "description": "Geometric center of the ellipsoids. This can be the center of mass.\nDimensionality and cardinality of the point and ellipsoid set have to match.\nThe identifier_offset and identifier field of NXcg_point_set do not need\nto be used as they should be same as the identifier_offset and the\nidentifier for the ellipsoids.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-ellipsoid-set-center-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "center", + "nx_units": "NX_LENGTH", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[length]", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 4, + "m_parent_sub_section": "quantities", + "name": "half_axes_radii__field", + "description": "In the case that ellipsoids have different radii use this field\ninstead of half_axes_radius.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-ellipsoid-set-half-axes-radii-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "half_axes_radii", + "nx_units": "NX_LENGTH", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[length]", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 5, + "m_parent_sub_section": "quantities", + "name": "orientation__field", + "description": "Direction unit vector which points along the largest half-axes.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-ellipsoid-set-orientation-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "orientation", + "nx_units": "NX_DIMENSIONLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 1, + "m_parent_sub_section": "inner_section_definitions", + "name": "NXcg_cylinder_set", + "description": "Computational geometry description of a set of cylinders in Euclidean space.\n\nThe members of the set can have different size. For each member the position\nof the center and the height is mandatory. The radius can either be defined\nin the radius field or by filling both the upper and the lower radius field.\nThe latter case can be used to represent truncated cones.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-cylinder-set-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXcg_cylinder_set", + "nx_type": "NXcg_cylinder_set", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/179/inner_section_definitions/1" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "dimensionality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-cylinder-set-dimensionality-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "dimensionality", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "Enum", + "type_data": [ + "3" + ] + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "cardinality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-cylinder-set-cardinality-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "cardinality", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "identifier_offset__field", + "description": "Integer which specifies the first index to be used for distinguishing\nidentifiers for cylinders. Identifiers are defined either implicitly\nor explicitly. For implicit indexing the identifiers are defined on the\ninterval [identifier_offset, identifier_offset+c-1].\nFor explicit indexing the identifier array has to be defined.\n\nThe identifier_offset field can for example be used to communicate if the\nidentifiers are expected to start from 1 (referred to as Fortran-/Matlab-)\nor from 0 (referred to as C-, Python-style index notation) respectively.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-cylinder-set-identifier-offset-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_INT", + "nx_name": "identifier_offset", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "int64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 3, + "m_parent_sub_section": "quantities", + "name": "center__field", + "description": "The geometric center of each member.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-cylinder-set-center-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "center", + "nx_units": "NX_LENGTH", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[length]", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 4, + "m_parent_sub_section": "quantities", + "name": "height__field", + "description": "A direction vector which is parallel to the cylinder/cone axis and\nwhose magnitude is the height of the cylinder/cone.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-cylinder-set-height-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "height", + "nx_units": "NX_LENGTH", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[length]", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 5, + "m_parent_sub_section": "quantities", + "name": "radii__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-cylinder-set-radii-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "radii", + "nx_units": "NX_LENGTH", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[length]", + "flexible_unit": true + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 2, + "m_parent_sub_section": "inner_section_definitions", + "name": "NXcg_hexahedron_set", + "description": "Computational geometry description of a set of hexahedra in Euclidean space.\n\nThe hexahedra do not have to be connected, can have different size,\ncan intersect, and be rotated.\nThis class can also be used to describe cuboids or cubes, axis-aligned or not.\nThe class represents different access and description levels to offer both\napplied scientists and computational geometry experts to use the same\nbase class but rather their specific view on the data:\n\n* Most simple many experimentalists wish to communicate dimensions/the size\n of specimens. In this case the alignment with axes is not relevant as\n eventually the only relevant information to convey is the volume of the \n specimen.\n* In many cases, take for instance an experiment where a specimen was taken\n from a specifically deformed piece of material, e.g. cold-rolled,\n channel-die deformed, the orientation of the specimen edges with the\n experiment coordinate system can be of very high relevance.\n Examples include to know which specimen edge is parallel to the rolling,\n the transverse, or the normal direction.\n* Sufficient to pinpoint the sample and laboratory/experiment coordinate\n system, the above-mentioned descriptions are not detailed enough though\n to create a CAD model of the specimen.\n* Therefore, groups and fields for an additional, computational-geometry-\n based view of the hexahedra is offered which serve different computational\n tasks: storage-oriented simple views or detailed topological/graph-based\n descriptions.\n\nHexahedra are important geometrical primitives, which are among the most\nfrequently used elements in finite element meshing/modeling.\n\nHexahedra have to be non-degenerated, closed, and built of polygons\nwhich are not self-intersecting.\n\nThe term hexahedra will be used throughout this base class but includes\nthe especially in engineering and more commonly used special cases,\ncuboid, cube, box, axis-aligned bounding box (AABB), optimal bounding\nbox (OBB).\n\nAn axis-aligned bounding box is a common data object in\ncomputational science and codes to represent a cuboid whose edges\nare aligned with a coordinate system. As a part of binary trees these\nare important data objects for time as well as space efficient queries\nof geometric primitives in techniques like kd-trees.\n\nAn optimal bounding box is a common data object which provides the best\ntight fitting box about an arbitrary object. In general such boxes are\nrotated. Exact and substantially faster in practice approximate algorithms\nexist for computing optimal or near optimal bounding boxes for point sets.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-hexahedron-set-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXcg_hexahedron_set", + "nx_type": "NXcg_hexahedron_set", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/179/inner_section_definitions/2" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "dimensionality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-hexahedron-set-dimensionality-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "dimensionality", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "Enum", + "type_data": [ + "3" + ] + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "cardinality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-hexahedron-set-cardinality-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "cardinality", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "identifier_offset__field", + "description": "Integer which specifies the first index to be used for distinguishing\nhexahedra. Identifiers are defined either implicitly\nor explicitly. For implicit indexing the identifiers are defined on the\ninterval [identifier_offset, identifier_offset+c-1].\nFor explicit indexing the identifier array has to be defined.\n\nThe identifier_offset field can for example be used to communicate if the\nidentifiers are expected to start from 1 (referred to as Fortran-/Matlab-)\nor from 0 (referred to as C-, Python-style index notation) respectively.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-hexahedron-set-identifier-offset-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_INT", + "nx_name": "identifier_offset", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "int64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + } + ], + "sub_sections": [ + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 0, + "m_parent_sub_section": "sub_sections", + "name": "hexahedra", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/6/inner_section_definitions/0/inner_section_definitions/1/inner_section_definitions/2/inner_section_definitions/2/inner_section_definitions/0", + "repeats": false + } + ], + "inner_section_definitions": [ + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 0, + "m_parent_sub_section": "inner_section_definitions", + "name": "hexahedra", + "description": "A simple approach to describe the entire set of hexahedra when the\nmain intention is to store the shape of the hexahedra for visualization.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cg-hexahedron-set-hexahedra-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "hexahedra", + "nx_type": "NXcg_face_list_data_structure", + "nx_optional": false, + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/34/inner_section_definitions/5" + ] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 3, + "m_parent_sub_section": "inner_section_definitions", + "name": "NXcs_filter_boolean_mask", + "description": "Computer science base class for packing and unpacking booleans.\n\nOne use case is processing of object sets (like point cloud data).\nWhen one applies e.g. a spatial filter to a set of points to define which \npoints are analyzed and which not, it is useful to document which points were\ntaken. One can store this information in a compact manner with an array of \nboolean values. If the value is True the point is taken, else it is not.\n\nIf the points are identified by an array of integer identifiers and an \narbitrary spatial filtering, the boolean array will be filled with True and False\nvalues in an arbitrary manner. Especially when the number of points is large,\nfor instance several thousands and more, some situations can be more efficiently\nstored if one would not store the boolean array but just list the identifiers\nof the points taken. For instance if within a set of 1000 points only one point is\ntaken, it would take (naively) 4000 bits to store the array but only 32 bits\nto store e.g. the ID of that taken point. Of course the 4000 bit field is so \nsparse that it could be compressed resulting also in a substantial reduction \nof the storage demands. Therefore boolean masks are useful compact descriptions\nto store information about set memberships in a compact manner. \nIn general it is true, though, that which representation is best, i.e. \nmost compact (especially when compressed) depends strongly on occupation of\nthe array.\n\nThis base class just bookkeeps metadata to inform software about necessary \nmodulo operations to decode the set membership of each object. This is useful\nbecause the number of objects not necessarily is an integer multiple of the bit depth.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cs-filter-boolean-mask-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXcs_filter_boolean_mask", + "nx_type": "NXcs_filter_boolean_mask", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/179/inner_section_definitions/3" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "number_of_objects__field", + "description": "Number of objects represented by the mask.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cs-filter-boolean-mask-number-of-objects-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_UINT", + "nx_name": "number_of_objects", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "bitdepth__field", + "description": "Number of bits assumed matching on a default datatype.\n(e.g. 8 bits for a C-style uint8).", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cs-filter-boolean-mask-bitdepth-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_UINT", + "nx_name": "bitdepth", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "mask__field", + "description": "The unsigned integer array representing the content of the mask.\nIf padding is used the padded bits have to be set to 0.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cs-filter-boolean-mask-mask-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_UINT", + "nx_name": "mask", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 3, + "m_parent_sub_section": "quantities", + "name": "identifier__field", + "description": "Link to/or array of identifiers for the objects. The decoded mask is\ninterpreted consecutively, i.e. the first bit in the mask matches\nto the first identifier, the second bit in the mask to the second\nidentifier and so on and so forth.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-spatial-filter-cs-filter-boolean-mask-identifier-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_UINT", + "nx_name": "identifier", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "flexible_unit": true + } + ] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 3, + "m_parent_sub_section": "inner_section_definitions", + "name": "evaporation_id_filter", + "description": "Settings of a filter to sample entries based on their value.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-evaporation-id-filter-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "evaporation_id_filter", + "nx_type": "NXsubsampling_filter", + "nx_optional": "true", + "nx_extends": "NXobject" }, - "shape": [], - "dimensionality": "[pressure]", - "flexible_unit": true + "base_sections": [ + "/packages/20/section_definitions/191" + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 4, + "m_parent_sub_section": "inner_section_definitions", + "name": "iontype_filter", + "description": "Settings of a filter to select or remove entries based on their value.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-iontype-filter-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "iontype_filter", + "nx_type": "NXmatch_filter", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/126" + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 5, + "m_parent_sub_section": "inner_section_definitions", + "name": "hit_multiplicity_filter", + "description": "Settings of a filter to select or remove entries based on their value.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-clusterer.html#nxapm-paraprobe-config-clusterer-entry-cluster-analysis-hit-multiplicity-filter-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "hit_multiplicity_filter", + "nx_type": "NXmatch_filter", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/126" + ] } ] } @@ -64579,23 +68484,23 @@ }, { "m_def": "nomad.metainfo.metainfo.Section", - "m_parent_index": 5, + "m_parent_index": 7, "m_parent_sub_section": "section_definitions", - "name": "NXarpes", - "description": "This is an application definition for angular resolved photo electron spectroscopy.\n\nIt has been drawn up with hemispherical electron analysers in mind. ", + "name": "NXapm_paraprobe_config_distancer", + "description": "Configuration/settings of a paraprobe-distancer software tool run.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-group" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-group" ], "more": { "nx_kind": "group", "nx_category": "application", - "nx_name": "NXarpes", + "nx_name": "NXapm_paraprobe_config_distancer", "nx_type": "group", "nx_optional": false, "nx_extends": "NXobject" }, "base_sections": [ - "/packages/18/section_definitions/83" + "/packages/20/section_definitions/138" ], "sub_sections": [ { @@ -64607,7 +68512,7 @@ "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/5/inner_section_definitions/0", + "sub_section": "/packages/20/section_definitions/7/inner_section_definitions/0", "repeats": true } ], @@ -64617,9 +68522,9 @@ "m_parent_index": 0, "m_parent_sub_section": "inner_section_definitions", "name": "NXentry", - "description": "(**required**) :ref:`NXentry` describes the measurement.\n\nThe top-level NeXus group which contains all the data and associated\ninformation that comprise a single measurement.\nIt is mandatory that there is at least one\ngroup of this type in the NeXus file. ", + "description": "(**required**) :ref:`NXentry` describes the measurement. \n\nThe top-level NeXus group which contains all the data and associated\ninformation that comprise a single measurement. \nIt is mandatory that there is at least one\ngroup of this type in the NeXus file.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-group" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-group" ], "more": { "nx_kind": "group", @@ -64630,14 +68535,14 @@ "nx_extends": "NXobject" }, "base_sections": [ - "/packages/18/section_definitions/39" + "/packages/20/section_definitions/86" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "default", + "name": "default__attribute", "variable": false, "more": { "nx_name": "default" @@ -64652,7 +68557,7 @@ "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 1, "m_parent_sub_section": "attributes", - "name": "IDF_Version", + "name": "IDF_Version__attribute", "variable": true, "more": { "nx_name": "IDF_Version" @@ -64667,10 +68572,10 @@ "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 2, "m_parent_sub_section": "attributes", - "name": "entry", + "name": "version__attribute", "variable": false, "more": { - "nx_name": "entry" + "nx_name": "version" }, "type": { "type_kind": "python", @@ -64684,60 +68589,10 @@ "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "title", - "description": "Extended title for entry", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-title-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "title", - "nx_optional": false, - "nx_minOccurs": "0", - "nx_maxOccurs": "1" - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [], - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 1, - "m_parent_sub_section": "quantities", - "name": "start_time", - "description": "Starting time of measurement", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-start-time-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_DATE_TIME", - "nx_name": "start_time", - "nx_optional": false, - "nx_minOccurs": "0", - "nx_maxOccurs": "1" - }, - "type": { - "type_kind": "custom", - "type_data": "nomad.metainfo.metainfo._Datetime" - }, - "shape": [], - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 2, - "m_parent_sub_section": "quantities", - "name": "definition", - "description": "Official NeXus NXDL schema to which this file conforms.", + "name": "definition__field", + "description": "Official NeXus NXDL schema with which this file was written.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-definition-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-definition-field" ], "variable": false, "more": { @@ -64751,7 +68606,7 @@ "type": { "type_kind": "Enum", "type_data": [ - "NXarpes" + "NXapm_paraprobe_config_distancer" ] }, "shape": [], @@ -64761,7 +68616,7 @@ "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "version", + "name": "version__attribute", "variable": false, "more": { "nx_name": "version", @@ -64777,10 +68632,11 @@ "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 1, "m_parent_sub_section": "attributes", - "name": "URL", + "name": "URL__attribute", "variable": true, "more": { - "nx_name": "URL" + "nx_name": "URL", + "nx_type": "NX_CHAR" }, "type": { "type_kind": "python", @@ -64789,43 +68645,154 @@ "shape": [] } ] - } - ], - "sub_sections": [ + }, { - "m_def": "nomad.metainfo.metainfo.SubSection", - "m_parent_index": 0, - "m_parent_sub_section": "sub_sections", - "name": "INSTRUMENT", - "variable": true, + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "program__field", + "description": "Given name of the program/software/tool with which this NeXus\n(configuration) file was generated.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-program-field" + ], + "variable": false, "more": { - "nx_kind": "group" + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "program", + "nx_optional": false }, - "sub_section": "/packages/18/section_definitions/5/inner_section_definitions/0/inner_section_definitions/0", - "repeats": true + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true, + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "version__attribute", + "variable": false, + "more": { + "nx_name": "version", + "nx_type": "NX_CHAR" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } + ] }, { - "m_def": "nomad.metainfo.metainfo.SubSection", - "m_parent_index": 1, - "m_parent_sub_section": "sub_sections", - "name": "SAMPLE", - "variable": true, + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "time_stamp__field", + "description": "ISO 8601 formatted time code with local time zone offset to UTC\ninformation included when this configuration file was created.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-time-stamp-field" + ], + "variable": false, "more": { - "nx_kind": "group" + "nx_kind": "field", + "nx_type": "NX_DATE_TIME", + "nx_name": "time_stamp", + "nx_optional": false }, - "sub_section": "/packages/18/section_definitions/5/inner_section_definitions/0/inner_section_definitions/1", - "repeats": true + "type": { + "type_kind": "custom", + "type_data": "nomad.metainfo.metainfo._Datetime" + }, + "shape": [], + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 3, + "m_parent_sub_section": "quantities", + "name": "analysis_identifier__field", + "description": "Ideally, a (globally persistent) unique identifier for referring\nto this analysis.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-analysis-identifier-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "analysis_identifier", + "nx_optional": "true" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 4, + "m_parent_sub_section": "quantities", + "name": "analysis_description__field", + "description": "Possibility for leaving a free-text description about this analysis.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-analysis-description-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "analysis_description", + "nx_optional": "true" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 5, + "m_parent_sub_section": "quantities", + "name": "number_of_processes__field", + "description": "How many individual analyses should the tool execute.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-number-of-processes-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_UINT", + "nx_name": "number_of_processes", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + } + ], + "sub_sections": [ { "m_def": "nomad.metainfo.metainfo.SubSection", - "m_parent_index": 2, + "m_parent_index": 0, "m_parent_sub_section": "sub_sections", - "name": "DATA", + "name": "PROCESS", "variable": true, "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/5/inner_section_definitions/0/inner_section_definitions/2", + "sub_section": "/packages/20/section_definitions/7/inner_section_definitions/0/inner_section_definitions/0", "repeats": true } ], @@ -64834,28 +68801,28 @@ "m_def": "nomad.metainfo.metainfo.Section", "m_parent_index": 0, "m_parent_sub_section": "inner_section_definitions", - "name": "NXinstrument", - "description": "Collection of the components of the instrument or beamline.\n\nTemplate of instrument descriptions comprising various beamline components. \nEach component will also be a NeXus group defined by its distance from the \nsample. Negative distances represent beamline components that are before the \nsample while positive distances represent components that are after the sample. \nThis device allows the unique identification of beamline components in a way \nthat is valid for both reactor and pulsed instrumentation.", + "name": "NXprocess", + "description": "Document an event of data processing, reconstruction, or analysis for this data.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-group" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-group" ], "more": { "nx_kind": "group", "nx_category": "base", - "nx_name": "NXinstrument", - "nx_type": "NXinstrument", + "nx_name": "NXprocess", + "nx_type": "NXprocess", "nx_optional": false, "nx_extends": "NXobject" }, "base_sections": [ - "/packages/18/section_definitions/39/inner_section_definitions/6" + "/packages/20/section_definitions/86/inner_section_definitions/10" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "default", + "name": "default__attribute", "variable": false, "more": { "nx_name": "default" @@ -64872,36 +68839,84 @@ "m_def": "nomad.metainfo.metainfo.SubSection", "m_parent_index": 0, "m_parent_sub_section": "sub_sections", - "name": "SOURCE", - "variable": true, + "name": "dataset", + "variable": false, "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/5/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/0", - "repeats": true + "sub_section": "/packages/20/section_definitions/7/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/0", + "repeats": false }, { "m_def": "nomad.metainfo.metainfo.SubSection", "m_parent_index": 1, "m_parent_sub_section": "sub_sections", - "name": "monochromator", + "name": "iontypes", "variable": false, "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/5/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/1", + "sub_section": "/packages/20/section_definitions/7/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/1", "repeats": false }, { "m_def": "nomad.metainfo.metainfo.SubSection", "m_parent_index": 2, "m_parent_sub_section": "sub_sections", - "name": "analyser", + "name": "spatial_filter", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/7/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/2", + "repeats": false + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 3, + "m_parent_sub_section": "sub_sections", + "name": "evaporation_id_filter", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/7/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/3", + "repeats": false + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 4, + "m_parent_sub_section": "sub_sections", + "name": "iontype_filter", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/7/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/4", + "repeats": false + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 5, + "m_parent_sub_section": "sub_sections", + "name": "hit_multiplicity_filter", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/7/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/5", + "repeats": false + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 6, + "m_parent_sub_section": "sub_sections", + "name": "point_to_triangle", "variable": false, "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/5/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/2", + "sub_section": "/packages/20/section_definitions/7/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/6", "repeats": false } ], @@ -64910,96 +68925,148 @@ "m_def": "nomad.metainfo.metainfo.Section", "m_parent_index": 0, "m_parent_sub_section": "inner_section_definitions", - "name": "NXsource", - "description": "The neutron or x-ray storage ring/facility.", + "name": "dataset", + "description": "Metadata of a dataset (tomographic reconstruction) in atom probe microscopy.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-source-group" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-dataset-group" ], "more": { "nx_kind": "group", "nx_category": "base", - "nx_name": "NXsource", - "nx_type": "NXsource", + "nx_name": "dataset", + "nx_type": "NXapm_input_reconstruction", "nx_optional": false, "nx_extends": "NXobject" }, "base_sections": [ - "/packages/18/section_definitions/65/inner_section_definitions/23" + "/packages/20/section_definitions/5" ], - "attributes": [ + "quantities": [ { - "m_def": "nomad.metainfo.metainfo.Attribute", + "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "default", + "m_parent_sub_section": "quantities", + "name": "filename__field", + "description": "Name of the (NeXus)/HDF5 file which stores reconstructed ion position\nand mass-to-charge-state ratios. Such an HDF5 file can store multiple\nreconstructions. Using an identifier (ID) is the mechanism which\nparaprobe uses to distinguish which specific reconstruction will\nbe processed. With this design it is possible that the same HDF5\nfile stores multiple versions of a reconstruction of e.g. the same\nor different measured datasets, respectively.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-dataset-filename-field" + ], "variable": false, "more": { - "nx_name": "default" + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "filename", + "nx_optional": false }, "type": { "type_kind": "python", "type_data": "str" }, - "shape": [] - } - ], - "quantities": [ + "shape": [], + "flexible_unit": true, + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "version__attribute", + "variable": false, + "more": { + "nx_name": "version", + "nx_type": "NX_CHAR" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } + ] + }, { "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 0, + "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "type", - "description": "type of radiation source (pick one from the enumerated list and spell exactly)", + "name": "dataset_name_reconstruction__field", + "description": "Name of the dataset inside the HDF5 file which refers to the\nspecific reconstructed ion positions to use for this analysis.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-source-type-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-dataset-dataset-name-reconstruction-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_CHAR", - "nx_name": "type", - "nx_optional": false, - "nx_minOccurs": "0", - "nx_maxOccurs": "1" + "nx_name": "dataset_name_reconstruction", + "nx_optional": false }, "type": { - "type_kind": "Enum", - "type_data": [ - "Spallation Neutron Source", - "Pulsed Reactor Neutron Source", - "Reactor Neutron Source", - "Synchrotron X-ray Source", - "Pulsed Muon Source", - "Rotating Anode X-ray", - "Fixed Tube X-ray", - "UV Laser", - "Free-Electron Laser", - "Optical Laser", - "Ion Source", - "UV Plasma Source", - "Metal Jet X-ray" - ] + "type_kind": "python", + "type_data": "str" }, "shape": [], "flexible_unit": true }, { "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 1, + "m_parent_index": 2, "m_parent_sub_section": "quantities", - "name": "name", - "description": "Name of source", + "name": "dataset_name_mass_to_charge__field", + "description": "Name of the dataset inside the HDF5 file which refers to the\nspecific mass-to-charge-state ratios to use for this analysis.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-source-name-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-dataset-dataset-name-mass-to-charge-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_CHAR", - "nx_name": "name", - "nx_optional": false, - "nx_minOccurs": "0", - "nx_maxOccurs": "1" + "nx_name": "dataset_name_mass_to_charge", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 1, + "m_parent_sub_section": "inner_section_definitions", + "name": "iontypes", + "description": "Metadata to ranging definitions made for a dataset in atom probe microscopy.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-iontypes-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "iontypes", + "nx_type": "NXapm_input_ranging", + "nx_optional": false, + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/4" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "filename__field", + "description": "Name of (NeXus)/HDF5 file which stores ranging definitions which define\nhow mass-to-charge-state ratios map to iontypes and which iontypes are\ndistinguished. The UNKNOWNTYPE iontype (unranged) is the default iontype.\nThe ID of this special iontype is always reserved as 0. Each ion\nis assigned to the UNKNOWNTYPE by default. Iontypes are assigned\nby checking if the mass-to-charge-state ratio of an ion matches\nto any of the defined mass-to-charge-state ratio intervals.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-iontypes-filename-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "filename", + "nx_optional": false }, "type": { "type_kind": "python", @@ -65012,11 +69079,11 @@ "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "short_name", + "name": "version__attribute", "variable": false, "more": { - "nx_name": "short_name", - "nx_optional": "true" + "nx_name": "version", + "nx_type": "NX_CHAR" }, "type": { "type_kind": "python", @@ -65028,27 +69095,23 @@ }, { "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 2, + "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "probe", - "description": "type of radiation probe (pick one from the enumerated list and spell exactly)", + "name": "group_name_iontypes__field", + "description": "Name of the group (prefix to the individual ranging definitions)\ninside the HDF5 file which refers to the ranging definition to use.\nA HDF5 file can store multiple ranging definitions. Using an ID is\nthe mechanism to distinguish which specific ranging (version) will\nbe processed. Reconstruction and ranging IDs can differ.\nThey specify different IDs.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-source-probe-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-iontypes-group-name-iontypes-field" ], "variable": false, "more": { "nx_kind": "field", "nx_type": "NX_CHAR", - "nx_name": "probe", - "nx_optional": false, - "nx_minOccurs": "0", - "nx_maxOccurs": "1" + "nx_name": "group_name_iontypes", + "nx_optional": false }, "type": { - "type_kind": "Enum", - "type_data": [ - "x-ray" - ] + "type_kind": "python", + "type_data": "str" }, "shape": [], "flexible_unit": true @@ -65057,385 +69120,848 @@ }, { "m_def": "nomad.metainfo.metainfo.Section", - "m_parent_index": 1, + "m_parent_index": 2, "m_parent_sub_section": "inner_section_definitions", - "name": "monochromator", - "description": "A wavelength defining device.\n\nThis is a base class for everything which\nselects a wavelength or energy, be it a \nmonochromator crystal, a velocity selector,\nan undulator or whatever.\n\nThe expected units are:\n\n* wavelength: angstrom\n* energy: eV", + "name": "spatial_filter", + "description": "Spatial filter to filter entries within a region-of-interest based on their position.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-monochromator-group" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-group" ], "more": { "nx_kind": "group", "nx_category": "base", - "nx_name": "monochromator", - "nx_type": "NXmonochromator", - "nx_optional": false, + "nx_name": "spatial_filter", + "nx_type": "NXspatial_filter", + "nx_optional": "true", "nx_extends": "NXobject" }, "base_sections": [ - "/packages/18/section_definitions/78" + "/packages/20/section_definitions/179" ], - "attributes": [ + "quantities": [ { - "m_def": "nomad.metainfo.metainfo.Attribute", + "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "default", + "m_parent_sub_section": "quantities", + "name": "windowing_method__field", + "description": "Qualitative statement which specifies which spatial filtering with respective\ngeometric primitives or bitmask is used. These settings are possible:\n\n* entire_dataset, no filter is applied, the entire dataset is used. \n* union_of_primitives, a filter with (rotated) geometric primitives. \n All ions in or on the surface of the primitives are considered \n while all other ions are ignored. \n* bitmasked_points, a boolean array whose bits encode with 1 \n which ions should be included. Those ions whose bit is set to 0 \n will be excluded. Users of python can use the bitfield operations \n of the numpy package to define such bitfields. \n\nConditions:\nIn the case that windowing_method is entire_dataset all entries are processed.\nIn the case that windowing_method is union_of_primitives,\nit is possible to specify none or all types of primitives\n(ellipsoids, cylinder, hexahedra). If no primitives are specified\nthe filter falls back to entire_dataset.\nIn the case that windowing_method is bitmask, the bitmask has to be defined;\notherwise the filter falls back to entire dataset.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-windowing-method-field" + ], "variable": false, "more": { - "nx_name": "default" + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "windowing_method", + "nx_optional": false, + "nx_minOccurs": "1" }, "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [] + "type_kind": "Enum", + "type_data": [ + "entire_dataset", + "union_of_primitives", + "bitmask" + ] + }, + "shape": [], + "flexible_unit": true } ], - "quantities": [ + "sub_sections": [ { - "m_def": "nomad.metainfo.metainfo.Quantity", + "m_def": "nomad.metainfo.metainfo.SubSection", "m_parent_index": 0, - "m_parent_sub_section": "quantities", - "name": "energy", - "description": "energy selected", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-monochromator-energy-field" - ], - "variable": false, + "m_parent_sub_section": "sub_sections", + "name": "CG_ELLIPSOID_SET", + "variable": true, "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "energy", - "nx_units": "NX_ENERGY", - "nx_optional": false, - "nx_minOccurs": "1", - "nx_maxOccurs": "1", - "nx_axis": "1" + "nx_kind": "group" }, - "type": { - "type_kind": "numpy", - "type_data": "float64" + "sub_section": "/packages/20/section_definitions/7/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/2/inner_section_definitions/0", + "repeats": true + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 1, + "m_parent_sub_section": "sub_sections", + "name": "CG_CYLINDER_SET", + "variable": true, + "more": { + "nx_kind": "group" }, - "shape": [], - "dimensionality": "[energy]", - "flexible_unit": true - } - ] - }, - { - "m_def": "nomad.metainfo.metainfo.Section", - "m_parent_index": 2, - "m_parent_sub_section": "inner_section_definitions", - "name": "analyser", - "description": "A detector, detector bank, or multidetector.", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-analyser-group" - ], - "more": { - "nx_kind": "group", - "nx_category": "base", - "nx_name": "analyser", - "nx_type": "NXdetector", - "nx_optional": false, - "nx_extends": "NXobject" - }, - "base_sections": [ - "/packages/18/section_definitions/27" - ], - "attributes": [ + "sub_section": "/packages/20/section_definitions/7/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/2/inner_section_definitions/1", + "repeats": true + }, { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "default", - "variable": false, + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 2, + "m_parent_sub_section": "sub_sections", + "name": "CG_HEXAHEDRON_SET", + "variable": true, "more": { - "nx_name": "default" + "nx_kind": "group" }, - "type": { - "type_kind": "python", - "type_data": "str" + "sub_section": "/packages/20/section_definitions/7/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/2/inner_section_definitions/2", + "repeats": true + }, + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 3, + "m_parent_sub_section": "sub_sections", + "name": "CS_FILTER_BOOLEAN_MASK", + "variable": true, + "more": { + "nx_kind": "group" }, - "shape": [] + "sub_section": "/packages/20/section_definitions/7/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/2/inner_section_definitions/3", + "repeats": true } ], - "quantities": [ + "inner_section_definitions": [ { - "m_def": "nomad.metainfo.metainfo.Quantity", + "m_def": "nomad.metainfo.metainfo.Section", "m_parent_index": 0, - "m_parent_sub_section": "quantities", - "name": "data", - "description": "Data values from the detector. The rank and dimension ordering should follow a principle of\nslowest to fastest measurement axes and may be explicitly specified in application definitions.\n\nMechanical scanning of objects (e.g. sample position/angle, incident beam energy, etc) tends to be\nthe slowest part of an experiment and so any such scan axes should be allocated to the first dimensions\nof the array. Note that in some cases it may be useful to represent a 2D set of scan points as a single\nscan-axis in the data array, especially if the scan pattern doesn't fit a rectangular array nicely.\nRepetition of an experiment in a time series tends to be used similar to a slow scan axis\nand so will often be in the first dimension of the data array.\n\nThe next fastest axes are typically the readout of the detector. A point detector will not add any dimensions\n(as it is just a single value per scan point) to the data array, a strip detector will add one dimension, an \nimaging detector will add two dimensions (e.g. X, Y axes) and detectors outputting higher dimensional data \nwill add the corresponding number of dimensions. Note that the detector dimensions don't necessarily have to\nbe written in order of the actual readout speeds - the slowest to fastest rule principle is only a guide.\n\nFinally, detectors that operate in a time-of-flight mode, such as a neutron spectrometer or a silicon drift \ndetector (used for X-ray fluorescence) tend to have their dimension(s) added to the last dimensions in the data array.\n\nThe type of each dimension should should follow the order of scan points, detector pixels, \nthen time-of-flight (i.e. spectroscopy, spectrometry). The rank and dimension sizes (see symbol list) \nshown here are merely illustrative of coordination between related datasets.", + "m_parent_sub_section": "inner_section_definitions", + "name": "NXcg_ellipsoid_set", + "description": "Computational geometry description of a set of ellipsoids in Euclidean space.\n\nIndividual ellipsoids can have different half axes.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-analyser-data-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-ellipsoid-set-group" ], - "variable": false, "more": { - "nx_kind": "field", - "nx_type": "NX_INT", - "nx_name": "data", - "nx_units": "NX_ANY", - "nx_optional": false, - "nx_signal": "1", - "nx_minOccurs": "1", - "nx_maxOccurs": "1", - "nx_axes": "x_pixel_offset,y_pixel_offset,time_of_flight", - "nx_recommended": "true" - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXcg_ellipsoid_set", + "nx_type": "NXcg_ellipsoid_set", + "nx_optional": "true", + "nx_extends": "NXobject" }, - "shape": [], - "flexible_unit": true, - "attributes": [ + "base_sections": [ + "/packages/20/section_definitions/179/inner_section_definitions/0" + ], + "quantities": [ { - "m_def": "nomad.metainfo.metainfo.Attribute", + "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "long_name", + "m_parent_sub_section": "quantities", + "name": "dimensionality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-ellipsoid-set-dimensionality-field" + ], "variable": false, "more": { - "nx_name": "long_name" + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "dimensionality", + "nx_units": "NX_UNITLESS", + "nx_optional": false }, "type": { - "type_kind": "python", - "type_data": "str" + "type_kind": "numpy", + "type_data": "uint64" }, - "shape": [] + "shape": [], + "dimensionality": "1", + "flexible_unit": true }, { - "m_def": "nomad.metainfo.metainfo.Attribute", + "m_def": "nomad.metainfo.metainfo.Quantity", "m_parent_index": 1, - "m_parent_sub_section": "attributes", - "name": "check_sum", + "m_parent_sub_section": "quantities", + "name": "cardinality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-ellipsoid-set-cardinality-field" + ], "variable": false, "more": { - "nx_name": "check_sum", - "nx_type": "NX_INT" + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "cardinality", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "identifier_offset__field", + "description": "Integer which specifies the first index to be used for distinguishing\nidentifiers for ellipsoids. Identifiers are defined either implicitly\nor explicitly. For implicit indexing the identifiers are defined on the\ninterval [identifier_offset, identifier_offset+c-1].\nFor explicit indexing the identifier array has to be defined.\n\nThe identifier_offset field can for example be used to communicate if the\nidentifiers are expected to start from 1 (referred to as Fortran-/Matlab-)\nor from 0 (referred to as C-, Python-style index notation) respectively.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-ellipsoid-set-identifier-offset-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_INT", + "nx_name": "identifier_offset", + "nx_units": "NX_UNITLESS", + "nx_optional": false }, "type": { "type_kind": "numpy", "type_data": "int64" }, - "shape": [] + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 3, + "m_parent_sub_section": "quantities", + "name": "center__field", + "description": "Geometric center of the ellipsoids. This can be the center of mass.\nDimensionality and cardinality of the point and ellipsoid set have to match.\nThe identifier_offset and identifier field of NXcg_point_set do not need\nto be used as they should be same as the identifier_offset and the\nidentifier for the ellipsoids.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-ellipsoid-set-center-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "center", + "nx_units": "NX_LENGTH", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[length]", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 4, + "m_parent_sub_section": "quantities", + "name": "half_axes_radii__field", + "description": "In the case that ellipsoids have different radii use this field\ninstead of half_axes_radius.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-ellipsoid-set-half-axes-radii-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "half_axes_radii", + "nx_units": "NX_LENGTH", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[length]", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 5, + "m_parent_sub_section": "quantities", + "name": "orientation__field", + "description": "Direction unit vector which points along the largest half-axes.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-ellipsoid-set-orientation-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "orientation", + "nx_units": "NX_DIMENSIONLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true } ] }, { - "m_def": "nomad.metainfo.metainfo.Quantity", + "m_def": "nomad.metainfo.metainfo.Section", "m_parent_index": 1, - "m_parent_sub_section": "quantities", - "name": "lens_mode", - "description": "setting for the electron analyser lens", + "m_parent_sub_section": "inner_section_definitions", + "name": "NXcg_cylinder_set", + "description": "Computational geometry description of a set of cylinders in Euclidean space.\n\nThe members of the set can have different size. For each member the position\nof the center and the height is mandatory. The radius can either be defined\nin the radius field or by filling both the upper and the lower radius field.\nThe latter case can be used to represent truncated cones.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-analyser-lens-mode-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-cylinder-set-group" ], - "variable": false, "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "lens_mode", - "nx_optional": false - }, - "type": { - "type_kind": "python", - "type_data": "str" + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXcg_cylinder_set", + "nx_type": "NXcg_cylinder_set", + "nx_optional": "true", + "nx_extends": "NXobject" }, - "shape": [], - "flexible_unit": true + "base_sections": [ + "/packages/20/section_definitions/179/inner_section_definitions/1" + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "dimensionality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-cylinder-set-dimensionality-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "dimensionality", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "Enum", + "type_data": [ + "3" + ] + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "cardinality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-cylinder-set-cardinality-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "cardinality", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "identifier_offset__field", + "description": "Integer which specifies the first index to be used for distinguishing\nidentifiers for cylinders. Identifiers are defined either implicitly\nor explicitly. For implicit indexing the identifiers are defined on the\ninterval [identifier_offset, identifier_offset+c-1].\nFor explicit indexing the identifier array has to be defined.\n\nThe identifier_offset field can for example be used to communicate if the\nidentifiers are expected to start from 1 (referred to as Fortran-/Matlab-)\nor from 0 (referred to as C-, Python-style index notation) respectively.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-cylinder-set-identifier-offset-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_INT", + "nx_name": "identifier_offset", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "int64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 3, + "m_parent_sub_section": "quantities", + "name": "center__field", + "description": "The geometric center of each member.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-cylinder-set-center-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "center", + "nx_units": "NX_LENGTH", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[length]", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 4, + "m_parent_sub_section": "quantities", + "name": "height__field", + "description": "A direction vector which is parallel to the cylinder/cone axis and\nwhose magnitude is the height of the cylinder/cone.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-cylinder-set-height-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "height", + "nx_units": "NX_LENGTH", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[length]", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 5, + "m_parent_sub_section": "quantities", + "name": "radii__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-cylinder-set-radii-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_NUMBER", + "nx_name": "radii", + "nx_units": "NX_LENGTH", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "float64" + }, + "shape": [], + "dimensionality": "[length]", + "flexible_unit": true + } + ] }, { - "m_def": "nomad.metainfo.metainfo.Quantity", + "m_def": "nomad.metainfo.metainfo.Section", "m_parent_index": 2, - "m_parent_sub_section": "quantities", - "name": "acquisition_mode", - "description": "The acquisition mode of the detector.", + "m_parent_sub_section": "inner_section_definitions", + "name": "NXcg_hexahedron_set", + "description": "Computational geometry description of a set of hexahedra in Euclidean space.\n\nThe hexahedra do not have to be connected, can have different size,\ncan intersect, and be rotated.\nThis class can also be used to describe cuboids or cubes, axis-aligned or not.\nThe class represents different access and description levels to offer both\napplied scientists and computational geometry experts to use the same\nbase class but rather their specific view on the data:\n\n* Most simple many experimentalists wish to communicate dimensions/the size\n of specimens. In this case the alignment with axes is not relevant as\n eventually the only relevant information to convey is the volume of the \n specimen.\n* In many cases, take for instance an experiment where a specimen was taken\n from a specifically deformed piece of material, e.g. cold-rolled,\n channel-die deformed, the orientation of the specimen edges with the\n experiment coordinate system can be of very high relevance.\n Examples include to know which specimen edge is parallel to the rolling,\n the transverse, or the normal direction.\n* Sufficient to pinpoint the sample and laboratory/experiment coordinate\n system, the above-mentioned descriptions are not detailed enough though\n to create a CAD model of the specimen.\n* Therefore, groups and fields for an additional, computational-geometry-\n based view of the hexahedra is offered which serve different computational\n tasks: storage-oriented simple views or detailed topological/graph-based\n descriptions.\n\nHexahedra are important geometrical primitives, which are among the most\nfrequently used elements in finite element meshing/modeling.\n\nHexahedra have to be non-degenerated, closed, and built of polygons\nwhich are not self-intersecting.\n\nThe term hexahedra will be used throughout this base class but includes\nthe especially in engineering and more commonly used special cases,\ncuboid, cube, box, axis-aligned bounding box (AABB), optimal bounding\nbox (OBB).\n\nAn axis-aligned bounding box is a common data object in\ncomputational science and codes to represent a cuboid whose edges\nare aligned with a coordinate system. As a part of binary trees these\nare important data objects for time as well as space efficient queries\nof geometric primitives in techniques like kd-trees.\n\nAn optimal bounding box is a common data object which provides the best\ntight fitting box about an arbitrary object. In general such boxes are\nrotated. Exact and substantially faster in practice approximate algorithms\nexist for computing optimal or near optimal bounding boxes for point sets.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-analyser-acquisition-mode-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-hexahedron-set-group" ], - "variable": false, "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "acquisition_mode", - "nx_optional": false - }, - "type": { - "type_kind": "Enum", - "type_data": [ - "swept", - "fixed" - ] + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXcg_hexahedron_set", + "nx_type": "NXcg_hexahedron_set", + "nx_optional": "true", + "nx_extends": "NXobject" }, - "shape": [], - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 3, - "m_parent_sub_section": "quantities", - "name": "entrance_slit_shape", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-analyser-entrance-slit-shape-field" + "base_sections": [ + "/packages/20/section_definitions/179/inner_section_definitions/2" ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "entrance_slit_shape", - "nx_optional": false - }, - "type": { - "type_kind": "Enum", - "type_data": [ - "curved", - "straight" - ] - }, - "shape": [], - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 4, - "m_parent_sub_section": "quantities", - "name": "entrance_slit_setting", - "description": "dial setting of the entrance slit", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-analyser-entrance-slit-setting-field" + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "dimensionality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-hexahedron-set-dimensionality-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "dimensionality", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "Enum", + "type_data": [ + "3" + ] + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "cardinality__field", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-hexahedron-set-cardinality-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_POSINT", + "nx_name": "cardinality", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "identifier_offset__field", + "description": "Integer which specifies the first index to be used for distinguishing\nhexahedra. Identifiers are defined either implicitly\nor explicitly. For implicit indexing the identifiers are defined on the\ninterval [identifier_offset, identifier_offset+c-1].\nFor explicit indexing the identifier array has to be defined.\n\nThe identifier_offset field can for example be used to communicate if the\nidentifiers are expected to start from 1 (referred to as Fortran-/Matlab-)\nor from 0 (referred to as C-, Python-style index notation) respectively.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-hexahedron-set-identifier-offset-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_INT", + "nx_name": "identifier_offset", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "int64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + } ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_NUMBER", - "nx_name": "entrance_slit_setting", - "nx_units": "NX_ANY", - "nx_optional": false - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [], - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 5, - "m_parent_sub_section": "quantities", - "name": "entrance_slit_size", - "description": "size of the entrance slit", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-analyser-entrance-slit-size-field" + "sub_sections": [ + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 0, + "m_parent_sub_section": "sub_sections", + "name": "hexahedra", + "variable": false, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/7/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/2/inner_section_definitions/2/inner_section_definitions/0", + "repeats": false + } ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_NUMBER", - "nx_name": "entrance_slit_size", - "nx_units": "NX_LENGTH", - "nx_optional": false - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [], - "dimensionality": "[length]", - "flexible_unit": true + "inner_section_definitions": [ + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 0, + "m_parent_sub_section": "inner_section_definitions", + "name": "hexahedra", + "description": "A simple approach to describe the entire set of hexahedra when the\nmain intention is to store the shape of the hexahedra for visualization.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cg-hexahedron-set-hexahedra-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "hexahedra", + "nx_type": "NXcg_face_list_data_structure", + "nx_optional": false, + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/34/inner_section_definitions/5" + ] + } + ] }, { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 6, - "m_parent_sub_section": "quantities", - "name": "pass_energy", - "description": "energy of the electrons on the mean path of the analyser", + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 3, + "m_parent_sub_section": "inner_section_definitions", + "name": "NXcs_filter_boolean_mask", + "description": "Computer science base class for packing and unpacking booleans.\n\nOne use case is processing of object sets (like point cloud data).\nWhen one applies e.g. a spatial filter to a set of points to define which \npoints are analyzed and which not, it is useful to document which points were\ntaken. One can store this information in a compact manner with an array of \nboolean values. If the value is True the point is taken, else it is not.\n\nIf the points are identified by an array of integer identifiers and an \narbitrary spatial filtering, the boolean array will be filled with True and False\nvalues in an arbitrary manner. Especially when the number of points is large,\nfor instance several thousands and more, some situations can be more efficiently\nstored if one would not store the boolean array but just list the identifiers\nof the points taken. For instance if within a set of 1000 points only one point is\ntaken, it would take (naively) 4000 bits to store the array but only 32 bits\nto store e.g. the ID of that taken point. Of course the 4000 bit field is so \nsparse that it could be compressed resulting also in a substantial reduction \nof the storage demands. Therefore boolean masks are useful compact descriptions\nto store information about set memberships in a compact manner. \nIn general it is true, though, that which representation is best, i.e. \nmost compact (especially when compressed) depends strongly on occupation of\nthe array.\n\nThis base class just bookkeeps metadata to inform software about necessary \nmodulo operations to decode the set membership of each object. This is useful\nbecause the number of objects not necessarily is an integer multiple of the bit depth.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-analyser-pass-energy-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cs-filter-boolean-mask-group" ], - "variable": false, "more": { - "nx_kind": "field", - "nx_type": "NX_NUMBER", - "nx_name": "pass_energy", - "nx_units": "NX_ENERGY", - "nx_optional": false - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXcs_filter_boolean_mask", + "nx_type": "NXcs_filter_boolean_mask", + "nx_optional": "true", + "nx_extends": "NXobject" }, - "shape": [], - "dimensionality": "[energy]", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 7, - "m_parent_sub_section": "quantities", - "name": "time_per_channel", - "description": "todo: define more clearly", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-analyser-time-per-channel-field" + "base_sections": [ + "/packages/20/section_definitions/179/inner_section_definitions/3" ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "number_of_objects__field", + "description": "Number of objects represented by the mask.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cs-filter-boolean-mask-number-of-objects-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_UINT", + "nx_name": "number_of_objects", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "bitdepth__field", + "description": "Number of bits assumed matching on a default datatype.\n(e.g. 8 bits for a C-style uint8).", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cs-filter-boolean-mask-bitdepth-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_UINT", + "nx_name": "bitdepth", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "mask__field", + "description": "The unsigned integer array representing the content of the mask.\nIf padding is used the padded bits have to be set to 0.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cs-filter-boolean-mask-mask-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_UINT", + "nx_name": "mask", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 3, + "m_parent_sub_section": "quantities", + "name": "identifier__field", + "description": "Link to/or array of identifiers for the objects. The decoded mask is\ninterpreted consecutively, i.e. the first bit in the mask matches\nto the first identifier, the second bit in the mask to the second\nidentifier and so on and so forth.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-spatial-filter-cs-filter-boolean-mask-identifier-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_UINT", + "nx_name": "identifier", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "flexible_unit": true + } + ] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 3, + "m_parent_sub_section": "inner_section_definitions", + "name": "evaporation_id_filter", + "description": "Settings of a filter to sample entries based on their value.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-evaporation-id-filter-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "evaporation_id_filter", + "nx_type": "NXsubsampling_filter", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/191" + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 4, + "m_parent_sub_section": "inner_section_definitions", + "name": "iontype_filter", + "description": "Settings of a filter to select or remove entries based on their value.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-iontype-filter-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "iontype_filter", + "nx_type": "NXmatch_filter", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/126" + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 5, + "m_parent_sub_section": "inner_section_definitions", + "name": "hit_multiplicity_filter", + "description": "Settings of a filter to select or remove entries based on their value.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-hit-multiplicity-filter-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "hit_multiplicity_filter", + "nx_type": "NXmatch_filter", + "nx_optional": "true", + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/126" + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 6, + "m_parent_sub_section": "inner_section_definitions", + "name": "point_to_triangle", + "description": "Compute for all filtered points, e.g. ions of the point set\nthe shortest Euclidean distance to the closest triangle of the\nset of triangles. The triangles can formed a closed surface mesh.\nDistances are not simple distances based on normal projections but\ngiving an exact solution.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-point-to-triangle-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "point_to_triangle", + "nx_type": "NXprocess", + "nx_optional": false, + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/150" + ], + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "default__attribute", "variable": false, "more": { - "nx_kind": "field", - "nx_type": "NX_NUMBER", - "nx_name": "time_per_channel", - "nx_units": "NX_TIME", - "nx_optional": false + "nx_name": "default" }, "type": { - "type_kind": "numpy", - "type_data": "float64" + "type_kind": "python", + "type_data": "str" }, - "shape": [], - "dimensionality": "[time]", - "flexible_unit": true - }, + "shape": [] + } + ], + "quantities": [ { "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 8, + "m_parent_index": 0, "m_parent_sub_section": "quantities", - "name": "angles", - "description": "Angular axis of the analyser data\nwhich dimension the axis applies to is defined\nusing the normal NXdata methods.", + "name": "method__field", + "description": "Specifies for which ions/points the tool will compute distances.\nThe purpose of this setting is to avoid unnecessary computations\nwhen the user requests to only compute distances of ions within a\nthreshold distance to the triangle soup.\n\nBy default the distances are computed for all ions; however\nthe setting skin enables to compute distances only for those\nions which are not farther away located to a triangle\nthan threshold_distance.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-analyser-angles-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-point-to-triangle-method-field" ], "variable": false, "more": { "nx_kind": "field", - "nx_type": "NX_NUMBER", - "nx_name": "angles", - "nx_units": "NX_ANGLE", + "nx_type": "NX_CHAR", + "nx_name": "method", "nx_optional": false }, "type": { - "type_kind": "numpy", - "type_data": "float64" + "type_kind": "Enum", + "type_data": [ + "default", + "skin" + ] }, "shape": [], - "dimensionality": "[angle]", "flexible_unit": true }, { "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 9, + "m_parent_index": 1, "m_parent_sub_section": "quantities", - "name": "energies", - "description": "Energy axis of the analyser data\nwhich dimension the axis applies to is defined\nusing the normal NXdata methods.", + "name": "threshold_distance__field", + "description": "Maximum distance for which distances are computed when method is skin.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-analyser-energies-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-point-to-triangle-threshold-distance-field" ], "variable": false, "more": { "nx_kind": "field", - "nx_type": "NX_NUMBER", - "nx_name": "energies", - "nx_units": "NX_ENERGY", + "nx_type": "NX_FLOAT", + "nx_name": "threshold_distance", + "nx_units": "NX_LENGTH", "nx_optional": false }, "type": { @@ -65443,263 +69969,257 @@ "type_data": "float64" }, "shape": [], - "dimensionality": "[energy]", + "dimensionality": "[length]", "flexible_unit": true - }, + } + ], + "sub_sections": [ { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 10, - "m_parent_sub_section": "quantities", - "name": "sensor_size", - "description": "number of raw active elements in each dimension", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-analyser-sensor-size-field" - ], + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 0, + "m_parent_sub_section": "sub_sections", + "name": "triangle_soup", "variable": false, "more": { - "nx_kind": "field", - "nx_type": "NX_INT", - "nx_name": "sensor_size", - "nx_optional": false - }, - "type": { - "type_kind": "numpy", - "type_data": "int64" + "nx_kind": "group" }, - "shape": [ - 2 - ], - "flexible_unit": true - }, + "sub_section": "/packages/20/section_definitions/7/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/6/inner_section_definitions/0", + "repeats": false + } + ], + "inner_section_definitions": [ { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 11, - "m_parent_sub_section": "quantities", - "name": "region_origin", - "description": "origin of rectangular region selected for readout", + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 0, + "m_parent_sub_section": "inner_section_definitions", + "name": "triangle_soup", + "description": "Paraprobe-distancer enables the computation of the Euclidean shortest\ndistance for each member of a set of points against a set of triangles.\nIn contrast to comparable methods used in atom probe the here computed\ndistance is not simply the projected distance to one of the triangles\nbut the more costly but robust computation of the distance between\na point and a triangle.\n\nThe triangles can represent for instance the facets of a triangulated\nsurface mesh of a model for the edge of the dataset. Such a model can\nbe computed with paraprobe-surfacer. Alternatively, the triangles can\nbe those from the set of all facets for a set of convex hulls, alpha-shapes,\nor alpha wrappings about three-dimensional objects like precipitates\n(computed with e.g. paraprobe-nanochem).\n\nCurrently, the tool does not check if the respectively specified\ntriangle sets are consistent, what their topology is, or whether or\nnot they are consistently oriented.\nEach dataset that is referred to in the list_of _dataset_names_vertices\nshould be an (Nvertices, 3) array of NX_FLOAT. Each dataset referred\nto in the list_of_dataset_names_facet_indices should be an\n(Nfacets, 3) array of NX_UINT.\nFacet indices refer to vertex indices. These need to start at zero\nand must not exceed Nvertices - 1, i.e. the identifier_offset is 0\nand vertices are indexed thus implicitly.\nFacet normal vectors have to be also an array\nof shape (Nfacets, 3) of NX_FLOAT.", "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-analyser-region-origin-field" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-point-to-triangle-triangle-soup-group" ], - "variable": false, "more": { - "nx_kind": "field", - "nx_type": "NX_INT", - "nx_name": "region_origin", - "nx_optional": false - }, - "type": { - "type_kind": "numpy", - "type_data": "int64" + "nx_kind": "group", + "nx_category": "base", + "nx_name": "triangle_soup", + "nx_type": "NXprocess", + "nx_optional": false, + "nx_extends": "NXobject" }, - "shape": [ - 2 + "base_sections": [ + "/packages/20/section_definitions/150" ], - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 12, - "m_parent_sub_section": "quantities", - "name": "region_size", - "description": "size of rectangular region selected for readout", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-instrument-analyser-region-size-field" + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "default__attribute", + "variable": false, + "more": { + "nx_name": "default" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_INT", - "nx_name": "region_size", - "nx_optional": false - }, - "type": { - "type_kind": "numpy", - "type_data": "int64" - }, - "shape": [ - 2 + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "number_of_files__field", + "description": "How many triangle sets to consider.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-point-to-triangle-triangle-soup-number-of-files-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_UINT", + "nx_name": "number_of_files", + "nx_units": "NX_UNITLESS", + "nx_optional": false + }, + "type": { + "type_kind": "numpy", + "type_data": "uint64" + }, + "shape": [], + "dimensionality": "1", + "flexible_unit": true + } ], - "flexible_unit": true - } - ] - } - ] - }, - { - "m_def": "nomad.metainfo.metainfo.Section", - "m_parent_index": 1, - "m_parent_sub_section": "inner_section_definitions", - "name": "NXsample", - "description": "Any information on the sample. \n\nThis could include scanned variables that\nare associated with one of the data dimensions, e.g. the magnetic field, or\nlogged data, e.g. monitored temperature vs elapsed time.", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-sample-group" - ], - "more": { - "nx_kind": "group", - "nx_category": "base", - "nx_name": "NXsample", - "nx_type": "NXsample", - "nx_optional": false, - "nx_extends": "NXobject" - }, - "base_sections": [ - "/packages/18/section_definitions/39/inner_section_definitions/5" - ], - "attributes": [ - { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "default", - "variable": false, - "more": { - "nx_name": "default" - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [] - } - ], - "quantities": [ - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 0, - "m_parent_sub_section": "quantities", - "name": "name", - "description": "Descriptive name of sample", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-sample-name-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "name", - "nx_optional": false, - "nx_maxOccurs": "1", - "nx_minOccurs": "0" - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [], - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 1, - "m_parent_sub_section": "quantities", - "name": "temperature", - "description": "Sample temperature. This could be a scanned variable", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-sample-temperature-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "temperature", - "nx_units": "NX_TEMPERATURE", - "nx_optional": false, - "nx_minOccurs": "0", - "nx_maxOccurs": "1" - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [], - "dimensionality": "[temperature]", - "flexible_unit": true - } - ] - }, - { - "m_def": "nomad.metainfo.metainfo.Section", - "m_parent_index": 2, - "m_parent_sub_section": "inner_section_definitions", - "name": "NXdata", - "description": "The data group\n\n.. note:: Before the NIAC2016 meeting [#]_, at least one\n :ref:`NXdata` group was required in each :ref:`NXentry` group.\n At the NIAC2016 meeting, it was decided to make :ref:`NXdata`\n an optional group in :ref:`NXentry` groups for data files that\n do not use an application definition.\n It is recommended strongly that all NeXus data files provide\n a NXdata group.\n It is permissable to omit the NXdata group only when\n defining the default plot is not practical or possible\n from the available data.\n\n For example, neutron event data may not have anything that\n makes a useful plot without extensive processing.\n\n Certain application definitions override this decision and\n require an :ref:`NXdata` group\n in the :ref:`NXentry` group. The ``minOccurs=0`` attribute\n in the application definition will indicate the\n :ref:`NXdata` group\n is optional, otherwise, it is required.\n\n .. [#] NIAC2016:\n https://www.nexusformat.org/NIAC2016.html,\n https://github.com/nexusformat/NIAC/issues/16", - "links": [ - "https://manual.nexusformat.org/classes/applications/NXarpes.html#nxarpes-entry-data-group" - ], - "more": { - "nx_kind": "group", - "nx_category": "base", - "nx_name": "NXdata", - "nx_type": "NXdata", - "nx_optional": false, - "nx_extends": "NXobject", - "nx_ignoreExtraFields": "true", - "nx_ignoreExtraAttributes": "true" - }, - "base_sections": [ - "/packages/18/section_definitions/39/inner_section_definitions/0" - ], - "attributes": [ - { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "auxiliary_signals", - "variable": false, - "more": { - "nx_name": "auxiliary_signals" - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [] - }, - { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 1, - "m_parent_sub_section": "attributes", - "name": "signal", - "variable": false, - "more": { - "nx_name": "signal" - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [] - }, - { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 2, - "m_parent_sub_section": "attributes", - "name": "axes", - "variable": false, - "more": { - "nx_name": "axes" - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [] - }, - { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 3, - "m_parent_sub_section": "attributes", - "name": "AXISNAME_indices", - "variable": true, - "more": { - "nx_name": "AXISNAME_indices", - "nx_type": "NX_INT" - }, - "type": { - "type_kind": "numpy", - "type_data": "int64" - }, - "shape": [] + "sub_sections": [ + { + "m_def": "nomad.metainfo.metainfo.SubSection", + "m_parent_index": 0, + "m_parent_sub_section": "sub_sections", + "name": "PROCESS", + "variable": true, + "more": { + "nx_kind": "group" + }, + "sub_section": "/packages/20/section_definitions/7/inner_section_definitions/0/inner_section_definitions/0/inner_section_definitions/6/inner_section_definitions/0/inner_section_definitions/0", + "repeats": true + } + ], + "inner_section_definitions": [ + { + "m_def": "nomad.metainfo.metainfo.Section", + "m_parent_index": 0, + "m_parent_sub_section": "inner_section_definitions", + "name": "NXprocess", + "description": "List of triangle sets. This design allows users to combine\nmultiple triangle sets.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-point-to-triangle-triangle-soup-process-group" + ], + "more": { + "nx_kind": "group", + "nx_category": "base", + "nx_name": "NXprocess", + "nx_type": "NXprocess", + "nx_optional": false, + "nx_extends": "NXobject" + }, + "base_sections": [ + "/packages/20/section_definitions/150" + ], + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "default__attribute", + "variable": false, + "more": { + "nx_name": "default" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } + ], + "quantities": [ + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 0, + "m_parent_sub_section": "quantities", + "name": "filename__field", + "description": "Name of the HDF5 file(s) which contain(s) vertex coordinates\nand facet indices to describe the desired set of triangles.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-point-to-triangle-triangle-soup-process-filename-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "filename", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true, + "attributes": [ + { + "m_def": "nomad.metainfo.metainfo.Attribute", + "m_parent_index": 0, + "m_parent_sub_section": "attributes", + "name": "version__attribute", + "variable": false, + "more": { + "nx_name": "version", + "nx_type": "NX_CHAR" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [] + } + ] + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 1, + "m_parent_sub_section": "quantities", + "name": "dataset_name_vertices__field", + "description": "Absolute HDF5 path to the dataset which\nspecifies the array of vertex positions.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-point-to-triangle-triangle-soup-process-dataset-name-vertices-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "dataset_name_vertices", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 2, + "m_parent_sub_section": "quantities", + "name": "dataset_name_facet_indices__field", + "description": "Absolute HDF5 path to the dataset which\nspecifies the array of facet indices.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-point-to-triangle-triangle-soup-process-dataset-name-facet-indices-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "dataset_name_facet_indices", + "nx_optional": false + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + }, + { + "m_def": "nomad.metainfo.metainfo.Quantity", + "m_parent_index": 3, + "m_parent_sub_section": "quantities", + "name": "dataset_name_facet_normals__field", + "description": "Absolute HDF5 path to the dataset which\nspecifies the array of facet normal vectors.", + "links": [ + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-distancer.html#nxapm-paraprobe-config-distancer-entry-process-point-to-triangle-triangle-soup-process-dataset-name-facet-normals-field" + ], + "variable": false, + "more": { + "nx_kind": "field", + "nx_type": "NX_CHAR", + "nx_name": "dataset_name_facet_normals", + "nx_optional": "true" + }, + "type": { + "type_kind": "python", + "type_data": "str" + }, + "shape": [], + "flexible_unit": true + } + ] + } + ] + } + ] } ] } @@ -65709,284 +70229,36 @@ }, { "m_def": "nomad.metainfo.metainfo.Section", - "m_parent_index": 6, + "m_parent_index": 8, "m_parent_sub_section": "section_definitions", - "name": "NXattenuator", - "description": "A device that reduces the intensity of a beam by attenuation.\n\nIf uncertain whether to use :ref:`NXfilter` (band-pass filter)\nor :ref:`NXattenuator` (reduces beam intensity), then choose \n:ref:`NXattenuator`.", + "name": "NXapm_paraprobe_config_intersector", + "description": "Configuration of a paraprobe-intersector tool run in atom probe microscopy.", "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXattenuator.html#nxattenuator-group" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-intersector.html#nxapm-paraprobe-config-intersector-group" ], "more": { "nx_kind": "group", - "nx_category": "base", - "nx_name": "NXattenuator", + "nx_category": "application", + "nx_name": "NXapm_paraprobe_config_intersector", "nx_type": "group", - "nx_optional": true, + "nx_optional": false, "nx_extends": "NXobject" }, "base_sections": [ - "/packages/18/section_definitions/83" - ], - "attributes": [ - { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "default", - "variable": false, - "more": { - "nx_name": "default" - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [] - } - ], - "quantities": [ - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 0, - "m_parent_sub_section": "quantities", - "name": "distance", - "description": "Distance from sample. Note, it is recommended to use NXtransformations instead.", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXattenuator.html#nxattenuator-distance-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "distance", - "nx_units": "NX_LENGTH", - "nx_optional": false - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [], - "dimensionality": "[length]", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 1, - "m_parent_sub_section": "quantities", - "name": "type", - "description": "Type or composition of attenuator, e.g. polythene", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXattenuator.html#nxattenuator-type-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "type", - "nx_optional": true - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [], - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 2, - "m_parent_sub_section": "quantities", - "name": "thickness", - "description": "Thickness of attenuator along beam direction", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXattenuator.html#nxattenuator-thickness-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "thickness", - "nx_units": "NX_LENGTH", - "nx_optional": true - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [], - "dimensionality": "[length]", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 3, - "m_parent_sub_section": "quantities", - "name": "scattering_cross_section", - "description": "Scattering cross section (coherent+incoherent)", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXattenuator.html#nxattenuator-scattering-cross-section-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "scattering_cross_section", - "nx_units": "NX_CROSS_SECTION", - "nx_optional": true - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [], - "dimensionality": "[area]", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 4, - "m_parent_sub_section": "quantities", - "name": "absorption_cross_section", - "description": "Absorption cross section", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXattenuator.html#nxattenuator-absorption-cross-section-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "absorption_cross_section", - "nx_units": "NX_CROSS_SECTION", - "nx_optional": true - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [], - "dimensionality": "[area]", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 5, - "m_parent_sub_section": "quantities", - "name": "attenuator_transmission", - "description": "The nominal amount of the beam that gets through\n(transmitted intensity)/(incident intensity)", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXattenuator.html#nxattenuator-attenuator-transmission-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "attenuator_transmission", - "nx_units": "NX_ANY", - "nx_optional": false, - "nx_minOccurs": "0" - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [], - "dimensionality": "1", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 6, - "m_parent_sub_section": "quantities", - "name": "status", - "description": "In or out or moving of the beam", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXattenuator.html#nxattenuator-status-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "status", - "nx_optional": true - }, - "type": { - "type_kind": "Enum", - "type_data": [ - "in", - "out", - "moving" - ] - }, - "shape": [], - "flexible_unit": true, - "attributes": [ - { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "time", - "variable": false, - "more": { - "nx_name": "time", - "nx_type": "NX_DATE_TIME" - }, - "type": { - "type_kind": "custom", - "type_data": "nomad.metainfo.metainfo._Datetime" - }, - "shape": [] - } - ] - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 7, - "m_parent_sub_section": "quantities", - "name": "depends_on", - "description": "NeXus positions components by applying a set of translations and rotations\nto apply to the component starting from 0, 0, 0. The order of these operations\nis critical and forms what NeXus calls a dependency chain. The depends_on\nfield defines the path to the top most operation of the dependency chain or the\nstring \".\" if located in the origin. Usually these operations are stored in a\nNXtransformations group. But NeXus allows them to be stored anywhere.\n\nThe reference point of the attenuator is its center in the x and y axis. The reference point on the z axis is the\nsurface of the attenuator pointing towards the source.\n\nIn complex (asymmetic) geometries an NXoff_geometry group can be used to provide an unambiguous reference.\n\n.. image:: attenuator/attenuator.png\n :width: 40%", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXattenuator.html#nxattenuator-depends-on-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_CHAR", - "nx_name": "depends_on", - "nx_optional": true - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [], - "flexible_unit": true - } + "/packages/20/section_definitions/138" ], "sub_sections": [ { "m_def": "nomad.metainfo.metainfo.SubSection", "m_parent_index": 0, "m_parent_sub_section": "sub_sections", - "name": "TRANSFORMATIONS", + "name": "ENTRY", "variable": true, "more": { "nx_kind": "group" }, - "sub_section": "/packages/18/section_definitions/6/inner_section_definitions/0", + "sub_section": "/packages/20/section_definitions/8/inner_section_definitions/0", "repeats": true - }, - { - "m_def": "nomad.metainfo.metainfo.SubSection", - "m_parent_index": 1, - "m_parent_sub_section": "sub_sections", - "name": "shape", - "variable": false, - "more": { - "nx_kind": "group" - }, - "sub_section": "/packages/18/section_definitions/6/inner_section_definitions/1", - "repeats": false } ], "inner_section_definitions": [ @@ -65994,69 +70266,28 @@ "m_def": "nomad.metainfo.metainfo.Section", "m_parent_index": 0, "m_parent_sub_section": "inner_section_definitions", - "name": "NXtransformations", - "description": "This is the group recommended for holding the chain of translation\nand rotation operations necessary to position the component within\nthe instrument. The dependency chain may however traverse similar groups in\nother component groups.", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXattenuator.html#nxattenuator-transformations-group" - ], - "more": { - "nx_kind": "group", - "nx_category": "base", - "nx_name": "NXtransformations", - "nx_type": "NXtransformations", - "nx_optional": true, - "nx_extends": "NXobject", - "nx_ignoreExtraGroups": "true", - "nx_ignoreExtraFields": "true", - "nx_ignoreExtraAttributes": "true" - }, - "base_sections": [ - "/packages/18/section_definitions/138" - ], - "attributes": [ - { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "default", - "variable": false, - "more": { - "nx_name": "default" - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [] - } - ] - }, - { - "m_def": "nomad.metainfo.metainfo.Section", - "m_parent_index": 1, - "m_parent_sub_section": "inner_section_definitions", - "name": "shape", - "description": "Shape of this component. Particulary useful to define the origin for position and orientation in non-standard cases.", + "name": "NXentry", + "description": "(**required**) :ref:`NXentry` describes the measurement. \n\nThe top-level NeXus group which contains all the data and associated\ninformation that comprise a single measurement. \nIt is mandatory that there is at least one\ngroup of this type in the NeXus file.", "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXattenuator.html#nxattenuator-shape-group" + "https://manual.nexusformat.org/classes/contributed_definitions/NXapm-paraprobe-config-intersector.html#nxapm-paraprobe-config-intersector-entry-group" ], "more": { "nx_kind": "group", "nx_category": "base", - "nx_name": "shape", - "nx_type": "NXoff_geometry", - "nx_optional": true, + "nx_name": "NXentry", + "nx_type": "NXentry", + "nx_optional": false, "nx_extends": "NXobject" }, "base_sections": [ - "/packages/18/section_definitions/84" + "/packages/20/section_definitions/86" ], "attributes": [ { "m_def": "nomad.metainfo.metainfo.Attribute", "m_parent_index": 0, "m_parent_sub_section": "attributes", - "name": "default", + "name": "default__attribute", "variable": false, "more": { "nx_name": "default" @@ -66066,611 +70297,15 @@ "type_data": "str" }, "shape": [] - } - ] - } - ] - }, - { - "m_def": "nomad.metainfo.metainfo.Section", - "m_parent_index": 7, - "m_parent_sub_section": "section_definitions", - "name": "NXbeam", - "description": "Properties of the neutron or X-ray beam at a given location. \n\nThis group is intended to be referenced\nby beamline component groups within the :ref:`NXinstrument` group or by the :ref:`NXsample` group. This group is\nespecially valuable in storing the results of instrument simulations in which it is useful\nto specify the beam profile, time distribution etc. at each beamline component. Otherwise,\nits most likely use is in the :ref:`NXsample` group in which it defines the results of the neutron\nscattering by the sample, e.g., energy transfer, polarizations.\n\nNote that incident_wavelength and related fields can be a scalar values or arrays, depending on the use case.\nTo support these use cases, the explicit dimensionality of these fields is not specified, but it can be inferred\nby the presense of and shape of accompanying fields, such as incident_wavelength_weights for a polychromatic beam.", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXbeam.html#nxbeam-group" - ], - "more": { - "nx_kind": "group", - "nx_category": "base", - "nx_name": "NXbeam", - "nx_type": "group", - "nx_optional": true, - "nx_extends": "NXobject" - }, - "base_sections": [ - "/packages/18/section_definitions/83" - ], - "attributes": [ - { - "m_def": "nomad.metainfo.metainfo.Attribute", - "m_parent_index": 0, - "m_parent_sub_section": "attributes", - "name": "default", - "variable": false, - "more": { - "nx_name": "default" - }, - "type": { - "type_kind": "python", - "type_data": "str" - }, - "shape": [] - } - ], - "quantities": [ - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 0, - "m_parent_sub_section": "quantities", - "name": "distance", - "description": "Distance from sample. Note, it is recommended to use NXtransformations instead.", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXbeam.html#nxbeam-distance-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_NUMBER", - "nx_name": "distance", - "nx_units": "NX_LENGTH", - "nx_optional": false - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [], - "dimensionality": "[length]", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 1, - "m_parent_sub_section": "quantities", - "name": "incident_energy", - "description": "Energy carried by each particle of the beam on entering the beamline component", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXbeam.html#nxbeam-incident-energy-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "incident_energy", - "nx_units": "NX_ENERGY", - "nx_optional": false - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [ - "m" - ], - "dimensionality": "[energy]", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 2, - "m_parent_sub_section": "quantities", - "name": "final_energy", - "description": "Energy carried by each particle of the beam on leaving the beamline component", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXbeam.html#nxbeam-final-energy-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "final_energy", - "nx_units": "NX_ENERGY", - "nx_optional": true - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [ - "m" - ], - "dimensionality": "[energy]", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 3, - "m_parent_sub_section": "quantities", - "name": "energy_transfer", - "description": "Change in particle energy caused by the beamline component", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXbeam.html#nxbeam-energy-transfer-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "energy_transfer", - "nx_units": "NX_ENERGY", - "nx_optional": true - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [ - "m" - ], - "dimensionality": "[energy]", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 4, - "m_parent_sub_section": "quantities", - "name": "incident_wavelength", - "description": "In the case of a monochromatic beam this is the scalar\nwavelength.\n\nSeveral other use cases are permitted, depending on the\npresence or absence of other incident_wavelength_X\nfields.\n\nIn the case of a polychromatic beam this is an array of\nlength **m** of wavelengths, with the relative weights\nin ``incident_wavelength_weights``.\n\nIn the case of a monochromatic beam that varies shot-\nto-shot, this is an array of wavelengths, one for each\nrecorded shot. Here, ``incident_wavelength_weights`` and\nincident_wavelength_spread are not set.\n\nIn the case of a polychromatic beam that varies shot-to-\nshot, this is an array of length **m** with the relative\nweights in ``incident_wavelength_weights`` as a 2D array.\n\nIn the case of a polychromatic beam that varies shot-to-\nshot and where the channels also vary, this is a 2D array\nof dimensions **nP** by **m** (slow to fast) with the\nrelative weights in ``incident_wavelength_weights`` as a 2D\narray.\n\nNote, :ref:`variants ` are a good way\nto represent several of these use cases in a single dataset,\ne.g. if a calibrated, single-value wavelength value is\navailable along with the original spectrum from which it\nwas calibrated.\nWavelength on entering beamline component", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXbeam.html#nxbeam-incident-wavelength-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "incident_wavelength", - "nx_units": "NX_WAVELENGTH", - "nx_optional": false, - "nx_minOccurs": "1" - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [], - "dimensionality": "[length]", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 5, - "m_parent_sub_section": "quantities", - "name": "incident_wavelength_weights", - "description": "In the case of a polychromatic beam this is an array of\nlength **m** of the relative weights of the corresponding\nwavelengths in ``incident_wavelength``.\n\nIn the case of a polychromatic beam that varies shot-to-\nshot, this is a 2D array of dimensions **nP** by **m**\n(slow to fast) of the relative weights of the\ncorresponding wavelengths in ``incident_wavelength``.", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXbeam.html#nxbeam-incident-wavelength-weights-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "incident_wavelength_weights", - "nx_optional": false, - "nx_minOccurs": "0" - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [], - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 6, - "m_parent_sub_section": "quantities", - "name": "incident_wavelength_spread", - "description": "The wavelength spread FWHM for the corresponding\nwavelength(s) in incident_wavelength.\n\nIn the case of shot-to-shot variation in the wavelength\nspread, this is a 2D array of dimension **nP** by\n**m** (slow to fast) of the spreads of the\ncorresponding wavelengths in incident_wavelength.", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXbeam.html#nxbeam-incident-wavelength-spread-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "incident_wavelength_spread", - "nx_units": "NX_WAVELENGTH", - "nx_optional": false, - "nx_minOccurs": "0" - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [ - "nP" - ], - "dimensionality": "[length]", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 7, - "m_parent_sub_section": "quantities", - "name": "incident_beam_divergence", - "description": "Beam crossfire in degrees parallel to the laboratory X axis\n\nThe dimension **c** is a series of moments of that represent\nthe standard uncertainty (e.s.d.) of the directions of\nof the beam. The first and second moments are in the XZ and YZ\nplanes around the mean source beam direction, respectively.\n\nFurther moments in **c** characterize co-variance terms, so\nthe next moment is the product of the first two, and so on.", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXbeam.html#nxbeam-incident-beam-divergence-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "incident_beam_divergence", - "nx_units": "NX_ANGLE", - "nx_optional": false, - "nx_minOccurs": "0", - "nx_maxOccurs": "1" - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [ - "nP", - "c" - ], - "dimensionality": "[angle]", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 8, - "m_parent_sub_section": "quantities", - "name": "extent", - "description": "Size of the beam entering this component. Note this represents\na rectangular beam aperture, and values represent FWHM", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXbeam.html#nxbeam-extent-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "extent", - "nx_units": "NX_LENGTH", - "nx_optional": false, - "nx_minOccurs": "0", - "nx_maxOccurs": "1" - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [ - "nP", - 2 - ], - "dimensionality": "[length]", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 9, - "m_parent_sub_section": "quantities", - "name": "final_wavelength", - "description": "Wavelength on leaving beamline component", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXbeam.html#nxbeam-final-wavelength-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_FLOAT", - "nx_name": "final_wavelength", - "nx_units": "NX_WAVELENGTH", - "nx_optional": true - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [ - "m" - ], - "dimensionality": "[length]", - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 10, - "m_parent_sub_section": "quantities", - "name": "incident_polarization", - "description": "Polarization vector on entering beamline component", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXbeam.html#nxbeam-incident-polarization-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_NUMBER", - "nx_name": "incident_polarization", - "nx_units": "NX_ANY", - "nx_optional": false, - "nx_recommended": "true" - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [ - "nP", - 2 - ], - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 11, - "m_parent_sub_section": "quantities", - "name": "final_polarization", - "description": "Polarization vector on leaving beamline component", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXbeam.html#nxbeam-final-polarization-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_NUMBER", - "nx_name": "final_polarization", - "nx_units": "NX_ANY", - "nx_optional": true - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [ - "nP", - 2 - ], - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 12, - "m_parent_sub_section": "quantities", - "name": "incident_polarization_stokes", - "description": "Polarization vector on entering beamline component using Stokes notation\n\nThe Stokes parameters are four components labelled I,Q,U,V or S_0,S_1,S_2,S_3.\nThese are defined with the standard Nexus coordinate frame unless it is\noverridden by an NXtransformations field pointed to by a depends_on attribute.\nThe last component, describing the circular polarization state, is positive\nfor a right-hand circular state - that is the electric field vector rotates\nclockwise at the sample and over time when observed from the source.\n\nI (S_0) is the beam intensity (often normalized to 1). Q, U, and V scale \nlinearly with the total degree of polarization, and indicate the relative\nmagnitudes of the pure linear and circular orientation contributions.\n \nQ (S_1) is linearly polarized along the x axis (Q > 0) or y axis (Q < 0).\n \nU (S_2) is linearly polarized along the x==y axis (U > 0) or the\n-x==y axis (U < 0). \n\nV (S_3) is circularly polarized. V > 0 when the electric field vector rotates\nclockwise at the sample with respect to time when observed from the source; \nV < 0 indicates the opposite rotation.", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXbeam.html#nxbeam-incident-polarization-stokes-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_NUMBER", - "nx_name": "incident_polarization_stokes", - "nx_units": "NX_ANY", - "nx_optional": false, - "nx_recommended": "true" - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [ - "nP", - 4 - ], - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 13, - "m_parent_sub_section": "quantities", - "name": "final_polarization_stokes", - "description": "Polarization vector on leaving beamline component using Stokes notation\n(see incident_polarization_stokes).", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXbeam.html#nxbeam-final-polarization-stokes-field" - ], - "variable": false, - "more": { - "nx_kind": "field", - "nx_type": "NX_NUMBER", - "nx_name": "final_polarization_stokes", - "nx_units": "NX_ANY", - "nx_optional": true - }, - "type": { - "type_kind": "numpy", - "type_data": "float64" - }, - "shape": [ - "nP", - 4 - ], - "flexible_unit": true - }, - { - "m_def": "nomad.metainfo.metainfo.Quantity", - "m_parent_index": 14, - "m_parent_sub_section": "quantities", - "name": "final_wavelength_spread", - "description": "Wavelength spread FWHM of beam leaving this component", - "links": [ - "https://manual.nexusformat.org/classes/base_classes/NXbeam.html#nxbeam-final-wavelength-spread-field" - ], - "variable": false, - "more": { - "nx_kind": "field", -