[Nexus] Extending NeXus for pixelated scanning transmission electron microscopy
Dieter Weber
d.weber at fz-juelich.de
Wed May 2 12:35:36 BST 2018
Dear all,
appended you find a very simple first draft for a script to create a
pixelated STEM NeXus file from a raw data file.
As next steps I'd propose to organize a Hangout session to discuss and
add more fields and structures together so that we can combine our
know-how. I've created a Doodle poll to help coordinate the time:
https://doodle.com/poll/zxvsimgw94fx4m3s Please let me know if I should
add more time options.
I'd like to choose a time by Friday 4th, if that is possible. Many
thanks in advance for your help! Looking forward to work together on this!
With best regards,
Dieter
Am 18.04.2018 um 10:10 schrieb d.weber at fz-juelich.de:
> Dear Tobias,
>
> thank you for your help! I can work on building such a file next week.
> We've been tied up with other issues in the last weeks, that's why this
> had to wait a bit.
>
> Best regards,
> Dieter
>
> --
> Dr. Dieter WEBER
>
> Peter Grünberg Institute PGI-5 for Microstructure Research
> Ernst Ruska-Centre ER-C for Microscopy and Spectroscopy with Electrons
> Research Centre Jülich
> D-52425 Jülich, Germany
>
> Email: d.weber at fz-juelich.de
> Phone: +49 2461 61 85118
>
> On Apr 3, 2018 17:54, Tobias Richter <Tobias.Richter at esss.se> wrote:
>
> Dear Dieter et al,
>
> We very much agree on the goals in your drafts.
> It looks like we need to get to the technical detail pretty soon.
> In order to understand what data you have to deal with an example
> file would go a long way.
> Could you maybe produce something in HDF5 that roughly follows your
> proposed structure?
> Then it's a less abstract problem and we can follow up with more
> informed comments and questions.
>
> To keep the community here in the loop, I would prefer to keep the
> discussion on this list for the time being.
>
> Best wishes,
> Tobias
--
Dr. Dieter WEBER
Peter Grünberg Institute, Microstructure Research (PGI-5)
Ernst Ruska-Centre for Microscopy and Spectroscopy with Electrons (ER-C)
Forschungszentrum Jülich
52425 Jülich, Germany
Email: d.weber at fz-juelich.de
Phone: +49 2461 61 85118
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzender des Aufsichtsrats: MinDir Dr. Karl Eugen Huthmacher
Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender),
Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
Prof. Dr. Sebastian M. Schmidt
------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
-------------- next part --------------
import nexusformat.nexus as nx
import numpy as np
rawfile = 'C:\\Users\\weber\\Nextcloud\\EMPAD\\scan_11_x256_y256.raw'
targetfile = 'C:\\Users\\weber\\Nextcloud\\Projects\\Open Pixelated STEM framework\\LiberTEM.nxs'
def build_detector():
pixel_size = nx.NXfield(value=150e-6, units='m') # EMPAD https://arxiv.org/ftp/arxiv/papers/1511/1511.03539.pdf
beam_center_x = nx.NXfield(value=0, units='m')
beam_center_y = nx.NXfield(value=0, units='m')
camera_length = nx.NXfield(value=0.7, units='m')
with open(rawfile) as f:
shape_in = (65536, 130, 128)
rawdata = np.fromfile(f, dtype=np.float32).reshape(shape_in)[:, :128, :128]
return nx.NXdetector(
x_pixel_size=pixel_size,
y_pixel_size=pixel_size,
beam_center_x=beam_center_x,
beam_center_y=beam_center_y,
layout='area',
camera_length=camera_length,
data=rawdata
)
def build_scan():
scan = np.linspace(-10e-9, 10e-9, 256)
x_coordinates = np.repeat(scan, 256)
y_coordinates = np.concatenate(list((np.repeat(x, 256) for x in scan)))
return nx.NXbeam(scan_x=x_coordinates, scan_y=y_coordinates)
root = nx.NXroot()
root.insert(nx.NXentry(), name='entry')
e = root.entries['entry']
e.insert(nx.NXinstrument(), 'instrument')
i = e.entries['instrument']
i.insert(build_scan(), 'scan')
i.insert(build_detector(), 'detector')
e.insert(nx.NXdata(nx.NXlink(root.entry.instrument.detector.data), ('index', 'sensor_x', 'sensor_y')), 'data')
print(root.tree)
More information about the NeXus
mailing list