This lists some of the most commonly used functionality, and most easily forgotten functions accessible to PySpecTools.
Creating an experiment¶
There are two main ways to create an
AssignmentSession object, by creating
the class directly, or by using the
The latter method is a higher-level option, and allows spectra to be read in
directly from a variety of file formats. The former requires you to pass the
spectrum as a pandas
DataFrame as a positional argument.
Creating an FTB file¶
You can create FTB files (batch files used by QtFTM) from two sources,
depending on the type (either u-lines, or an existing catalog file) both of
which wrap around the
For u-lines, I recommend using the
AssignmentSession.create_uline_ftb_batch, or if you want to run a DR batch,
AssignmentSession.create_uline_dr_batch. In both cases, there are a few
keyword arguments that allow you to specify the conditions to carry out the
batch, for example, the number of shots (
shots), the dipole moment used for
the RF attenuation (
dipole), and the minimum distance between lines
For other FTB files, say from a
.lin file, you will want to
LineList objects first and then use the
Instrumental RFI removal¶
Strong RFI are common in broadband spectra, which arise from instrument clocks
and other electronic components. The ones that are most prevalent for us in the
McCarthy group are typically identified by two characteristics: often razor
sharp, and many of them occurring at near-integer frequencies that are unlikely
molecular in origin (e.g. 16500.0000 MHz).
PySpecTools has three approaches
to managing these instrumental artifacts, the simplest being an automatic
removal that looks for near integer frequencies
The next level of complexity is based on calculating sub-harmonics, and
sum/difference-frequency combinations of sub-harmonics, based on some clock
frequency. For our Keysight arbitrary waveform generator, we’ve found the most
prominent artifacts are derived from the 65 GHz clock. The
LineList.from_clock method was created for this purpose, which generates
multiples of this clock frequency, and calculates every possible sum/difference
combination of pairs based on this list.
AssignmentSession.process_clock_spurs provides an interface to this
function, which will automatically assign features found this way - it is
recommended to run this function at the end of analysis once molecular features
are exhausted, as these clock frequencies can be incredibly dense.
Finally, the most manual method is to create a artifact
LineList object via
LineList.from_artifacts method. This takes a list of frequencies that
the user specifies, and uses these to assign features as artifacts.
Once you’ve done all the analysis, the fun part begins: writing the damn paper.
AssignmentSession.finalize_assignments function is not as final as it
sounds, and the current behavior is to generate an HTML report for sharing, as
well as an overview. This function will also generate a LaTeX table in the
reports folder, which summarizes the findings of your experiment.
PySpecTools does not automatically write the paper for you.