import React, {Component} from 'react'; import Paper from '@mui/material/Paper'; import {Grid, Slider, Switch, Typography} from "@mui/material"; import {DefaultService, spot_finding_settings} from "../openapi"; type MyProps = { s?: spot_finding_settings, update: () => void }; type MyState = { s: spot_finding_settings } class DataProcessingSettings extends Component { state : MyState = { s: { enable: true, indexing: true, filter_powder_rings: false, min_spot_count_powder_ring: 20, photon_count_threshold: 8, signal_to_noise_threshold: 3.0, min_pix_per_spot: 2, max_pix_per_spot: 50, high_resolution_limit: 2.5, low_resolution_limit: 20.0, resolution_estimate: false, quick_integration: false, quick_integration_high_res_A: 1.5 } } putValues(x: spot_finding_settings) { DefaultService.putConfigSpotFinding(x) .catch(error => console.log(error) ); } getValues() { if (this.props.s !== undefined) this.setState({s: this.props.s}); } componentDidMount() { this.getValues(); } componentDidUpdate(prevProps: Readonly) { if ((this.props.s !== undefined) && (prevProps.s != this.props.s)) this.setState({s: this.props.s}); } setPhotonCountThreshold = (event: Event, newValue: number | number[]) => { this.setState(prevState => ({s: {...prevState.s, photon_count_threshold: newValue as number}}), () => {this.putValues(this.state.s);}); this.props.update(); } setSignalToNoiseThreshold = (event: Event, newValue: number | number[]) => { this.setState(prevState => ({s: {...prevState.s, signal_to_noise_threshold: newValue as number}}), () => {this.putValues(this.state.s);}); this.props.update(); } setMinPixPerSpot = (event: Event, newValue: number | number[]) => { this.setState(prevState => ({s: {...prevState.s, min_pix_per_spot: newValue as number}}), () => {this.putValues(this.state.s);}); this.props.update(); } setHighResolutionLimit = (event: Event, newValue: number | number[]) => { this.setState(prevState => ({s: {...prevState.s, high_resolution_limit: newValue as number}}), () => {this.putValues(this.state.s);}); this.props.update(); } enableSpotFindingToggle = (event: React.ChangeEvent) => { this.setState(prevState => ({s: {...prevState.s, enable: event.target.checked}}), () => {this.putValues(this.state.s);}); this.props.update(); } enableIndexingToggle = (event: React.ChangeEvent) => { this.setState(prevState => ({s: {...prevState.s, indexing: event.target.checked}}), () => {this.putValues(this.state.s);}); this.props.update(); } enableFilterPowderRingToggle = (event: React.ChangeEvent) => { this.setState(prevState => ({s: {...prevState.s, filter_powder_rings: event.target.checked}}), () => {this.putValues(this.state.s);}); this.props.update(); } setMinSpotCountPowderRing = (event: Event, newValue: number | number[]) => { this.setState(prevState => ({s: {...prevState.s, min_spot_count_powder_ring: newValue as number}}), () => {this.putValues(this.state.s);}); this.props.update(); } enableResolutionEstimateToggle = (event: React.ChangeEvent) => { this.setState(prevState => ({s: {...prevState.s, resolution_estimation: event.target.checked}}), () => {this.putValues(this.state.s);}); this.props.update(); } enableQuickIntegrationToggle = (event: React.ChangeEvent) => { this.setState(prevState => ({s: {...prevState.s, quick_integration: event.target.checked}}), () => {this.putValues(this.state.s);}); this.props.update(); } setQuickIntegrationHighRes = (event: Event, newValue: number | number[]) => { this.setState(prevState => ({s: {...prevState.s, quick_integration_high_res_A: newValue as number}}), () => {this.putValues(this.state.s);}); this.props.update(); } render() { return
Spot finding parameters

Spot finding

Count threshold
Signal-to-noise threshold value.toFixed(1)} />
Minimum pixel / spot High resolution limit [Å] value.toFixed(1)} />

Filter spots in powder rings (e.g., ice)

Min spots to filter powder ring

Indexing

Resolution est. (ML) Quick MX integration

MX integration high resolution limit
} } export default DataProcessingSettings;