ESRF hc6528 · 400_4 in-situ powder diffraction at ESRF ID22, 900 → 1300 °C · the files, the extraction, the figures · thermomat, Fisika Saila, EHU

Protocol

The extraction, step by step

The report to the group: every step taken on 23 October 2026 to turn the folder as received into a named, verified, described dataset, in the order taken, with the command run and the evidence it returned. Ids P01–P14 never change. The numbers quoted are recomputed from the originals on every build.

Input
edited-files-hc6528_400_4 2/: 101 .xye files, 112 MB, mode 000; a zip beside it, excluded
Output
originals/ (the same files, readable), renamed/ (101 byte-identical copies, new names), file_index.csv, README.md, this site
Changed
The file mode of the originals, 000 → 644. Nothing else: see below
Verified
SHA-256 of every original = its copy = the index, twice on the day and on every build since
P01survey

The project folder as received

The folder 20261023_esrf_datuak_irene held three things: the archive edited-files-hc6528_400_4.zip (34.1 MB), the folder it had been extracted to, edited-files-hc6528_400_4 2/, and a Finder .DS_Store. Josu's brief: study the extracted folder in depth, leave the zip alone, keep the files as they are, rename the folder to originals, and make a properly named copy of every file in a new folder.

ls -la
ls "edited-files-hc6528_400_4 2" | wc -l
du -sh "edited-files-hc6528_400_4 2"
Evidence

101 files, 112 MB, every one with the extension .xye. The zip was not opened, listed or compared; it is excluded from everything that follows.

P02survey

The files could not be read: mode 000 from the extraction

The first attempt to read a file was refused with Permission denied. The folder was drwx---rwx with a com.apple.quarantine attribute, and every file inside was ---------- (mode 000): the archive had been extracted without read permission for anyone, owner included. The owner is the local user, so the mode could be changed. This is the only change made to the originals: names, contents, sizes and modification times are untouched (P13 proves it with checksums).

whoami; id
ls -la@ | head
chmod 644 *.xye
Evidence

Before: ---------- 1 kevin staff 1160656 Jun 10 19:03 hc6528_400_4_Qu_1000C_w0003_b0001-3242s.xye (and so on for all 101). After chmod 644, every file readable. The folder's own mode and quarantine flag were left as found.

P03read

What a file contains: three columns, no header

The head and tail of the first scan (…900C…-0s.xye) were printed. Every line is three numbers: 2θ in degrees, an intensity and an estimated standard deviation (esd). There is no header, no comment line and no metadata of any kind inside the files. The first lines, below about 0.02°, have zero intensity with a large esd: the beamstop's shadow. The 2θ axis runs from 0.008° to 26.999°.

head -25 hc6528_400_4_Qu_900C_w0003_b0001-0s.xye
tail -3  hc6528_400_4_Qu_900C_w0003_b0001-0s.xye
Evidence
    0.008000  0.0000000      1567.0943
    0.009000  0.0000000      100.84378
    …
    0.023000  1690.1763      412.41486
    …
   26.999000  82.555925      3.5181567
So the "contents" from which the copies were to be named are the numbers alone; all the metadata is in the
filenames and in the file system (P06).
P04read

Two sizes, two line counts

The sizes and line counts of all 101 files fall into exactly two groups.

ls -l *.xye | awk '{print $5}' | sort | uniq -c
wc -l *.xye | awk '{print $1}' | sort | uniq -c
Evidence
  • 20 files of 1 160 656 bytes and 26 992 lines.
  • 81 files of 1 160 613 bytes and 26 991 lines. The 43-byte difference is exactly one line: the 20 larger files start at 0.008°, the 81 smaller ones at 0.009° (P07 confirms it file by file).
P05read

The filename pattern decoded

Every name matches hc6528_400_4_Qu_<tag>_w0003_b0001-<N>s.xye. Read as: hc6528 the ESRF proposal number (HC-6528), 400_4 the sample, Qu a sample label whose meaning is still to be asked, <tag> a nominal temperature written either as 900C … 1300C (with a C) or as 1225 … 1300 (bare), or background_nosample; w0003 a parameter of the data reduction not identified from the files alone; b0001 a bin width of 0.001°, which the data's step confirms; <N>s seconds elapsed since the first scan. The tags are not unique: 39 files share the tag 1270, 14 the tag 1300; only the elapsed seconds tell them apart.

Evidence

A regular expression over the 101 names matched all of them. Tags found: 900C, 925C, 950C, 975C, 1000C, 1025C, 1050C, 1075C, 1100C, 1125C, 1150C, 1175C, 1200C, 1225C, 1225, 1240, 1245, 1250, 1266, 1270, 1272, 1275, 1280, 1290C, 1290, 1299, 1300, 1300C, background_nosample.

P06characterise

Per-file statistics, sorted by elapsed time

A Python pass over every file computed: number of points, first and last 2θ, lines that did not parse, the integrated intensity, the maximum intensity, and the file's modification time. The table was sorted by the elapsed seconds in the name, which put the experiment in order: a 25 °C-step ramp from 900 °C, then dense series at 1240–1300 °C, then the background.

python3 - <<'EOF'
# for every *.xye: parse the three columns, read the elapsed seconds from the name, read the mtime,
# print sec, tag, n, x0, x1, bad lines, sum(I), max(I), mtime; sort by sec
EOF
Evidence
  • No line failed to parse in any file.
  • Every file ends at 26.999°; 20 start at 0.008°, 81 at 0.009°.
  • The integrated intensity is nearly constant, 4.49–4.66 million counts for the sample scans and 4.16 million for the background: the patterns are on a common scale already (F03).
  • The maximum intensity of the whole pattern is always in the first 0.03° (the direct beam's tail), so it says nothing about the sample; the statistics were redone above 1° (P08).
P07characterise

The modification times are the scan times

The modification time of every file minus its elapsed seconds gives the same instant, 2026-06-10 18:09:48, for all 101 files. So the clock time of every scan is recoverable, and the two sources of time (name and file system) agree exactly. The experiment ran from 18:09 on 10 June 2026 to 04:46 on 11 June, 10.6 hours.

Evidence

mtime − sec − T0 took a single value, 0 s, over the 101 files. Copies were therefore made with shutil.copy2, which preserves modification times (P12).

P08characterise

Grid, counting statistics and a crude peak count

A second pass checked the 2θ step of every file (min and max of the differences), computed the median relative error e/y above 2° as a proxy for counting time, and counted peaks: local maxima more than 6 esd above a 301-point rolling median, at 2θ above 1°. The peak count is a consistency check between scans, not a peak search.

python3 analyze.py    # the site's own tool: it repeats this pass and every checksum on each build
Evidence
  • The step is 0.001° in every file: min = max = 0.0010.
  • Median e/y: 0.0396–0.0414 for the 26 992-point files, 0.0463–0.0490 for the 26 991-point ones, and 0.0661 for one file alone (the bare 1290 at 31 630 s, scan 085). Two exposure classes, plus one outlier (F02, F05).
  • Peaks above 1°: 2 at 900 °C, 13 at 975 °C, about 50 from 1000 to 1250 °C, 54 → 138 through the 1270 °C hold, up to 322 in the last long scan at 1300 °C, 0 in the background (F04).
P09decide

The naming scheme for the copies

Since the files carry no metadata inside, the new names were built from what was recovered: the order, the temperature, the elapsed time, and the one property the contents themselves give, the exposure class. Decided: hc6528_400_4_Qu_<seq>_T<temp>C_t<elapsed>s_<class>.xye, with seq 001–101 zero-padded so that alphabetical order is acquisition order, the temperature zero-padded to four digits (the originals mixed 900C and 1270), the elapsed seconds zero-padded to five digits, and class either long or short. The background is hc6528_400_4_Qu_101_background_nosample_t38192s_long.xye. The C suffix of the originals is not in the name but is recorded in the index; what it meant is still to be asked.

Evidence

Example: hc6528_400_4_Qu_900C_w0003_b0001-0s.xye → hc6528_400_4_Qu_001_T0900C_t00000s_long.xye; hc6528_400_4_Qu_1270_w0003_b0001-16530s.xye → hc6528_400_4_Qu_032_T1270C_t16530s_short.xye. Set aside: keeping the C suffix in the name (it duplicates the temperature and its meaning is unconfirmed); the clock time in the name (long; it is in the index and on the Data page); the fields w0003_b0001 (constant over the set).

P10execute

The folder renamed to originals

mv "edited-files-hc6528_400_4 2" originals
Evidence

originals/ with the 101 files, names and contents as received, mode 644 (P02).

P11execute

The new folder renamed/, one copy per original

A Python script read the mapping (P09), copied each file with shutil.copy2 into renamed/ under its new name, and computed the SHA-256 of source and copy before moving to the next file, stopping on the first mismatch. None occurred.

mkdir renamed
python3 - <<'EOF'
# for each original: new name from (seq, temp, sec, class); shutil.copy2; assert sha256(src) == sha256(dst)
# write file_index.csv with both names, metadata, statistics and the hash
EOF
Evidence

101 copies, 112 MB in each folder, 101 assertions passed.

P12document

The index and the README

file_index.csv at the project root maps every original to its copy, with the nominal temperature, the original tag and whether it had the C suffix, the elapsed seconds, the clock start time, the point count, the 2θ range, the exposure class, the median relative error, the maximum intensity above 1° and the SHA-256. README.md describes the layout, the format, the naming scheme, the experiment's stages, what the data show and the caveats.

Evidence

file_index.csv: 101 rows, 15 columns. README.md: six sections.

P13verify

Independent re-verification of all 101 pairs

A separate script re-read file_index.csv, recomputed the SHA-256 of every original and every copy, and compared both with the hash in the index.

python3 - <<'EOF'
# for each row: sha256(originals/orig) == sha256(renamed/new) == row.sha256
EOF
Evidence

pairs checked: 101 mismatches: 0. The same check runs inside the site's build (analyze.py) on every render.

P14document

This site, and the record of every step

Josu asked for the steps to be logged for the group, and for the project's website in the family's form. The site is ecosystem/: data files, a generator and a Quarto project with the family design kit, as thermomat-phd-offers and rietveld-minimisation. Plotting the contents was the next phase and was not started then, as asked: "do not do, for the moment".

What was changed, and what was not

  • Changed. The permission bits of the 101 original files, from ---------- to -rw-r--r-- (P02). The folder's name, edited-files-hc6528_400_4 2 → originals (P10).
  • Not changed. The names of the original files, their contents, their sizes, their modification times (10–11 June 2026), the folder's own permission bits and quarantine attribute, and the zip.
  • Added. renamed/ with 101 copies, file_index.csv, README.md, this site.
  • Proof. The SHA-256 of every original is in file_index.csv; the site's build recomputes it from originals/ and from renamed/ and stops if any of the three disagree.