ap-- / python-seabreeze

Python module for OceanOptics spectrometers
https://python-seabreeze.readthedocs.io
MIT License
209 stars 81 forks source link

Add SR6 support #230

Closed knaugh closed 8 months ago

knaugh commented 9 months ago

Closes #224

Adding support for SR6 spectrometer. Passes pytest suite without dark count support changed SR4 integration time limits to reflect datasheet (untested)

knaugh commented 9 months ago
platform linux -- Python 3.11.4, pytest-7.4.4, pluggy-1.0.0 -- /home/matt/miniconda3/bin/python3
cachedir: .pytest_cache
rootdir: /home/matt/Desktop/optical_rig/aquioptic/python-seabreeze
configfile: pytest.ini
collected 28 items                                                                                                                                                                                        

tests/test_backends.py::test_seabreeze_installed PASSED                                                                                                                                             [  3%]
tests/test_backends.py::test_seabreeze_wrong_backend_requested PASSED                                                                                                                               [  7%]
tests/test_backends.py::test_seabreeze_any_backend_available[cseabreeze] PASSED                                                                                                                     [ 10%]
tests/test_backends.py::test_seabreeze_any_backend_available[pyseabreeze] PASSED                                                                                                                    [ 14%]
tests/test_backends.py::test_seabreeze_cseabreeze_backend_available PASSED                                                                                                                          [ 17%]
tests/test_backends.py::test_seabreeze_pyseabreeze_backend_available PASSED                                                                                                                         [ 21%]
tests/test_backends.py::test_seabreeze_cseabreeze_api_init PASSED                                                                                                                                   [ 25%]
tests/test_backends.py::test_seabreeze_pyseabreeze_api_init[any] PASSED                                                                                                                             [ 28%]
tests/test_backends.py::test_seabreeze_pyseabreeze_api_init[openusb] PASSED                                                                                                                         [ 32%]
tests/test_backends.py::test_seabreeze_pyseabreeze_api_init[libusb0] PASSED                                                                                                                         [ 35%]
tests/test_backends.py::test_seabreeze_pyseabreeze_api_init[libusb1] PASSED                                                                                                                         [ 39%]
tests/test_backends.py::test_seabreeze_compare_backend_feature_interfaces PASSED                                                                                                                    [ 42%]
tests/test_protocol.py::test_pyseabreeze_protocol_messages PASSED                                                                                                                                   [ 46%]
tests/test_spectrometers.py::TestHardware::test_cant_find_serial[backend(any)] PASSED                                                                                                               [ 50%]
tests/test_spectrometers.py::TestHardware::test_device_cleanup_on_exit[backend(any)] PASSED                                                                                                         [ 53%]
tests/test_spectrometers.py::TestHardware::test_read_model[SR6:SR600418-backend(any)] PASSED                                                                                                        [ 57%]
tests/test_spectrometers.py::TestHardware::test_read_serial_number[SR6:SR600418-backend(any)] PASSED                                                                                                [ 60%]
tests/test_spectrometers.py::TestHardware::test_crash_may_not_influence_following_tests[SR6:SR600418-backend(any)] XFAIL (check if following tests work after crash)                                [ 64%]
tests/test_spectrometers.py::TestHardware::test_read_intensities[SR6:SR600418-backend(any)] PASSED                                                                                                  [ 67%]
tests/test_spectrometers.py::TestHardware::test_correct_dark_pixels[SR6:SR600418-backend(any)] SKIPPED (does not support dark counts)                                                               [ 71%]
tests/test_spectrometers.py::TestHardware::test_read_wavelengths[SR6:SR600418-backend(any)] PASSED                                                                                                  [ 75%]
tests/test_spectrometers.py::TestHardware::test_read_spectrum[SR6:SR600418-backend(any)] PASSED                                                                                                     [ 78%]
tests/test_spectrometers.py::TestHardware::test_max_intensity[SR6:SR600418-backend(any)] PASSED                                                                                                     [ 82%]
tests/test_spectrometers.py::TestHardware::test_integration_time_limits[SR6:SR600418-backend(any)] PASSED                                                                                           [ 85%]
tests/test_spectrometers.py::TestHardware::test_integration_time[SR6:SR600418-backend(any)] PASSED                                                                                                  [ 89%]
tests/test_spectrometers.py::TestHardware::test_trigger_mode[SR6:SR600418-backend(any)] PASSED                                                                                                      [ 92%]
tests/test_spectrometers.py::TestHardware::test_trigger_mode_wrong[SR6:SR600418-backend(any)] PASSED                                                                                                [ 96%]
tests/test_spectrometers.py::TestHardware::test_list_devices_dont_close_opened_devices[backend(any)] PASSED                                                                                         [100%]

========================================================================================= short test summary info =========================================================================================
SKIPPED [1] tests/test_spectrometers.py:265: does not support dark counts
================================================================================ 26 passed, 1 skipped, 1 xfailed in 22.16s ================================================================================
ap-- commented 9 months ago

Thank you for your contribution @knaugh!

The PR looks good! Could you provide some information on how you determined the integration time limits for the SR4 and SR6?

Andreas

knaugh commented 9 months ago

Thanks, the integration time was just taken from the SR series manual, in the table on page 11.

https://www.oceaninsight.com/globalassets/catalog-blocks-and-images/manuals--instruction-ocean-optics/spectrometer/ocean-sr-series-installation-and-operation-manual-5-23.pdf

On Sat, Jan 6, 2024, 10:06 AM Andreas Poehlmann @.***> wrote:

Thank you for your contribution @knaugh https://github.com/knaugh!

The PR looks good! Could you provide some information on how you determined the integration time limits for the SR4 and SR6?

Andreas

— Reply to this email directly, view it on GitHub https://github.com/ap--/python-seabreeze/pull/230#issuecomment-1879723309, or unsubscribe https://github.com/notifications/unsubscribe-auth/ALIXZUWBBFTLI4JDLEW4QHTYNFSARAVCNFSM6AAAAABBOTUXP6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTQNZZG4ZDGMZQHE . You are receiving this because you were mentioned.Message ID: @.***>

ap-- commented 8 months ago

Thanks again ❤️ A new version should be out by the end of the week.