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"
Evidence101 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
EvidenceBefore: ---------- 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 -cEvidence- 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.
EvidenceA 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.
Evidencemtime − 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.
EvidenceExample: 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
Evidenceoriginals/ 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
Evidence101 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.
Evidencefile_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
Evidencepairs 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.