JFJochReceiver: Single preview, that can be switched to present all or indexed only results

This commit is contained in:
2023-10-22 12:41:59 +02:00
parent af27854440
commit 566ff52bfc
9 changed files with 74 additions and 81 deletions

View File

@@ -71,7 +71,7 @@ class DataProcessingPlots extends Component<MyProps, MyState> {
render() {
return <Paper style={{textAlign: 'center'}} sx={{ height: 630, width: "100%" }}>
<Toolbar>
<Grid container sx={{ minWidth: 450 }} >
<Grid container sx={{ minWidth: 700 }} >
<Tabs value={this.state.tab} onChange={this.tabsOnChange}>
<Tab label="Indexing" value={1}/>
<Tab label="Indexing/file" value={4} />

View File

@@ -1,7 +1,7 @@
import React, {Component} from 'react';
import Paper from '@mui/material/Paper';
import {Grid, Slider, Typography} from "@mui/material";
import {Grid, Slider, Switch, Typography} from "@mui/material";
import {handleErrors} from "./handleErrors";
type MyProps = {
@@ -18,7 +18,8 @@ type MyState = {
highResolutionLimit?: number | string,
lowResolutionLimit?: number | string,
bkgEstimateLowQ: number | string,
bkgEstimateHighQ: number | string
bkgEstimateHighQ: number | string,
previewIndexedOnly: boolean
},
connection_error: boolean;
}
@@ -35,7 +36,8 @@ class DataProcessingSettings extends Component<MyProps, MyState> {
localBkgSize: 5,
highResolutionLimit: 2.5,
bkgEstimateLowQ: 3,
bkgEstimateHighQ: 5
bkgEstimateHighQ: 5,
previewIndexedOnly: false
},
connection_error: true
}
@@ -44,6 +46,7 @@ class DataProcessingSettings extends Component<MyProps, MyState> {
super(props);
this.addr = props.addr;
}
putValues() {
fetch(this.addr + 'data_processing/settings', {
method: "PUT",
@@ -52,6 +55,14 @@ class DataProcessingSettings extends Component<MyProps, MyState> {
.catch(error => console.log(error) );
}
putValues2(x: MyState) {
fetch(this.addr + 'data_processing/settings', {
method: "PUT",
body: JSON.stringify(x.s)
}).then(handleErrors)
.catch(error => console.log(error) );
}
getValues() {
fetch(this.addr + 'data_processing/settings')
.then(handleErrors)
@@ -119,6 +130,12 @@ class DataProcessingSettings extends Component<MyProps, MyState> {
this.putValues();
}
previewIndexedToggle = (event: React.ChangeEvent<HTMLInputElement>) => {
let x = this.state;
x.s.previewIndexedOnly = event.target.checked;
this.putValues2(x);
}
render() {
return <Paper style={{textAlign: 'center'}} sx={{ height: 630, width: '100%' }}>
<Grid container spacing={0}>
@@ -149,9 +166,13 @@ class DataProcessingSettings extends Component<MyProps, MyState> {
onChange={this.setHighResolutionLimit}
min={1} max={5} step={0.2} valueLabelDisplay="auto" />
<br/>
<Switch onChange={this.previewIndexedToggle} checked={this.state.s.previewIndexedOnly}
disabled={this.state.connection_error}/>
Preview only indexed frames <br/><br/>
</Grid>
<Grid item xs={1}/>
</Grid>
</Paper>
}

View File

@@ -421,6 +421,7 @@ message DataProcessingSettings {
optional float low_resolution_limit = 7;
float bkg_estimate_low_q = 8;
float bkg_estimate_high_q = 9;
bool preview_indexed_only = 10;
}
message PreviewFrameSpot {

File diff suppressed because one or more lines are too long

View File

@@ -26,7 +26,6 @@ JFJochReceiver::JFJochReceiver(const JFJochProtoBuf::ReceiverInput &settings,
Logger &in_logger, int64_t in_forward_and_sum_nthreads,
int64_t in_send_buffer_count,
ZMQPreviewPublisher* in_preview_publisher,
ZMQPreviewPublisher* in_preview_publisher_indexed,
const NUMAHWPolicy &in_numa_policy) :
experiment(settings.jungfraujoch_settings()),
acquisition_device(in_aq_device),
@@ -35,7 +34,6 @@ JFJochReceiver::JFJochReceiver(const JFJochProtoBuf::ReceiverInput &settings,
frame_transformation_nthreads((experiment.GetSummation() >= threaded_summation_threshold) ?
2 : in_forward_and_sum_nthreads),
preview_publisher(in_preview_publisher),
preview_publisher_indexed(in_preview_publisher_indexed),
ndatastreams(experiment.GetDataStreamsNum()),
data_acquisition_ready(ndatastreams),
frame_transformation_ready((experiment.GetImageNum() > 0) ? frame_transformation_nthreads : 0),
@@ -86,8 +84,6 @@ JFJochReceiver::JFJochReceiver(const JFJochProtoBuf::ReceiverInput &settings,
if (experiment.GetDetectorMode() == DetectorMode::Conversion) {
if (preview_publisher != nullptr)
preview_publisher->Start(experiment, calib.value());
if (preview_publisher_indexed != nullptr)
preview_publisher_indexed->Start(experiment, calib.value());
if (!GPUImageAnalysis::GPUPresent())
logger.Info("GPU support missing");
@@ -442,12 +438,9 @@ void JFJochReceiver::FrameTransformationThread() {
message.exptime_base = 10*1000*1000;
message.indexing_result = 0;
bool indexed = false;
bool send_preview = false;
bool calculate_spots = false;
if ((preview_publisher != nullptr) && (preview_stride > 0) && (image_number % preview_stride == 0))
send_preview = true;
bool send_image = false; // We send image if at least one module was collected in full
std::unique_ptr<RadialIntegrationProfile> rad_int_profile_image;
@@ -547,10 +540,7 @@ void JFJochReceiver::FrameTransformationThread() {
for (int i = 0; i < recip.size(); i++)
message.spots[i].indexed = indexer_result[0].indexed_spots[i];
indexer_result[0].l.Save(message.indexing_lattice);
if (preview_publisher_indexed)
preview_publisher_indexed->Publish(experiment,
transformation.GetPreview16BitImage(),
message);
indexed = true;
} else {
message.indexing_result = 1;
indexing_solution.AddElement(image_number, 0);
@@ -575,7 +565,7 @@ void JFJochReceiver::FrameTransformationThread() {
*rad_int_profile_per_file[image_number % experiment.GetDataFileCount()] += *rad_int_profile_image;
}
if (send_preview)
if (preview_publisher && (!local_data_processing_settings.preview_indexed_only() || indexed))
preview_publisher->Publish(experiment,
transformation.GetPreview16BitImage(),
message);
@@ -727,9 +717,6 @@ void JFJochReceiver::FinalizeMeasurement() {
if (preview_publisher != nullptr)
preview_publisher->Stop(experiment);
if (preview_publisher_indexed != nullptr)
preview_publisher_indexed->Stop(experiment);
for (int d = 0; d < ndatastreams; d++)
acquisition_device[d]->Cancel();

View File

@@ -59,7 +59,6 @@ class JFJochReceiver {
ThreadSafeFIFO<uint64_t> images_to_go;
ZMQPreviewPublisher *preview_publisher = nullptr;
ZMQPreviewPublisher* preview_publisher_indexed = nullptr;
ImagePusher &image_pusher;
bool push_images_to_writer;
@@ -131,7 +130,6 @@ public:
Logger &logger, int64_t forward_and_sum_nthreads,
int64_t send_buffer_count,
ZMQPreviewPublisher* preview_publisher,
ZMQPreviewPublisher* preview_publisher_indexed,
const NUMAHWPolicy &numa_policy);
~JFJochReceiver();
JFJochReceiver(const JFJochReceiver &other) = delete;

View File

@@ -21,8 +21,7 @@ grpc::Status JFJochReceiverService::Start(grpc::ServerContext *context, const JF
receiver.reset();
receiver = std::make_unique<JFJochReceiver>(*request, aq_devices, image_pusher,
logger, nthreads, send_buffer_count,
preview_publisher, preview_publisher_indexed,
numa_policy);
preview_publisher, numa_policy);
try {
// Don't want to stop
receiver->SetDataProcessingSettings(data_processing_settings);
@@ -114,11 +113,6 @@ JFJochReceiverService& JFJochReceiverService::PreviewPublisher(ZMQPreviewPublish
return *this;
}
JFJochReceiverService& JFJochReceiverService::PreviewPublisherIndexed(ZMQPreviewPublisher *in_preview_writer) {
preview_publisher_indexed = in_preview_writer;
return *this;
}
JFJochReceiverService &JFJochReceiverService::NUMAPolicy(const NUMAHWPolicy &policy) {
numa_policy = policy;
return *this;

View File

@@ -19,7 +19,6 @@ class JFJochReceiverService final : public JFJochProtoBuf::gRPC_JFJochReceiver::
ImagePusher &image_pusher;
ZMQPreviewPublisher *preview_publisher = nullptr;
ZMQPreviewPublisher *preview_publisher_indexed = nullptr;
int64_t nthreads = 8;
int64_t send_buffer_count = 32;
@@ -35,7 +34,6 @@ public:
JFJochReceiverService(std::vector<AcquisitionDevice *> &open_capi_device,
Logger &logger, ImagePusher &pusher);
JFJochReceiverService& PreviewPublisher(ZMQPreviewPublisher *in_preview_writer);
JFJochReceiverService& PreviewPublisherIndexed(ZMQPreviewPublisher *in_preview_writer);
JFJochReceiverService& NumThreads(int64_t input);
JFJochReceiverService& SendBufferCount(int64_t input);
JFJochReceiverService& NUMAPolicy(const NUMAHWPolicy& policy);

View File

@@ -152,12 +152,6 @@ int main(int argc, char **argv) {
logger.Info("Preview available on ZMQ addr " + input["preview_zmq_addr"].get<std::string>());
}
if (input.contains("preview_indexed_zmq_addr")) {
preview_indexed = std::make_unique<ZMQPreviewPublisher>(context, input["preview_indexed_zmq_addr"]);
service.PreviewPublisherIndexed(preview_indexed.get());
logger.Info("Preview available for indexed frames on ZMQ addr " + input["preview_indexed_zmq_addr"].get<std::string>());
}
if (input.contains("compression_threads")) {
service.NumThreads(input["compression_threads"].get<int64_t>());
logger.Info("Compression threads {}", input["compression_threads"].get<int64_t>());