Skip to content

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

Description

@woutdenolf
Python script used to generate the 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")

Examples of what completed rows could look like:

Contribution First commit Last commit Assignee Investigation Conclusion
NXexample (doc) 2008-11-05 Pete Jemian 2026-01-07 Peter Chang Russ awaiting response
Remove Talked to author and found that the def was prototyped but never found its way into general use, ultimately it was abandoned in favour of NXway_better
NXexample2 (doc) 2008-11-05 Pete Jemian 2026-01-07 Peter Chang Wout contacted
Move to applicationsTalked to author, this definition gained acceptance by the community back in 2021 and is used at Diamond,
NXexample3 (doc) 2008-11-05 Pete Jemian 2026-01-07 Peter Chang Fabian no response after 5 days
local contact needed I dont know anyone at that lab so I am awaiting a local contact suggestion from the NIAC
NXexample4 (doc) 2008-11-05 Pete Jemian 2026-01-07 Peter Chang Russ contacted
Leave as isTalked to author and found that the def is still in active discussion with the community and they would like to leave it in contributed definitions for at least another year.
NXexample4 (doc) 2008-11-05 Pete Jemian 2026-01-07 Peter Chang Russ email bounced
appears unusedWas unable to get ahold of the author and digging revealed that no references on the internet were found for this definition in github or in publications

Table:

Contribution First commit Last commit Assignee Investigation Conclusion
NXsolid_geometry (doc) 2008-11-05 Pete Jemian 2026-01-07 Peter Chang Russ Contacted
Leave as isfrom 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.
NXsnshisto (doc) 2010-10-06 Marie Yao 2023-04-24 Sandor Brockhauser Russ Contacted
Remove When the email bounced I was unable to find a Marie Yao that worked at ORNL, looking at the commits it appears that hers were the only commits that were relevant to the meaning of the definition, the rest are standard NIAC housekeeping it appears, I did an AI search to look through github repo's, publications etc to see if the contributed definition was referred to anywhere and found nothing, so by all accounts it appears to be a definition that was specific to the SNS and was never widely (if at all) adopted. Jul13 ORNL contacted and asked for contact at lab. Heard back from Peterson, Peter petersonpf@ornl.gov and he said that they have long ago settled on NXevent_data instead of using either of these two (NXsnshisto, NXsnsevent) so he said to remove them
NXsnsevent (doc) 2010-10-06 Marie Yao 2023-04-24 Sandor Brockhauser Russ Secondary contact
Removesee details for NXsnshisto above as they are the same
NXspin_rotator (doc) 2011-01-13 Freddie Akeroyd 2026-02-13 Peter Chang Russ awaiting response
Still WaitingJul 27: sent email to ISIS group leader Adrian Hillier, Jul 28: rcvd email from Freddie, he needs to ask around and get back to me
NXsolenoid_magnet (doc) 2011-01-13 Freddie Akeroyd 2026-02-13 Peter Chang Russ awaiting response
Still WaitingJul 27: sent email to ISIS group leader Adrian Hillier, Jul 28: rcvd email from Freddie, he needs to ask around and get back to me
NXmagnetic_kicker (doc) 2011-01-13 Freddie Akeroyd 2026-02-13 Peter Chang Russ awaiting response
Still WaitingJul 27: sent email to ISIS group leader Adrian Hillier, Jul 28: rcvd email from Freddie, he needs to ask around and get back to me
NXelectrostatic_kicker (doc) 2011-01-13 Freddie Akeroyd 2026-01-07 Peter Chang Russ awaiting response
Still WaitingJul 27: sent email to ISIS group leader Adrian Hillier, Jul 28: rcvd email from Freddie, he needs to ask around and get back to me
NXquadrupole_magnet (doc) 2011-01-13 Freddie Akeroyd 2026-02-13 Peter Chang Russ awaiting response
Still WaitingJul 27: sent email to ISIS group leader Adrian Hillier, Jul 28: rcvd email from Freddie, he needs to ask around and get back to me
NXseparator (doc) 2011-01-13 Freddie Akeroyd 2026-02-13 Peter Chang Russ awaiting response
Still WaitingJul 27: sent email to ISIS group leader Adrian Hillier, Jul 28: rcvd email from Freddie, he needs to ask around and get back to me
NXcontainer (doc) 2016-05-19 Michael Wharmby 2026-01-07 Peter Chang Wout awaiting response (FWD)
Pending waiting response from @keeble
NXcsg (doc) 2018-10-24 Timothy Spain 2026-01-07 Peter Chang Wout responded
Promote? @mkuehbach primary contact, sound but no known usage
NXquadric (doc) 2018-10-24 Timothy Spain 2026-01-07 Peter Chang Wout responded
Promote? @mkuehbach primary contact, sound but no known usage
NXcxi_ptycho (doc) 2018-10-27 Aaron Parsons 2026-01-07 Peter Chang Wout responded
Promote @daurer primary contact, actively used at DLS I08-1
NXregion (doc) 2021-12-15 Peter Chang 2026-01-07 Peter Chang Wout awaiting response
Pending waiting response from @PeterC-DLS
NXxpcs (doc) 2022-01-28 Pete R Jemian 2026-01-07 Peter Chang Russ Contacted
Leave as is See NXsolid_geometry above
NXapm_paraprobe_ranger_config (doc) 2022-03-31 kuehbachm 2026-01-07 Peter Chang Fabio awaiting response
NXapm_paraprobe_selector_results (doc) 2022-03-31 kuehbachm 2026-01-07 Peter Chang Fabio awaiting response
NXdispersion_single_parameter (doc) 2022-03-31 kuehbachm 2026-01-07 Peter Chang Fabio awaiting response
NXiv_temp (doc) 2022-07-11 kuehbachm 2026-01-07 Peter Chang Fabio awaiting response
NXtransmission (doc) 2022-08-03 domna 2026-01-07 Peter Chang Fabio email bounced will write to Markus
NXspatial_filter (doc) 2022-09-02 kuehbachm 2026-01-07 Peter Chang Fabio awaiting response
NXapm_paraprobe_selector_config (doc) 2022-09-02 kuehbachm 2026-01-07 Peter Chang Fabio awaiting response
NXdelocalization (doc) 2022-09-02 kuehbachm 2026-01-07 Peter Chang Fabio awaiting response
NXisocontour (doc) 2022-09-02 kuehbachm 2026-01-07 Peter Chang Fabio awaiting response
NXmicrostructure_feature (doc) 2022-09-02 kuehbachm 2026-01-07 Peter Chang Fabio awaiting response
NXmicrostructure_slip_system (doc) 2022-09-02 kuehbachm 2026-01-07 Peter Chang Fabio awaiting response
NXsensor_scan (doc) 2022-09-05 Sherjeel Shabih 2026-01-07 Peter Chang Fabio awaiting response
NXsubsampling_filter (doc) 2022-09-07 kuehbachm 2026-01-07 Peter Chang Fabio awaiting response
NXmatch_filter (doc) 2022-09-07 kuehbachm 2026-01-07 Peter Chang Fabio awaiting response
NXdispersion (doc) 2023-02-01 Florian Dobener 2026-01-07 Peter Chang
NXdispersion_repeated_parameter (doc) 2023-02-01 Florian Dobener 2026-01-07 Peter Chang
NXdispersion_function (doc) 2023-02-01 Florian Dobener 2026-01-07 Peter Chang
NXdispersion_table (doc) 2023-02-01 Florian Dobener 2026-01-07 Peter Chang
NXdispersive_material (doc) 2023-02-01 Florian Dobener 2026-01-07 Peter Chang
NXsimilarity_grouping (doc) 2023-02-14 RubelMozumder 2026-01-07 Peter Chang
NXoptical_fiber (doc) 2023-05-30 cmmngr 2026-01-07 Peter Chang
NXbeam_splitter (doc) 2023-05-30 cmmngr 2026-01-07 Peter Chang
NXoptical_polarizer (doc) 2023-05-30 cmmngr 2026-01-07 Peter Chang
NXapm_paraprobe_surfacer_results (doc) 2024-01-26 mkuehbach 2026-01-07 Peter Chang
NXapm_paraprobe_surfacer_config (doc) 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) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_intersector_config (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXmicrostructure_mtex_config (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_distancer_results (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_tool_parameters (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_compositionspace_results (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_tessellator_results (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_ranger_results (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_spatstat_results (doc) 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) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_tessellator_config (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_tool_results (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXxrd (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_clusterer_config (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_tool_process (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_distancer_config (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXmicrostructure_odf (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_clusterer_results (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_nanochem_results (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_intersector_results (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_tool_config (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_nanochem_config (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXmicrostructure (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXmicrostructure_pf (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXmicrostructure_kanapy_results (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXapm_paraprobe_tool_common (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXmicrostructure_score_config (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXmicrostructure_ipf (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXxrd_pan (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXmicrostructure_score_results (doc) 2025-10-20 Lukas Pielsticker 2026-01-07 Peter Chang
NXstm (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXlockin (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_positioner (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXamplifier (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_scan_pattern (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_temperature_sensor (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_scan_region (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXafm (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_piezo_sensor (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_piezoelectric_material (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_scan_control (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_cantilever_config (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_piezo_config (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXphase_lock_loop (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_cantilever (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXsts (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXrcs (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_cantilever_oscillator (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXspm_bias_spectroscopy (doc) 2026-02-13 Markus Kühbach 2026-02-13 Peter Chang
NXtextlog (doc) 2026-05-27 Freddie Akeroyd 2026-05-27 Freddie Akeroyd Russ awaiting response
Still WaitingJul 27: sent email to ISIS group leader Adrian Hillier, Jul 28: rcvd email from Freddie, he needs to ask around and get back to me

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