Repository files navigation

latte-data-processing

CCD calibration frames preprocessing and data reduction scripts used for NTHUAC's LATTE observations

The LICENSE only applies to .py scripts.

Please pip install astropy astroalign scikit-image if you want to use it.

Pixel math formulas

The following are the details of pixel math operations that is done on the calibration frames and data by the processing script.

Dark (and bias)

Let $D_R[i]$ denote the raw frames and $D_M$ be the resulting (combined) master frame.

$D_M = \text{mean}(D_R)$

Downsampled dark

Additionally, the 5min dark frame is downscaled (downsampled) from 4096x4096 to 2048x2048 for use in the bin 2x2 images by local mean downscaling.

Flat (Regular flats)

These are for the flat frames that does not require special handling (band Ha/OIII).

Let $F_R[i]$ denote the raw flat frames, $D_F$ be the master dark with the corresponding exposure time, and $F_M$ be the resulting (combined) master flat frame.

$F_R^\prime[i] = F_R[i] - D_F$

$F_M = \color{blue}{\text{fix}}\color{black}(\text{mean}(F_R^\prime))$

Since the bias is included in the flat dark frames, it is not removed additionally. By $\color{blue}{\text{fix}}$ we remove dead pixel column by taking mean of local pixels.

Flat (Long-short flats)

These are flat frames that are captured with an exposure less than 10 seconds (band L/B/V/R), which may leave a artifact on images due to a slow-moving shutter curtain.

Let $F_L[i]$ denote the long flat frames, $F_S[i]$ denote the short flat frames, and $F_M$ be the resulting (combined) master flat frame.

$F_M = \color{blue}{\text{fix}}\color{black}(\text{mean}(F_L) - \text{mean}(F_S))$

The flat dark is neglated due to a rather short exposure time. Since the bias is included in the short flat frames, it is not removed additionally. By $\color{blue}{\text{fix}}$ we remove dead pixel column by taking mean of local pixels.

Downsampled flat

Additionally, the master flat frame for B, V, R is downscaled (downsampled) from 4096x4096 to 2048x2048 for use in the bin 2x2 images by local mean downscaling.

Light

Let $L_R[i]$ denote the raw light frames, $F$ denote the corresponding master flat frame, $D$ denote the corresponding master dark frame, and $L_M$ be the resulting (combined) master flat frame.

Note that the $\color{red}{\text{red}}$ part is a single number!

$L_M = \text{median}(L_R^\prime)$

Since the bias is included in the dark frames, it is not removed additionally. Also, each light frame is registered (aligned) using astroalign in prior to being combined.

About

CCD calibration frames preprocessing and data reduction scripts used for NTHUAC's LATTE observations

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

latte-data-processing

CCD calibration frames preprocessing and data reduction scripts used for NTHUAC's LATTE observations

The LICENSE only applies to .py scripts.

Please pip install astropy astroalign scikit-image if you want to use it.

Pixel math formulas

The following are the details of pixel math operations that is done on the calibration frames and data by the processing script.

Dark (and bias)

Let $D_R[i]$ denote the raw frames and $D_M$ be the resulting (combined) master frame.

$D_M = \text{mean}(D_R)$

Downsampled dark

Additionally, the 5min dark frame is downscaled (downsampled) from 4096x4096 to 2048x2048 for use in the bin 2x2 images by local mean downscaling.

Flat (Regular flats)

These are for the flat frames that does not require special handling (band Ha/OIII).

Let $F_R[i]$ denote the raw flat frames, $D_F$ be the master dark with the corresponding exposure time, and $F_M$ be the resulting (combined) master flat frame.

$F_R^\prime[i] = F_R[i] - D_F$

$F_M = \color{blue}{\text{fix}}\color{black}(\text{mean}(F_R^\prime))$

Since the bias is included in the flat dark frames, it is not removed additionally. By $\color{blue}{\text{fix}}$ we remove dead pixel column by taking mean of local pixels.

Flat (Long-short flats)

These are flat frames that are captured with an exposure less than 10 seconds (band L/B/V/R), which may leave a artifact on images due to a slow-moving shutter curtain.

Let $F_L[i]$ denote the long flat frames, $F_S[i]$ denote the short flat frames, and $F_M$ be the resulting (combined) master flat frame.

$F_M = \color{blue}{\text{fix}}\color{black}(\text{mean}(F_L) - \text{mean}(F_S))$

The flat dark is neglated due to a rather short exposure time. Since the bias is included in the short flat frames, it is not removed additionally. By $\color{blue}{\text{fix}}$ we remove dead pixel column by taking mean of local pixels.

Downsampled flat

Additionally, the master flat frame for B, V, R is downscaled (downsampled) from 4096x4096 to 2048x2048 for use in the bin 2x2 images by local mean downscaling.

Light

Let $L_R[i]$ denote the raw light frames, $F$ denote the corresponding master flat frame, $D$ denote the corresponding master dark frame, and $L_M$ be the resulting (combined) master flat frame.

Note that the $\color{red}{\text{red}}$ part is a single number!

$L_M = \text{median}(L_R^\prime)$

Since the bias is included in the dark frames, it is not removed additionally. Also, each light frame is registered (aligned) using astroalign in prior to being combined.

About

CCD calibration frames preprocessing and data reduction scripts used for NTHUAC's LATTE observations

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

latte-data-processing

CCD calibration frames preprocessing and data reduction scripts used for NTHUAC's LATTE observations

The LICENSE only applies to .py scripts.

Please pip install astropy astroalign scikit-image if you want to use it.

Pixel math formulas

The following are the details of pixel math operations that is done on the calibration frames and data by the processing script.

Dark (and bias)

Let $D_R[i]$ denote the raw frames and $D_M$ be the resulting (combined) master frame.

$D_M = \text{mean}(D_R)$

Downsampled dark

Additionally, the 5min dark frame is downscaled (downsampled) from 4096x4096 to 2048x2048 for use in the bin 2x2 images by local mean downscaling.

Flat (Regular flats)

These are for the flat frames that does not require special handling (band Ha/OIII).

Let $F_R[i]$ denote the raw flat frames, $D_F$ be the master dark with the corresponding exposure time, and $F_M$ be the resulting (combined) master flat frame.

$F_R^\prime[i] = F_R[i] - D_F$

$F_M = \color{blue}{\text{fix}}\color{black}(\text{mean}(F_R^\prime))$

Since the bias is included in the flat dark frames, it is not removed additionally. By $\color{blue}{\text{fix}}$ we remove dead pixel column by taking mean of local pixels.

Flat (Long-short flats)

These are flat frames that are captured with an exposure less than 10 seconds (band L/B/V/R), which may leave a artifact on images due to a slow-moving shutter curtain.

Let $F_L[i]$ denote the long flat frames, $F_S[i]$ denote the short flat frames, and $F_M$ be the resulting (combined) master flat frame.

$F_M = \color{blue}{\text{fix}}\color{black}(\text{mean}(F_L) - \text{mean}(F_S))$

The flat dark is neglated due to a rather short exposure time. Since the bias is included in the short flat frames, it is not removed additionally. By $\color{blue}{\text{fix}}$ we remove dead pixel column by taking mean of local pixels.

Downsampled flat

Additionally, the master flat frame for B, V, R is downscaled (downsampled) from 4096x4096 to 2048x2048 for use in the bin 2x2 images by local mean downscaling.

Light

Let $L_R[i]$ denote the raw light frames, $F$ denote the corresponding master flat frame, $D$ denote the corresponding master dark frame, and $L_M$ be the resulting (combined) master flat frame.

Note that the $\color{red}{\text{red}}$ part is a single number!

$L_M = \text{median}(L_R^\prime)$

Since the bias is included in the dark frames, it is not removed additionally. Also, each light frame is registered (aligned) using astroalign in prior to being combined.

About

CCD calibration frames preprocessing and data reduction scripts used for NTHUAC's LATTE observations

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

latte-data-processing

CCD calibration frames preprocessing and data reduction scripts used for NTHUAC's LATTE observations

The LICENSE only applies to .py scripts.

Please pip install astropy astroalign scikit-image if you want to use it.

Pixel math formulas

The following are the details of pixel math operations that is done on the calibration frames and data by the processing script.

Dark (and bias)

Let $D_R[i]$ denote the raw frames and $D_M$ be the resulting (combined) master frame.

$D_M = \text{mean}(D_R)$

Downsampled dark

Additionally, the 5min dark frame is downscaled (downsampled) from 4096x4096 to 2048x2048 for use in the bin 2x2 images by local mean downscaling.

Flat (Regular flats)

These are for the flat frames that does not require special handling (band Ha/OIII).

Let $F_R[i]$ denote the raw flat frames, $D_F$ be the master dark with the corresponding exposure time, and $F_M$ be the resulting (combined) master flat frame.

$F_R^\prime[i] = F_R[i] - D_F$

$F_M = \color{blue}{\text{fix}}\color{black}(\text{mean}(F_R^\prime))$

Since the bias is included in the flat dark frames, it is not removed additionally. By $\color{blue}{\text{fix}}$ we remove dead pixel column by taking mean of local pixels.

Flat (Long-short flats)

These are flat frames that are captured with an exposure less than 10 seconds (band L/B/V/R), which may leave a artifact on images due to a slow-moving shutter curtain.

Let $F_L[i]$ denote the long flat frames, $F_S[i]$ denote the short flat frames, and $F_M$ be the resulting (combined) master flat frame.

$F_M = \color{blue}{\text{fix}}\color{black}(\text{mean}(F_L) - \text{mean}(F_S))$

The flat dark is neglated due to a rather short exposure time. Since the bias is included in the short flat frames, it is not removed additionally. By $\color{blue}{\text{fix}}$ we remove dead pixel column by taking mean of local pixels.

Downsampled flat

Additionally, the master flat frame for B, V, R is downscaled (downsampled) from 4096x4096 to 2048x2048 for use in the bin 2x2 images by local mean downscaling.

Light

Let $L_R[i]$ denote the raw light frames, $F$ denote the corresponding master flat frame, $D$ denote the corresponding master dark frame, and $L_M$ be the resulting (combined) master flat frame.

Note that the $\color{red}{\text{red}}$ part is a single number!

$L_M = \text{median}(L_R^\prime)$

Since the bias is included in the dark frames, it is not removed additionally. Also, each light frame is registered (aligned) using astroalign in prior to being combined.

About

CCD calibration frames preprocessing and data reduction scripts used for NTHUAC's LATTE observations

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

latte-data-processing

CCD calibration frames preprocessing and data reduction scripts used for NTHUAC's LATTE observations

The LICENSE only applies to .py scripts.

Please pip install astropy astroalign scikit-image if you want to use it.

Pixel math formulas

The following are the details of pixel math operations that is done on the calibration frames and data by the processing script.

Dark (and bias)

Let $D_R[i]$ denote the raw frames and $D_M$ be the resulting (combined) master frame.

$D_M = \text{mean}(D_R)$

Downsampled dark

Additionally, the 5min dark frame is downscaled (downsampled) from 4096x4096 to 2048x2048 for use in the bin 2x2 images by local mean downscaling.

Flat (Regular flats)

These are for the flat frames that does not require special handling (band Ha/OIII).

Let $F_R[i]$ denote the raw flat frames, $D_F$ be the master dark with the corresponding exposure time, and $F_M$ be the resulting (combined) master flat frame.

$F_R^\prime[i] = F_R[i] - D_F$

$F_M = \color{blue}{\text{fix}}\color{black}(\text{mean}(F_R^\prime))$

Since the bias is included in the flat dark frames, it is not removed additionally. By $\color{blue}{\text{fix}}$ we remove dead pixel column by taking mean of local pixels.

Flat (Long-short flats)

These are flat frames that are captured with an exposure less than 10 seconds (band L/B/V/R), which may leave a artifact on images due to a slow-moving shutter curtain.

Let $F_L[i]$ denote the long flat frames, $F_S[i]$ denote the short flat frames, and $F_M$ be the resulting (combined) master flat frame.

$F_M = \color{blue}{\text{fix}}\color{black}(\text{mean}(F_L) - \text{mean}(F_S))$

The flat dark is neglated due to a rather short exposure time. Since the bias is included in the short flat frames, it is not removed additionally. By $\color{blue}{\text{fix}}$ we remove dead pixel column by taking mean of local pixels.

Downsampled flat

Additionally, the master flat frame for B, V, R is downscaled (downsampled) from 4096x4096 to 2048x2048 for use in the bin 2x2 images by local mean downscaling.

Light

Let $L_R[i]$ denote the raw light frames, $F$ denote the corresponding master flat frame, $D$ denote the corresponding master dark frame, and $L_M$ be the resulting (combined) master flat frame.

Note that the $\color{red}{\text{red}}$ part is a single number!

$L_M = \text{median}(L_R^\prime)$

Since the bias is included in the dark frames, it is not removed additionally. Also, each light frame is registered (aligned) using astroalign in prior to being combined.

About

CCD calibration frames preprocessing and data reduction scripts used for NTHUAC's LATTE observations

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

latte-data-processing

CCD calibration frames preprocessing and data reduction scripts used for NTHUAC's LATTE observations

The LICENSE only applies to .py scripts.

Please pip install astropy astroalign scikit-image if you want to use it.

Pixel math formulas

The following are the details of pixel math operations that is done on the calibration frames and data by the processing script.

Dark (and bias)

Let $D_R[i]$ denote the raw frames and $D_M$ be the resulting (combined) master frame.

$D_M = \text{mean}(D_R)$

Downsampled dark

Additionally, the 5min dark frame is downscaled (downsampled) from 4096x4096 to 2048x2048 for use in the bin 2x2 images by local mean downscaling.

Flat (Regular flats)

These are for the flat frames that does not require special handling (band Ha/OIII).

Let $F_R[i]$ denote the raw flat frames, $D_F$ be the master dark with the corresponding exposure time, and $F_M$ be the resulting (combined) master flat frame.

$F_R^\prime[i] = F_R[i] - D_F$

$F_M = \color{blue}{\text{fix}}\color{black}(\text{mean}(F_R^\prime))$

Since the bias is included in the flat dark frames, it is not removed additionally. By $\color{blue}{\text{fix}}$ we remove dead pixel column by taking mean of local pixels.

Flat (Long-short flats)

These are flat frames that are captured with an exposure less than 10 seconds (band L/B/V/R), which may leave a artifact on images due to a slow-moving shutter curtain.

Let $F_L[i]$ denote the long flat frames, $F_S[i]$ denote the short flat frames, and $F_M$ be the resulting (combined) master flat frame.

$F_M = \color{blue}{\text{fix}}\color{black}(\text{mean}(F_L) - \text{mean}(F_S))$

The flat dark is neglated due to a rather short exposure time. Since the bias is included in the short flat frames, it is not removed additionally. By $\color{blue}{\text{fix}}$ we remove dead pixel column by taking mean of local pixels.

Downsampled flat

Additionally, the master flat frame for B, V, R is downscaled (downsampled) from 4096x4096 to 2048x2048 for use in the bin 2x2 images by local mean downscaling.

Light

Let $L_R[i]$ denote the raw light frames, $F$ denote the corresponding master flat frame, $D$ denote the corresponding master dark frame, and $L_M$ be the resulting (combined) master flat frame.

Note that the $\color{red}{\text{red}}$ part is a single number!

$L_M = \text{median}(L_R^\prime)$

Since the bias is included in the dark frames, it is not removed additionally. Also, each light frame is registered (aligned) using astroalign in prior to being combined.

About

CCD calibration frames preprocessing and data reduction scripts used for NTHUAC's LATTE observations

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

latte-data-processing

CCD calibration frames preprocessing and data reduction scripts used for NTHUAC's LATTE observations

The LICENSE only applies to .py scripts.

Please pip install astropy astroalign scikit-image if you want to use it.

Pixel math formulas

The following are the details of pixel math operations that is done on the calibration frames and data by the processing script.

Dark (and bias)

Let $D_R[i]$ denote the raw frames and $D_M$ be the resulting (combined) master frame.

$D_M = \text{mean}(D_R)$

Downsampled dark

Additionally, the 5min dark frame is downscaled (downsampled) from 4096x4096 to 2048x2048 for use in the bin 2x2 images by local mean downscaling.

Flat (Regular flats)

These are for the flat frames that does not require special handling (band Ha/OIII).

Let $F_R[i]$ denote the raw flat frames, $D_F$ be the master dark with the corresponding exposure time, and $F_M$ be the resulting (combined) master flat frame.

$F_R^\prime[i] = F_R[i] - D_F$

$F_M = \color{blue}{\text{fix}}\color{black}(\text{mean}(F_R^\prime))$

Since the bias is included in the flat dark frames, it is not removed additionally. By $\color{blue}{\text{fix}}$ we remove dead pixel column by taking mean of local pixels.

Flat (Long-short flats)

These are flat frames that are captured with an exposure less than 10 seconds (band L/B/V/R), which may leave a artifact on images due to a slow-moving shutter curtain.

Let $F_L[i]$ denote the long flat frames, $F_S[i]$ denote the short flat frames, and $F_M$ be the resulting (combined) master flat frame.

$F_M = \color{blue}{\text{fix}}\color{black}(\text{mean}(F_L) - \text{mean}(F_S))$

The flat dark is neglated due to a rather short exposure time. Since the bias is included in the short flat frames, it is not removed additionally. By $\color{blue}{\text{fix}}$ we remove dead pixel column by taking mean of local pixels.

Downsampled flat

Additionally, the master flat frame for B, V, R is downscaled (downsampled) from 4096x4096 to 2048x2048 for use in the bin 2x2 images by local mean downscaling.

Light

Let $L_R[i]$ denote the raw light frames, $F$ denote the corresponding master flat frame, $D$ denote the corresponding master dark frame, and $L_M$ be the resulting (combined) master flat frame.

Note that the $\color{red}{\text{red}}$ part is a single number!

$L_M = \text{median}(L_R^\prime)$

Since the bias is included in the dark frames, it is not removed additionally. Also, each light frame is registered (aligned) using astroalign in prior to being combined.

About

CCD calibration frames preprocessing and data reduction scripts used for NTHUAC's LATTE observations

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

latte-data-processing

CCD calibration frames preprocessing and data reduction scripts used for NTHUAC's LATTE observations

The LICENSE only applies to .py scripts.

Please pip install astropy astroalign scikit-image if you want to use it.

Pixel math formulas

The following are the details of pixel math operations that is done on the calibration frames and data by the processing script.

Dark (and bias)

Let $D_R[i]$ denote the raw frames and $D_M$ be the resulting (combined) master frame.

$D_M = \text{mean}(D_R)$

Downsampled dark

Additionally, the 5min dark frame is downscaled (downsampled) from 4096x4096 to 2048x2048 for use in the bin 2x2 images by local mean downscaling.

Flat (Regular flats)

These are for the flat frames that does not require special handling (band Ha/OIII).

Let $F_R[i]$ denote the raw flat frames, $D_F$ be the master dark with the corresponding exposure time, and $F_M$ be the resulting (combined) master flat frame.

$F_R^\prime[i] = F_R[i] - D_F$

$F_M = \color{blue}{\text{fix}}\color{black}(\text{mean}(F_R^\prime))$

Since the bias is included in the flat dark frames, it is not removed additionally. By $\color{blue}{\text{fix}}$ we remove dead pixel column by taking mean of local pixels.

Flat (Long-short flats)

These are flat frames that are captured with an exposure less than 10 seconds (band L/B/V/R), which may leave a artifact on images due to a slow-moving shutter curtain.

Let $F_L[i]$ denote the long flat frames, $F_S[i]$ denote the short flat frames, and $F_M$ be the resulting (combined) master flat frame.

$F_M = \color{blue}{\text{fix}}\color{black}(\text{mean}(F_L) - \text{mean}(F_S))$

The flat dark is neglated due to a rather short exposure time. Since the bias is included in the short flat frames, it is not removed additionally. By $\color{blue}{\text{fix}}$ we remove dead pixel column by taking mean of local pixels.

Downsampled flat

Additionally, the master flat frame for B, V, R is downscaled (downsampled) from 4096x4096 to 2048x2048 for use in the bin 2x2 images by local mean downscaling.

Light

Let $L_R[i]$ denote the raw light frames, $F$ denote the corresponding master flat frame, $D$ denote the corresponding master dark frame, and $L_M$ be the resulting (combined) master flat frame.

Note that the $\color{red}{\text{red}}$ part is a single number!

$L_M = \text{median}(L_R^\prime)$

Since the bias is included in the dark frames, it is not removed additionally. Also, each light frame is registered (aligned) using astroalign in prior to being combined.

About

CCD calibration frames preprocessing and data reduction scripts used for NTHUAC's LATTE observations

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages