Skip to content

Campaign 2026: Promote contributed definitions to applications/base_classes #1639

Description

@woutdenolf
Python script that generated the original table ...
from pathlib import Path
import subprocess

CONTRIB = Path(".") / "contributed_definitions"

GITHUB_BASE = (
    "https://github.com/nexusformat/definitions/blob/main/contributed_definitions"
)

DOCS_BASE = "https://manual.nexusformat.org/classes/contributed_definitions"


def git_commit_info(path: Path, first: bool) -> str:
    """
    Return commit date and author with email as a mailto link.

    If first=True, return the first commit introducing the file.
    Otherwise, return the last commit modifying the file.
    """
    if first:
        cmd = [
            "git",
            "log",
            "--diff-filter=A",
            "--follow",
            "--date=short",
            "--format=%ad%x09%an%x09%ae",
            "--",
            str(path),
        ]
    else:
        cmd = [
            "git",
            "log",
            "-1",
            "--follow",
            "--date=short",
            "--format=%ad%x09%an%x09%ae",
            "--",
            str(path),
        ]

    result = subprocess.run(cmd, capture_output=True, text=True, check=True)

    commits = [c.strip() for c in result.stdout.splitlines() if c.strip()]

    if not commits:
        return "Unknown"

    if first:
        commit = commits[-1]
    else:
        commit = commits[0]

    date, name, email = commit.split("\t")

    return f"{date} [{name}](mailto:{email})"


rows = []

for path in CONTRIB.glob("NX*.nxdl.xml"):
    name = path.name.replace(".nxdl.xml", "")

    github = f"[{name}]({GITHUB_BASE}/{path.name})"
    docs = f"[doc]({DOCS_BASE}/{name}.html#{name.lower()})"

    first = git_commit_info(path, first=True)
    last = git_commit_info(path, first=False)

    first_date = first.split()[0] if first != "Unknown" else "9999-99-99"

    rows.append((first_date, github, docs, first, last))

rows.sort(key=lambda row: row[0])


with open("contributions.md", "w", encoding="utf-8") as f:
    f.write(
        "| Contribution | First commit | Last commit | Assignee | Investigation | Conclusion |\n"
    )
    f.write(
        "|--------------|--------------|-------------|----------|---------------|------------|\n"
    )

    for _, github, docs, first, last in rows:
        f.write(
            f"| {github} ({docs}) | {first} | {last} |  |  |  |\n"
        )


print("Created contributions.md")

Contributions investigated in this campaign:

Contribution Investigation Conclusion Assignee First commit Last commit
NXsolid_geometry (doc) Contacted
🔵 Leave as is

From Pete: NXsolid_geometry is the work of others. The most substantial contributions in this extremely brief NXDL have the signature of mkuehbach and atomprobe-tc. I can't speak for this NXDL.

NXxpcs was put forward by me. It has languished for many years after a very active development by ALS, APS, & BNL. I doubt any of these facilities will use it as consensus was never reached. I'm not aware of a single champion who should be the designated maintainer. It is a candidate for removal or overhaul by others who wish to define a standard for XPCS. Like other newer techniques, XPCS has multiple paths for analysis and each of these has a set of expectations that are not easily generalized into a common NXDL.

For now, I'd recommend both of these NXDL files remain in contributed. NXxpcs would benefit from a new champion.

Russ 2008-11-05 Pete Jemian 2026-01-07 Peter Chang
NXsnshisto (doc) Contacted
🔴 Remove

When the email bounced I was unable to find a Marie Yao that worked at ORNL. Looking at the commits, hers were the only commits relevant to the meaning of the definition - the rest are standard NIAC housekeeping. An AI search through GitHub repos, publications, etc. found no references to this contributed definition anywhere, so it appears to have been specific to the SNS and never widely (if at all) adopted.

Jul 13: ORNL contacted and asked for a contact at the lab. Heard back from Peterson, Peter <petersonpf@ornl.gov>: they long ago settled on NXevent_data instead of using either of these two (NXsnshisto, NXsnsevent), so he said to remove them.

Russ 2010-10-06 Marie Yao 2023-04-24 Sandor Brockhauser
NXsnsevent (doc) Secondary contact
🔴 Removesee NXsnshisto above - same rationale.
Russ 2010-10-06 Marie Yao 2023-04-24 Sandor Brockhauser
NXspin_rotator (doc) awaiting response
🟡 Still Waiting

Jul 27: sent email to ISIS group leader Adrian Hillier.

Jul 28: received email from Freddie - he needs to ask around and get back to me.

Russ 2011-01-13 Freddie Akeroyd 2026-02-13 Peter Chang
NXsolenoid_magnet (doc) awaiting response
🟡 Still Waitingsee NXspin_rotator above
Russ 2011-01-13 Freddie Akeroyd 2026-02-13 Peter Chang
NXmagnetic_kicker (doc) awaiting response
🟡 Still Waitingsee NXspin_rotator above
Russ 2011-01-13 Freddie Akeroyd 2026-02-13 Peter Chang
NXelectrostatic_kicker (doc) awaiting response
🟡 Still Waitingsee NXspin_rotator above
Russ 2011-01-13 Freddie Akeroyd 2026-01-07 Peter Chang
NXquadrupole_magnet (doc) awaiting response
🟡 Still Waitingsee NXspin_rotator above
Russ 2011-01-13 Freddie Akeroyd 2026-02-13 Peter Chang
NXseparator (doc) awaiting response
🟡 Still Waitingsee NXspin_rotator above
Russ 2011-01-13 Freddie Akeroyd 2026-02-13 Peter Chang
NXcontainer (doc) awaiting response (FWD)
🟡 PendingWaiting on response from @keeble.
Wout 2016-05-19 Michael Wharmby 2026-01-07 Peter Chang
NXcsg (doc) responded
🟢 Promote #1648
  • @mkuehbach is primary contact; sound definition but no confirmed usage as of the initial review.
  • @mkuehbach (2026-08): "NXcsg and NXquadric complete, useful, but used by few if any, nevertheless to me since 2024 ready for promotion".
Wout 2018-10-24 Timothy Spain 2026-01-07 Peter Chang
NXquadric (doc) responded
🟢 Promote #1648see NXcsg above (identical feedback covers both).
Wout 2018-10-24 Timothy Spain 2026-01-07 Peter Chang
NXcxi_ptycho (doc) responded
🟢 Promote #1646@daurer is the primary contact; actively used at DLS I08-1.
Wout 2018-10-27 Aaron Parsons 2026-01-07 Peter Chang
NXregion (doc) awaiting response
🟡 PendingWaiting on response from @PeterC-DLS.
Wout 2021-12-15 Peter Chang 2026-01-07 Peter Chang
NXxpcs (doc) Contacted
🔵 Leave as issee NXsolid_geometry above
Russ 2022-01-28 Pete R Jemian 2026-01-07 Peter Chang
NXapm_paraprobe_ranger_config (doc) responded
🟢 Promote
  • @lukaspie: NXapm_paraprobe_* definitions describe APM analysis in the open-source paraprobe-toolbox; fairly complete and probably ready for standardization, though the community is small so it's more on NIAC to decide if it wants to support this going forward.
  • @mkuehbach: complete and can be promoted.
Fabio 2022-03-31 kuehbachm 2026-01-07 Peter Chang
NXapm_paraprobe_selector_results (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
Fabio 2022-03-31 kuehbachm 2026-01-07 Peter Chang
NXdispersion_single_parameter (doc) responded
🔵 Leave as is / possible removal
  • @lukaspie: useful but not really in use right now; implicitly introduces math notation (see Math support in NeXus #711) which has historically been seen as problematic. Suggests keeping as-is for future discussion, or removing - these are the least-used FAIRmat definitions.
  • @mkuehbach: good as an idea but not completed, and controversial as mentioned.
Fabio 2022-03-31 kuehbachm 2026-01-07 Peter Chang
NXiv_temp (doc) awaiting response Fabio 2022-07-11 kuehbachm 2026-01-07 Peter Chang
NXtransmission (doc) email bounced
🟡 Pending follow-upWill write to Markus.
Fabio 2022-08-03 domna 2026-01-07 Peter Chang
NXspatial_filter (doc) awaiting response Fabio 2022-09-02 kuehbachm 2026-01-07 Peter Chang
NXapm_paraprobe_selector_config (doc) awaiting response Fabio 2022-09-02 kuehbachm 2026-01-07 Peter Chang
NXdelocalization (doc) awaiting response Fabio 2022-09-02 kuehbachm 2026-01-07 Peter Chang
NXisocontour (doc) awaiting response Fabio 2022-09-02 kuehbachm 2026-01-07 Peter Chang
NXmicrostructure_feature (doc) responded
🔵 Leave as is
Fabio 2022-09-02 kuehbachm 2026-01-07 Peter Chang
NXmicrostructure_slip_system (doc) responded
🔵 Leave as issee NXmicrostructure_feature above
Fabio 2022-09-02 kuehbachm 2026-01-07 Peter Chang
NXsensor_scan (doc) awaiting response Fabio 2022-09-05 Sherjeel Shabih 2026-01-07 Peter Chang
NXsubsampling_filter (doc) awaiting response Fabio 2022-09-07 kuehbachm 2026-01-07 Peter Chang
NXmatch_filter (doc) awaiting response Fabio 2022-09-07 kuehbachm 2026-01-07 Peter Chang
NXdispersion (doc) responded
🔵 Leave as is / possible removalsee NXdispersion_single_parameter above
2023-02-01 Florian Dobener 2026-01-07 Peter Chang
NXdispersion_repeated_parameter (doc) responded
🔵 Leave as is / possible removalsee NXdispersion_single_parameter above
2023-02-01 Florian Dobener 2026-01-07 Peter Chang
NXdispersion_function (doc) responded
🔵 Leave as is / possible removalsee NXdispersion_single_parameter above
2023-02-01 Florian Dobener 2026-01-07 Peter Chang
NXdispersion_table (doc) responded
🔵 Leave as is / possible removalsee NXdispersion_single_parameter above
2023-02-01 Florian Dobener 2026-01-07 Peter Chang
NXdispersive_material (doc) responded
🔵 Leave as is / possible removalsee NXdispersion_single_parameter above
2023-02-01 Florian Dobener 2026-01-07 Peter Chang
NXsimilarity_grouping (doc) Awaiting Response Russ 2023-02-14 RubelMozumder 2026-01-07 Peter Chang
NXoptical_fiber (doc)
Contactedsandor.brockhauser@cbs.mpg.de;lukas.pielsticker@physik.hu-berlin.de; csturm@physik.uni-leipzig.de
🔵 Leave as is

I contacted Sandor as these are suspected to be FAIRmat contributions. His response:

"Yes, these are our FAIRmat contributions. Carola and Ron worked on them together with Chris (in CC). We have used them in modelling optical spectroscopy setups. They have been used in demo applications, but have not yet been taken up by the community and this is why we have not pushed them further for standardisation.

Note that during the standardisation of NXoptical_spectroscopy some of the base classes used also here (e.g. NXcomponent) have been altered, so the related demo application may also need further rework before these base classes could be used properly by the community again. I guess quite some further effort is needed before these contributions will be standardised. In the meantime, they were expected to stay as contributed, so the community knows about them and can use them or adjust any new contributions similar to these.

Note that I have put Lukas in CC, too, because he is going to coordinate future activities in these domains."

Russ 2023-05-30 cmmngr 2026-01-07 Peter Chang
NXbeam_splitter (doc)
Contactedsandor.brockhauser@cbs.mpg.de;lukas.pielsticker@physik.hu-berlin.de; csturm@physik.uni-leipzig.de
🔵 Leave as issee NXoptical_fiber above
Russ 2023-05-30 cmmngr 2026-01-07 Peter Chang
NXoptical_polarizer (doc)
Contactedsandor.brockhauser@cbs.mpg.de;lukas.pielsticker@physik.hu-berlin.de; csturm@physik.uni-leipzig.de
🔵 Leave as issee NXoptical_fiber above
Russ 2023-05-30 cmmngr 2026-01-07 Peter Chang
NXapm_paraprobe_surfacer_results (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2024-01-26 mkuehbach 2026-01-07 Peter Chang
NXapm_paraprobe_surfacer_config (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2024-01-26 mkuehbach 2026-01-07 Peter Chang
NXsubstance (doc) 2024-09-23 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_compositionspace_config (doc) responded (indirectly)
🟡 Needs explicit follow-up

Not the paraprobe-toolbox - this is the config for the separate CompositionSpace tool (A. Saxena et al., github.com/eisenforschung/CompositionSpace) for atom probe data. It was introduced/edited in the same FAIRmat PR #1427 as the NXapm_paraprobe_* batch, but neither lukaspie's nor mkuehbach's feedback explicitly covers it. The same small-APM-community reasoning likely applies, but should be confirmed with them directly rather than assumed.

2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_intersector_config (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXmicrostructure_mtex_config (doc) responded
🔵 Leave as issee NXmicrostructure_feature above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_distancer_results (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_tool_parameters (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_compositionspace_results (doc) responded (indirectly)
🟡 Needs explicit follow-upsee NXapm_compositionspace_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_tessellator_results (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_ranger_results (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_spatstat_results (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXem_calorimetry (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_spatstat_config (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_tessellator_config (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_tool_results (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXxrd (doc) responded
🔵 Leave as is
  • @lukaspie: contributed by FAIRmat, but far from finished - propose to keep as-is.
  • @mkuehbach: not meaty/cross-covering enough; would benefit from staying in contributed unless worked on further. Not a fan of a PanAlytical-specific definition - would prefer a single unified XRD definition (spot/1d/2d) worked on harder. Wasn't a priority in FAIRmat phase 1.
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_clusterer_config (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_tool_process (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_distancer_config (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXmicrostructure_odf (doc) responded
🔵 Leave as is (possible future promotion)
  • @lukaspie: keep as-is.
  • @mkuehbach: NXmicrostructure* should remain in contributed generally, but flags NXmicrostructure_ipf/NXmicrostructure_odf specifically as already used as base classes within FAIRmat with thousands of examples.
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_clusterer_results (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_nanochem_results (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_intersector_results (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_tool_config (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_nanochem_config (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXmicrostructure (doc) responded
🔵 Leave as issee NXmicrostructure_feature above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXmicrostructure_pf (doc) responded
🔵 Leave as issee NXmicrostructure_feature above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXmicrostructure_kanapy_results (doc) responded
🔵 Leave as issee NXmicrostructure_feature above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_tool_common (doc) responded
🟢 Promotesee NXapm_paraprobe_ranger_config above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXmicrostructure_score_config (doc) responded
🔵 Leave as issee NXmicrostructure_feature above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXmicrostructure_ipf (doc) responded
🔵 Leave as is (possible future promotion)see NXmicrostructure_odf above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXxrd_pan (doc) responded
🔵 Leave as issee NXxrd above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXmicrostructure_score_results (doc) responded
🔵 Leave as issee NXmicrostructure_feature above
2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXstm (doc) responded
🟡 Pending NIAC discussion

@lukaspie: FAIRmat has an existing PR to move the SPM app defs/base classes out of contributed: #1632. Worked with several scientific groups to check data compatibility - seems fairly complete. Also preparing a large community SPM dataset for publication on NOMAD.

SPM is a large community though, so there could be more feedback from sub-techniques not currently covered - asking NIAC members what they think of this contribution.

2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXlockin (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_positioner (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXamplifier (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_scan_pattern (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_temperature_sensor (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_scan_region (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXafm (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_piezo_sensor (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_piezoelectric_material (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_scan_control (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_cantilever_config (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_piezo_config (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXphase_lock_loop (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_cantilever (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXsts (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXrcs (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_cantilever_oscillator (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_bias_spectroscopy (doc) responded
🟡 Pending NIAC discussionsee NXstm above
2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXtextlog (doc) Contacted
🔵 Leave as is

Jul 27: sent email to ISIS group leader Adrian Hillier.

Jul 28: received email from Freddie - he only recently added this definition, so it should stay where it is for the time being.

Russ 2026-05-27 Freddie Akeroyd 2026-05-27 Freddie Akeroyd

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions