<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Detailed Documentation on Astro Live Stacker</title>
    <link>https://preprod.als-app.org/categories/detailed-documentation/</link>
    <description>Recent content in Detailed Documentation on Astro Live Stacker</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Fri, 12 Jun 2026 00:56:10 +0200</lastBuildDate>
    <atom:link href="https://preprod.als-app.org/categories/detailed-documentation/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Reference documentation</title>
      <link>https://preprod.als-app.org/docs/v0.7/reference/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:38 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7/reference/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;This section contains detailed documentation about ALS bits and bolts&lt;/p&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&#xA;&#xA;&#xA;    🧠 It elaborates on the &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7/userguide/concepts/&#34;&gt;concepts&lt;/a&gt; introduced at the beginning of the user guide&#xA;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Modules and Processes</title>
      <link>https://preprod.als-app.org/docs/v0.7/reference/modules/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:38 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7/reference/modules/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;In here, you will find detailed documentation about ALS modules and processes.&lt;/p&gt;&#xA;&lt;p&gt;From what a module is to how a process works, you will find everything you need to know about the bits and bolts of ALS.&lt;/p&gt;&#xA;&lt;h1 id=&#34;modules&#34;&gt;Modules&lt;/h1&gt;&#xA;&lt;p&gt;An ALS module is an elaborated processing unit responsible for a specific task.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;It has its own engine&lt;/li&gt;&#xA;&lt;li&gt;It can be started and stopped at will&lt;/li&gt;&#xA;&lt;li&gt;It has access to the settings defined in ALS preferences&lt;/li&gt;&#xA;&lt;li&gt;Its behavior can be controlled through the ALS interface&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Modules are &lt;strong&gt;dumb and isolated&lt;/strong&gt;. They have no knowledge of other parts of the application. They just do their job&#xA;and report to the application&lt;/p&gt;</description>
    </item>
    <item>
      <title>Scanner</title>
      <link>https://preprod.als-app.org/docs/v0.7/reference/modules/scanner/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:39 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7/reference/modules/scanner/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Scanner&lt;/strong&gt; module is the entry point for your subs in ALS.&lt;/p&gt;&#xA;&lt;p&gt;It is responsible for:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Monitoring the &lt;strong&gt;appearance&lt;/strong&gt; of subs in the &lt;strong&gt;scan folder&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Loading the detected subs&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&#xA;&#xA;&#xA;    &lt;p&gt;ℹ️ &lt;strong&gt;Existing files are ignored&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Files present in the &lt;strong&gt;scan folder&lt;/strong&gt; before the &lt;strong&gt;Scanner&lt;/strong&gt; module is started are not detected&lt;/p&gt;&#xA;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&#xA;&#xA;&#xA;    &lt;p&gt;ℹ️ &lt;strong&gt;Detection of subs is recursive&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Subs are detected regardless of the level of subfolders where they appear within the &lt;strong&gt;scan folder&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Preprocess</title>
      <link>https://preprod.als-app.org/docs/v0.7/reference/modules/preprocess/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:38 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7/reference/modules/preprocess/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline handles &lt;strong&gt;calibration&lt;/strong&gt; processes&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline itself requires no configuration.&lt;/p&gt;&#xA;&lt;p&gt;The configuration of the &lt;strong&gt;calibration&lt;/strong&gt; processes is managed by the &lt;strong&gt;processes&lt;/strong&gt; themselves.&#xA;See the &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7/reference/modules/preprocess/#behavior&#34;&gt;Behavior&lt;/a&gt; section below.&lt;/p&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Preprocess&lt;/strong&gt; module is launched in the background at ALS startup&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;          &lt;th&gt;Response&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub(s) in queue&lt;/td&gt;&#xA;          &lt;td&gt;Event&lt;/td&gt;&#xA;          &lt;td&gt;trigger calibration&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;input&#34;&gt;Input&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Data&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub at queue front&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;behavior&#34;&gt;Behavior&lt;/h1&gt;&#xA;&lt;p&gt;Performs &lt;strong&gt;calibration&lt;/strong&gt; processes on the sub:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://preprod.als-app.org/docs/v0.7/reference/modules/preprocess/hot_remove/&#34;&gt;Hot pixel removal&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://preprod.als-app.org/docs/v0.7/reference/modules/preprocess/dark_remove/&#34;&gt;Dark subtraction&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://preprod.als-app.org/docs/v0.7/reference/modules/preprocess/debayer/&#34;&gt;Debayering&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h1 id=&#34;output&#34;&gt;Output&lt;/h1&gt;&#xA;&lt;p&gt;Calibrated sub is broadcast&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hot Pixel Removal</title>
      <link>https://preprod.als-app.org/docs/v0.7/reference/modules/preprocess/hot_remove/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:39 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7/reference/modules/preprocess/hot_remove/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;HotPixelRemove&lt;/strong&gt; process removes hot pixels from the image.&lt;/p&gt;&#xA;&lt;p&gt;Its configuration is managed via ALS preferences.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Data Type&lt;/th&gt;&#xA;          &lt;th&gt;Required&lt;/th&gt;&#xA;          &lt;th&gt;Default&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;Preferences: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7/userguide/preferences/processing/#hot-remove&#34;&gt;Processing Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;∅&lt;/td&gt;&#xA;          &lt;td&gt;OFF&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;This process is controlled by the &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline.&lt;/p&gt;&#xA;&lt;h1 id=&#34;input&#34;&gt;Input&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Data&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;image provided by the &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;behavior&#34;&gt;Behavior&lt;/h1&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph LR&#xA;&#xA;START([START])&#xA;&#xA;TEST_ENABLED{{Process enabled?}}&#xA;TEST_COLOR{{Color image?}}&#xA;&#xA;COMPUTE[Compute average value of neighbors of each pixel]&#xA;REPLACE[Replace hot pixel value with the average of its neighbors]&#xA;&#xA;RETURN[Return modified image]&#xA;UNCHANGED[Return unchanged image]&#xA;&#xA;END([END])&#xA;&#xA;START --&amp;gt; TEST_ENABLED&#xA;TEST_ENABLED --&amp;gt;|Yes| TEST_COLOR&#xA;TEST_COLOR ----&amp;gt;|Yes| UNCHANGED&#xA;TEST_ENABLED ----&amp;gt;|No| UNCHANGED&#xA;TEST_COLOR --&amp;gt;|No| COMPUTE&#xA;COMPUTE --&amp;gt; REPLACE&#xA;REPLACE --&amp;gt; RETURN&#xA;RETURN --&amp;gt; END&#xA;UNCHANGED --&amp;gt; END&#xA;&#xA;classDef bounds fill: #333, stroke: #666, stroke-width: 2px, color: #BBB, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;classDef step fill: #444, stroke: #622, stroke-width:2px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;,sans-serif&#xA;classDef wait  fill: #444, stroke: #262,stroke-width: 2px, color: #c6c6c6, font-family:&amp;#39;Poppins&amp;#39;, sans-serif&#xA;classDef test fill: #444, stroke: #226, stroke-width: 2 px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;&#xA;class START bounds&#xA;class TEST_ENABLED test&#xA;class TEST_COLOR test&#xA;class COMPUTE step&#xA;class UNCHANGED step&#xA;class REPLACE step&#xA;class RETURN step&#xA;class END bounds&lt;/pre&gt;&#xA;&lt;p&gt;Each pixel in the image whose value deviates too much from its neighbors is considered a hot pixel.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dark Subtraction</title>
      <link>https://preprod.als-app.org/docs/v0.7/reference/modules/preprocess/dark_remove/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:38 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7/reference/modules/preprocess/dark_remove/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;DarkRemove&lt;/strong&gt; process subtracts the thermal noise from the image using a user-provided master dark.&lt;/p&gt;&#xA;&lt;p&gt;Its configuration is managed via ALS preferences page.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Data type&lt;/th&gt;&#xA;          &lt;th&gt;Required&lt;/th&gt;&#xA;          &lt;th&gt;Default value&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;Preferences: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7/userguide/preferences/processing/#dark-remove&#34;&gt;Processing Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;∅&lt;/td&gt;&#xA;          &lt;td&gt;OFF&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Master dark path&lt;/td&gt;&#xA;          &lt;td&gt;Preferences: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7/userguide/preferences/processing/#dark-remove&#34;&gt;Processing Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;File path&lt;/td&gt;&#xA;          &lt;td&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;∅&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;This process is triggered by the &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline.&lt;/p&gt;&#xA;&lt;h1 id=&#34;input&#34;&gt;Input&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Data&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;image received from the &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;master dark read from configured path&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;behavior&#34;&gt;Behavior&lt;/h1&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph LR&#xA;&#xA;START([START])&#xA;&#xA;TEST_ENABLED{{Processing enabled?}}&#xA;TEST_SIZE{{Identical dimensions?}}&#xA;TEST_TYPE{{Identical data types?}}&#xA;&#xA;CONVERT[Convert master dark]&#xA;SUBTRACT[Subtract master dark from image]&#xA;&#xA;RETURN[Return modified image]&#xA;UNCHANGED[Return unchanged image]&#xA;&#xA;END([END])&#xA;&#xA;START --&amp;gt; TEST_ENABLED&#xA;&#xA;TEST_ENABLED -----&amp;gt;|No| UNCHANGED&#xA;TEST_ENABLED --&amp;gt;|Yes| TEST_SIZE&#xA;&#xA;TEST_SIZE -----&amp;gt;|No| UNCHANGED&#xA;TEST_SIZE --&amp;gt;|Yes| TEST_TYPE&#xA;&#xA;TEST_TYPE --&amp;gt;|No| CONVERT&#xA;TEST_TYPE --&amp;gt;|Yes| SUBTRACT&#xA;&#xA;CONVERT --&amp;gt; SUBTRACT&#xA;SUBTRACT --&amp;gt; RETURN&#xA;&#xA;RETURN --&amp;gt; END&#xA;UNCHANGED --&amp;gt; END&#xA;&#xA;classDef bounds fill: #333, stroke: #666, stroke-width: 2px, color: #BBB, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;classDef step fill: #444, stroke: #622, stroke-width:2px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;,sans-serif&#xA;classDef wait  fill: #444, stroke: #262,stroke-width: 2px, color: #c6c6c6, font-family:&amp;#39;Poppins&amp;#39;, sans-serif&#xA;classDef test fill: #444, stroke: #226, stroke-width: 2px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;&#xA;class TEST_ENABLED,TEST_SIZE,TEST_TYPE test&#xA;class START,END bounds&#xA;class RETURN,UNCHANGED,CONVERT,SUBTRACT step&lt;/pre&gt;&#xA;&lt;p&gt;The master dark is subtracted from the image.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debayering</title>
      <link>https://preprod.als-app.org/docs/v0.7/reference/modules/preprocess/debayer/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:38 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7/reference/modules/preprocess/debayer/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Debayer&lt;/strong&gt; process is used on &lt;strong&gt;color&lt;/strong&gt; images in &lt;strong&gt;FITS&lt;/strong&gt; or &lt;strong&gt;Raw&lt;/strong&gt; format.&lt;/p&gt;&#xA;&lt;p&gt;It generates a color image from the raw image and the description of the Bayer pattern installed on the sensor that&#xA;generated the image.&lt;/p&gt;&#xA;&lt;p&gt;Its configuration is managed via ALS preferences page.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Data Type&lt;/th&gt;&#xA;          &lt;th&gt;Required&lt;/th&gt;&#xA;          &lt;th&gt;Default Value&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Bayer pattern&lt;/td&gt;&#xA;          &lt;td&gt;Preferences: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7/userguide/preferences/processing/#debayer&#34;&gt;Processing Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;choice: &lt;br&gt;- AUTO&lt;br&gt;- GRBG&lt;br&gt;- RGGB&lt;br&gt;- GBRG&lt;br&gt;- BGGR&lt;/td&gt;&#xA;          &lt;td&gt;YES&lt;/td&gt;&#xA;          &lt;td&gt;AUTO&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;This process is triggered by the &lt;strong&gt;Preprocess&lt;/strong&gt; module.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stacker</title>
      <link>https://preprod.als-app.org/docs/v0.7/reference/modules/stack/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:39 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7/reference/modules/stack/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Stacker&lt;/strong&gt; module handles the alignment and stacking of calibrated subs.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Data type&lt;/th&gt;&#xA;          &lt;th&gt;Required&lt;/th&gt;&#xA;          &lt;th&gt;Default value&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Alignment ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;Interface: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7/userguide/ui/controls/#controls&#34;&gt;Stacking controls&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;∅&lt;/td&gt;&#xA;          &lt;td&gt;ON&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Stacking mode&lt;/td&gt;&#xA;          &lt;td&gt;Interface: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7/userguide/ui/controls/#controls&#34;&gt;Stacking controls&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;choices:&lt;br&gt;- mean&lt;br&gt;- sum&lt;/td&gt;&#xA;          &lt;td&gt;YES&lt;/td&gt;&#xA;          &lt;td&gt;mean&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Detection threshold&lt;/td&gt;&#xA;          &lt;td&gt;Interface: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7/userguide/ui/controls/#threshold&#34;&gt;Stacking controls&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;integer&lt;/td&gt;&#xA;          &lt;td&gt;YES&lt;/td&gt;&#xA;          &lt;td&gt;25&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Stack&lt;/strong&gt; module is launched in the background at ALS startup&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;          &lt;th&gt;Response&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub(s) in queue&lt;/td&gt;&#xA;          &lt;td&gt;Event&lt;/td&gt;&#xA;          &lt;td&gt;trigger processing&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;input&#34;&gt;Input&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Data&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub at queue front&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;session alignment reference&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;behavior&#34;&gt;Behavior&lt;/h1&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;flowchart LR&#xA;Start([START])&#xA;FirstSub{{First sub of the session?}}&#xA;SetAlignReference[Set sub as alignment reference]&#xA;CheckShape{{Sub same dimensions as previous result?}}&#xA;CheckAlign{{Alignment ON?}}&#xA;AlignImage[Align sub]&#xA;StackImage[Add sub to Stack]&#xA;ComputeStacking[Compute stacking]&#xA;PublishReference[Return alignment reference]&#xA;PublishResult[Return generated image]&#xA;End([END])&#xA;&#xA;Start --&amp;gt; FirstSub&#xA;FirstSub -- YES --&amp;gt; SetAlignReference&#xA;SetAlignReference --&amp;gt; PublishReference&#xA;FirstSub -- NO --&amp;gt; CheckShape&#xA;CheckShape -- YES --&amp;gt; CheckAlign&#xA;CheckAlign -- YES --&amp;gt; AlignImage&#xA;AlignImage --&amp;gt; StackImage&#xA;CheckAlign -- NO --&amp;gt; StackImage&#xA;StackImage --&amp;gt; ComputeStacking&#xA;ComputeStacking --&amp;gt; PublishResult&#xA;CheckShape -- NO --&amp;gt; End&#xA;PublishReference --&amp;gt; End&#xA;PublishResult --&amp;gt; End&#xA;&#xA;classDef bounds fill: #333, stroke: #666, stroke-width: 2px, color: #BBB, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;classDef step fill: #444, stroke: #622, stroke-width:2px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;,sans-serif&#xA;classDef test fill: #444, stroke: #226, stroke-width: 2px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;&#xA;class Start,End bounds&#xA;class SetAlignReference,AlignImage,StackImage,PublishResult,ComputeStacking,PublishReference step&#xA;class CheckShape,CheckAlign,FirstSub test&lt;/pre&gt;&#xA;&lt;h2 id=&#34;alignment&#34;&gt;Alignment&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;If alignment is ON&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Process</title>
      <link>https://preprod.als-app.org/docs/v0.7/reference/modules/process/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:39 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7/reference/modules/process/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Process&lt;/strong&gt; pipeline handles &lt;strong&gt;visual processing&lt;/strong&gt; tasks applied to the stacking results.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Process&lt;/strong&gt; pipeline itself requires no configuration.&lt;/p&gt;&#xA;&lt;p&gt;The configuration of the &lt;strong&gt;visual processing&lt;/strong&gt; tasks is managed by the &lt;strong&gt;processes&lt;/strong&gt; themselves.&#xA;See the &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7/reference/modules/process/#behavior&#34;&gt;Behavior&lt;/a&gt; section below.&lt;/p&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Process&lt;/strong&gt; module is launched in the background at ALS startup.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;          &lt;th&gt;Response&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub(s) in queue&lt;/td&gt;&#xA;          &lt;td&gt;Event&lt;/td&gt;&#xA;          &lt;td&gt;trigger processing&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;input&#34;&gt;Input&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Data&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub at queue front&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;behavior&#34;&gt;Behavior&lt;/h1&gt;&#xA;&lt;p&gt;Performs &lt;strong&gt;visual processing&lt;/strong&gt; tasks on the stacking result:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Auto-Stretch</title>
      <link>https://preprod.als-app.org/docs/v0.7/reference/modules/process/autostretch/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:39 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7/reference/modules/process/autostretch/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Auto-Stretch&lt;/strong&gt; process optimizes the intensity levels of stacked images, making them visually usable without&#xA;manual adjustments.&lt;/p&gt;&#xA;&lt;p&gt;This process is handled by the &lt;strong&gt;Process&lt;/strong&gt; pipeline module.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;p&gt;Adjustments can be made through the &lt;strong&gt;Processing Panel&lt;/strong&gt;, located on the right-hand side of the ALS&#xA;interface.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Control&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;          &lt;th&gt;Action&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;Active&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;checkbox&lt;/td&gt;&#xA;          &lt;td&gt;Enable or disable the process&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;Strength&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;slider&lt;/td&gt;&#xA;          &lt;td&gt;Adjust stretch intensity&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Refer to the &lt;a href=&#34;../../../../userguide/ui/processing/#stretch-section&#34;&gt;Processing Panel documentation&lt;/a&gt; for detailed instructions&lt;/p&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Auto-Stretch&lt;/strong&gt; process is managed by the &lt;strong&gt;Process&lt;/strong&gt; pipeline&lt;/p&gt;</description>
    </item>
    <item>
      <title>Levels</title>
      <link>https://preprod.als-app.org/docs/v0.7/reference/modules/process/levels/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:39 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7/reference/modules/process/levels/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Levels&lt;/strong&gt; process adjusts the brightness distribution of a stacked image by setting&#xA;black and white points and tuning midtones.&lt;br&gt;&#xA;It allows precise control over image contrast and luminosity, complementing the &lt;strong&gt;Auto-Stretch&lt;/strong&gt; process.&lt;/p&gt;&#xA;&lt;p&gt;This process is handled by the &lt;strong&gt;Process&lt;/strong&gt; pipeline module.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Levels&lt;/strong&gt; process parameters are available in the &lt;strong&gt;Processing Panel&lt;/strong&gt;, located on the right-hand side of the ALS interface.&lt;/p&gt;&#xA;&lt;p&gt;Refer to the &lt;a href=&#34;../../../../userguide/ui/processing/#levels-section&#34;&gt;Processing Panel documentation&lt;/a&gt; for detailed instructions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RGB Balance</title>
      <link>https://preprod.als-app.org/docs/v0.7/reference/modules/process/rgb-balance/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:39 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7/reference/modules/process/rgb-balance/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;RGB Balance&lt;/strong&gt; process adjusts the relative intensity of the three primary colors — red, green, and blue — to correct or refine the overall color tone of a stacked image.&lt;br&gt;&#xA;It allows fine control of image chromatic balance, complementing the &lt;strong&gt;Levels&lt;/strong&gt; and &lt;strong&gt;Auto-Stretch&lt;/strong&gt; processes.&lt;/p&gt;&#xA;&lt;p&gt;This process is handled by the &lt;strong&gt;Process&lt;/strong&gt; pipeline module.&lt;/p&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&#xA;&#xA;&#xA;    ℹ️ The &lt;strong&gt;RGB Balance&lt;/strong&gt; process is only available when working with color images.&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;RGB Balance&lt;/strong&gt; parameters are available in the &lt;strong&gt;Processing Panel&lt;/strong&gt;, located on the right-hand side of the&#xA;ALS interface.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Save</title>
      <link>https://preprod.als-app.org/docs/v0.7/reference/modules/save/</link>
      <pubDate>Wed, 10 Jun 2026 23:25:49 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7/reference/modules/save/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Save&lt;/strong&gt; module handles the saving on disk of all images generated by ALS.&lt;/p&gt;&#xA;&lt;p&gt;Its configuration is managed via ALS preferences&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Data type&lt;/th&gt;&#xA;          &lt;th&gt;Required&lt;/th&gt;&#xA;          &lt;th&gt;Default value&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;work folder&lt;/td&gt;&#xA;          &lt;td&gt;Prefs: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7/userguide/preferences/output/#work-folder&#34;&gt;Output Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;path to a folder&lt;/td&gt;&#xA;          &lt;td&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;∅&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;web folder&lt;/td&gt;&#xA;          &lt;td&gt;Prefs: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7/userguide/preferences/output/#web-folder&#34;&gt;Output Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;path to a folder&lt;/td&gt;&#xA;          &lt;td&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;= work folder&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;file format&lt;/td&gt;&#xA;          &lt;td&gt;Prefs: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7/userguide/preferences/output/#format&#34;&gt;Output Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;choices:&lt;br&gt;- TIFF&lt;br&gt;- PNG&lt;br&gt;- JPEG&lt;/td&gt;&#xA;          &lt;td&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;JPEG&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Save&lt;/strong&gt; module is launched in the background at ALS startup&lt;/p&gt;</description>
    </item>
    <item>
      <title>Server</title>
      <link>https://preprod.als-app.org/docs/v0.7/reference/modules/server/</link>
      <pubDate>Thu, 11 Jun 2026 00:20:09 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7/reference/modules/server/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Server&lt;/strong&gt; utility module exposes ALS processing results through a lightweight HTTP and WebSocket service.&lt;/p&gt;&#xA;&lt;p&gt;It is responsible for:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Publishing the &lt;strong&gt;latest processed stacking result&lt;/strong&gt; and session metrics in the configured &lt;strong&gt;web folder&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Serving the &lt;strong&gt;viewer web application&lt;/strong&gt; (&lt;code&gt;index.html&lt;/code&gt;, JavaScript and icons)&lt;/li&gt;&#xA;&lt;li&gt;Streaming live &lt;strong&gt;new-image notifications&lt;/strong&gt; to connected browsers over WebSockets&lt;/li&gt;&#xA;&lt;li&gt;Providing a &lt;strong&gt;QR-code friendly URL&lt;/strong&gt; so that tablets or phones can join the session quickly&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The module runs in its own asyncio event loop and accepts concurrent browser clients. It never alters the processing&#xA;pipeline; it only serves the web image written by the &lt;strong&gt;Save&lt;/strong&gt; module.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reference documentation</title>
      <link>https://preprod.als-app.org/docs/v0.7.1/reference/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:38 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7.1/reference/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;This section contains detailed documentation about ALS bits and bolts&lt;/p&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&#xA;&#xA;&#xA;    🧠 It elaborates on the &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7.1/userguide/concepts/&#34;&gt;concepts&lt;/a&gt; introduced at the beginning of the user guide&#xA;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Modules and Processes</title>
      <link>https://preprod.als-app.org/docs/v0.7.1/reference/modules/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:38 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7.1/reference/modules/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;In here, you will find detailed documentation about ALS modules and processes.&lt;/p&gt;&#xA;&lt;p&gt;From what a module is to how a process works, you will find everything you need to know about the bits and bolts of ALS.&lt;/p&gt;&#xA;&lt;h1 id=&#34;modules&#34;&gt;Modules&lt;/h1&gt;&#xA;&lt;p&gt;An ALS module is an elaborated processing unit responsible for a specific task.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;It has its own engine&lt;/li&gt;&#xA;&lt;li&gt;It can be started and stopped at will&lt;/li&gt;&#xA;&lt;li&gt;It has access to the settings defined in ALS preferences&lt;/li&gt;&#xA;&lt;li&gt;Its behavior can be controlled through the ALS interface&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Modules are &lt;strong&gt;dumb and isolated&lt;/strong&gt;. They have no knowledge of other parts of the application. They just do their job&#xA;and report to the application&lt;/p&gt;</description>
    </item>
    <item>
      <title>Scanner</title>
      <link>https://preprod.als-app.org/docs/v0.7.1/reference/modules/scanner/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:38 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7.1/reference/modules/scanner/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Scanner&lt;/strong&gt; module is the entry point for your subs in ALS.&lt;/p&gt;&#xA;&lt;p&gt;It is responsible for:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Monitoring the &lt;strong&gt;appearance&lt;/strong&gt; of subs in the &lt;strong&gt;scan folder&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Loading the detected subs&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&#xA;&#xA;&#xA;    &lt;p&gt;ℹ️ &lt;strong&gt;Existing files are ignored&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Files present in the &lt;strong&gt;scan folder&lt;/strong&gt; before the &lt;strong&gt;Scanner&lt;/strong&gt; module is started are not detected&lt;/p&gt;&#xA;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&#xA;&#xA;&#xA;    &lt;p&gt;ℹ️ &lt;strong&gt;Detection of subs is recursive&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Subs are detected regardless of the level of subfolders where they appear within the &lt;strong&gt;scan folder&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Preprocess</title>
      <link>https://preprod.als-app.org/docs/v0.7.1/reference/modules/preprocess/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:38 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7.1/reference/modules/preprocess/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline handles &lt;strong&gt;calibration&lt;/strong&gt; processes&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline itself requires no configuration.&lt;/p&gt;&#xA;&lt;p&gt;The configuration of the &lt;strong&gt;calibration&lt;/strong&gt; processes is managed by the &lt;strong&gt;processes&lt;/strong&gt; themselves.&#xA;See the &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7.1/reference/modules/preprocess/#behavior&#34;&gt;Behavior&lt;/a&gt; section below.&lt;/p&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Preprocess&lt;/strong&gt; module is launched in the background at ALS startup&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;          &lt;th&gt;Response&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub(s) in queue&lt;/td&gt;&#xA;          &lt;td&gt;Event&lt;/td&gt;&#xA;          &lt;td&gt;trigger calibration&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;input&#34;&gt;Input&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Data&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub at queue front&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;behavior&#34;&gt;Behavior&lt;/h1&gt;&#xA;&lt;p&gt;Performs &lt;strong&gt;calibration&lt;/strong&gt; processes on the sub:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://preprod.als-app.org/docs/v0.7.1/reference/modules/preprocess/hot_remove/&#34;&gt;Hot pixel removal&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://preprod.als-app.org/docs/v0.7.1/reference/modules/preprocess/dark_remove/&#34;&gt;Dark subtraction&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://preprod.als-app.org/docs/v0.7.1/reference/modules/preprocess/debayer/&#34;&gt;Debayering&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h1 id=&#34;output&#34;&gt;Output&lt;/h1&gt;&#xA;&lt;p&gt;Calibrated sub is broadcast&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hot Pixel Removal</title>
      <link>https://preprod.als-app.org/docs/v0.7.1/reference/modules/preprocess/hot_remove/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:38 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7.1/reference/modules/preprocess/hot_remove/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;HotPixelRemove&lt;/strong&gt; process removes hot pixels from the image.&lt;/p&gt;&#xA;&lt;p&gt;Its configuration is managed via ALS preferences.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Data Type&lt;/th&gt;&#xA;          &lt;th&gt;Required&lt;/th&gt;&#xA;          &lt;th&gt;Default&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;Preferences: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7.1/userguide/preferences/processing/#hot-remove&#34;&gt;Processing Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;∅&lt;/td&gt;&#xA;          &lt;td&gt;OFF&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;This process is controlled by the &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline.&lt;/p&gt;&#xA;&lt;h1 id=&#34;input&#34;&gt;Input&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Data&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;image provided by the &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;behavior&#34;&gt;Behavior&lt;/h1&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph LR&#xA;&#xA;START([START])&#xA;&#xA;TEST_ENABLED{{Process enabled?}}&#xA;TEST_COLOR{{Color image?}}&#xA;&#xA;COMPUTE[Compute average value of neighbors of each pixel]&#xA;REPLACE[Replace hot pixel value with the average of its neighbors]&#xA;&#xA;RETURN[Return modified image]&#xA;UNCHANGED[Return unchanged image]&#xA;&#xA;END([END])&#xA;&#xA;START --&amp;gt; TEST_ENABLED&#xA;TEST_ENABLED --&amp;gt;|Yes| TEST_COLOR&#xA;TEST_COLOR ----&amp;gt;|Yes| UNCHANGED&#xA;TEST_ENABLED ----&amp;gt;|No| UNCHANGED&#xA;TEST_COLOR --&amp;gt;|No| COMPUTE&#xA;COMPUTE --&amp;gt; REPLACE&#xA;REPLACE --&amp;gt; RETURN&#xA;RETURN --&amp;gt; END&#xA;UNCHANGED --&amp;gt; END&#xA;&#xA;classDef bounds fill: #333, stroke: #666, stroke-width: 2px, color: #BBB, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;classDef step fill: #444, stroke: #622, stroke-width:2px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;,sans-serif&#xA;classDef wait  fill: #444, stroke: #262,stroke-width: 2px, color: #c6c6c6, font-family:&amp;#39;Poppins&amp;#39;, sans-serif&#xA;classDef test fill: #444, stroke: #226, stroke-width: 2 px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;&#xA;class START bounds&#xA;class TEST_ENABLED test&#xA;class TEST_COLOR test&#xA;class COMPUTE step&#xA;class UNCHANGED step&#xA;class REPLACE step&#xA;class RETURN step&#xA;class END bounds&lt;/pre&gt;&#xA;&lt;p&gt;Each pixel in the image whose value deviates too much from its neighbors is considered a hot pixel.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dark Subtraction</title>
      <link>https://preprod.als-app.org/docs/v0.7.1/reference/modules/preprocess/dark_remove/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:38 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7.1/reference/modules/preprocess/dark_remove/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;DarkRemove&lt;/strong&gt; process subtracts the thermal noise from the image using a user-provided master dark.&lt;/p&gt;&#xA;&lt;p&gt;Its configuration is managed via ALS preferences page.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Data type&lt;/th&gt;&#xA;          &lt;th&gt;Required&lt;/th&gt;&#xA;          &lt;th&gt;Default value&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;Preferences: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7.1/userguide/preferences/processing/#dark-remove&#34;&gt;Processing Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;∅&lt;/td&gt;&#xA;          &lt;td&gt;OFF&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Master dark path&lt;/td&gt;&#xA;          &lt;td&gt;Preferences: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7.1/userguide/preferences/processing/#dark-remove&#34;&gt;Processing Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;File path&lt;/td&gt;&#xA;          &lt;td&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;∅&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;This process is triggered by the &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline.&lt;/p&gt;&#xA;&lt;h1 id=&#34;input&#34;&gt;Input&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Data&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;image received from the &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;master dark read from configured path&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;behavior&#34;&gt;Behavior&lt;/h1&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph LR&#xA;&#xA;START([START])&#xA;&#xA;TEST_ENABLED{{Processing enabled?}}&#xA;TEST_SIZE{{Identical dimensions?}}&#xA;TEST_TYPE{{Identical data types?}}&#xA;&#xA;CONVERT[Convert master dark]&#xA;SUBTRACT[Subtract master dark from image]&#xA;&#xA;RETURN[Return modified image]&#xA;UNCHANGED[Return unchanged image]&#xA;&#xA;END([END])&#xA;&#xA;START --&amp;gt; TEST_ENABLED&#xA;&#xA;TEST_ENABLED -----&amp;gt;|No| UNCHANGED&#xA;TEST_ENABLED --&amp;gt;|Yes| TEST_SIZE&#xA;&#xA;TEST_SIZE -----&amp;gt;|No| UNCHANGED&#xA;TEST_SIZE --&amp;gt;|Yes| TEST_TYPE&#xA;&#xA;TEST_TYPE --&amp;gt;|No| CONVERT&#xA;TEST_TYPE --&amp;gt;|Yes| SUBTRACT&#xA;&#xA;CONVERT --&amp;gt; SUBTRACT&#xA;SUBTRACT --&amp;gt; RETURN&#xA;&#xA;RETURN --&amp;gt; END&#xA;UNCHANGED --&amp;gt; END&#xA;&#xA;classDef bounds fill: #333, stroke: #666, stroke-width: 2px, color: #BBB, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;classDef step fill: #444, stroke: #622, stroke-width:2px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;,sans-serif&#xA;classDef wait  fill: #444, stroke: #262,stroke-width: 2px, color: #c6c6c6, font-family:&amp;#39;Poppins&amp;#39;, sans-serif&#xA;classDef test fill: #444, stroke: #226, stroke-width: 2px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;&#xA;class TEST_ENABLED,TEST_SIZE,TEST_TYPE test&#xA;class START,END bounds&#xA;class RETURN,UNCHANGED,CONVERT,SUBTRACT step&lt;/pre&gt;&#xA;&lt;p&gt;The master dark is subtracted from the image.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debayering</title>
      <link>https://preprod.als-app.org/docs/v0.7.1/reference/modules/preprocess/debayer/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:38 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7.1/reference/modules/preprocess/debayer/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Debayer&lt;/strong&gt; process is used on &lt;strong&gt;color&lt;/strong&gt; images in &lt;strong&gt;FITS&lt;/strong&gt; or &lt;strong&gt;Raw&lt;/strong&gt; format.&lt;/p&gt;&#xA;&lt;p&gt;It generates a color image from the raw image and the description of the Bayer pattern installed on the sensor that&#xA;generated the image.&lt;/p&gt;&#xA;&lt;p&gt;Its configuration is managed via ALS preferences page.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Data Type&lt;/th&gt;&#xA;          &lt;th&gt;Required&lt;/th&gt;&#xA;          &lt;th&gt;Default Value&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Bayer pattern&lt;/td&gt;&#xA;          &lt;td&gt;Preferences: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7.1/userguide/preferences/processing/#debayer&#34;&gt;Processing Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;choice: &lt;br&gt;- AUTO&lt;br&gt;- GRBG&lt;br&gt;- RGGB&lt;br&gt;- GBRG&lt;br&gt;- BGGR&lt;/td&gt;&#xA;          &lt;td&gt;YES&lt;/td&gt;&#xA;          &lt;td&gt;AUTO&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;This process is triggered by the &lt;strong&gt;Preprocess&lt;/strong&gt; module.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stacker</title>
      <link>https://preprod.als-app.org/docs/v0.7.1/reference/modules/stack/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:38 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7.1/reference/modules/stack/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Stacker&lt;/strong&gt; module handles the alignment and stacking of calibrated subs.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Data type&lt;/th&gt;&#xA;          &lt;th&gt;Required&lt;/th&gt;&#xA;          &lt;th&gt;Default value&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Alignment ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;Interface: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7.1/userguide/ui/controls/#controls&#34;&gt;Stacking controls&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;∅&lt;/td&gt;&#xA;          &lt;td&gt;ON&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Stacking mode&lt;/td&gt;&#xA;          &lt;td&gt;Interface: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7.1/userguide/ui/controls/#controls&#34;&gt;Stacking controls&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;choices:&lt;br&gt;- mean&lt;br&gt;- sum&lt;/td&gt;&#xA;          &lt;td&gt;YES&lt;/td&gt;&#xA;          &lt;td&gt;mean&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Detection threshold&lt;/td&gt;&#xA;          &lt;td&gt;Interface: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7.1/userguide/ui/controls/#threshold&#34;&gt;Stacking controls&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;integer&lt;/td&gt;&#xA;          &lt;td&gt;YES&lt;/td&gt;&#xA;          &lt;td&gt;25&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Stack&lt;/strong&gt; module is launched in the background at ALS startup&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;          &lt;th&gt;Response&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub(s) in queue&lt;/td&gt;&#xA;          &lt;td&gt;Event&lt;/td&gt;&#xA;          &lt;td&gt;trigger processing&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;input&#34;&gt;Input&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Data&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub at queue front&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;session alignment reference&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;behavior&#34;&gt;Behavior&lt;/h1&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;flowchart LR&#xA;Start([START])&#xA;FirstSub{{First sub of the session?}}&#xA;SetAlignReference[Set sub as alignment reference]&#xA;CheckShape{{Sub same dimensions as previous result?}}&#xA;CheckAlign{{Alignment ON?}}&#xA;AlignImage[Align sub]&#xA;StackImage[Add sub to Stack]&#xA;ComputeStacking[Compute stacking]&#xA;PublishReference[Return alignment reference]&#xA;PublishResult[Return generated image]&#xA;End([END])&#xA;&#xA;Start --&amp;gt; FirstSub&#xA;FirstSub -- YES --&amp;gt; SetAlignReference&#xA;SetAlignReference --&amp;gt; PublishReference&#xA;FirstSub -- NO --&amp;gt; CheckShape&#xA;CheckShape -- YES --&amp;gt; CheckAlign&#xA;CheckAlign -- YES --&amp;gt; AlignImage&#xA;AlignImage --&amp;gt; StackImage&#xA;CheckAlign -- NO --&amp;gt; StackImage&#xA;StackImage --&amp;gt; ComputeStacking&#xA;ComputeStacking --&amp;gt; PublishResult&#xA;CheckShape -- NO --&amp;gt; End&#xA;PublishReference --&amp;gt; End&#xA;PublishResult --&amp;gt; End&#xA;&#xA;classDef bounds fill: #333, stroke: #666, stroke-width: 2px, color: #BBB, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;classDef step fill: #444, stroke: #622, stroke-width:2px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;,sans-serif&#xA;classDef test fill: #444, stroke: #226, stroke-width: 2px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;&#xA;class Start,End bounds&#xA;class SetAlignReference,AlignImage,StackImage,PublishResult,ComputeStacking,PublishReference step&#xA;class CheckShape,CheckAlign,FirstSub test&lt;/pre&gt;&#xA;&lt;h2 id=&#34;alignment&#34;&gt;Alignment&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;If alignment is ON&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Process</title>
      <link>https://preprod.als-app.org/docs/v0.7.1/reference/modules/process/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:38 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7.1/reference/modules/process/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Process&lt;/strong&gt; pipeline handles &lt;strong&gt;visual processing&lt;/strong&gt; tasks applied to the stacking results.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Process&lt;/strong&gt; pipeline itself requires no configuration.&lt;/p&gt;&#xA;&lt;p&gt;The configuration of the &lt;strong&gt;visual processing&lt;/strong&gt; tasks is managed by the &lt;strong&gt;processes&lt;/strong&gt; themselves.&#xA;See the &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7.1/reference/modules/process/#behavior&#34;&gt;Behavior&lt;/a&gt; section below.&lt;/p&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Process&lt;/strong&gt; module is launched in the background at ALS startup.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;          &lt;th&gt;Response&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub(s) in queue&lt;/td&gt;&#xA;          &lt;td&gt;Event&lt;/td&gt;&#xA;          &lt;td&gt;trigger processing&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;input&#34;&gt;Input&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Data&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub at queue front&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;behavior&#34;&gt;Behavior&lt;/h1&gt;&#xA;&lt;p&gt;Performs &lt;strong&gt;visual processing&lt;/strong&gt; tasks on the stacking result:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Auto-Stretch</title>
      <link>https://preprod.als-app.org/docs/v0.7.1/reference/modules/process/autostretch/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:38 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7.1/reference/modules/process/autostretch/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Auto-Stretch&lt;/strong&gt; process optimizes the intensity levels of stacked images, making them visually usable without&#xA;manual adjustments.&lt;/p&gt;&#xA;&lt;p&gt;This process is handled by the &lt;strong&gt;Process&lt;/strong&gt; pipeline module.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;p&gt;Adjustments can be made through the &lt;strong&gt;Processing Panel&lt;/strong&gt;, located on the right-hand side of the ALS&#xA;interface.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Control&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;          &lt;th&gt;Action&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;Active&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;checkbox&lt;/td&gt;&#xA;          &lt;td&gt;Enable or disable the process&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;Strength&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;slider&lt;/td&gt;&#xA;          &lt;td&gt;Adjust stretch intensity&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Refer to the &lt;a href=&#34;../../../../userguide/ui/processing/#stretch-section&#34;&gt;Processing Panel documentation&lt;/a&gt; for detailed instructions&lt;/p&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Auto-Stretch&lt;/strong&gt; process is managed by the &lt;strong&gt;Process&lt;/strong&gt; pipeline&lt;/p&gt;</description>
    </item>
    <item>
      <title>Levels</title>
      <link>https://preprod.als-app.org/docs/v0.7.1/reference/modules/process/levels/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:38 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7.1/reference/modules/process/levels/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Levels&lt;/strong&gt; process adjusts the brightness distribution of a stacked image by setting&#xA;black and white points and tuning midtones.&lt;br&gt;&#xA;It allows precise control over image contrast and luminosity, complementing the &lt;strong&gt;Auto-Stretch&lt;/strong&gt; process.&lt;/p&gt;&#xA;&lt;p&gt;This process is handled by the &lt;strong&gt;Process&lt;/strong&gt; pipeline module.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Levels&lt;/strong&gt; process parameters are available in the &lt;strong&gt;Processing Panel&lt;/strong&gt;, located on the right-hand side of the ALS interface.&lt;/p&gt;&#xA;&lt;p&gt;Refer to the &lt;a href=&#34;../../../../userguide/ui/processing/#levels-section&#34;&gt;Processing Panel documentation&lt;/a&gt; for detailed instructions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RGB Balance</title>
      <link>https://preprod.als-app.org/docs/v0.7.1/reference/modules/process/rgb-balance/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:38 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7.1/reference/modules/process/rgb-balance/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;RGB Balance&lt;/strong&gt; process adjusts the relative intensity of the three primary colors — red, green, and blue — to correct or refine the overall color tone of a stacked image.&lt;br&gt;&#xA;It allows fine control of image chromatic balance, complementing the &lt;strong&gt;Levels&lt;/strong&gt; and &lt;strong&gt;Auto-Stretch&lt;/strong&gt; processes.&lt;/p&gt;&#xA;&lt;p&gt;This process is handled by the &lt;strong&gt;Process&lt;/strong&gt; pipeline module.&lt;/p&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&#xA;&#xA;&#xA;    ℹ️ The &lt;strong&gt;RGB Balance&lt;/strong&gt; process is only available when working with color images.&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;RGB Balance&lt;/strong&gt; parameters are available in the &lt;strong&gt;Processing Panel&lt;/strong&gt;, located on the right-hand side of the&#xA;ALS interface.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Save</title>
      <link>https://preprod.als-app.org/docs/v0.7.1/reference/modules/save/</link>
      <pubDate>Wed, 10 Jun 2026 23:25:49 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7.1/reference/modules/save/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Save&lt;/strong&gt; module handles the saving on disk of all images generated by ALS.&lt;/p&gt;&#xA;&lt;p&gt;Its configuration is managed via ALS preferences&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Data type&lt;/th&gt;&#xA;          &lt;th&gt;Required&lt;/th&gt;&#xA;          &lt;th&gt;Default value&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;work folder&lt;/td&gt;&#xA;          &lt;td&gt;Prefs: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7.1/userguide/preferences/output/#work-folder&#34;&gt;Output Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;path to a folder&lt;/td&gt;&#xA;          &lt;td&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;∅&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;web folder&lt;/td&gt;&#xA;          &lt;td&gt;Prefs: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7.1/userguide/preferences/output/#web-folder&#34;&gt;Output Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;path to a folder&lt;/td&gt;&#xA;          &lt;td&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;= work folder&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;file format&lt;/td&gt;&#xA;          &lt;td&gt;Prefs: &lt;a href=&#34;https://preprod.als-app.org/docs/v0.7.1/userguide/preferences/output/#format&#34;&gt;Output Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;choices:&lt;br&gt;- TIFF&lt;br&gt;- PNG&lt;br&gt;- JPEG&lt;/td&gt;&#xA;          &lt;td&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;JPEG&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Save&lt;/strong&gt; module is launched in the background at ALS startup&lt;/p&gt;</description>
    </item>
    <item>
      <title>Server</title>
      <link>https://preprod.als-app.org/docs/v0.7.1/reference/modules/server/</link>
      <pubDate>Thu, 11 Jun 2026 00:20:09 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v0.7.1/reference/modules/server/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Server&lt;/strong&gt; utility module exposes ALS processing results through a lightweight HTTP and WebSocket service.&lt;/p&gt;&#xA;&lt;p&gt;It is responsible for:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Publishing the &lt;strong&gt;latest processed stacking result&lt;/strong&gt; and session metrics in the configured &lt;strong&gt;web folder&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Serving the &lt;strong&gt;viewer web application&lt;/strong&gt; (&lt;code&gt;index.html&lt;/code&gt;, JavaScript and icons)&lt;/li&gt;&#xA;&lt;li&gt;Streaming live &lt;strong&gt;new-image notifications&lt;/strong&gt; to connected browsers over WebSockets&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The module runs in its own asyncio event loop and accepts concurrent browser clients. It never alters the processing&#xA;pipeline; it only serves the web image written by the &lt;strong&gt;Save&lt;/strong&gt; module.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Reference documentation</title>
      <link>https://preprod.als-app.org/docs/v1.0/reference/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:39 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v1.0/reference/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;This section contains detailed documentation about ALS bits and bolts&lt;/p&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&#xA;&#xA;&#xA;    🧠 It elaborates on the &lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/userguide/concepts/&#34;&gt;concepts&lt;/a&gt; introduced at the beginning of the user guide&#xA;&#xA;&lt;/div&gt;</description>
    </item>
    <item>
      <title>Modules and Processes</title>
      <link>https://preprod.als-app.org/docs/v1.0/reference/modules/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:39 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v1.0/reference/modules/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;In here, you will find detailed documentation about ALS modules and processes.&lt;/p&gt;&#xA;&lt;p&gt;From what a module is to how a process works, you will find everything you need to know about the bits and bolts of ALS.&lt;/p&gt;&#xA;&lt;h1 id=&#34;modules&#34;&gt;Modules&lt;/h1&gt;&#xA;&lt;p&gt;An ALS module is an elaborated processing unit responsible for a specific task.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;It has its own engine&lt;/li&gt;&#xA;&lt;li&gt;It can be started and stopped at will&lt;/li&gt;&#xA;&lt;li&gt;It has access to the settings defined in ALS preferences&lt;/li&gt;&#xA;&lt;li&gt;Its behavior can be controlled through the ALS interface&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Modules are &lt;strong&gt;dumb and isolated&lt;/strong&gt;. They have no knowledge of other parts of the application. They just do their job&#xA;and report to the application&lt;/p&gt;</description>
    </item>
    <item>
      <title>Scanner</title>
      <link>https://preprod.als-app.org/docs/v1.0/reference/modules/scanner/</link>
      <pubDate>Thu, 11 Jun 2026 18:38:13 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v1.0/reference/modules/scanner/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Scanner&lt;/strong&gt; module is the entry point for your subs in ALS.&lt;/p&gt;&#xA;&lt;p&gt;It is responsible for:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Monitoring the &lt;strong&gt;appearance&lt;/strong&gt; of subs in the &lt;strong&gt;scan folder&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Loading the detected subs&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&#xA;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&#xA;&#xA;&#xA;    &lt;p&gt;ℹ️ &lt;strong&gt;Existing files are ignored&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Files present in the &lt;strong&gt;scan folder&lt;/strong&gt; before the &lt;strong&gt;Scanner&lt;/strong&gt; module is started are not detected&lt;/p&gt;&#xA;&#xA;&#xA;&lt;/div&gt;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;&#xA;&#xA;&#xA;    &lt;p&gt;ℹ️ &lt;strong&gt;Detection of subs is recursive&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;p&gt;Subs are detected regardless of the level of subfolders where they appear within the &lt;strong&gt;scan folder&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Preprocess</title>
      <link>https://preprod.als-app.org/docs/v1.0/reference/modules/preprocess/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:39 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v1.0/reference/modules/preprocess/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline handles &lt;strong&gt;calibration&lt;/strong&gt; processes&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline itself requires no configuration.&lt;/p&gt;&#xA;&lt;p&gt;The configuration of the &lt;strong&gt;calibration&lt;/strong&gt; processes is managed by the &lt;strong&gt;processes&lt;/strong&gt; themselves.&#xA;See the &lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/reference/modules/preprocess/#behavior&#34;&gt;Behavior&lt;/a&gt; section below.&lt;/p&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Preprocess&lt;/strong&gt; module is launched in the background at ALS startup&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;          &lt;th&gt;Response&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub(s) in queue&lt;/td&gt;&#xA;          &lt;td&gt;Event&lt;/td&gt;&#xA;          &lt;td&gt;trigger calibration&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;input&#34;&gt;Input&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Data&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub at queue front&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;behavior&#34;&gt;Behavior&lt;/h1&gt;&#xA;&lt;p&gt;Performs &lt;strong&gt;calibration&lt;/strong&gt; processes on the sub:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/reference/modules/preprocess/hot_remove/&#34;&gt;Hot pixel removal&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/reference/modules/preprocess/dark_remove/&#34;&gt;Dark subtraction&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/reference/modules/preprocess/flat_calibrate/&#34;&gt;Flat calibration&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/reference/modules/preprocess/debayer/&#34;&gt;Debayering&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h1 id=&#34;output&#34;&gt;Output&lt;/h1&gt;&#xA;&lt;p&gt;Calibrated sub is broadcast&lt;/p&gt;</description>
    </item>
    <item>
      <title>Hot Pixel Removal</title>
      <link>https://preprod.als-app.org/docs/v1.0/reference/modules/preprocess/hot_remove/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:39 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v1.0/reference/modules/preprocess/hot_remove/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;HotPixelRemove&lt;/strong&gt; process removes hot pixels from the image.&lt;/p&gt;&#xA;&lt;p&gt;Its configuration is managed via ALS preferences.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Data Type&lt;/th&gt;&#xA;          &lt;th&gt;Required&lt;/th&gt;&#xA;          &lt;th&gt;Default&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;Preferences: &lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/userguide/preferences/processing/#hot-remove&#34;&gt;Processing Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;∅&lt;/td&gt;&#xA;          &lt;td&gt;OFF&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;This process is controlled by the &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline.&lt;/p&gt;&#xA;&lt;h1 id=&#34;input&#34;&gt;Input&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Data&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;image provided by the &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;behavior&#34;&gt;Behavior&lt;/h1&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph LR&#xA;&#xA;START([START])&#xA;&#xA;TEST_ENABLED{{Process enabled?}}&#xA;TEST_COLOR{{Color image?}}&#xA;&#xA;COMPUTE[Compute average value of neighbors of each pixel]&#xA;REPLACE[Replace hot pixel value with the average of its neighbors]&#xA;&#xA;RETURN[Return modified image]&#xA;UNCHANGED[Return unchanged image]&#xA;&#xA;END([END])&#xA;&#xA;START --&amp;gt; TEST_ENABLED&#xA;TEST_ENABLED --&amp;gt;|Yes| TEST_COLOR&#xA;TEST_COLOR ----&amp;gt;|Yes| UNCHANGED&#xA;TEST_ENABLED ----&amp;gt;|No| UNCHANGED&#xA;TEST_COLOR --&amp;gt;|No| COMPUTE&#xA;COMPUTE --&amp;gt; REPLACE&#xA;REPLACE --&amp;gt; RETURN&#xA;RETURN --&amp;gt; END&#xA;UNCHANGED --&amp;gt; END&#xA;&#xA;classDef bounds fill: #333, stroke: #666, stroke-width: 2px, color: #BBB, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;classDef step fill: #444, stroke: #622, stroke-width:2px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;,sans-serif&#xA;classDef wait  fill: #444, stroke: #262,stroke-width: 2px, color: #c6c6c6, font-family:&amp;#39;Poppins&amp;#39;, sans-serif&#xA;classDef test fill: #444, stroke: #226, stroke-width: 2 px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;&#xA;class START bounds&#xA;class TEST_ENABLED test&#xA;class TEST_COLOR test&#xA;class COMPUTE step&#xA;class UNCHANGED step&#xA;class REPLACE step&#xA;class RETURN step&#xA;class END bounds&lt;/pre&gt;&#xA;&lt;p&gt;Each pixel in the image whose value deviates too much from its neighbors is considered a hot pixel.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Dark Subtraction</title>
      <link>https://preprod.als-app.org/docs/v1.0/reference/modules/preprocess/dark_remove/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:39 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v1.0/reference/modules/preprocess/dark_remove/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;DarkRemove&lt;/strong&gt; process subtracts the thermal noise from the image using a user-provided master dark.&lt;/p&gt;&#xA;&lt;p&gt;Its configuration is managed via ALS preferences page.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Data type&lt;/th&gt;&#xA;          &lt;th&gt;Required&lt;/th&gt;&#xA;          &lt;th&gt;Default value&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;Preferences: &lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/userguide/preferences/processing/#dark-remove&#34;&gt;Processing Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;∅&lt;/td&gt;&#xA;          &lt;td&gt;OFF&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Master dark path&lt;/td&gt;&#xA;          &lt;td&gt;Preferences: &lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/userguide/preferences/processing/#dark-remove&#34;&gt;Processing Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;File path&lt;/td&gt;&#xA;          &lt;td&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;∅&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;This process is triggered by the &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline.&lt;/p&gt;&#xA;&lt;h1 id=&#34;input&#34;&gt;Input&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Data&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;image received from the &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;master dark read from configured path&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;behavior&#34;&gt;Behavior&lt;/h1&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph LR&#xA;&#xA;START([START])&#xA;&#xA;TEST_ENABLED{{Processing enabled?}}&#xA;TEST_SIZE{{Identical dimensions?}}&#xA;TEST_TYPE{{Identical data types?}}&#xA;&#xA;CONVERT[Convert master dark]&#xA;SUBTRACT[Subtract master dark from image]&#xA;&#xA;RETURN[Return modified image]&#xA;UNCHANGED[Return unchanged image]&#xA;&#xA;END([END])&#xA;&#xA;START --&amp;gt; TEST_ENABLED&#xA;&#xA;TEST_ENABLED -----&amp;gt;|No| UNCHANGED&#xA;TEST_ENABLED --&amp;gt;|Yes| TEST_SIZE&#xA;&#xA;TEST_SIZE -----&amp;gt;|No| UNCHANGED&#xA;TEST_SIZE --&amp;gt;|Yes| TEST_TYPE&#xA;&#xA;TEST_TYPE --&amp;gt;|No| CONVERT&#xA;TEST_TYPE --&amp;gt;|Yes| SUBTRACT&#xA;&#xA;CONVERT --&amp;gt; SUBTRACT&#xA;SUBTRACT --&amp;gt; RETURN&#xA;&#xA;RETURN --&amp;gt; END&#xA;UNCHANGED --&amp;gt; END&#xA;&#xA;classDef bounds fill: #333, stroke: #666, stroke-width: 2px, color: #BBB, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;classDef step fill: #444, stroke: #622, stroke-width:2px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;,sans-serif&#xA;classDef wait  fill: #444, stroke: #262,stroke-width: 2px, color: #c6c6c6, font-family:&amp;#39;Poppins&amp;#39;, sans-serif&#xA;classDef test fill: #444, stroke: #226, stroke-width: 2px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;&#xA;class TEST_ENABLED,TEST_SIZE,TEST_TYPE test&#xA;class START,END bounds&#xA;class RETURN,UNCHANGED,CONVERT,SUBTRACT step&lt;/pre&gt;&#xA;&lt;p&gt;The master dark is subtracted from the image.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Flat Calibration</title>
      <link>https://preprod.als-app.org/docs/v1.0/reference/modules/preprocess/flat_calibrate/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:39 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v1.0/reference/modules/preprocess/flat_calibrate/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;RemoveFlat&lt;/strong&gt; process divides each sub by a user-provided &lt;strong&gt;master flat&lt;/strong&gt; to remove&#xA;optical vignetting, dust motes, and pixel-to-pixel response variations.&lt;/p&gt;&#xA;&lt;p&gt;Its configuration is managed via the ALS preferences page.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Data type&lt;/th&gt;&#xA;          &lt;th&gt;Required&lt;/th&gt;&#xA;          &lt;th&gt;Default value&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;Preferences: &lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/userguide/preferences/processing/#flat-remove&#34;&gt;Processing Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;∅&lt;/td&gt;&#xA;          &lt;td&gt;OFF&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Master flat path&lt;/td&gt;&#xA;          &lt;td&gt;Preferences: &lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/userguide/preferences/processing/#flat-remove&#34;&gt;Processing Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;File path&lt;/td&gt;&#xA;          &lt;td&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;∅&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;This process is triggered by the &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline.&lt;/p&gt;&#xA;&lt;h1 id=&#34;input&#34;&gt;Input&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Data&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;image received from the &lt;strong&gt;Preprocess&lt;/strong&gt; pipeline&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;master flat read from configured path&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;behavior&#34;&gt;Behavior&lt;/h1&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;graph LR&#xA;&#xA;START([START])&#xA;&#xA;TEST_ENABLED{{Processing enabled?}}&#xA;READ_FLAT[Read master flat]&#xA;TEST_SHAPE{{Identical dimensions?}}&#xA;    NORMALIZE[Normalize by robust scale]&#xA;    SAFEGUARD[Apply epsilon floor]&#xA;DIVIDE[Divide image by normalized flat]&#xA;CLIP[Clip to 16-bit range]&#xA;RETURN[Return calibrated image]&#xA;UNCHANGED[Return unchanged image]&#xA;&#xA;END([END])&#xA;&#xA;START --&amp;gt; TEST_ENABLED&#xA;&#xA;TEST_ENABLED -----&amp;gt;|No| UNCHANGED&#xA;TEST_ENABLED --&amp;gt;|Yes| READ_FLAT&#xA;&#xA;READ_FLAT -----&amp;gt;|Failed| UNCHANGED&#xA;READ_FLAT --&amp;gt;|Ok| TEST_SHAPE&#xA;&#xA;TEST_SHAPE -----&amp;gt;|No| UNCHANGED&#xA;TEST_SHAPE --&amp;gt;|Yes| NORMALIZE&#xA;&#xA;NORMALIZE --&amp;gt; SAFEGUARD&#xA;SAFEGUARD --&amp;gt; DIVIDE&#xA;DIVIDE --&amp;gt; CLIP&#xA;CLIP --&amp;gt; RETURN&#xA;&#xA;RETURN --&amp;gt; END&#xA;UNCHANGED --&amp;gt; END&#xA;&#xA;classDef bounds fill: #333, stroke: #666, stroke-width: 2px, color: #BBB, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;classDef step fill: #444, stroke: #622, stroke-width:2px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;,sans-serif&#xA;classDef wait  fill: #444, stroke: #262,stroke-width: 2px, color: #c6c6c6, font-family:&amp;#39;Poppins&amp;#39;, sans-serif&#xA;classDef test fill: #444, stroke: #226, stroke-width: 2px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;&#xA;class TEST_ENABLED,TEST_SHAPE test&#xA;class START,END bounds&#xA;class RETURN,UNCHANGED,READ_FLAT,NORMALIZE,SAFEGUARD,DIVIDE,CLIP step&lt;/pre&gt;&#xA;&lt;p&gt;The master flat is loaded from disk, converted to a normalized &lt;code&gt;float32&lt;/code&gt; calibration frame, and protected with a small&#xA;epsilon floor before dividing the sub.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Debayering</title>
      <link>https://preprod.als-app.org/docs/v1.0/reference/modules/preprocess/debayer/</link>
      <pubDate>Thu, 11 Jun 2026 22:56:10 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v1.0/reference/modules/preprocess/debayer/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Debayer&lt;/strong&gt; process is used on &lt;strong&gt;color&lt;/strong&gt; images in &lt;strong&gt;FITS&lt;/strong&gt; or &lt;strong&gt;Raw&lt;/strong&gt; format.&lt;/p&gt;&#xA;&lt;p&gt;It generates a color image from the raw image and the description of the Bayer pattern installed on the sensor that&#xA;generated the image.&lt;/p&gt;&#xA;&lt;p&gt;Its configuration is managed via ALS preferences page.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Data Type&lt;/th&gt;&#xA;          &lt;th&gt;Required&lt;/th&gt;&#xA;          &lt;th&gt;Default Value&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Bayer pattern&lt;/td&gt;&#xA;          &lt;td&gt;Preferences: &lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/userguide/preferences/processing/#debayer&#34;&gt;Processing Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;choice: &lt;br&gt;- AUTO&lt;br&gt;- GRBG&lt;br&gt;- RGGB&lt;br&gt;- GBRG&lt;br&gt;- BGGR&lt;/td&gt;&#xA;          &lt;td&gt;YES&lt;/td&gt;&#xA;          &lt;td&gt;AUTO&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;This process is triggered by the &lt;strong&gt;Preprocess&lt;/strong&gt; module.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stacker</title>
      <link>https://preprod.als-app.org/docs/v1.0/reference/modules/stack/</link>
      <pubDate>Thu, 11 Jun 2026 17:57:08 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v1.0/reference/modules/stack/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Stacker&lt;/strong&gt; module handles the alignment and stacking of calibrated subs.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Data type&lt;/th&gt;&#xA;          &lt;th&gt;Required&lt;/th&gt;&#xA;          &lt;th&gt;Default value&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Alignment ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;Interface: &lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/userguide/ui/controls/#controls&#34;&gt;Stacking controls&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;ON/OFF&lt;/td&gt;&#xA;          &lt;td&gt;∅&lt;/td&gt;&#xA;          &lt;td&gt;ON&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Stacking mode&lt;/td&gt;&#xA;          &lt;td&gt;Interface: &lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/userguide/ui/controls/#controls&#34;&gt;Stacking controls&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;choices:&lt;br&gt;- mean&lt;br&gt;- sum&lt;/td&gt;&#xA;          &lt;td&gt;YES&lt;/td&gt;&#xA;          &lt;td&gt;mean&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;Minimum matches&lt;/td&gt;&#xA;          &lt;td&gt;Interface: &lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/userguide/ui/controls/#threshold&#34;&gt;Stacking controls&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;integer&lt;/td&gt;&#xA;          &lt;td&gt;YES&lt;/td&gt;&#xA;          &lt;td&gt;25&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Stack&lt;/strong&gt; module is launched in the background at ALS startup&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;          &lt;th&gt;Response&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub(s) in queue&lt;/td&gt;&#xA;          &lt;td&gt;Event&lt;/td&gt;&#xA;          &lt;td&gt;trigger processing&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;input&#34;&gt;Input&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Data&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub at queue front&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;session alignment reference&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;behavior&#34;&gt;Behavior&lt;/h1&gt;&#xA;&lt;pre class=&#34;mermaid&#34;&gt;flowchart LR&#xA;Start([START])&#xA;FirstSub{{First sub of the session?}}&#xA;SetAlignReference[Set sub as alignment reference]&#xA;CheckShape{{Sub same dimensions as previous result?}}&#xA;CheckAlign{{Alignment ON?}}&#xA;AlignImage[Align sub]&#xA;StackImage[Add sub to Stack]&#xA;ComputeStacking[Compute stacking]&#xA;PublishReference[Return alignment reference]&#xA;PublishResult[Return generated image]&#xA;End([END])&#xA;&#xA;Start --&amp;gt; FirstSub&#xA;FirstSub -- YES --&amp;gt; SetAlignReference&#xA;SetAlignReference --&amp;gt; PublishReference&#xA;FirstSub -- NO --&amp;gt; CheckShape&#xA;CheckShape -- YES --&amp;gt; CheckAlign&#xA;CheckAlign -- YES --&amp;gt; AlignImage&#xA;AlignImage --&amp;gt; StackImage&#xA;CheckAlign -- NO --&amp;gt; StackImage&#xA;StackImage --&amp;gt; ComputeStacking&#xA;ComputeStacking --&amp;gt; PublishResult&#xA;CheckShape -- NO --&amp;gt; End&#xA;PublishReference --&amp;gt; End&#xA;PublishResult --&amp;gt; End&#xA;&#xA;classDef bounds fill: #333, stroke: #666, stroke-width: 2px, color: #BBB, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;classDef step fill: #444, stroke: #622, stroke-width:2px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;,sans-serif&#xA;classDef test fill: #444, stroke: #226, stroke-width: 2px, color: #c6c6c6, font-family: &amp;#39;Poppins&amp;#39;, sans-serif&#xA;&#xA;class Start,End bounds&#xA;class SetAlignReference,AlignImage,StackImage,PublishResult,ComputeStacking,PublishReference step&#xA;class CheckShape,CheckAlign,FirstSub test&lt;/pre&gt;&#xA;&lt;h2 id=&#34;alignment&#34;&gt;Alignment&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;If alignment is ON&lt;/strong&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Process</title>
      <link>https://preprod.als-app.org/docs/v1.0/reference/modules/process/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:39 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v1.0/reference/modules/process/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Process&lt;/strong&gt; pipeline handles &lt;strong&gt;visual processing&lt;/strong&gt; tasks applied to the stacking results.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Process&lt;/strong&gt; pipeline itself requires no configuration.&lt;/p&gt;&#xA;&lt;p&gt;The configuration of the &lt;strong&gt;visual processing&lt;/strong&gt; tasks is managed by the &lt;strong&gt;processes&lt;/strong&gt; themselves.&#xA;See the &lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/reference/modules/process/#behavior&#34;&gt;Behavior&lt;/a&gt; section below.&lt;/p&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Process&lt;/strong&gt; module is launched in the background at ALS startup.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;          &lt;th&gt;Response&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub(s) in queue&lt;/td&gt;&#xA;          &lt;td&gt;Event&lt;/td&gt;&#xA;          &lt;td&gt;trigger processing&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;input&#34;&gt;Input&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Data&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;sub at queue front&lt;/td&gt;&#xA;          &lt;td&gt;Image&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;behavior&#34;&gt;Behavior&lt;/h1&gt;&#xA;&lt;p&gt;Performs &lt;strong&gt;visual processing&lt;/strong&gt; tasks on the stacking result:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Auto-Stretch</title>
      <link>https://preprod.als-app.org/docs/v1.0/reference/modules/process/autostretch/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:39 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v1.0/reference/modules/process/autostretch/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Auto-Stretch&lt;/strong&gt; process optimizes the intensity levels of stacked images, making them visually usable without&#xA;manual adjustments.&lt;/p&gt;&#xA;&lt;p&gt;This process is handled by the &lt;strong&gt;Process&lt;/strong&gt; pipeline module.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;p&gt;Adjustments can be made through the &lt;strong&gt;Processing Panel&lt;/strong&gt;, located on the right-hand side of the ALS&#xA;interface.&lt;/p&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;Control&lt;/th&gt;&#xA;          &lt;th&gt;Type&lt;/th&gt;&#xA;          &lt;th&gt;Action&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;Active&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;checkbox&lt;/td&gt;&#xA;          &lt;td&gt;Enable or disable the process&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;&lt;code&gt;Strength&lt;/code&gt;&lt;/td&gt;&#xA;          &lt;td&gt;slider&lt;/td&gt;&#xA;          &lt;td&gt;Adjust stretch intensity&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Refer to the &lt;a href=&#34;../../../../userguide/ui/processing/#stretch-section&#34;&gt;Processing Panel documentation&lt;/a&gt; for detailed instructions&lt;/p&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Auto-Stretch&lt;/strong&gt; process is managed by the &lt;strong&gt;Process&lt;/strong&gt; pipeline&lt;/p&gt;</description>
    </item>
    <item>
      <title>Levels</title>
      <link>https://preprod.als-app.org/docs/v1.0/reference/modules/process/levels/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:39 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v1.0/reference/modules/process/levels/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Levels&lt;/strong&gt; process adjusts the brightness distribution of a stacked image by setting&#xA;black and white points and tuning midtones.&lt;br&gt;&#xA;It allows precise control over image contrast and luminosity, complementing the &lt;strong&gt;Auto-Stretch&lt;/strong&gt; process.&lt;/p&gt;&#xA;&lt;p&gt;This process is handled by the &lt;strong&gt;Process&lt;/strong&gt; pipeline module.&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Levels&lt;/strong&gt; process parameters are available in the &lt;strong&gt;Processing Panel&lt;/strong&gt;, located on the right-hand side of the ALS interface.&lt;/p&gt;&#xA;&lt;p&gt;Refer to the &lt;a href=&#34;../../../../userguide/ui/processing/#levels-section&#34;&gt;Processing Panel documentation&lt;/a&gt; for detailed instructions.&lt;/p&gt;</description>
    </item>
    <item>
      <title>RGB Balance</title>
      <link>https://preprod.als-app.org/docs/v1.0/reference/modules/process/rgb-balance/</link>
      <pubDate>Thu, 11 Jun 2026 00:33:39 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v1.0/reference/modules/process/rgb-balance/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;RGB Balance&lt;/strong&gt; process adjusts the relative intensity of the three primary colors — red, green, and blue — to correct or refine the overall color tone of a stacked image.&#xA;It also controls global color &lt;strong&gt;saturation&lt;/strong&gt;, letting you reinforce or tame chroma while keeping exposure unchanged.&#xA;These parameters allow fine control of image chromatic balance, complementing the &lt;strong&gt;Levels&lt;/strong&gt; and &lt;strong&gt;Auto-Stretch&lt;/strong&gt; processes.&lt;/p&gt;&#xA;&lt;p&gt;This process is handled by the &lt;strong&gt;Process&lt;/strong&gt; pipeline module.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Save</title>
      <link>https://preprod.als-app.org/docs/v1.0/reference/modules/save/</link>
      <pubDate>Wed, 10 Jun 2026 23:25:50 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v1.0/reference/modules/save/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Save&lt;/strong&gt; module handles the saving on disk of all images generated by ALS.&lt;/p&gt;&#xA;&lt;p&gt;Its configuration is managed via ALS preferences&lt;/p&gt;&#xA;&lt;h1 id=&#34;configuration&#34;&gt;Configuration&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;  &lt;thead&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;th&gt;&lt;/th&gt;&#xA;          &lt;th&gt;Source&lt;/th&gt;&#xA;          &lt;th&gt;Data type&lt;/th&gt;&#xA;          &lt;th&gt;Required&lt;/th&gt;&#xA;          &lt;th&gt;Default value&lt;/th&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/thead&gt;&#xA;  &lt;tbody&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;work folder&lt;/td&gt;&#xA;          &lt;td&gt;Prefs: &lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/userguide/preferences/output/#work-folder&#34;&gt;Output Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;path to a folder&lt;/td&gt;&#xA;          &lt;td&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;∅&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;web folder&lt;/td&gt;&#xA;          &lt;td&gt;Prefs: &lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/userguide/preferences/output/#web-folder&#34;&gt;Output Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;path to a folder&lt;/td&gt;&#xA;          &lt;td&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;= work folder&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;      &lt;tr&gt;&#xA;          &lt;td&gt;file format&lt;/td&gt;&#xA;          &lt;td&gt;Prefs: &lt;a href=&#34;https://preprod.als-app.org/docs/v1.0/userguide/preferences/output/#format&#34;&gt;Output Tab&lt;/a&gt;&lt;/td&gt;&#xA;          &lt;td&gt;choices:&lt;br&gt;- TIFF&lt;br&gt;- PNG&lt;br&gt;- JPEG&lt;/td&gt;&#xA;          &lt;td&gt;Yes&lt;/td&gt;&#xA;          &lt;td&gt;JPEG&lt;/td&gt;&#xA;      &lt;/tr&gt;&#xA;  &lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h1 id=&#34;control&#34;&gt;Control&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Save&lt;/strong&gt; module is launched in the background at ALS startup&lt;/p&gt;</description>
    </item>
    <item>
      <title>Server</title>
      <link>https://preprod.als-app.org/docs/v1.0/reference/modules/server/</link>
      <pubDate>Thu, 11 Jun 2026 00:20:09 +0000</pubDate>
      <guid>https://preprod.als-app.org/docs/v1.0/reference/modules/server/</guid>
      <description>&lt;h1 id=&#34;overview&#34;&gt;Overview&lt;/h1&gt;&#xA;&lt;p&gt;The &lt;strong&gt;Server&lt;/strong&gt; utility module exposes ALS processing results through a lightweight HTTP and WebSocket service.&lt;/p&gt;&#xA;&lt;p&gt;It is responsible for:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Publishing the &lt;strong&gt;latest processed stacking result&lt;/strong&gt; and session metrics in the configured &lt;strong&gt;web folder&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;Serving the &lt;strong&gt;viewer web application&lt;/strong&gt; (&lt;code&gt;index.html&lt;/code&gt;, JavaScript and icons)&lt;/li&gt;&#xA;&lt;li&gt;Streaming live &lt;strong&gt;new-image notifications&lt;/strong&gt; to connected browsers over WebSockets&lt;/li&gt;&#xA;&lt;li&gt;Providing a &lt;strong&gt;QR-code friendly URL&lt;/strong&gt; so that tablets or phones can join the session quickly&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;The module runs in its own asyncio event loop and accepts concurrent browser clients. It never alters the processing&#xA;pipeline; it only serves the web image written by the &lt;strong&gt;Save&lt;/strong&gt; module.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
