v1.0.0-rc.178 (#88)
Build Packages / Create release (push) Successful in 17s
Build Packages / build:portable:macos-arm64:nocuda (push) Successful in 4m41s
Build Packages / HDF5 consumer tests (DIALS, XDS) (push) Successful in 20m49s
Build Packages / build:portable:windows-x86_64:nocuda (push) Successful in 13m6s
Build Packages / build:portable:windows-x86_64:cuda (push) Successful in 23m44s
Build Packages / build:rugnux:linux-aarch64:cuda (push) Successful in 7m28s
Build Packages / build:portable:linux-x86_64:nocuda (push) Successful in 11m50s
Build Packages / build:portable:linux-x86_64:cuda (push) Successful in 14m9s
Build Packages / build:jfjoch:rocky8:nocuda (push) Successful in 16m25s
Build Packages / build:jfjoch:ubuntu2204:nocuda (push) Successful in 15m42s
Build Packages / build:jfjoch:rocky9:nocuda (push) Successful in 20m50s
Build Packages / build:jfjoch:ubuntu2404:nocuda (push) Successful in 20m36s
Build Packages / build:jfjoch:rocky8:cuda-sls9 (push) Successful in 22m18s
Build Packages / build:jfjoch:rocky9:cuda-sls9 (push) Successful in 23m29s
Build Packages / Generate python client (push) Successful in 30s
Build Packages / Build documentation (push) Successful in 1m10s
Build Packages / build:jfjoch:rocky8:cuda (push) Successful in 21m38s
Build Packages / build:jfjoch:ubuntu2204:cuda (push) Successful in 17m8s
Build Packages / build:jfjoch:rocky9:cuda (push) Successful in 23m10s
Build Packages / build:jfjoch:ubuntu2404:cuda (push) Successful in 19m16s
Build Packages / Unit tests (push) Successful in 2h8m4s
Build Packages / Validation Battery (push) Successful in 40m53s

* Rugnux: Processes serial crystallography data from XFELs - SACLA (MPCCD), PAL-XFEL and European XFEL (CXI), LCLS (XTC) and SwissFEL Alvra (JUNGFRAU with a CrystFEL module geometry) - with several files or Jungfraujoch master files merged in one run (`rugnux *_master.h5`).
* Rugnux: Stills processing takes a known unit cell and space group as a starting point, finds the beam centre (and, with a cell, the detector distance) from the images, detects the saturation level in other facilities' files and refines the placement of individual detector panels.
* Rugnux: The stills report gives R_split and CC1/2 from frame half-sets, comparable with CrystFEL.
* jfjoch_viewer: Opens the same XFEL file formats.
* Validation: A stills battery checks Rugnux against deposited structures from SACLA, PAL-XFEL, LCLS, European XFEL and SwissFEL.
* Rugnux: More reliable convergence of rotation scaling, and live molecular replacement starts as soon as the model is uploaded.
* jfjoch_broker: Initialize clears the previous dataset's bearer tokens, image buffer and live Rugnux status, and a slow CUDA JIT cache is reported at start.

Reviewed-on: #88
Co-authored-by: Filip Leonarski <filip.leonarski@psi.ch>
This commit was merged in pull request #88.
This commit is contained in:
leonarski_f authored and leonarski_f committed 2026-10-21 11:20:01 +02:00
1 parent 7ed32b899f
commit afbe844b20
320 files changed
+8900 -901

No files matched your search

+2 -2
View File
@@ -22,8 +22,8 @@ communicate through network calls or other mechanisms.
This Python package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 1.0.0-rc.177
- Package version: 1.0.0-rc.177
- API version: 1.0.0-rc.178
- Package version: 1.0.0-rc.178
- Generator version: 7.20.0
- Build package: org.openapitools.codegen.languages.PythonClientCodegen
+9 -51
View File
@@ -1749,7 +1749,6 @@ Can be done anytime
### Example
* Bearer Authentication (bearerAuth):
```python
import jfjoch_client
@@ -1763,15 +1762,6 @@ configuration = jfjoch_client.Configuration(
host = "http://localhost:5232"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = jfjoch_client.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with jfjoch_client.ApiClient(configuration) as api_client:
@@ -1799,18 +1789,17 @@ This endpoint does not need any parameter.
### Authorization
[bearerAuth](../README.md#bearerAuth)
No authorization required
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: text/plain, application/json
- **Accept**: application/json
### HTTP response details
| Status code | Description | Response headers |
|-------------|-------------|------------------|
**401** | The current dataset is protected and no valid bearer token was presented. | - |
**200** | Everything OK | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
@@ -1825,7 +1814,6 @@ This can only be done when detector is `Idle`, `Error` or `Inactive` states.
### Example
* Bearer Authentication (bearerAuth):
```python
import jfjoch_client
@@ -1838,15 +1826,6 @@ configuration = jfjoch_client.Configuration(
host = "http://localhost:5232"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = jfjoch_client.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with jfjoch_client.ApiClient(configuration) as api_client:
@@ -1872,18 +1851,17 @@ void (empty response body)
### Authorization
[bearerAuth](../README.md#bearerAuth)
No authorization required
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: text/plain, application/json
- **Accept**: application/json
### HTTP response details
| Status code | Description | Response headers |
|-------------|-------------|------------------|
**401** | The current dataset is protected and no valid bearer token was presented. | - |
**200** | All good | - |
**500** | Error within Jungfraujoch code - see output message. | - |
@@ -1902,7 +1880,6 @@ and validation of every following rugnux live collection, until it is removed wi
### Example
* Bearer Authentication (bearerAuth):
```python
import jfjoch_client
@@ -1915,15 +1892,6 @@ configuration = jfjoch_client.Configuration(
host = "http://localhost:5232"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = jfjoch_client.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with jfjoch_client.ApiClient(configuration) as api_client:
@@ -1953,18 +1921,17 @@ void (empty response body)
### Authorization
[bearerAuth](../README.md#bearerAuth)
No authorization required
### HTTP request headers
- **Content-Type**: application/octet-stream
- **Accept**: text/plain, application/json
- **Accept**: application/json
### HTTP response details
| Status code | Description | Response headers |
|-------------|-------------|------------------|
**401** | The current dataset is protected and no valid bearer token was presented. | - |
**200** | All good | - |
**400** | Empty body, or not a model that can be read (PDB or mmCIF, optionally gzipped) | - |
**413** | Model larger than 64 MiB | - |
@@ -1982,7 +1949,6 @@ This can only be done when detector is `Idle`, `Error` or `Inactive` states.
### Example
* Bearer Authentication (bearerAuth):
```python
import jfjoch_client
@@ -1996,15 +1962,6 @@ configuration = jfjoch_client.Configuration(
host = "http://localhost:5232"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure Bearer authorization: bearerAuth
configuration = jfjoch_client.Configuration(
access_token = os.environ["BEARER_TOKEN"]
)
# Enter a context with an instance of the API client
with jfjoch_client.ApiClient(configuration) as api_client:
@@ -2034,7 +1991,7 @@ void (empty response body)
### Authorization
[bearerAuth](../README.md#bearerAuth)
No authorization required
### HTTP request headers
@@ -2045,7 +2002,6 @@ void (empty response body)
| Status code | Description | Response headers |
|-------------|-------------|------------------|
**401** | The current dataset is protected and no valid bearer token was presented. | - |
**200** | Everything OK | - |
**400** | Input parsing or validation error | - |
**500** | Error within Jungfraujoch code - see output message. | - |
@@ -3590,6 +3546,8 @@ X-ray shutter must be closed.
This operation will reconfigure network interface of the detector.
During operation of the detector it is recommended to use the `POST /pedestal` operation instead.
If storage cells are used, the execution time might be few minutes.
It also clears the image buffer, the previous collection's plots and live rugnux status, disables live rugnux analysis and removes the rugnux model.
It drops the previous dataset's bearer tokens and resets its settings, so nothing of that dataset stays readable.
This is async function - one needs to use `POST /wait_till_done` to ensure operation is done.
+6 -4
View File
@@ -1,6 +1,6 @@
# RugnuxLiveStatus
Live rugnux processing of the last collection; kept until the next collection starts
Live rugnux processing of the last collection; kept until the next collection starts or `POST /initialize`. Times are taken when the image puller received a message, and are in seconds since the first image (before it arrives, since now). The frame rate is `(images_received - 1) / last_image_s`.
## Properties
@@ -8,16 +8,18 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**state** | **str** | |
**probe** | **str** | Answer of the early lattice probe on the first 60 degrees; empty until it answers |
**probe_s** | **float** | When the probe answered, since the collection started | [optional]
**probe_s** | **float** | When the probe answered, since the first image | [optional]
**start_to_first_image_s** | **float** | From the START message to the first image; set once the first image arrives | [optional]
**message** | **str** | Why the run failed or was skipped |
**images_expected** | **int** | |
**expected_collection_s** | **float** | How long the collection is set up to take - images_expected times the image time; absent if not known | [optional]
**images_received** | **int** | |
**elapsed_s** | **float** | |
**step_progress** | **float** | Fraction of the current pass&#39;s images | [optional]
**steps** | [**List[RugnuxLiveStep]**](RugnuxLiveStep.md) | |
**last_image_s** | **float** | When the last image arrived (and the cutoff timer started), since the collection started | [optional]
**last_image_s** | **float** | When the last image arrived, since the first image; set once the collection is over | [optional]
**cut** | **str** | Empty, or why the analysis was cut: &#x60;deadline&#x60; (&#x60;deadline_s&#x60; after the last image) or &#x60;cancel&#x60; (&#x60;POST /cancel&#x60;). The end message then carried what was established at the cut. | [optional]
**cut_s** | **float** | When the analysis was cut, since the collection started | [optional]
**cut_s** | **float** | When the analysis was cut, since the first image | [optional]
**last_image_to_written_s** | **float** | From the last image received to all results written | [optional]
**verdict** | **str** | OK, WARNINGS, UNUSABLE or FAILED; empty until the run is over |
**verdict_text** | **str** | |
+1 -1
View File
@@ -6,7 +6,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**title** | **str** | |
**started_s** | **float** | Start of the step, since the collection started |
**started_s** | **float** | Start of the step, since the first image (negative if before it) |
**duration_s** | **float** | Set once the next step starts or the run ends | [optional]
**notes** | **List[str]** | What the step found (e.g. lattice, space group) |