Skip to content

Commit 2601b94

Browse files
authored
Merge branch 'mccode-dev:main' into main
2 parents cff4460 + be46b90 commit 2601b94

2 files changed

Lines changed: 24 additions & 3 deletions

File tree

tools/Python/mcrun/mcrun.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -604,6 +604,9 @@ def main():
604604

605605
# Parameters for linear scanning present
606606
if interval_points and (options.scan_split is None):
607+
# In case of list, update with number of list points
608+
if options.list:
609+
options.numpoints=len(pointlist[0])
607610
scanner = Scanner(mcstas, intervals)
608611
scanner.set_points(interval_points)
609612
if (not options.dir == ''):

tools/Python/mcrun/optimisation.py

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ def build_header(options, params, intervals, detectors):
2929
# ylabel: 'Intensity'
3030
# xvars: %(xvars)s
3131
# yvars: %(yvars)s
32+
# list: %(xvals)s
3233
# xlimits: %(xmin)s %(xmax)s
3334
# filename: %(filename)s
3435
# variables: %(variables)s
@@ -41,8 +42,12 @@ def build_header(options, params, intervals, detectors):
4142
hdrparams = {key.lstrip('-') for key in params}
4243
xvars = ', '.join(hdrparams)
4344
lst = intervals[list(params)[0]]
44-
xmin = min(lst)
45-
xmax = max(lst)
45+
if options.list:
46+
xmin=1
47+
xmax=len(lst)
48+
else:
49+
xmin = min(lst)
50+
xmax = max(lst)
4651
# Get Numpoints from length of -L list
4752
N = len(lst)
4853
# ... or using options.numponts if in fact a normal scan
@@ -77,6 +82,8 @@ def build_header(options, params, intervals, detectors):
7782
'xvars': xvars,
7883
'yvars': ' '.join('(%s_I,%s_ERR)' % (d, d) for d in detectors),
7984

85+
'xvals': str(lst),
86+
8087
'xmin': xmin,
8188
'xmax': xmax,
8289

@@ -314,7 +321,18 @@ def run(self):
314321
LOG.info("Wrote headers")
315322
LOG.info(f"Write step detectors line into {self.outfile}")
316323
values = ['%s %s' % (d.intensity, d.error) for d in detectors]
317-
line = '%s %s\n' % (' '.join(map(str, par_values)), ' '.join(values))
324+
325+
# Normal equidistant scan
326+
if not self.mcstas.options.list:
327+
line = '%s %s\n' % (' '.join(map(str, par_values)), ' '.join(values))
328+
else:
329+
try:
330+
# Check if parameters are numeric/float
331+
par_floats = [float(x) for x in par_values]
332+
line = '%s %s\n' % (' '.join(map(str, par_floats)), ' '.join(values))
333+
except:
334+
# otherwise use simple 'index' (may be scanning e.g. a filename)
335+
line = '%s %s\n' % (str(i), ' '.join(values))
318336
outfile.write(line)
319337
outfile.flush()
320338

0 commit comments

Comments
 (0)