As you know, the Quality Control software parts have been (or are in the
process to be) migrated from IDL to Python. In doing that, we've splitted
each task in functionally independent subtasks, which make them easy to
be reused for other purposes.
What is available? And where?
We've created a Python package to organize the objects and
functions that can be interesting for general use. A package is just a way
to organize software in a hierarchical way. From Python's programmer point
of view, you don't need special syntax to access them: they behave exactly
as normal modules. As the software group is the one creating and maintaining
them, you shouldn't worry (a lot) about it.
The package we've created is called, not surprisingly,
NOT, and it's the access point for a number of
modules providing you some functionality. You can find
here the official reference
documentation (under the IntraNOT). Please, be aware that it is not a
"User's Guide" to the software, but just a reference, but we try our best
to provide information enough and even small examples where it makes
At the moment, the package is only available in the designed postprocessing
computer (elena), but it may be installed somewhere else (eg.
instrument computers) if a case is made for it...
As for what can you find in there, you can read it in the reference, but
there are modules named after each instrument (which contain the QC
functionality itself), as well as other ones that may be useful for you, but
we're only discussing the QC parts in here. Of course, as this package is
growing up out of the old QC control, you'll probably find (at the beginning)
that everything in there is interesting for you ;)
How to use the software? And the reference?
As you were told a few paragraphs before, the functionality has been
splitted in different functions/methods/classes. Mainly, we've divided the
tasks into: calculations, printing results, and database updating.
The database updating is still there, but deprecated and should
not be used. Printing the results has been modelled upon the old
scripts so that the new ones keep the look and feel, but you may have
other idea on how to print them (and if you decided to use the provided
ones, they're documented with small examples in the reference)
So, let's check the QC functions and related utils. First, at the moment
we've made available only the betalight tests for ALFOSC, StanCam and
MOSCA. Please, open up a browser window/tab with the reference manual so
that you can check it along with this page.
- At the main page of the reference, you can see on the top left corner
a Table of Contents that will remain there all the time. Just
below it there's an Everything list that will change to a
module's content the moment you dive into its info.
- Both the Table of Contents and Everything show the
hierarchy of the package contents, so that you know how access things
in there. The module pages show things relative to
the module itself.
- Interesting for the Python geeks among you, is that you can browse
the full code for those modules. Just follow the source code
links you'll find over the documentation
So, let's say you want to analize some ALFOSC betalight images. To start
with, the module we're interesed in is NOT.alfosc, and inside it,
the function we're looking for is betalight. We could import it,
for example, in this way:
>>> from NOT.alfosc import betalight
Then you just provide the function with the name of the intended
>>> res, stats = betalight(["ALqa130005.fits", "ALqa130006.fits", "ALqa130007.fits", "ALqa130008.fits"])
>>> res.count, res.counterr
NB: names and results just made up...
In the NOT.utils package you may find something useful, but at
the moment the only evident ones are stdev, which provides a
σ-clipped standard deviation function, and image_range,
which returns a list of image names starting from the one you provide,
that can be used for example to feed the betalight functions,
like in this example:
>>> from NOT.alfosc import betalight
>>> from NOT.utils import image_range
>>> image_range("ALqa130005.fits", 3)
["ALqa130005.fits", "ALqa130006.fits", "ALqa130007.fits"]
>>> res, stat = betalight(image_range("ALqa130005.fits", 4))
I miss XXXXX functionality!!
Please... approach the software group if you think there's something else
you could use in there (and that may be reused later). You can discuss it
with us and, if it's found to be useful, we'll incorporate to the general
package (we'd be grateful if you have developed it before asking for it
to be included)