Skip to content

Version 0.7.0 develop merge#52

Merged
tbowers7 merged 44 commits intomainfrom
develop
Jul 23, 2025
Merged

Version 0.7.0 develop merge#52
tbowers7 merged 44 commits intomainfrom
develop

Conversation

@tbowers7
Copy link
Member

@tbowers7 tbowers7 commented Jul 22, 2025

Major changes include:

  • LMI Exposure Time Calculator GUI
  • dfocus under-the-hood updates
  • Unit testing
  • Adding support for NumPy 2.0 and removing support for NumPy 1.x
  • Adding support for Python 3.13

tbowers7 added 30 commits June 2, 2025 08:18
With testing in mind.

	modified:   obstools/dfocus.py
	modified:   obstools/utils.py
	new file:   MANIFEST.in
	new file:   obstools/tests/files/deveny/20250203.0021.fits
	new file:   obstools/tests/files/deveny/20250203.0022.fits
	new file:   obstools/tests/files/deveny/20250203.0023.fits
	new file:   obstools/tests/files/deveny/20250203.0024.fits
	new file:   obstools/tests/files/deveny/20250203.0025.fits
	new file:   obstools/tests/files/deveny/20250203.0026.fits
	new file:   obstools/tests/files/deveny/20250203.0027.fits
	new file:   obstools/tests/files/deveny/20250203.0028.fits
	new file:   obstools/tests/files/deveny/20250203.0029.fits
	new file:   obstools/tests/files/deveny/focus/deveny_focus.20250203.081131
	modified:   obstools/dfocus.py
	new file:   obstools/tests/files/deveny/focus/deveny_focus.20250202.allsame
	modified:   obstools/tests/test_dfocus.py
	modified:   obstools/tests/test_utils.py
	new file:   obstools/tests/tstutlis.py
	modified:   setup.py
Now that numpy v2.2 is out, finally stop using a class that was replaced
*way* back in v1.4.  *shrug*

	modified:   doc/api/obstools.tests.rst
	modified:   obstools/dfocus.py
	modified:   obstools/tests/test_dfocus.py
	modified:   obstools/utils.py
Use ``DataClass`` for passing around focus information in ``dfocus.py``
rather than dictionaries or other means.

	modified:   obstools/dfocus.py
	modified:   obstools/tests/test_celestial_time.py
	modified:   obstools/tests/test_deveny_grangle.py
	modified:   obstools/tests/test_dfocus.py
	modified:   obstools/tests/test_lmi_etc.py
	modified:   obstools/tests/test_utils.py
	modified:   obstools/tests/tstutlis.py
	modified:   obstools/utils.py
	modified:   obstools/dfocus.py
	modified:   obstools/tests/test_dfocus.py
And associated changes to the test file.

	modified:   obstools/dfocus.py
	modified:   obstools/tests/test_dfocus.py
	modified:   MANIFEST.in
	modified:   doc/include/dependencies_table.rst
	modified:   doc/help/deveny_collfocus.rst
	modified:   doc/help/deveny_grangle.rst
	modified:   doc/help/dfocus.rst
	modified:   doc/help/fix_ldt_header.rst
	modified:   doc/help/lmi_etc.rst
	modified:   doc/help/neocp_ephem.rst
	modified:   doc/help/scrub_deveny_pickup.rst
	modified:   doc/include/dependencies_table.rst
	modified:   setup.cfg
Remove deprecated class property structure in the scripts; now should
be good to go with Python 3.13.

Note: Python 3.13 was not supported in NumPy until >=2.1.0, so this
update to obstools should be coincident with the `dofucs_work` branch
and its update to Numpy 2.

	modified:   doc/scripts/write_script_help.py
	modified:   environment.yml
	modified:   obstools/__init__.py
	modified:   obstools/utils.py
	modified:   setup.cfg
Also, try to clean the code a bit by using @DataClass objects for
schlepping information around.

	modified:   obstools/lmi_etc.py
	modified:   setup.cfg
	modified:   obstools/deveny_collfocus.py
	modified:   obstools/deveny_grangle.py
	modified:   obstools/dfocus.py
	modified:   obstools/fix_ldt_header.py
	modified:   obstools/lmi_etc.py
	modified:   obstools/neocp_ephem.py
	modified:   obstools/scrub_deveny_pickup.py
	new file:   doc/papers/ETCMethod.pdf
	modified:   obstools/lmi_etc.py
	new file:   doc/api/obstools.tests.tstutlis.rst
	modified:   doc/help/deveny_collfocus.rst
	modified:   doc/help/deveny_grangle.rst
	modified:   doc/help/dfocus.rst
	modified:   doc/help/fix_ldt_header.rst
	modified:   doc/help/lmi_etc.rst
	modified:   doc/help/neocp_ephem.rst
	modified:   doc/help/scrub_deveny_pickup.rst
	modified:   doc/include/dependencies_table.rst
Using Qt Designer with PyQt6 to create a python GUI version of Phil
Massey's LMI exposure time calculator.  Still pretty rough, but it has
the main parts and an Exit button.  :-)

	new file:   obstools/ETCWindow.py
	new file:   obstools/ETCWindow.ui
	modified:   obstools/lmi_etc.py
	modified:   obstools/ETCWindow.py
	modified:   obstools/ETCWindow.ui
The next step will be to plumb all of the GUI elements together in
order to make things work.

	modified:   obstools/ETCWindow.py
	modified:   obstools/ETCWindow.ui
Basic computation and display of results works.  Next, need to compute
the auxillary data and think about how to build and save a table of
computed exposure times.

	modified:   obstools/ETCWindow.py
	modified:   obstools/ETCWindow.ui
	modified:   obstools/lmi_etc.py
The LMI ETC GUI's caclulations match those from Phil Massy's ETC
webpage.  It is possible to add the results from a calculation into an
AstroPy table for saving (and comparing different setups and requirements).

Next steps will be to show the table in a window and offer to save it
in one or more formats to disk.

	modified:   obstools/ETCWindow.py
	modified:   obstools/ETCWindow.ui
	modified:   obstools/lmi_etc.py
	new file:   obstools/ETCDataWindow.py
	new file:   obstools/ETCDataWindow.ui
	renamed:    obstools/ETCWindow.py -> obstools/ETCMainWindow.py
	renamed:    obstools/ETCWindow.ui -> obstools/ETCMainWindow.ui
	modified:   obstools/lmi_etc.py
	deleted:    obstools/ETCDataWindow.py
	deleted:    obstools/ETCDataWindow.ui
	new file:   obstools/UI/ETCDataWindow.py
	new file:   obstools/UI/ETCDataWindow.ui
	renamed:    obstools/ETCMainWindow.py -> obstools/UI/ETCMainWindow.py
	renamed:    obstools/ETCMainWindow.ui -> obstools/UI/ETCMainWindow.ui
	modified:   obstools/lmi_etc.py
It's a lot easier to generate layouts graphically using Qt6's Designer
application.  This generates XML-formatted .ui files, which must be
either directly parsed in the enclosing python code or converted to
python code directly and imported.  The latter is faster at runtime
and the result can be stored in git.  The Makefile added here runs
through all *.ui files and converts them into python code using pyuic6.
It also removed extraneous python files created by Qt's Designer
application and runs everything through ``black`` to produce
consistently formatted files.

	new file:   Makefile
	modified:   obstools/UI/ETCDataWindow.py
	modified:   obstools/UI/ETCDataWindow.ui
	modified:   obstools/UI/ETCMainWindow.py
	modified:   obstools/lmi_etc.py
(although it should...)

	modified:   obstools/UI/ETCDataWindow.py
	modified:   obstools/UI/ETCDataWindow.ui
	modified:   obstools/lmi_etc.py
	modified:   obstools/neocp_ephem.py
Still a couple pieces to implement:
1. Saving the data table
2. Formatting the data table

And various bug catching and cleaning up of the UI.

	modified:   obstools/UI/ETCDataWindow.py
	modified:   obstools/UI/ETCDataWindow.ui
	modified:   obstools/lmi_etc.py
	modified:   obstools/UI/ETCMainWindow.py
	modified:   obstools/UI/ETCMainWindow.ui
	new file:   obstools/UI/lowelllogo_horizontal_web.png
	modified:   obstools/lmi_etc.py
	modified:   obstools/UI/ETCMainWindow.py
	modified:   obstools/UI/ETCMainWindow.ui
	modified:   obstools/lmi_etc.py
	modified:   obstools/lmi_etc.py
	modified:   obstools/tests/test_lmi_etc.py
	modified:   obstools/dfocus.py
	modified:   obstools/tests/test_dfocus.py
	modified:   obstools/dfocus.py
tbowers7 added 5 commits July 22, 2025 14:01
Reorganize and clean up the `dfocus` tool
Pull updates from `main` into `develop`
	modified:   .github/workflows/update-changelog.yml
Attempt to get the ChangeLog action to work
@tbowers7 tbowers7 marked this pull request as draft July 22, 2025 21:29
tbowers7 added 9 commits July 22, 2025 16:05
This fixes a CI error for Windows where the ECSV filter list file was
not being properly read in as unicode (utf-8).  This only matters
because two of the filters are related to the Hα line at 6563Å, and I
stubbornly included the unicode character.  I will note that the macOS
and ubuntu GitHub runners had no problem correctly using unicode.

	modified:   obstools/data/etc_filter_info.ecsv
	modified:   obstools/lmi_etc.py
Split CI tests (using -dev versions) from the other OS tests (using
standard versions of libraries).  This also allows for the ubuntu runner
to add the `freeglut3-dev` package for Qt6 happiness.  Some reworking of
the `ci_tests.yml` file was done, as well, to clean up the order of
things.

	modified:   .github/workflows/ci_tests.yml
The latest AstroPy does not support Python 3.10, so remove it from the
allowed version list and tests.  Even though, python 3.10 will be
supported via security releases through October 2026, many of the
features in that version have been deprecated or removed from various
libraries.

	modified:   .github/workflows/ci_tests.yml
	modified:   environment.yml
	modified:   setup.cfg
	modified:   tox.ini
	modified:   doc/include/dependencies_table.rst
Add usage information with screenshots of the GUI.

Add an RST version (with corrected links) of Phil's LaTeX document
describing the process behind the ETC.

	modified:   README.rst
	modified:   doc/Makefile
	new file:   doc/_static/css/custom.css
	modified:   doc/api/obstools.broker_listener.rst
	modified:   doc/api/obstools.celestial_time.rst
	modified:   doc/api/obstools.deveny_collfocus.rst
	modified:   doc/api/obstools.deveny_grangle.rst
	modified:   doc/api/obstools.dfocus.rst
	modified:   doc/api/obstools.fix_ldt_header.rst
	modified:   doc/api/obstools.lmi_etc.rst
	modified:   doc/api/obstools.neocp_ephem.rst
	modified:   doc/api/obstools.rst
	modified:   doc/api/obstools.scrub_deveny_pickup.rst
	modified:   doc/api/obstools.tests.rst
	modified:   doc/api/obstools.tests.test_celestial_time.rst
	modified:   doc/api/obstools.tests.test_deveny_grangle.rst
	modified:   doc/api/obstools.tests.test_dfocus.rst
	modified:   doc/api/obstools.tests.test_lmi_etc.rst
	modified:   doc/api/obstools.tests.test_utils.rst
	modified:   doc/api/obstools.tests.tstutlis.rst
	modified:   doc/api/obstools.utils.rst
	modified:   doc/conf.py
	new file:   doc/deveny_etc.rst
	new file:   doc/figures/lmi_etc_blank.png
	new file:   doc/figures/lmi_etc_compute.png
	new file:   doc/figures/lmi_etc_table.png
	modified:   doc/index.rst
	modified:   doc/lmi_etc.rst
	new file:   doc/rimas_etc.rst
	new file:   doc/rimas_image_ql.rst
	new file:   doc/rimas_spec_ql.rst
	modified:   obstools/UI/ETCMainWindow.py
	modified:   obstools/UI/ETCMainWindow.ui
	modified:   Makefile
	modified:   doc/_static/css/custom.css
	modified:   doc/scripts/write_script_help.py
	new file:   obstools/Makefile
	modified:   obstools/UI/ETCDataWindow.py
	modified:   doc/help/deveny_collfocus.rst
	modified:   doc/help/deveny_grangle.rst
	modified:   doc/help/dfocus.rst
	modified:   doc/help/fix_ldt_header.rst
	modified:   doc/help/lmi_etc.rst
	modified:   doc/help/neocp_ephem.rst
	modified:   doc/help/scrub_deveny_pickup.rst
LMI Exposure Time Calculator GUI
@tbowers7 tbowers7 marked this pull request as ready for review July 23, 2025 20:35
@tbowers7 tbowers7 merged commit 94b9399 into main Jul 23, 2025
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant