Commit graph

2863 commits

Author SHA1 Message Date
jaknapper
8d14aee27c Breaking out capture and save code into three seperate methods 2025-04-09 13:20:06 +01:00
jaknapper
9c2ab977c5 Removed imports and variable to pass Ruff linting 2025-04-08 19:07:23 +01:00
jaknapper
574aa1c6c0 Only grab a JPEG from the stream to get scanning working 2025-04-08 17:52:55 +01:00
Joe Knapper
d4247235e3 Merge branch 'csm-return-to-start' into 'v3'
CSM always returns to start on error

See merge request openflexure/openflexure-microscope-server!227
2025-04-08 12:49:38 +00:00
Joe Knapper
bf82f37c47 Dependency bump for camera_stage_mapping to 0.1.8
Returns the errors we expect
2025-04-08 12:09:15 +00:00
Joe Knapper
e4ef8b2717 Merge branch 'consistent-logging' into 'v3'
Stop uvicorn.run disabling existing loggers

Closes #284

See merge request openflexure/openflexure-microscope-server!228
2025-04-08 11:31:33 +00:00
Joe Knapper
2cffe21727 Merge branch 'background-UV' into 'v3'
Use the UV channels only to determine if an area is background or sample

Closes #300

See merge request openflexure/openflexure-microscope-server!211
2025-04-08 10:30:17 +00:00
Julian Stirling
a4390255db Merge branch 'reorder_tabs' into 'v3'
Reorder tabs

See merge request openflexure/openflexure-microscope-server!231
2025-04-08 10:27:18 +00:00
jaknapper
b340da488e Use the UV channels only to determine if an area is background or sample 2025-04-08 11:14:17 +01:00
Julian Stirling
3dab8f09a4 Merge branch 'purge-windows-line-endings' into 'v3'
Purge all windows line endings and add check to formatter.

Closes #317

See merge request openflexure/openflexure-microscope-server!232
2025-04-08 10:07:14 +00:00
Julian Stirling
1493f51212 Purge all windows line endings and add check to formatter.
Also changes python version in pyproject.toml as it is incorrect
2025-04-08 10:51:26 +01:00
Julian Stirling
3a47151694 Serve logfile and logs for UI seperately 2025-04-07 23:45:19 +01:00
Julian Stirling
70d9e2f758 Add custom log handler for sending logs to UI 2025-04-07 23:16:00 +01:00
jaknapper
421d4a5f10 Spaces in tab names, more space, centred 2025-04-07 18:54:30 +01:00
jaknapper
3e82286245 Reorder GUI tabs to match the order of use 2025-04-07 18:18:16 +01:00
jaknapper
33c74741fe Fixed import and re-raise cancelled error 2025-04-07 15:46:20 +01:00
Joe Knapper
a506625e40 Treat cancellation and other errors differently 2025-04-07 14:22:43 +01:00
Joe Knapper
9995e5b3bb Import custom Mapping error from camera_stage_mapping 2025-04-07 14:18:07 +01:00
Julian Stirling
dd0b30df51 Stop uvicorn.run disabling existing loggers 2025-04-06 15:26:39 +01:00
jaknapper
67443ff939 Capture ValueErrors, which covers most CSM errors, not all Exceptions 2025-04-03 13:52:04 +01:00
jaknapper
46d513d9e6 Catch cancelled and other errors in single line 2025-04-02 18:25:35 +01:00
Julian Stirling
26d488e75f Merge branch 'exposure-time-name' into 'v3'
Rename exposure (with limit)

See merge request openflexure/openflexure-microscope-server!225
2025-04-02 17:09:26 +00:00
Joe Knapper
79b396a66f CSM always returns to start on error 2025-04-02 17:54:12 +01:00
Julian Stirling
550c977f59 Merge branch 'split-ruff-ci' into 'v3'
Split up ruff format and lint

See merge request openflexure/openflexure-microscope-server!226
2025-04-02 13:41:35 +00:00
Julian Stirling
32f2a7ce70 Fix spurious line endings, don't allow ruff-format to fail anymore 2025-04-02 14:25:22 +01:00
Julian Stirling
928d5ef300 Try pinning pydantic version as server now fails tests with error 2025-04-02 14:05:38 +01:00
Julian Stirling
336b504377 Split up ruff format and lint allowing format to fail 2025-04-02 13:39:12 +01:00
jaknapper
01d906e46a Rename exposure (with limit) 2025-04-02 13:02:01 +01:00
Julian Stirling
9fb417e4e6 Edit v3 branch readme as we make it the Default branch to point people to master if they are looking for v2 code 2025-02-21 10:40:25 +00:00
Richard Bowman
e8ae496d08 Use published packages
I've published [pre]releases on PyPI. This commit uses the mos recent releases of labthings-picamera2 and camera-stage-mapping.
2024-12-18 14:26:15 +00:00
Richard Bowman
83e10b125b Fix return type annotation for autofocus 2024-12-18 14:23:58 +00:00
Richard Bowman
db11e03321 Constrain numpy < 2
picamera2 fails to import with numpy 2.
2024-12-18 14:23:44 +00:00
Richard Bowman
d9c8a083fd Merge branch 'v3-ci-and-tests' into 'v3'
Add more unit tests and fix CI

See merge request openflexure/openflexure-microscope-server!194
2024-12-03 14:42:48 +00:00
Richard Bowman
1d59cddac1 Disable pytest code quality report
Code quality report plugin clashes with the version of pytest specced in labthings.

If we resolve this upstream, we can re-enable it.
2024-12-03 14:19:36 +00:00
Richard Bowman
c3cd30b642 Only rebuild docker for changes
Docker is now only rebuilt when it's changed, and on `v3`  branch.

I've also added code quality reporting for pytest.
2024-12-03 12:54:34 +00:00
Richard Bowman
71e6d84aa4 Build docker image and run ruff/pytest 2024-12-03 12:18:45 +00:00
Richard Bowman
77794c94eb Update documentation on dependencies/dev tools 2024-12-03 11:18:24 +00:00
Richard Bowman
9fd8fc37f1 Formatted with Ruff 2024-12-03 06:46:08 +00:00
Richard Bowman
27aec769a2 Linter fixes
NB I have permitted bare except: blocks in smart_scan. This should be reverted.
2024-12-03 06:43:45 +00:00
Richard Bowman
57177c6a56 Sped up camera and got CSM passing
Using lower resolution helps speed it up, and skipping CSM settling time makes a big difference.
2024-12-03 06:35:16 +00:00
Richard Bowman
1e7069b375 Add more tests, speed up dummy stage
I've sped up the stage motion, to run tests in a more reasonable time.

CSM doesn't yet calibrate in the test - I suspect debugging of capture_array
is needed.
2024-12-03 00:16:26 +00:00
Richard Bowman
728aa12d07 Add more unit tests
I'm now testing camera metadata and stage functionality. This is only using
the simulated HW - but it's a start.

It would be good to add tests for the
camera-stage mapping Thing, though
that may require speeding up the stage.
2024-12-02 23:26:32 +00:00
Richard Bowman
4d4ca831b3 Merge branch 'v3-camera-protocol' into 'v3'
Formal Protocol for camera and stage interfaces

See merge request openflexure/openflexure-microscope-server!192
2024-11-29 13:13:09 +00:00
Richard Bowman
58066f1948 Add a first unit test
This checks that the server can start
and perform an autofocus.
Autofocus in turn will test the camera and stage dependencies.
2024-11-29 13:03:36 +00:00
Richard Bowman
bccb1ee923 Stub class for camera protocol
As with the previous commit, this adds a concrete stub Thing to enable
DirectThingClient generation, so we
can depend on the camera.
2024-11-29 12:53:42 +00:00
Richard Bowman
a0fbbc3e40 Convert Stage to a Protocol
The Stage is now implemented as a runtime-checkable Protocol.

Part of this led to the realisation that we can't create a DirectThingClient
based on a Protocol, only on a concrete Thing. While it might be
a good idea to address that in LabThings in due course, for now
we work around it by creating both a Protocol and a stub class. The stub class implements the protocol, and
can be used to declare a dependency.
2024-11-29 12:53:04 +00:00
Richard Bowman
2e2e877d75 JPEGBlob class definition
Static type checking is easier if JPEGBlob is declared as a class, rather than
being created with a function.
2024-11-29 12:19:05 +00:00
Richard Bowman
adbb805556 Formal Protocol for camera interface
I've now split the base camera code into a runtime-checkable Protocol
and a concrete base class (which is optional). This removes the requirement
for cameras to subclass `openflexure_microscope.things.camera.Camera`
and instead uses duck typing that should
work both statically and dynamically.

As part of this, I've moved the commonly-used dependencies
on the camera inside `openflexure_microscope.things.camera` for consistency, and to make it easy to update them if it changes in the future.
2024-11-29 11:26:38 +00:00
Richard Bowman
42b4c1246e Merge branch 'v3-update-labthings' into 'v3'
Migrate to new Blob type and update imports

See merge request openflexure/openflexure-microscope-server!191
2024-11-29 09:04:44 +00:00
Richard Bowman
1ba799de22 Migrate to new Blob type and update imports
This now uses the latest version of labthings-fastapi.
2024-11-28 17:35:56 +00:00