OpenAPI: Add spot finding enable/disable option

This commit is contained in:
leonarski_f committed 2024-04-09 00:27:41 +02:00
1 parent c1e046b90d
commit 9cff0dc6f7
11 files changed
+70 -31

No files matched your search

+3 -1
View File
@@ -19,7 +19,8 @@ inline SpotFindingSettings Convert(const org::openapitools::server::model::Spot_
ret.max_pix_per_spot = input.getMaxPixPerSpot();
ret.high_resolution_limit = input.getHighResolutionLimit();
ret.low_resolution_limit = input.getLowResolutionLimit();
ret.preview_indexed_only = input.previewIndexedOnlyIsSet() ? input.isPreviewIndexedOnly() : false;
ret.preview_indexed_only = input.isPreviewIndexedOnly();
ret.enable = input.isEnable();
return ret;
}
@@ -32,6 +33,7 @@ inline org::openapitools::server::model::Spot_finding_settings Convert(const Spo
ret.setHighResolutionLimit(input.high_resolution_limit);
ret.setLowResolutionLimit(input.low_resolution_limit);
ret.setPreviewIndexedOnly(input.preview_indexed_only);
ret.setEnable(input.enable);
return ret;
}
+15 -1
View File
@@ -21,6 +21,7 @@ namespace org::openapitools::server::model
Spot_finding_settings::Spot_finding_settings()
{
m_Enable = true;
m_Signal_to_noise_threshold = 0.0f;
m_Photon_count_threshold = 0L;
m_Min_pix_per_spot = 0L;
@@ -51,7 +52,7 @@ bool Spot_finding_settings::validate(std::stringstream& msg, const std::string&
bool success = true;
const std::string _pathPrefix = pathPrefix.empty() ? "Spot_finding_settings" : pathPrefix;
/* Signal_to_noise_threshold */ {
const float& value = m_Signal_to_noise_threshold;
@@ -116,6 +117,9 @@ bool Spot_finding_settings::operator==(const Spot_finding_settings& rhs) const
return
(isEnable() == rhs.isEnable())
&&
(getSignalToNoiseThreshold() == rhs.getSignalToNoiseThreshold())
&&
@@ -148,6 +152,7 @@ bool Spot_finding_settings::operator!=(const Spot_finding_settings& rhs) const
void to_json(nlohmann::json& j, const Spot_finding_settings& o)
{
j = nlohmann::json();
j["enable"] = o.m_Enable;
j["signal_to_noise_threshold"] = o.m_Signal_to_noise_threshold;
j["photon_count_threshold"] = o.m_Photon_count_threshold;
j["min_pix_per_spot"] = o.m_Min_pix_per_spot;
@@ -161,6 +166,7 @@ void to_json(nlohmann::json& j, const Spot_finding_settings& o)
void from_json(const nlohmann::json& j, Spot_finding_settings& o)
{
j.at("enable").get_to(o.m_Enable);
j.at("signal_to_noise_threshold").get_to(o.m_Signal_to_noise_threshold);
j.at("photon_count_threshold").get_to(o.m_Photon_count_threshold);
j.at("min_pix_per_spot").get_to(o.m_Min_pix_per_spot);
@@ -175,6 +181,14 @@ void from_json(const nlohmann::json& j, Spot_finding_settings& o)
}
bool Spot_finding_settings::isEnable() const
{
return m_Enable;
}
void Spot_finding_settings::setEnable(bool const value)
{
m_Enable = value;
}
float Spot_finding_settings::getSignalToNoiseThreshold() const
{
return m_Signal_to_noise_threshold;
+7
View File
@@ -57,6 +57,11 @@ public:
/////////////////////////////////////////////
/// Spot_finding_settings members
/// <summary>
///
/// </summary>
bool isEnable() const;
void setEnable(bool const value);
/// <summary>
///
/// </summary>
@@ -98,6 +103,8 @@ public:
friend void to_json(nlohmann::json& j, const Spot_finding_settings& o);
friend void from_json(const nlohmann::json& j, Spot_finding_settings& o);
protected:
bool m_Enable;
float m_Signal_to_noise_threshold;
int64_t m_Photon_count_threshold;
+4
View File
@@ -311,6 +311,7 @@ components:
spot_finding_settings:
type: object
required:
- enable
- signal_to_noise_threshold
- photon_count_threshold
- max_pix_per_spot
@@ -318,6 +319,9 @@ components:
- high_resolution_limit
- low_resolution_limit
properties:
enable:
type: boolean
default: true
signal_to_noise_threshold:
type: number
format: float
+4 -4
View File
@@ -535,15 +535,15 @@ If detector is in <code>Inactive</code> or <code>Error</code> states, new settin
" class="sc-iKOmoZ sc-cCzLxZ WVNwY VEBGS sc-ckdEwu LxEPk"><p>Everything OK</p>
</div></button></div></div></div><div class="sc-jTQCzO sc-gLLuof imiXRU jGdkPR"><div class="sc-bPrlCs cIsduN"><button class="sc-GkLId bclCVA"><span type="get" class="sc-jYnQyy eIFDdZ http-verb get">get</span><span class="sc-fYrVWQ gllLir">/config/detector</span><svg class="sc-eTNRI exoGJA" style="margin-right:-25px" version="1.1" viewBox="0 0 24 24" x="0" xmlns="http://www.w3.org/2000/svg" y="0" aria-hidden="true"><polygon points="17.3 8.3 12 13.6 6.7 8.3 5.3 9.7 12 16.4 18.7 9.7 "></polygon></svg></button><div aria-hidden="true" class="sc-eGgGjL hsEiws"><div class="sc-fnpiog jerStl"><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div><div tabindex="0" role="button"><div class="sc-lkDHyp etvaCd"><span></span>/config/detector</div></div></div></div></div><div><h3 class="sc-kFCroH klfnyk"> <!-- -->Response samples<!-- --> </h3><div class="sc-cyZbeP jSWvqu" data-rttabs="true"><ul class="react-tabs__tab-list" role="tablist"><li class="tab-success react-tabs__tab--selected" role="tab" id="react-tabs-16" aria-selected="true" aria-disabled="false" aria-controls="react-tabs-17" tabindex="0" data-rttab="true">200</li></ul><div class="react-tabs__tab-panel react-tabs__tab-panel--selected" role="tabpanel" id="react-tabs-17" aria-labelledby="react-tabs-16"><div><div class="sc-cPtzlb jBjImi"><span class="sc-bCvmQg eTZsJr">Content type</span><div class="sc-dQmiwx jCmKdj">application/json</div></div><div class="sc-hVcFVo jeLSWq"><div class="sc-cSxRuM fOJBdW"><div class="sc-gjLLEI iwAAMv"><button><div class="sc-jdHILj krcPXE">Copy</div></button></div><div class="sc-iKOmoZ WVNwY sc-jMbVJB DqFKH"><div class="redoc-json"><code><button class="collapser" aria-label="collapse"></button><span class="token punctuation">{</span><span class="ellipsis"></span><ul class="obj collapsible"><li><div class="hoverable "><span class="property token string">"frame_time_us"</span>: <span class="token number">450</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"count_time_us"</span>: <span class="token number">0</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"storage_cell_count"</span>: <span class="token number">1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"internal_frame_generator"</span>: <span class="token boolean">false</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"internal_frame_generator_images"</span>: <span class="token number">1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"collect_raw_data"</span>: <span class="token boolean">false</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"pedestal_g0_frames"</span>: <span class="token number">0</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"pedestal_g1_frames"</span>: <span class="token number">0</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"pedestal_g2_frames"</span>: <span class="token number">0</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"storage_cell_delay_us"</span>: <span class="token number">0.1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"detector_trigger_delay_us"</span>: <span class="token number">0.1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"fixed_gain_g1"</span>: <span class="token boolean">false</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"use_gain_hg0"</span>: <span class="token boolean">false</span></div></li></ul><span class="token punctuation">}</span></code></div></div></div></div></div></div></div></div></div></div></div><div id="/paths/~1config~1spot_finding/put" data-section-id="/paths/~1config~1spot_finding/put" class="sc-eDLKkx cSNAXN"><div class="sc-iBdnpw fsPUig"><div class="sc-hLQSwg gikxZY"><h2 class="sc-qZrbh gwJLUj"><a class="sc-csKJxZ fNhImz" href="#/paths/~1config~1spot_finding/put" aria-label="/paths/~1config~1spot_finding/put"></a>Configure spot finding<!-- --> </h2><div class="sc-eYFTNc dZbpPF"><div html="&lt;p&gt;Can be done anytime, also while data collection is running&lt;/p&gt;
" class="sc-iKOmoZ sc-cCzLxZ WVNwY VEBGS"><p>Can be done anytime, also while data collection is running</p>
</div></div><h5 class="sc-irLvIq cnGhhy">Request Body schema: <span class="sc-gYrqIg hJSqDi">application/json</span></h5><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY VEBGS"></div><table class="sc-hIPBNq kHkWhD"><tbody><tr class=""><td kind="field" title="signal_to_noise_threshold" class="sc-hABBmJ sc-fHejqy cqoAxn hfWKVF"><span class="sc-ifyrAs hIHfpT"></span><span class="property-name">signal_to_noise_threshold</span><div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div></td><td class="sc-blmEgr berbbf"><div><div><span class="sc-gUjWJS sc-kZOsHZ itHPsH iSyacY"></span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP">number</span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP"> <!-- -->&lt;<!-- -->float<!-- -->&gt;<!-- --> </span><span> <span class="sc-gUjWJS sc-cmfnrN itHPsH iOjfOC"> <!-- -->&gt;= 0<!-- --> </span></span></div> <div><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div></div></div></td></tr><tr class=""><td kind="field" title="photon_count_threshold" class="sc-hABBmJ sc-fHejqy cqoAxn hfWKVF"><span class="sc-ifyrAs hIHfpT"></span><span class="property-name">photon_count_threshold</span><div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div></td><td class="sc-blmEgr berbbf"><div><div><span class="sc-gUjWJS sc-kZOsHZ itHPsH iSyacY"></span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP">integer</span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP"> <!-- -->&lt;<!-- -->int64<!-- -->&gt;<!-- --> </span><span> <span class="sc-gUjWJS sc-cmfnrN itHPsH iOjfOC"> <!-- -->&gt;= 0<!-- --> </span></span></div> <div><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div></div></div></td></tr><tr class=""><td kind="field" title="min_pix_per_spot" class="sc-hABBmJ sc-fHejqy cqoAxn hfWKVF"><span class="sc-ifyrAs hIHfpT"></span><span class="property-name">min_pix_per_spot</span><div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div></td><td class="sc-blmEgr berbbf"><div><div><span class="sc-gUjWJS sc-kZOsHZ itHPsH iSyacY"></span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP">integer</span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP"> <!-- -->&lt;<!-- -->int64<!-- -->&gt;<!-- --> </span><span> <span class="sc-gUjWJS sc-cmfnrN itHPsH iOjfOC"> <!-- -->&gt;= 1<!-- --> </span></span></div> <div><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div></div></div></td></tr><tr class=""><td kind="field" title="max_pix_per_spot" class="sc-hABBmJ sc-fHejqy cqoAxn hfWKVF"><span class="sc-ifyrAs hIHfpT"></span><span class="property-name">max_pix_per_spot</span><div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div></td><td class="sc-blmEgr berbbf"><div><div><span class="sc-gUjWJS sc-kZOsHZ itHPsH iSyacY"></span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP">integer</span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP"> <!-- -->&lt;<!-- -->int64<!-- -->&gt;<!-- --> </span><span> <span class="sc-gUjWJS sc-cmfnrN itHPsH iOjfOC"> <!-- -->&gt;= 1<!-- --> </span></span></div> <div><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div></div></div></td></tr><tr class=""><td kind="field" title="high_resolution_limit" class="sc-hABBmJ sc-fHejqy cqoAxn hfWKVF"><span class="sc-ifyrAs hIHfpT"></span><span class="property-name">high_resolution_limit</span><div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div></td><td class="sc-blmEgr berbbf"><div><div><span class="sc-gUjWJS sc-kZOsHZ itHPsH iSyacY"></span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP">number</span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP"> <!-- -->&lt;<!-- -->float<!-- -->&gt;<!-- --> </span></div> <div><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div></div></div></td></tr><tr class=""><td kind="field" title="low_resolution_limit" class="sc-hABBmJ sc-fHejqy cqoAxn hfWKVF"><span class="sc-ifyrAs hIHfpT"></span><span class="property-name">low_resolution_limit</span><div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div></td><td class="sc-blmEgr berbbf"><div><div><span class="sc-gUjWJS sc-kZOsHZ itHPsH iSyacY"></span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP">number</span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP"> <!-- -->&lt;<!-- -->float<!-- -->&gt;<!-- --> </span></div> <div><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div></div></div></td></tr><tr class="last "><td kind="field" title="preview_indexed_only" class="sc-hABBmJ sc-fHejqy cqoAxn hfWKVF"><span class="sc-ifyrAs hIHfpT"></span><span class="property-name">preview_indexed_only</span></td><td class="sc-blmEgr berbbf"><div><div><span class="sc-gUjWJS sc-kZOsHZ itHPsH iSyacY"></span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP">boolean</span></div><div><span class="sc-gUjWJS itHPsH"> <!-- -->Default:<!-- --> </span> <span class="sc-gUjWJS sc-ldgOGP itHPsH cRxwgg">false</span></div> <div><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div></div></div></td></tr></tbody></table><div><h3 class="sc-fYitVF duKVDl">Responses</h3><div><button class="sc-hsaIUA iSOCsR" disabled=""><strong class="sc-gWQvRS ePkkgXLine truncated
</div></div><h5 class="sc-irLvIq cnGhhy">Request Body schema: <span class="sc-gYrqIg hJSqDi">application/json</span></h5><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY VEBGS"></div><table class="sc-hIPBNq kHkWhD"><tbody><tr class=""><td kind="field" title="enable" class="sc-hABBmJ sc-fHejqy cqoAxn hfWKVF"><span class="sc-ifyrAs hIHfpT"></span><span class="property-name">enable</span><div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div></td><td class="sc-blmEgr berbbf"><div><div><span class="sc-gUjWJS sc-kZOsHZ itHPsH iSyacY"></span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP">boolean</span></div><div><span class="sc-gUjWJS itHPsH"> <!-- -->Default:<!-- --> </span> <span class="sc-gUjWJS sc-ldgOGP itHPsH cRxwgg">true</span></div> <div><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div></div></div></td></tr><tr class=""><td kind="field" title="signal_to_noise_threshold" class="sc-hABBmJ sc-fHejqy cqoAxn hfWKVF"><span class="sc-ifyrAs hIHfpT"></span><span class="property-name">signal_to_noise_threshold</span><div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div></td><td class="sc-blmEgr berbbf"><div><div><span class="sc-gUjWJS sc-kZOsHZ itHPsH iSyacY"></span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP">number</span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP"> <!-- -->&lt;<!-- -->float<!-- -->&gt;<!-- --> </span><span> <span class="sc-gUjWJS sc-cmfnrN itHPsH iOjfOC"> <!-- -->&gt;= 0<!-- --> </span></span></div> <div><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div></div></div></td></tr><tr class=""><td kind="field" title="photon_count_threshold" class="sc-hABBmJ sc-fHejqy cqoAxn hfWKVF"><span class="sc-ifyrAs hIHfpT"></span><span class="property-name">photon_count_threshold</span><div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div></td><td class="sc-blmEgr berbbf"><div><div><span class="sc-gUjWJS sc-kZOsHZ itHPsH iSyacY"></span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP">integer</span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP"> <!-- -->&lt;<!-- -->int64<!-- -->&gt;<!-- --> </span><span> <span class="sc-gUjWJS sc-cmfnrN itHPsH iOjfOC"> <!-- -->&gt;= 0<!-- --> </span></span></div> <div><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div></div></div></td></tr><tr class=""><td kind="field" title="min_pix_per_spot" class="sc-hABBmJ sc-fHejqy cqoAxn hfWKVF"><span class="sc-ifyrAs hIHfpT"></span><span class="property-name">min_pix_per_spot</span><div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div></td><td class="sc-blmEgr berbbf"><div><div><span class="sc-gUjWJS sc-kZOsHZ itHPsH iSyacY"></span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP">integer</span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP"> <!-- -->&lt;<!-- -->int64<!-- -->&gt;<!-- --> </span><span> <span class="sc-gUjWJS sc-cmfnrN itHPsH iOjfOC"> <!-- -->&gt;= 1<!-- --> </span></span></div> <div><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div></div></div></td></tr><tr class=""><td kind="field" title="max_pix_per_spot" class="sc-hABBmJ sc-fHejqy cqoAxn hfWKVF"><span class="sc-ifyrAs hIHfpT"></span><span class="property-name">max_pix_per_spot</span><div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div></td><td class="sc-blmEgr berbbf"><div><div><span class="sc-gUjWJS sc-kZOsHZ itHPsH iSyacY"></span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP">integer</span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP"> <!-- -->&lt;<!-- -->int64<!-- -->&gt;<!-- --> </span><span> <span class="sc-gUjWJS sc-cmfnrN itHPsH iOjfOC"> <!-- -->&gt;= 1<!-- --> </span></span></div> <div><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div></div></div></td></tr><tr class=""><td kind="field" title="high_resolution_limit" class="sc-hABBmJ sc-fHejqy cqoAxn hfWKVF"><span class="sc-ifyrAs hIHfpT"></span><span class="property-name">high_resolution_limit</span><div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div></td><td class="sc-blmEgr berbbf"><div><div><span class="sc-gUjWJS sc-kZOsHZ itHPsH iSyacY"></span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP">number</span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP"> <!-- -->&lt;<!-- -->float<!-- -->&gt;<!-- --> </span></div> <div><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div></div></div></td></tr><tr class=""><td kind="field" title="low_resolution_limit" class="sc-hABBmJ sc-fHejqy cqoAxn hfWKVF"><span class="sc-ifyrAs hIHfpT"></span><span class="property-name">low_resolution_limit</span><div class="sc-gUjWJS sc-eKzvBH itHPsH ciWJhv">required</div></td><td class="sc-blmEgr berbbf"><div><div><span class="sc-gUjWJS sc-kZOsHZ itHPsH iSyacY"></span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP">number</span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP"> <!-- -->&lt;<!-- -->float<!-- -->&gt;<!-- --> </span></div> <div><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div></div></div></td></tr><tr class="last "><td kind="field" title="preview_indexed_only" class="sc-hABBmJ sc-fHejqy cqoAxn hfWKVF"><span class=Line truncated
" class="sc-iKOmoZ sc-cCzLxZ WVNwY VEBGS sc-ckdEwu LxEPk"><p>Everything OK</p>
</div></button></div><div><button class="sc-hsaIUA ideQht"><svg class="sc-eTNRI fWTllA" version="1.1" viewBox="0 0 24 24" x="0" xmlns="http://www.w3.org/2000/svg" y="0" aria-hidden="true"><polygon points="17.3 8.3 12 13.6 6.7 8.3 5.3 9.7 12 16.4 18.7 9.7 "></polygon></svg><strong class="sc-gWQvRS ePkkgX">400<!-- --> </strong><div html="&lt;p&gt;Input parsing or validation error&lt;/p&gt;
" class="sc-iKOmoZ sc-cCzLxZ WVNwY VEBGS sc-ckdEwu LxEPk"><p>Input parsing or validation error</p>
</div></button></div></div></div><div class="sc-jTQCzO sc-gLLuof imiXRU jGdkPR"><div class="sc-bPrlCs cIsduN"><button class="sc-GkLId bclCVA"><span type="put" class="sc-jYnQyy hyHSPQ http-verb put">put</span><span class="sc-fYrVWQ gllLir">/config/spot_finding</span><svg class="sc-eTNRI exoGJA" style="margin-right:-25px" version="1.1" viewBox="0 0 24 24" x="0" xmlns="http://www.w3.org/2000/svg" y="0" aria-hidden="true"><polygon points="17.3 8.3 12 13.6 6.7 8.3 5.3 9.7 12 16.4 18.7 9.7 "></polygon></svg></button><div aria-hidden="true" class="sc-eGgGjL hsEiws"><div class="sc-fnpiog jerStl"><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div><div tabindex="0" role="button"><div class="sc-lkDHyp etvaCd"><span></span>/config/spot_finding</div></div></div></div></div><div><h3 class="sc-kFCroH klfnyk"> <!-- -->Request samples<!-- --> </h3><div class="sc-cyZbeP jSWvqu" data-rttabs="true"><ul class="react-tabs__tab-list" role="tablist"><li class="react-tabs__tab react-tabs__tab--selected" role="tab" id="react-tabs-18" aria-selected="true" aria-disabled="false" aria-controls="react-tabs-19" tabindex="0" data-rttab="true">Payload</li></ul><div class="react-tabs__tab-panel react-tabs__tab-panel--selected" role="tabpanel" id="react-tabs-19" aria-labelledby="react-tabs-18"><div><div class="sc-cPtzlb jBjImi"><span class="sc-bCvmQg eTZsJr">Content type</span><div class="sc-dQmiwx jCmKdj">application/json</div></div><div class="sc-hVcFVo jeLSWq"><div class="sc-cSxRuM fOJBdW"><div class="sc-gjLLEI iwAAMv"><button><div class="sc-jdHILj krcPXE">Copy</div></button></div><div class="sc-iKOmoZ WVNwY sc-jMbVJB DqFKH"><div class="redoc-json"><code><button class="collapser" aria-label="collapse"></button><span class="token punctuation">{</span><span class="ellipsis"></span><ul class="obj collapsible"><li><div class="hoverable "><span class="property token string">"signal_to_noise_threshold"</span>: <span class="token number">0.1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"photon_count_threshold"</span>: <span class="token number">0</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"min_pix_per_spot"</span>: <span class="token number">1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"max_pix_per_spot"</span>: <span class="token number">1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"high_resolution_limit"</span>: <span class="token number">0.1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"low_resolution_limit"</span>: <span class="token number">0.1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"preview_indexed_only"</span>: <span class="token boolean">false</span></div></li></ul><span class="token punctuation">}</span></code></div></div></div></div></div></div></div></div></div></div></div><div id="/paths/~1config~1spot_finding/get" data-section-id="/paths/~1config~1spot_finding/get" class="sc-eDLKkx cSNAXN"><div class="sc-iBdnpw fsPUig"><div class="sc-hLQSwg gikxZY"><h2 class="sc-qZrbh gwJLUj"><a class="sc-csKJxZ fNhImz" href="#/paths/~1config~1spot_finding/get" aria-label="/paths/~1config~1spot_finding/get"></a>Get data processing configuration<!-- --> </h2><div class="sc-eYFTNc dZbpPF"><div html="&lt;p&gt;Can be done anytime&lt;/p&gt;
</div></button></div></div></div><div class="sc-jTQCzO sc-gLLuof imiXRU jGdkPR"><div class="sc-bPrlCs cIsduN"><button class="sc-GkLId bclCVA"><span type="put" class="sc-jYnQyy hyHSPQ http-verb put">put</span><span class="sc-fYrVWQ gllLir">/config/spot_finding</span><svg class="sc-eTNRI exoGJA" style="margin-right:-25px" version="1.1" viewBox="0 0 24 24" x="0" xmlns="http://www.w3.org/2000/svg" y="0" aria-hidden="true"><polygon points="17.3 8.3 12 13.6 6.7 8.3 5.3 9.7 12 16.4 18.7 9.7 "></polygon></svg></button><div aria-hidden="true" class="sc-eGgGjL hsEiws"><div class="sc-fnpiog jerStl"><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div><div tabindex="0" role="button"><div class="sc-lkDHyp etvaCd"><span></span>/config/spot_finding</div></div></div></div></div><div><h3 class="sc-kFCroH klfnyk"> <!-- -->Request samples<!-- --> </h3><div class="sc-cyZbeP jSWvqu" data-rttabs="true"><ul class="react-tabs__tab-list" role="tablist"><li class="react-tabs__tab react-tabs__tab--selected" role="tab" id="react-tabs-18" aria-selected="true" aria-disabled="false" aria-controls="react-tabs-19" tabindex="0" data-rttab="true">Payload</li></ul><div class="react-tabs__tab-panel react-tabs__tab-panel--selected" role="tabpanel" id="react-tabs-19" aria-labelledby="react-tabs-18"><div><div class="sc-cPtzlb jBjImi"><span class="sc-bCvmQg eTZsJr">Content type</span><div class="sc-dQmiwx jCmKdj">application/json</div></div><div class="sc-hVcFVo jeLSWq"><div class="sc-cSxRuM fOJBdW"><div class="sc-gjLLEI iwAAMv"><button><div class="sc-jdHILj krcPXE">Copy</div></button></div><div class="sc-iKOmoZ WVNwY sc-jMbVJB DqFKH"><div class="redoc-json"><code><button class="collapser" aria-label="collapse"></button><span class="token punctuation">{</span><span class="ellipsis"></span><ul class="obj collapsible"><li><div class="hoverable "><span class="property token string">"enable"</span>: <span class="token boolean">true</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"signal_to_noise_threshold"</span>: <span class="token number">0.1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"photon_count_threshold"</span>: <span class="token number">0</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"min_pix_per_spot"</span>: <span class="token number">1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"max_pix_per_spot"</span>: <span class="token number">1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"high_resolution_limit"</span>: <span class="token number">0.1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"low_resolution_limit"</span>: <span class="token number">0.1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"preview_indexed_only"</span>: <span class="token boolean">false</span></div></li></ul><span class="token punctuation">}</span></code></div></div></div></div></div></div></div></div></div></div></div><div id="/paths/~1config~1spot_finding/get" data-section-id="/paths/~1config~1spot_finding/get" class="sc-eDLKkx cSNAXN"><div class="sc-iBdnpw fsPUig"><div class="sc-hLQSwg gikxZY"><h2 class="sc-qZrbh gwJLUj"><a class="sc-csKJxZ fNhImz" href="#/paths/~1config~1spot_finding/get" aria-label="/paths/~1config~1spot_finding/get"></a>Get data processing configuration<!-- --> </h2><div class="sc-eYFTNc dZbpPF"><div html="&lt;p&gt;Can be done anytime&lt;/p&gt;
" class="sc-iKOmoZ sc-cCzLxZ WVNwY VEBGS"><p>Can be done anytime</p>
</div></div><div><h3 class="sc-fYitVF duKVDl">Responses</h3><div><button class="sc-hsaIUA fIqGlH"><svg class="sc-eTNRI hUWsvg" version="1.1" viewBox="0 0 24 24" x="0" xmlns="http://www.w3.org/2000/svg" y="0" aria-hidden="true"><polygon points="17.3 8.3 12 13.6 6.7 8.3 5.3 9.7 12 16.4 18.7 9.7 "></polygon></svg><strong class="sc-gWQvRS ePkkgX">200<!-- --> </strong><div html="&lt;p&gt;Everything OK&lt;/p&gt;
" class="sc-iKOmoZ sc-cCzLxZ WVNwY VEBGS sc-ckdEwu LxEPk"><p>Everything OK</p>
</div></button></div></div></div><div class="sc-jTQCzO sc-gLLuof imiXRU jGdkPR"><div class="sc-bPrlCs cIsduN"><button class="sc-GkLId bclCVA"><span type="get" class="sc-jYnQyy eIFDdZ http-verb get">get</span><span class="sc-fYrVWQ gllLir">/config/spot_finding</span><svg class="sc-eTNRI exoGJA" style="margin-right:-25px" version="1.1" viewBox="0 0 24 24" x="0" xmlns="http://www.w3.org/2000/svg" y="0" aria-hidden="true"><polygon points="17.3 8.3 12 13.6 6.7 8.3 5.3 9.7 12 16.4 18.7 9.7 "></polygon></svg></button><div aria-hidden="true" class="sc-eGgGjL hsEiws"><div class="sc-fnpiog jerStl"><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div><div tabindex="0" role="button"><div class="sc-lkDHyp etvaCd"><span></span>/config/spot_finding</div></div></div></div></div><div><h3 class="sc-kFCroH klfnyk"> <!-- -->Response samples<!-- --> </h3><div class="sc-cyZbeP jSWvqu" data-rttabs="true"><ul class="react-tabs__tab-list" role="tablist"><li class="tab-success react-tabs__tab--selected" role="tab" id="react-tabs-20" aria-selected="true" aria-disabled="false" aria-controls="react-tabs-21" tabindex="0" data-rttab="true">200</li></ul><div class="react-tabs__tab-panel react-tabs__tab-panel--selected" role="tabpanel" id="react-tabs-21" aria-labelledby="react-tabs-20"><div><div class="sc-cPtzlb jBjImi"><span class="sc-bCvmQg eTZsJr">Content type</span><div class="sc-dQmiwx jCmKdj">application/json</div></div><div class="sc-hVcFVo jeLSWq"><div class="sc-cSxRuM fOJBdW"><div class="sc-gjLLEI iwAAMv"><button><div class="sc-jdHILj krcPXE">Copy</div></button></div><div class="sc-iKOmoZ WVNwY sc-jMbVJB DqFKH"><div class="redoc-json"><code><button class="collapser" aria-label="collapse"></button><span class="token punctuation">{</span><span class="ellipsis"></span><ul class="obj collapsible"><li><div class="hoverable "><span class="property token string">"signal_to_noise_threshold"</span>: <span class="token number">0.1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"photon_count_threshold"</span>: <span class="token number">0</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"min_pix_per_spot"</span>: <span class="token number">1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"max_pix_per_spot"</span>: <span class="token number">1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"high_resolution_limit"</span>: <span class="token number">0.1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"low_resolution_limit"</span>: <span class="token number">0.1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"preview_indexed_only"</span>: <span class="token boolean">false</span></div></li></ul><span class="token punctuation">}</span></code></div></div></div></div></div></div></div></div></div></div></div><div id="/paths/~1config~1rad_int/put" data-section-id="/paths/~1config~1rad_int/put" class="sc-eDLKkx cSNAXN"><div class="sc-iBdnpw fsPUig"><div class="sc-hLQSwg gikxZY"><h2 class="sc-qZrbh gwJLUj"><a class="sc-csKJxZ fNhImz" href="#/paths/~1config~1rad_int/put" aria-label="/paths/~1config~1rad_int/put"></a>Configure radial integration<!-- --> </h2><div class="sc-eYFTNc dZbpPF"><div html="&lt;p&gt;Can be done when detector is Inactive or Idle&lt;/p&gt;
</div></button></div></div></div><div class="sc-jTQCzO sc-gLLuof imiXRU jGdkPR"><div class="sc-bPrlCs cIsduN"><button class="sc-GkLId bclCVA"><span type="get" class="sc-jYnQyy eIFDdZ http-verb get">get</span><span class="sc-fYrVWQ gllLir">/config/spot_finding</span><svg class="sc-eTNRI exoGJA" style="margin-right:-25px" version="1.1" viewBox="0 0 24 24" x="0" xmlns="http://www.w3.org/2000/svg" y="0" aria-hidden="true"><polygon points="17.3 8.3 12 13.6 6.7 8.3 5.3 9.7 12 16.4 18.7 9.7 "></polygon></svg></button><div aria-hidden="true" class="sc-eGgGjL hsEiws"><div class="sc-fnpiog jerStl"><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div><div tabindex="0" role="button"><div class="sc-lkDHyp etvaCd"><span></span>/config/spot_finding</div></div></div></div></div><div><h3 class="sc-kFCroH klfnyk"> <!-- -->Response samples<!-- --> </h3><div class="sc-cyZbeP jSWvqu" data-rttabs="true"><ul class="react-tabs__tab-list" role="tablist"><li class="tab-success react-tabs__tab--selected" role="tab" id="react-tabs-20" aria-selected="true" aria-disabled="false" aria-controls="react-tabs-21" tabindex="0" data-rttab="true">200</li></ul><div class="react-tabs__tab-panel react-tabs__tab-panel--selected" role="tabpanel" id="react-tabs-21" aria-labelledby="react-tabs-20"><div><div class="sc-cPtzlb jBjImi"><span class="sc-bCvmQg eTZsJr">Content type</span><div class="sc-dQmiwx jCmKdj">application/json</div></div><div class="sc-hVcFVo jeLSWq"><div class="sc-cSxRuM fOJBdW"><div class="sc-gjLLEI iwAAMv"><button><div class="sc-jdHILj krcPXE">Copy</div></button></div><div class="sc-iKOmoZ WVNwY sc-jMbVJB DqFKH"><div class="redoc-json"><code><button class="collapser" aria-label="collapse"></button><span class="token punctuation">{</span><span class="ellipsis"></span><ul class="obj collapsible"><li><div class="hoverable "><span class="property token string">"enable"</span>: <span class="token boolean">true</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"signal_to_noise_threshold"</span>: <span class="token number">0.1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"photon_count_threshold"</span>: <span class="token number">0</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"min_pix_per_spot"</span>: <span class="token number">1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"max_pix_per_spot"</span>: <span class="token number">1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"high_resolution_limit"</span>: <span class="token number">0.1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"low_resolution_limit"</span>: <span class="token number">0.1</span><span class="token punctuation">,</span></div></li><li><div class="hoverable "><span class="property token string">"preview_indexed_only"</span>: <span class="token boolean">false</span></div></li></ul><span class="token punctuation">}</span></code></div></div></div></div></div></div></div></div></div></div></div><div id="/paths/~1config~1rad_int/put" data-section-id="/paths/~1config~1rad_int/put" class="sc-eDLKkx cSNAXN"><div class="sc-iBdnpw fsPUig"><div class="sc-hLQSwg gikxZY"><h2 class="sc-qZrbh gwJLUj"><a class="sc-csKJxZ fNhImz" href="#/paths/~1config~1rad_int/put" aria-label="/paths/~1config~1rad_int/put"></a>Configure radial integration<!-- --> </h2><div class="sc-eYFTNc dZbpPF"><div html="&lt;p&gt;Can be done when detector is Inactive or Idle&lt;/p&gt;
" class="sc-iKOmoZ sc-cCzLxZ WVNwY VEBGS"><p>Can be done when detector is Inactive or Idle</p>
</div></div><h5 class="sc-irLvIq cnGhhy">Request Body schema: <span class="sc-gYrqIg hJSqDi">application/json</span></h5><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY VEBGS"></div><table class="sc-hIPBNq kHkWhD"><tbody><tr class=""><td kind="field" title="polarization_factor" class="sc-hABBmJ sc-fHejqy cqoAxn hfWKVF"><span class="sc-ifyrAs hIHfpT"></span><span class="property-name">polarization_factor</span></td><td class="sc-blmEgr berbbf"><div><div><span class="sc-gUjWJS sc-kZOsHZ itHPsH iSyacY"></span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP">number</span><span class="sc-gUjWJS sc-iLXxbI itHPsH gfdSsP"> <!-- -->&lt;<!-- -->float<!-- -->&gt;<!-- --> </span><span> <span class="sc-gUjWJS sc-cmfnrN itHPsH iOjfOC"> <!-- -->[ -1 .. 1 ]<!-- --> </span></span></div> <div><div html="&lt;p&gt;If polarization factor is provided, than polarization correction is enabled.&lt;/p&gt;
" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"><p>If polarization factor is provided, than polarization correction is enabled.</p>
@@ -749,7 +749,7 @@ Changing detector will set detector to <code>Inactive</code> state and will requ
" class="sc-iKOmoZ sc-cCzLxZ WVNwY VEBGS sc-ckdEwu LxEPk"><p>No preview image recorded so far</p>
</div></button></div></div></div><div class="sc-jTQCzO sc-gLLuof imiXRU jGdkPR"><div class="sc-bPrlCs cIsduN"><button class="sc-GkLId bclCVA"><span type="get" class="sc-jYnQyy eIFDdZ http-verb get">get</span><span class="sc-fYrVWQ gllLir">/preview/calibration.tiff</span><svg class="sc-eTNRI exoGJA" style="margin-right:-25px" version="1.1" viewBox="0 0 24 24" x="0" xmlns="http://www.w3.org/2000/svg" y="0" aria-hidden="true"><polygon points="17.3 8.3 12 13.6 6.7 8.3 5.3 9.7 12 16.4 18.7 9.7 "></polygon></svg></button><div aria-hidden="true" class="sc-eGgGjL hsEiws"><div class="sc-fnpiog jerStl"><div html="" class="sc-iKOmoZ sc-cCzLxZ WVNwY jaVotg"></div><div tabindex="0" role="button"><div class="sc-lkDHyp etvaCd"><span></span>/preview/calibration.tiff</div></div></div></div></div></div></div></div></div><div class="sc-juusvx bsunyy"></div></div></div>
<script>
const __redoc_state = {"menu":{"activeItemIdx":-1},"spec":{"data":{"openapi":"3.0.3","info":{"title":"Jungfraujoch","description":"Jungfraujoch Broker Web API","version":"1.0.1"},"components":{"schemas":{"rotation_axis":{"description":"Definition of a crystal rotation axis","type":"object","required":["step"],"properties":{"step":{"type":"number","format":"float","example":0.1,"description":"Angle step in degrees"},"start":{"type":"number","format":"float","example":50,"description":"Start angle in degrees","default":0},"vector":{"type":"array","description":"Rotation axis - vector with only zeros means using default value (set in a configuration file)","default":[0,0,0],"items":{"type":"number","format":"float"},"minItems":3,"maxItems":3}}},"dataset_settings":{"type":"object","required":["beam_x_pxl","beam_y_pxl","detector_distance_mm","photon_energy_keV","sample_name"],"properties":{"images_per_trigger":{"type":"integer","format":"int64","minimum":1,"default":1,"description":"For standard synchrotron data collection - this is number of images collected per one TTL trigger\nFor XFEL mode - this number is ignored and set to 1\nFor storage cell mode - this number is ignored and set to number of storage cells\n"},"ntrigger":{"type":"integer","format":"int64","default":1,"minimum":1,"description":"Number of TTL trigger that the detector is expected to receive during data collection\n"},"summation":{"type":"integer","format":"int64","minimum":1,"maximum":256,"default":1,"description":"FPGA frame summation. For summation above two 32-bit pixel format will be used, unless explicitly specified."},"beam_x_pxl":{"type":"number","format":"float","description":"/entry/detector/beam_center_x in NXmx\nBeam center in X direction [pixels]\n"},"beam_y_pxl":{"type":"number","format":"float","description":"/entry/detector/beam_center_y in NXmx\nBeam center in X direction [pixels]\n"},"detector_distance_mm":{"type":"number","format":"float","minimum":0,"description":"/entry/detector/distance in NXmx Detector distance [mm]"},"photon_energy_keV":{"type":"number","format":"float","minimum":0,"description":"Used to calculate /entry/beam/incident_wavelength in NXmx\nIncident photon energy in keV\n"},"file_prefix":{"type":"string","default":"","description":"Prefix for filenames. If left empty, no file will be saved."},"images_per_file":{"type":"integer","format":"int64","minimum":0,"default":1000,"description":"Number of files in a single HDF5 data file (0 = write all images to a single data file)."},"space_group_number":{"type":"integer","format":"int64","minimum":0,"default":0,"maximum":194},"sample_name":{"type":"string","description":"/entry/sample/name in NXmx\nSample name\n"},"save_calibration":{"type":"boolean","default":false,"description":"Save pedestal together with the dataset"},"fpga_output":{"type":"string","enum":["auto","int32","int16","uint32","uint16"],"default":"auto","description":"FPGA output data type"},"compression":{"type":"string","enum":["bslz4","bszstd","bszstd_rle","none"],"default":"bslz4"},"total_flux":{"type":"number","format":"float","description":"/entry/beam/total_flux in NXmx\nFlux incident on beam plane in photons per second. In other words this is the flux integrated over area. [photons/s]\n"},"transmission":{"type":"number","format":"float","minimum":0,"maximum":1,"description":"/entry/instrument/attenuator/attenuator_transmission\nTransmission of attenuator (filter) [no units]\n"},"omega":{"$ref":"#/components/schemas/rotation_axis"},"header_appendix":{"type":"string","description":"Header appendix, added as user_data to start message"},"image_appendix":{"type":"string","description":"Image appendix, added as user_data to image message"},"photon_energy_multiplier":{"type":"number","format":"float","default":1,"minimum":0.015625,"maximum":4,"description":"For JUNGFRAU conversion it is possible to multiply energy by a given factor to get fractional/multiplied photon counts"},"unit_cell":{"type":"object","description":"Units of angstrom and degree","required":["a","b","c","alpha","beta","gamma"],"properties":{"a":{"type":"number","format":"float","example":37,"minimum":0},"b":{"type":"number","format":"float","example":37,"minimum":0},"c":{"type":"number","format":"float","example":78,"minimum":0},"alpha":{"type":"number","format":"float","example":90,"minimum":0,"maximum":360},"beta":{"type":"number","format":"float","example":90,"minimum":0,"maximum":360},"gamma":{"type":"number","format":"float","example":90,"minimum":0,"maximum":360}}}}},"detector_status":{"type":"object","required":["state","powerchip","server_version","number_of_triggers_left","fpga_temp_degC","high_voltage_V"],"properties":{"state":{"type":"string","description":"Current state of the detector","enum":["Idle","Waiting","Busy","Error"]},"powerchip":{"type":"string","description":"Power on of ASICs","enum":["On","Off","Partial"]},"server_version":{"type":"string","description":"Detector server (on read-out boards) versLine truncated
const __redoc_state = {"menu":{"activeItemIdx":-1},"spec":{"data":{"openapi":"3.0.3","info":{"title":"Jungfraujoch","description":"Jungfraujoch Broker Web API","version":"1.0.1"},"components":{"schemas":{"rotation_axis":{"description":"Definition of a crystal rotation axis","type":"object","required":["step"],"properties":{"step":{"type":"number","format":"float","example":0.1,"description":"Angle step in degrees"},"start":{"type":"number","format":"float","example":50,"description":"Start angle in degrees","default":0},"vector":{"type":"array","description":"Rotation axis - vector with only zeros means using default value (set in a configuration file)","default":[0,0,0],"items":{"type":"number","format":"float"},"minItems":3,"maxItems":3}}},"dataset_settings":{"type":"object","required":["beam_x_pxl","beam_y_pxl","detector_distance_mm","photon_energy_keV","sample_name"],"properties":{"images_per_trigger":{"type":"integer","format":"int64","minimum":1,"default":1,"description":"For standard synchrotron data collection - this is number of images collected per one TTL trigger\nFor XFEL mode - this number is ignored and set to 1\nFor storage cell mode - this number is ignored and set to number of storage cells\n"},"ntrigger":{"type":"integer","format":"int64","default":1,"minimum":1,"description":"Number of TTL trigger that the detector is expected to receive during data collection\n"},"summation":{"type":"integer","format":"int64","minimum":1,"maximum":256,"default":1,"description":"FPGA frame summation. For summation above two 32-bit pixel format will be used, unless explicitly specified."},"beam_x_pxl":{"type":"number","format":"float","description":"/entry/detector/beam_center_x in NXmx\nBeam center in X direction [pixels]\n"},"beam_y_pxl":{"type":"number","format":"float","description":"/entry/detector/beam_center_y in NXmx\nBeam center in X direction [pixels]\n"},"detector_distance_mm":{"type":"number","format":"float","minimum":0,"description":"/entry/detector/distance in NXmx Detector distance [mm]"},"photon_energy_keV":{"type":"number","format":"float","minimum":0,"description":"Used to calculate /entry/beam/incident_wavelength in NXmx\nIncident photon energy in keV\n"},"file_prefix":{"type":"string","default":"","description":"Prefix for filenames. If left empty, no file will be saved."},"images_per_file":{"type":"integer","format":"int64","minimum":0,"default":1000,"description":"Number of files in a single HDF5 data file (0 = write all images to a single data file)."},"space_group_number":{"type":"integer","format":"int64","minimum":0,"default":0,"maximum":194},"sample_name":{"type":"string","description":"/entry/sample/name in NXmx\nSample name\n"},"save_calibration":{"type":"boolean","default":false,"description":"Save pedestal together with the dataset"},"fpga_output":{"type":"string","enum":["auto","int32","int16","uint32","uint16"],"default":"auto","description":"FPGA output data type"},"compression":{"type":"string","enum":["bslz4","bszstd","bszstd_rle","none"],"default":"bslz4"},"total_flux":{"type":"number","format":"float","description":"/entry/beam/total_flux in NXmx\nFlux incident on beam plane in photons per second. In other words this is the flux integrated over area. [photons/s]\n"},"transmission":{"type":"number","format":"float","minimum":0,"maximum":1,"description":"/entry/instrument/attenuator/attenuator_transmission\nTransmission of attenuator (filter) [no units]\n"},"omega":{"$ref":"#/components/schemas/rotation_axis"},"header_appendix":{"type":"string","description":"Header appendix, added as user_data to start message"},"image_appendix":{"type":"string","description":"Image appendix, added as user_data to image message"},"photon_energy_multiplier":{"type":"number","format":"float","default":1,"minimum":0.015625,"maximum":4,"description":"For JUNGFRAU conversion it is possible to multiply energy by a given factor to get fractional/multiplied photon counts"},"unit_cell":{"type":"object","description":"Units of angstrom and degree","required":["a","b","c","alpha","beta","gamma"],"properties":{"a":{"type":"number","format":"float","example":37,"minimum":0},"b":{"type":"number","format":"float","example":37,"minimum":0},"c":{"type":"number","format":"float","example":78,"minimum":0},"alpha":{"type":"number","format":"float","example":90,"minimum":0,"maximum":360},"beta":{"type":"number","format":"float","example":90,"minimum":0,"maximum":360},"gamma":{"type":"number","format":"float","example":90,"minimum":0,"maximum":360}}}}},"detector_status":{"type":"object","required":["state","powerchip","server_version","number_of_triggers_left","fpga_temp_degC","high_voltage_V"],"properties":{"state":{"type":"string","description":"Current state of the detector","enum":["Idle","Waiting","Busy","Error"]},"powerchip":{"type":"string","description":"Power on of ASICs","enum":["On","Off","Partial"]},"server_version":{"type":"string","description":"Detector server (on read-out boards) versLine truncated
var container = document.getElementById('redoc');
Redoc.hydrate(__redoc_state, container);
+1 -8
View File
@@ -665,14 +665,7 @@ void DiffractionExperiment::CheckDataProcessingSettings(const SpotFindingSetting
}
SpotFindingSettings DiffractionExperiment::DefaultDataProcessingSettings() {
SpotFindingSettings ret{};
ret.signal_to_noise_threshold = 3;
ret.photon_count_threshold = 16;
ret.min_pix_per_spot = 2;
ret.max_pix_per_spot = 50;
ret.low_resolution_limit = 20.0;
ret.high_resolution_limit = 2.5;
return ret;
return {};
}
void DiffractionExperiment::FillMessage(StartMessage &message) const {
@@ -15,6 +15,7 @@ class DataProcessingSettings extends Component<MyProps, MyState> {
interval : NodeJS.Timer | undefined;
state : MyState = {
s: {
enable: true,
photon_count_threshold: 8,
signal_to_noise_threshold: 3.0,
min_pix_per_spot: 2,
@@ -74,6 +75,7 @@ class DataProcessingSettings extends Component<MyProps, MyState> {
}
));
this.putValues();
this.getValues();
}
setMinPixPerSpot = (event: Event, newValue: number | number[]) => {
@@ -86,6 +88,7 @@ class DataProcessingSettings extends Component<MyProps, MyState> {
}
));
this.putValues();
this.getValues();
}
setHighResolutionLimit = (event: Event, newValue: number | number[]) => {
@@ -98,12 +101,23 @@ class DataProcessingSettings extends Component<MyProps, MyState> {
}
));
this.putValues();
this.getValues();
}
enableSpotFindingToggle = (event: React.ChangeEvent<HTMLInputElement>) => {
let x = this.state;
x.s.enable = event.target.checked;
if (!x.s.enable)
x.s.preview_indexed_only = false;
this.putValues2(x);
this.getValues();
}
previewIndexedToggle = (event: React.ChangeEvent<HTMLInputElement>) => {
let x = this.state;
x.s.preview_indexed_only = event.target.checked;
this.putValues2(x);
this.getValues();
}
render() {
@@ -112,32 +126,35 @@ class DataProcessingSettings extends Component<MyProps, MyState> {
<Grid item xs={1}/>
<Grid item xs={10}>
<br/><strong>Data processing parameters</strong><br/><br/>
<br/><strong>Spot finding parameters</strong><br/><br/>
<Switch onChange={this.enableSpotFindingToggle} checked={this.state.s.enable}
disabled={this.state.connection_error}/>
Enable spot finding <br/><br/>
<Typography gutterBottom> Count threshold </Typography>
<Slider disabled={this.state.connection_error}
<Slider disabled={this.state.connection_error || !this.state.s.enable}
value={Number(this.state.s.photon_count_threshold)}
onChange={this.setPhotonCountThreshold}
min={1} max={50} step={1} valueLabelDisplay="auto" />
<br/><Typography> Signal-to-noise threshold </Typography>
<Slider disabled={this.state.connection_error}
<Slider disabled={this.state.connection_error || !this.state.s.enable}
value={Number(this.state.s.signal_to_noise_threshold)}
onChange={this.setSignalToNoiseThreshold}
min={2} max={10} step={0.5} valueLabelDisplay="auto" />
<br/><Typography> Minimum pixel / spot </Typography>
<Slider disabled={this.state.connection_error}
<Slider disabled={this.state.connection_error || !this.state.s.enable}
value={Number(this.state.s.min_pix_per_spot)}
onChange={this.setMinPixPerSpot}
min={1} max={8} step={1} valueLabelDisplay="auto" />
<Typography> High resolution limit [&#8491;] </Typography>
<Slider disabled={this.state.connection_error}
<Slider disabled={this.state.connection_error || !this.state.s.enable}
value={Number(this.state.s.high_resolution_limit)}
onChange={this.setHighResolutionLimit}
min={1} max={5} step={0.2} valueLabelDisplay="auto" />
<br/>
<Switch onChange={this.previewIndexedToggle} checked={this.state.s.preview_indexed_only}
disabled={this.state.connection_error}/>
disabled={this.state.connection_error || !this.state.s.enable}/>
Preview only indexed frames <br/><br/>
</Grid>
<Grid item xs={1}/>
@@ -49,9 +49,9 @@ export type dataset_settings = {
*/
file_prefix?: string;
/**
* Number of round-robin data files
* Number of files in a single HDF5 data file (0 = write all images to a single data file).
*/
data_file_count?: number;
images_per_file?: number;
space_group_number?: number;
/**
* /entry/sample/name in NXmx
@@ -4,6 +4,7 @@
/* eslint-disable */
export type spot_finding_settings = {
enable: boolean;
signal_to_noise_threshold: number;
photon_count_threshold: number;
min_pix_per_spot: number;
+2 -2
View File
@@ -17,7 +17,7 @@ MXAnalyzer::MXAnalyzer(const DiffractionExperiment &in_experiment)
}
void MXAnalyzer::ReadFromFPGA(const DeviceOutput *output, const SpotFindingSettings &settings, size_t module_number) {
if (!find_spots)
if (!find_spots || !settings.enable)
return;
StrongPixelSet strong_pixel_set;
strong_pixel_set.ReadFPGAOutput(experiment, *output);
@@ -29,7 +29,7 @@ void MXAnalyzer::ReadFromCPU(const int16_t *image, const SpotFindingSettings &se
return;
std::vector<float> d_map(RAW_MODULE_SIZE);
DeviceOutput output;
DeviceOutput output{};
memcpy(output.pixels, image, RAW_MODULE_SIZE * sizeof(int16_t));
CalcSpotFinderResolutionMap(d_map.data(), experiment, module_number);
+8 -7
View File
@@ -6,13 +6,14 @@
#include <cstdint>
struct SpotFindingSettings {
float signal_to_noise_threshold; // STRONG_PIXEL in XDS
int64_t photon_count_threshold; // Threshold in photon counts
int64_t min_pix_per_spot; // Minimum pixels per spot
int64_t max_pix_per_spot; // Maximum pixels per spot
float high_resolution_limit;
float low_resolution_limit;
bool preview_indexed_only;
bool enable = true;
float signal_to_noise_threshold = 3; // STRONG_PIXEL in XDS
int64_t photon_count_threshold = 10; // Threshold in photon counts
int64_t min_pix_per_spot = 2; // Minimum pixels per spot
int64_t max_pix_per_spot = 50; // Maximum pixels per spot
float high_resolution_limit = 2.5;
float low_resolution_limit = 50.0;
bool preview_indexed_only = false;
};
#endif //JUNGFRAUJOCH_SPOTFINDINGSETTINGS_H