Skip to content

Commit

Permalink
Review from Tamash (#303)
Browse files Browse the repository at this point in the history
* space.

* Modified some descriptions trying to clarify the meaning of the elements. Please check them! Modified:Update NXafm.yaml

* NXbias_spectroscopy.yaml

* Update NXscan.yaml

I just added a slight clarification what we mean under the word scan.
However, it makes me wonder whether this should be more a base class than an application definition.
And whether the control parameter set should be only positional.
So, I have some doubts here...

* Update NXcantilever_spm.yaml

added some explanation and clarification to the cantilever properties and what are the driving details of cantilever oscillations

* Update NXcircuit.yaml

minor changes to allow for multichannel boards, e.g. 4 or 16 channel A/D converters or amplifiers

* Update NXlockin.yaml

Minor changes in documentation,
removed some redundant information on the demodulated signal.

* Update NXpiezo_config_spm.yaml

minimal changes in docstrings

* Update NXpositioner_spm.yaml

minor correction, the Z positioner has no idea where the sample is, so sample - probe distance is unknown at this point

* Update NXscan_control.yaml

some minor comment changes

* Generated nxdl files.

* Revert "Update NXscan.yaml"

This reverts commit 3f376f0.
This file is covered by #304  #304
---------

Co-authored-by: T. Haraszti <[email protected]>

Rename lockin_current_flip_number to loockin_current_flip_sign.

add NXidentifier in NXsensor_scan.

Delete unnecessary file.

Revert "Delete unnecessary file."

This reverts commit 8c6b03c.

Preparation for example in nomad.

Corrected typo in heterodyne word Update NXlockin.yaml

Minor fix.
  • Loading branch information
RubelMozumder committed Dec 5, 2024
1 parent f57eee9 commit 4937c97
Show file tree
Hide file tree
Showing 41 changed files with 966 additions and 822 deletions.
27 changes: 21 additions & 6 deletions contributed_definitions/NXafm.nxdl.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
-->
<definition xmlns="http://definition.nexusformat.org/nxdl/3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" category="application" type="group" name="NXafm" extends="NXspm" xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd">
<doc>
An application definition to describe Atomic Force Microscopy (AFM) scanning
An application definition to describe atomic force microscopy (AFM) scanning
technique.
</doc>
<group type="NXentry">
Expand All @@ -43,6 +43,8 @@
<item value="contact mode"/>
<item value="tapping mode"/>
<item value="non-contact mode"/>
<item value="Kelvin probe"/>
<item value="electric force"/>
</enumeration>
</field>
<group name="experiment_instrument" type="NXinstrument">
Expand All @@ -52,20 +54,33 @@
</doc>
<group name="photo_detector" type="NXdetector" optional="true">
<doc>
The photo detector instrument information.
Information about the quadrant photodiode deflection detector.
</doc>
</group>
<group type="NXcantilever_spm" optional="true">
<doc>
The cantilever information.

Generally speaking, the cantilever resembles a leaf spring, which behaves as a simple harmonic oscillator.
When the probe (tip or particle) on the end of the cantilever is close to the surface of the sample,
an attractive or repulsive force appears between the cantilever and the sample, deforming the cantilever.
The detector (typically a light pointer hitting a quadrant photodiode) measures this deformation and, therefore,
the force acting on the cantilever.
In a typical AFM scan cantilever moves toward the surface of the sample until a user-defined value of force acting
on the cantilever is reached. The measured force is used as an input of a PID feedback loop, and the output of
this loop controls the vertical position of the cantilever.
</doc>
<group name="cantilever_oscillator" type="NXobject" optional="true">
<doc>
Generally speaking, the cantilever resembles a simple harmonic oscillator.
When the cantilever tip is close to the surface of the sample, an attractive or repulsive force appears between the cantilever and the sample, deforming the cantilever. The detector (typically a photodiode) measures this deformation and, therefore, the force acting on the cantilever.
In a typical AFM scan cantilever moves toward the surface of the sample until a user-defined value of force acting on the cantilever is reached. The measured force is used as an input of a PID feedback loop, and the output of this loop controls the vertical position of the cantilever.
When a cantilever is oscillated close to its resonance, this describes the oscillator properties.

A cantilever can be used in direct contact mode to detect interaction forces or oscillated close to its
resonance frequency. Changes in the oscillation amplitude, phase (between oscillated tail and moving tip)
or resonance frequency are very sensitive to changes in the interction potential field, giving rise of
various measurement modes, such as non-contact or intermittent-contact (tapping) modes.
</doc>
<field name="oscillator_excitation" type="NX_NUMBER" optional="true" units="NX_ANY">
<!--is this correct? I would expect a driving voltage...-->
<doc>
The threshold voltage for oscillator excitation.
</doc>
Expand Down Expand Up @@ -141,7 +156,7 @@
</group>
<group type="NXpositioner_spm">
<doc>
The positioner information like the position of the tip, the position of the
The positioner information like the position of the end of the cantilever, the position of the
sample, PID loop feedback etc.
</doc>
</group>
Expand Down
58 changes: 41 additions & 17 deletions contributed_definitions/NXbias_spectroscopy.nxdl.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,14 +25,19 @@
<doc>
A base class for bias spectroscopy to describe the change in the physical properties
of the sample with respect to the sweep voltage applied on a sample of STM/AFM/... experiment.

In these experiments an electric potential is applied between the (conductive) sample and the probe
(tip), and the physical properties (e.g. tunnelling current) is measured as the function of this
potential. The potential is varied in so-called voltage sweeps and the corresponding properties are
recorded accordingly.
</doc>
<field name="measurement_type">
<doc>
The measurement of the I(V) curve can come in two ways:
1. Constant Spacing: The bias voltage is swept from the start to the end with a constant
spacing between the tip and surface.
2. Variadic Spacing: The bias voltage is swept from the start to the end in a discretized
1. Constant spacing: The bias voltage is swept from the start to the end with a constant
spacing between the tip and surface.
2. Variable spacing: The bias voltage is swept from the start to the end in a discretized
spacing between the tip and surface. (Either an array of voltages, or the steps are defined).
</doc>
<enumeration>
<item value="constant_spacing"/>
Expand All @@ -41,33 +46,40 @@
</field>
<group type="NXpositioner_spm">
<doc>
The pid positioner information while running bias voltage-tunneling current
measurement.
The PID (proportional, integral, differential feedback system) positioner information while running
bias voltage-tunneling current measurement.

These components position the probe relative to the sample, thus help obtaining maps of the data
across the sample surface.
</doc>
<field name="z_offset" type="NX_NUMBER" units="NX_LENGTH">
<doc>
The z-offset is a starting tip position before the sweep starts.
The z-offset is a starting tip position before the sweep starts (typically the position of a
piezo element).
</doc>
</field>
</group>
<!--how these time specifications relate to the later time values, like
scan_time?-->
<group type="NXcircuit" optional="true">
<field name="acquisition_time" type="NX_DATE_TIME" optional="true" units="NX_TIME">
<field name="acquisition_time" type="NX_NUMBER" optional="true" units="NX_TIME">
<doc>
The time or period is taken by a bias sweep to acquire the data for
a single bias sweep point.
a single bias sweep point (when the given point or whole sweep is started.).
</doc>
</field>
<field name="animation_time" type="NX_DATE_TIME" optional="true" units="NX_TIME">
<field name="animation_time" type="NX_NUMBER" optional="true" units="NX_TIME">
<doc>
The time or period is taken by a bias sweep to be displayed.
</doc>
</field>
<field name="measurement_time" type="NX_DATE_TIME" optional="true" units="NX_TIME">
<field name="measurement_time" type="NX_NUMBER" optional="true" units="NX_TIME">
<doc>
The time or period is taken by the circuit to measure a full bias sweep voltage or
bias current.
bias current. (duration of the measurement)
</doc>
</field>
<!--how does this indicators_period differs from animation time?-->
<field name="indicators_period" type="NX_DATE_TIME" optional="true" units="NX_TIME">
<doc>
The time or period is taken by the circuit to indicate the bias sweep voltage
Expand All @@ -80,9 +92,17 @@
The bias sweep information.
</doc>
<field name="scan_type">
<!--I modify this text, by I may be wrong T.
key is: I can change X,Y location at constant voltage or do a sweep
at every X,Y coordinate, and I can define patterns how X,Y values follow
each other (e.g. spiral)-->
<doc>
The type of scan like mesh, spiral, etc. For STS experiment, the scan type is
usually a single-point scan (trajectory scan).
The type of scan like mesh, spiral, etc.

This combines not only how the voltages are changed, but how the voltage values are
correlated to a position across the sample surface, measuring sweeps are each spatial
coordinate or mapping the response at constant voltage, etc.
For STS experiment, the scan type is usually a single-point scan (trajectory scan).
</doc>
<enumeration>
<item value="linear"/>
Expand All @@ -93,14 +113,14 @@
The number of sweeps taken during the bias spectroscopy.
</doc>
</field>
<field name="first_settling_time" type="NX_DATE_TIME" optional="true" units="NX_TIME">
<field name="first_settling_time" type="NX_NUMBER" optional="true" units="NX_TIME">
<doc>
The initial time is taken to settle the bias voltage at the desired value.
On each sweep usually, the system takes time to settle to the bias voltage
at the next value.
</doc>
</field>
<field name="end_settling_time" type="NX_DATE_TIME" optional="true" units="NX_TIME">
<field name="end_settling_time" type="NX_NUMBER" optional="true" units="NX_TIME">
<doc>
The time is taken to settle the bias voltage at the desired value.
The time (at the last sweep) to settle for the last value of the sweep.
Expand All @@ -118,7 +138,7 @@
The z position after the sweeps are done.
</doc>
</field>
<field name="total_spectroscopy_time" type="NX_DATE_TIME" recommended="true" units="NX_TIME">
<field name="total_spectroscopy_time" type="NX_NUMBER" recommended="true" units="NX_TIME">
<doc>
The total time needed for the entire voltage sweep.
</doc>
Expand All @@ -145,15 +165,19 @@
</field>
</group>
<group name="linear_sweep" type="NXobject">
<!--is this a special case of the scans described above?-->
<doc>
The linear scan information for scanning of a smaple.

In this scan type the probe is scanned with a constant velocity across the surface,
and parameters are measured along the line.
</doc>
<field name="scan_speed" type="NX_NUMBER" units="NX_ANY">
<doc>
The speed of the scanner or the probe during the scan.
</doc>
</field>
<field name="scan_time" type="NX_DATE_TIME" units="NX_TIME">
<field name="scan_time" type="NX_NUMBER" units="NX_TIME">
<doc>
The time taken by the scanner to scan the entire area.
</doc>
Expand Down
4 changes: 2 additions & 2 deletions contributed_definitions/NXcalibration.nxdl.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50,12 +50,12 @@
A description of the procedures employed.
</doc>
</field>
<field name="start_time" type="NX_DATE_TIME">
<field name="start_time" type="NX_NUMBER">
<doc>
The start time of the calibration.
</doc>
</field>
<field name="end_time" type="NX_DATE_TIME">
<field name="end_time" type="NX_NUMBER">
<doc>
The end time of the calibration.
</doc>
Expand Down
28 changes: 27 additions & 1 deletion contributed_definitions/NXcantilever_spm.nxdl.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
Generally speaking, the cantilever resembles a simple harmonic oscillator.
When the cantilever tip is close to the surface of the sample, an attractive or repulsive force appears between the cantilever and the sample, deforming the cantilever. The detector (typically a photodiode) measures this deformation and, therefore, the force acting on the cantilever.
In a typical AFM scan cantilever moves toward the surface of the sample until a user-defined value of force acting on the cantilever is reached. The measured force is used as an input of a PID feedback loop, and the output of this loop controls the vertical position of the cantilever.
This part describes the oscillator driving the oscillations of a cantilever in an AFM or other experiment.
</doc>
<field name="reference_amplitude" type="NX_NUMBER" units="NX_ANY">
<doc>
Expand Down Expand Up @@ -109,7 +110,7 @@
<group name="cantilever_config" type="NXobject">
<doc>
The configuration information of the cantilever such as calibration information,
material properties, etc.
material properties, size, resonance, etc.
</doc>
<field name="cantilever_coating">
<doc>
Expand All @@ -121,6 +122,31 @@
The radius of curvature of the cantilever tip. The (substring) N denotes X or Y.
</doc>
</field>
<field name="cantilever_type">
<doc>
The shape of the cantilever as a general text, such as A-shape, beam, or arrow.
</doc>
</field>
<field name="cantilever_length" type="NX_NUMBER" units="NX_LENGTH">
<doc>
Nominal length between base and end of the cantilever in micrometers.
</doc>
</field>
<field name="cantilever_width" type="NX_NUMBER" units="NX_LENGTH">
<doc>
Nominal width of the cantilever in microns.
</doc>
</field>
<field name="cantilever_thickness" type="NX_NUMBER" units="NX_LENGTH">
<doc>
Nominal thickness of the cantilever in microns.
</doc>
</field>
<field name="cantilever_resonance_frequency" type="NX_NUMBER" units="NX_FREQUENCY">
<doc>
Nominal free resonance frequency of the cantilever in air, in kHz.
</doc>
</field>
<group type="NXcalibration">
<doc>
The calibration information of the cantilever.
Expand Down
33 changes: 26 additions & 7 deletions contributed_definitions/NXcircuit.nxdl.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,29 @@
# For further information, see http://www.nexusformat.org
-->
<definition xmlns="http://definition.nexusformat.org/nxdl/3.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" category="base" type="group" name="NXcircuit" extends="NXobject" xsi:schemaLocation="http://definition.nexusformat.org/nxdl/3.1 ../nxdl.xsd">
<symbols>
<doc>
Constant to be used in the definition: the number of channels of the
circuit board.
</doc>
<symbol name="N_channel">
<doc>
number of channels of the circuit board.
</doc>
</symbol>
</symbols>
<doc>
Application definition for circuit devices.

Electronic circuits are hardware components connecting several electronic components to achieve
specific functionality, e.g. amplifying a voltage or convert a voltage to binary numbers, etc.
</doc>
<group name="hardware" type="NXfabrication">
<doc>
Hardware where the circuit is implanted; includes hardware manufacturers and
type
Hardware where the circuit is implanted; includes information about the hardware manufacturers and
type (e.g. part number)
All the elements below may be single numbers of an array of values with length N_channel
describing multiple input and output channels.
</doc>
</group>
<field name="components">
Expand All @@ -55,11 +71,15 @@
digital, mixed-signal.
</doc>
</field>
<!--should this be a min / max range?-->
<field name="operating_frequency" type="NX_NUMBER" units="NX_FREQUENCY">
<doc>
The operating frequency range of the circuit.
The operating frequency of the circuit, see also bandwidth below, which is possibly
centered around this frequency. However, not necessarily (e.g. running a 100 kHz bandwidth
amplifier at low, audio frequencies 1 - 20,000 Hz)
</doc>
</field>
<!--we may need an NX_RESISTANCE defined-->
<field name="input_impedance" type="NX_NUMBER" units="NX_ANY">
<doc>
Input impedance of the circuit.
Expand All @@ -78,13 +98,12 @@
</field>
<field name="noise_level" type="NX_NUMBER" units="NX_ANY">
<doc>
Noise level (in current or voltage) in the circuit.
RMS noise level (in current or voltage) in the circuit in voltage or current.
</doc>
</field>
<field name="bandwidth" type="NX_NUMBER" units="NX_FREQUENCY">
<doc>
If circuit handles AC current or signal it may have a band Bandwidth of the circuit to be
responded.
The bandwidth of the frequency response of the circuit.
</doc>
</field>
<field name="temperature_range" type="NX_NUMBER" units="NX_ANY">
Expand All @@ -104,7 +123,7 @@
</field>
<field name="output_channels" type="NX_NUMBER">
<doc>
Number of output channels collected to this circuit.
Number of output channels collected to this circuit. Most probably N_channel.
</doc>
</field>
<field name="output_signal" type="NX_NUMBER" units="NX_ANY">
Expand Down
Loading

0 comments on commit 4937c97

Please sign in to comment.