From 198fb0a41a67a0d6207d20b4676b6aabffec52e1 Mon Sep 17 00:00:00 2001 From: salman Date: Sat, 13 Jun 2026 11:08:10 +0200 Subject: [PATCH] Improve output data handeling from fixed numbered columns to base it on column labels. --- TrimSPlib.js | 115 +++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 94 insertions(+), 21 deletions(-) diff --git a/TrimSPlib.js b/TrimSPlib.js index bebaa6a..fe8e3c2 100644 --- a/TrimSPlib.js +++ b/TrimSPlib.js @@ -3745,22 +3745,31 @@ async function startSequence() { Plot_xy("plotRge",depth,nmuons,['Depth (nm)','Stopped muons (%/nm)',ScanName+'='+Number(SValue)/1000+'keV']); // Read the sequence data let [cfort,cdata]= readDatFile(All["workPath"]+"/fort.33"); - let lyrs = [6]; // back scattered muons - for (let ilayer=18;ilayer { + let LComp = "L" + (offset + 1) + "Comp"; + return { + index: index, + label: All[LComp] || seqInfo.layerHeaders[offset], + }; + }), + ]; // Now loop over all Plotly.purge("plotFrac") - for (let ilayer of lyrs) { + for (let series of plotSeries) { // Normalize - let idata = cdata[ilayer]; + let idata = cdata[series.index]; for (let i=0; i indexByName[name] == null); + if (missing.length > 0) { + throw new Error('Unexpected sequence-file header. Missing columns: ' + missing.join(', ')); + } + + const fixedCount = requiredSummaryFields.length; + let layerHeaders = cols.slice(fixedCount); + if (expectedLayers != null && expectedLayers >= 0) { + layerHeaders = layerHeaders.slice(0, expectedLayers); + } + + return { + indexByName: indexByName, + requiredSummaryFields: requiredSummaryFields, + layerStartIndex: fixedCount, + layerHeaders: layerHeaders, + layerIndices: layerHeaders.map((_, offset) => fixedCount + offset), + }; +} + function plotProfiles(filenames) { // Plot rge files filenames @@ -3868,16 +3927,28 @@ function plotFractions(filename) { var plotDiv=win.document.getElementById("newPlot"); var [cfort,cdata]= readDatFile(filename); - let lyrs = [6]; // back scattered muons - for (let ilayer=18;ilayer ({ + index: index, + label: seqInfo.layerHeaders[offset], + })), + ]; // Now loop over all - for (let ilayer of lyrs) { + for (let series of plotSeries) { // Normalize - let idata = cdata[ilayer]; + let idata = cdata[series.index]; for (let i=0; i