Repository files navigation

2D Matched Filter Convolution

Cosmic String Signals

Synthetic 3D signal detection and matched-filter extraction in noisy fields.
Volumetric wake generation, SO(3) coordinate transforms, brightness temperature modeling, and correlation-based signal scoring.

CIPython 3.10+MIT Licensepip install

Overview | Quick Start | Pipeline | Architecture | Theory | References | Citation


Overview

This project implements a synthetic data generation and analysis pipeline for studying weak, structured signals embedded in high-dimensional noise fields. The system generates 3D scalar fields, embeds planar geometric features (modeled as cosmic string wakes), and evaluates detectability using statistical filtering methods against stochastic noise backgrounds.

Why This Pipeline?

Detecting faint topological signals buried in cosmological noise is a core challenge in observational cosmology and signal processing. The wake left by a cosmic string produces a temperature anisotropy in 21cm radiation that is orders of magnitude weaker than the surrounding primordial perturbations. Standard point-source detection fails here because the signal is spatially extended, geometrically structured, and non-Gaussian. This pipeline addresses the problem by combining volumetric field construction with matched-filter correlation, a technique proven in gravitational wave detection (LIGO) and adapted here for 3D cosmological data cubes.


Quick Start

git clone https://github.com/IsolatedSingularity/Cosmic-String-Signals.git
cd Cosmic-String-Signals
pip install -e .

Run the full simulation pipeline:

python "Cosmic String Extraction Statistics.py"

Run the test suite:

pip install -e ".[dev]"
python -m pytest tests/ -v

Pipeline

The simulation executes a five-stage pipeline, from universe initialization through statistical signal extraction.

1. Universe Initialization

Sets the Hubble volume, cosmological parameters ($H_0$, $\Omega_m$), and random seeds for reproducibility. Constructs the 3D lattice representing the observable volume.

2. Wake Geometry Construction

Builds a finite-length cosmic string segment and computes its wake wedge geometry as a 6-vertex convex structure in $\mathbb{R}^3$. The wake is parameterized by the string tension $G\mu$, deficit angle, string speed, and formation redshift. Arbitrary spatial orientations are applied via $SO(3)$ rotation matrices acting on the shifted vertex set.

Wake in Physical SpaceWake in Redshift Space
Wake wedge geometry in physical coordinates (Mpc)Same wake mapped to redshift space via $d(z)$

3. Temperature Field Assignment

Points inside the wake's convex hull receive a brightness temperature gradient $\delta T_b(z)$ derived from the 21cm emission model. Points outside the hull remain at ambient temperature. The convex hull membership test uses a vertex-stability method: if adding a test point does not alter the hull vertices, the point is interior.

Temperature in Physical SpaceTemperature in Redshift Space
Brightness temperature gradient within the wakeTemperature field mapped to redshift coordinates

4. Noise Embedding

Superimposes the wake signal onto a 3D $\Lambda\text{CDM}$ cosmological noise map (generated via 21cmFAST simulations). The combined data cube contains both the structured wake signal and the stochastic primordial perturbations, producing a realistic detection scenario.

Noise MapsWedge MapsCombined Maps
$\Lambda\text{CDM}$ noise slicesWake temperature slicesCombined signal + noise

5. Matched Filtering and Signal Extraction

Applies matched filtering by correlating the wake template with the observed data. The pipeline evaluates both 1D (unfolded array correlation via np.correlate) and 2D (convolution via scipy.signal.convolve2d) approaches across multiple slicing orientations to maximize the signal-to-noise ratio.

2D Match Filter1D Match Filter
2D convolution: wake-wake vs. wake-noise vs. wake-combined1D matched filter output across unfolding orientations

Architecture

cosmic_string_signals/
__init__.py # Package root, version
geometry.py # SO(3) rotations, wake wedge construction, hull checks
temperature.py # Brightness temperature models (CMB, kinetic, gas)
filtering.py # Matched filtering (1D correlation, 2D convolution, unfolding)
Cosmic String Extraction Statistics.py # Full simulation pipeline script
tests/
test_imports.py # Import smoke tests
test_geometry.py # Rotation matrices, wedge construction, hull membership
test_temperature.py # Temperature model sanity checks
test_filtering.py # Unfolding and correlation tests
Plots/ # Generated figures
Cited Literature/ # Reference papers

Tech Stack

TechnologyRole
Python 3.10+Core language
NumPyVectorized grid computation, array manipulation, correlation
SciPyConvex hull geometry, 2D signal convolution
AstropyCosmological distance-redshift conversions (Planck18)
Matplotlib3D scatter plots, 2D heatmaps, filter output visualization
pytestTest suite (20 tests)
GitHub ActionsCI across Python 3.10, 3.11, 3.12

Theory

Cosmic String Wakes and Signal Detection (click to expand)

Topological Defects

In the early universe, symmetry-breaking phase transitions can produce topologically stable defects. When a scalar field $\phi$ with potential

$$V(\phi) = \frac{1}{4}g(|\phi|^2 - \eta^2)^2$$

undergoes spontaneous symmetry breaking, the vacuum manifold $M$ may become topologically non-trivial. If $M \simeq S^1$, the first homotopy group $\pi_1(M)$ is non-trivial, ensuring the existence of stable line defects: cosmic strings.

String Tension and Wake Formation

The energy scale of symmetry breaking sets the string tension:

$$G\mu \sim \left(\frac{\eta}{M_{\text{Pl}}}\right)^2$$

As strings move at relativistic speeds, they generate planar overdensities (wakes) in the surrounding matter distribution. These wakes induce temperature anisotropies in 21cm radiation.

Brightness Temperature

The differential brightness temperature at redshift $z$ is modeled as:

$$\delta T_b(\nu) = [0.07 , \text{K}] , \frac{x_c}{1+x_c} \left(1 - \frac{T_{\gamma}(z)}{T_{K/g}(z)}\right) \sqrt{1+z}$$

where $x_c$ is the collision coupling coefficient, $T_{\gamma}(z)$ is the CMB photon temperature, and $T_{K/g}(z)$ characterizes the kinetic/gas temperature within the wake.

Matched Filtering

The signal extraction uses matched filtering, a technique widely applied in gravitational wave detection. By correlating an assumed template (wake profile) with the observed data, the method amplifies the structured signal relative to stochastic noise. Both 1D cross-correlation and 2D convolution are applied across multiple spatial orientations to identify the optimal detection axis.

Distance-Redshift Mapping

Physical coordinates are converted to redshift space via the cosmological distance-redshift relation for a flat FRW universe:

$$d(z) = \int_0^z \frac{c , dz'}{H(z')}$$

This mapping (computed numerically via astropy.cosmology) allows the wake geometry to be represented in the coordinate system most directly comparable to observations.


References

  1. Brandenberger, R. et al. - "The 21 cm Signature of Cosmic String Wakes"
  2. Maibach et al. - "Extracting the Signal of Cosmic String Wakes from 21-cm Observations"
  3. Brandenberger, R. - "Searching for Cosmic Strings in New Observational Windows"
  4. Ting et al. - "Non-Gaussianity of the 21 cm Signal"

Citation

@software{morais2022cosmicstrings,
title = {Cosmic String Signals: Synthetic 3D Signal Detection Pipeline},
author = {Morais, Jeffrey},
year = {2022},
url = {https://github.com/IsolatedSingularity/Cosmic-String-Signals}
}

See Also

ProjectDescription
TQNNTopological Quantum Neural Networks: interactive visualization toolkit
Quantum TrajectoriesNumerical PDE solver for trajectory fields
QLDPCQuantum LDPC error correction toolkit
QRiNGQuantum random number generation framework

Contact

Jeffrey Morais - Website | GitHub | LinkedIn

Questions or ideas are welcome. Open an issue or reach out directly.


License

MIT

About

Data analysis pipeline utilizing wavelet decomposition and matched-filter detection to extract target waveforms from simulated 21cm primordial noise.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

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

2D Matched Filter Convolution

Cosmic String Signals

Synthetic 3D signal detection and matched-filter extraction in noisy fields.
Volumetric wake generation, SO(3) coordinate transforms, brightness temperature modeling, and correlation-based signal scoring.

CIPython 3.10+MIT Licensepip install

Overview | Quick Start | Pipeline | Architecture | Theory | References | Citation


Overview

This project implements a synthetic data generation and analysis pipeline for studying weak, structured signals embedded in high-dimensional noise fields. The system generates 3D scalar fields, embeds planar geometric features (modeled as cosmic string wakes), and evaluates detectability using statistical filtering methods against stochastic noise backgrounds.

Why This Pipeline?

Detecting faint topological signals buried in cosmological noise is a core challenge in observational cosmology and signal processing. The wake left by a cosmic string produces a temperature anisotropy in 21cm radiation that is orders of magnitude weaker than the surrounding primordial perturbations. Standard point-source detection fails here because the signal is spatially extended, geometrically structured, and non-Gaussian. This pipeline addresses the problem by combining volumetric field construction with matched-filter correlation, a technique proven in gravitational wave detection (LIGO) and adapted here for 3D cosmological data cubes.


Quick Start

git clone https://github.com/IsolatedSingularity/Cosmic-String-Signals.git
cd Cosmic-String-Signals
pip install -e .

Run the full simulation pipeline:

python "Cosmic String Extraction Statistics.py"

Run the test suite:

pip install -e ".[dev]"
python -m pytest tests/ -v

Pipeline

The simulation executes a five-stage pipeline, from universe initialization through statistical signal extraction.

1. Universe Initialization

Sets the Hubble volume, cosmological parameters ($H_0$, $\Omega_m$), and random seeds for reproducibility. Constructs the 3D lattice representing the observable volume.

2. Wake Geometry Construction

Builds a finite-length cosmic string segment and computes its wake wedge geometry as a 6-vertex convex structure in $\mathbb{R}^3$. The wake is parameterized by the string tension $G\mu$, deficit angle, string speed, and formation redshift. Arbitrary spatial orientations are applied via $SO(3)$ rotation matrices acting on the shifted vertex set.

Wake in Physical SpaceWake in Redshift Space
Wake wedge geometry in physical coordinates (Mpc)Same wake mapped to redshift space via $d(z)$

3. Temperature Field Assignment

Points inside the wake's convex hull receive a brightness temperature gradient $\delta T_b(z)$ derived from the 21cm emission model. Points outside the hull remain at ambient temperature. The convex hull membership test uses a vertex-stability method: if adding a test point does not alter the hull vertices, the point is interior.

Temperature in Physical SpaceTemperature in Redshift Space
Brightness temperature gradient within the wakeTemperature field mapped to redshift coordinates

4. Noise Embedding

Superimposes the wake signal onto a 3D $\Lambda\text{CDM}$ cosmological noise map (generated via 21cmFAST simulations). The combined data cube contains both the structured wake signal and the stochastic primordial perturbations, producing a realistic detection scenario.

Noise MapsWedge MapsCombined Maps
$\Lambda\text{CDM}$ noise slicesWake temperature slicesCombined signal + noise

5. Matched Filtering and Signal Extraction

Applies matched filtering by correlating the wake template with the observed data. The pipeline evaluates both 1D (unfolded array correlation via np.correlate) and 2D (convolution via scipy.signal.convolve2d) approaches across multiple slicing orientations to maximize the signal-to-noise ratio.

2D Match Filter1D Match Filter
2D convolution: wake-wake vs. wake-noise vs. wake-combined1D matched filter output across unfolding orientations

Architecture

cosmic_string_signals/
__init__.py # Package root, version
geometry.py # SO(3) rotations, wake wedge construction, hull checks
temperature.py # Brightness temperature models (CMB, kinetic, gas)
filtering.py # Matched filtering (1D correlation, 2D convolution, unfolding)
Cosmic String Extraction Statistics.py # Full simulation pipeline script
tests/
test_imports.py # Import smoke tests
test_geometry.py # Rotation matrices, wedge construction, hull membership
test_temperature.py # Temperature model sanity checks
test_filtering.py # Unfolding and correlation tests
Plots/ # Generated figures
Cited Literature/ # Reference papers

Tech Stack

TechnologyRole
Python 3.10+Core language
NumPyVectorized grid computation, array manipulation, correlation
SciPyConvex hull geometry, 2D signal convolution
AstropyCosmological distance-redshift conversions (Planck18)
Matplotlib3D scatter plots, 2D heatmaps, filter output visualization
pytestTest suite (20 tests)
GitHub ActionsCI across Python 3.10, 3.11, 3.12

Theory

Cosmic String Wakes and Signal Detection (click to expand)

Topological Defects

In the early universe, symmetry-breaking phase transitions can produce topologically stable defects. When a scalar field $\phi$ with potential

$$V(\phi) = \frac{1}{4}g(|\phi|^2 - \eta^2)^2$$

undergoes spontaneous symmetry breaking, the vacuum manifold $M$ may become topologically non-trivial. If $M \simeq S^1$, the first homotopy group $\pi_1(M)$ is non-trivial, ensuring the existence of stable line defects: cosmic strings.

String Tension and Wake Formation

The energy scale of symmetry breaking sets the string tension:

$$G\mu \sim \left(\frac{\eta}{M_{\text{Pl}}}\right)^2$$

As strings move at relativistic speeds, they generate planar overdensities (wakes) in the surrounding matter distribution. These wakes induce temperature anisotropies in 21cm radiation.

Brightness Temperature

The differential brightness temperature at redshift $z$ is modeled as:

$$\delta T_b(\nu) = [0.07 , \text{K}] , \frac{x_c}{1+x_c} \left(1 - \frac{T_{\gamma}(z)}{T_{K/g}(z)}\right) \sqrt{1+z}$$

where $x_c$ is the collision coupling coefficient, $T_{\gamma}(z)$ is the CMB photon temperature, and $T_{K/g}(z)$ characterizes the kinetic/gas temperature within the wake.

Matched Filtering

The signal extraction uses matched filtering, a technique widely applied in gravitational wave detection. By correlating an assumed template (wake profile) with the observed data, the method amplifies the structured signal relative to stochastic noise. Both 1D cross-correlation and 2D convolution are applied across multiple spatial orientations to identify the optimal detection axis.

Distance-Redshift Mapping

Physical coordinates are converted to redshift space via the cosmological distance-redshift relation for a flat FRW universe:

$$d(z) = \int_0^z \frac{c , dz'}{H(z')}$$

This mapping (computed numerically via astropy.cosmology) allows the wake geometry to be represented in the coordinate system most directly comparable to observations.


References

  1. Brandenberger, R. et al. - "The 21 cm Signature of Cosmic String Wakes"
  2. Maibach et al. - "Extracting the Signal of Cosmic String Wakes from 21-cm Observations"
  3. Brandenberger, R. - "Searching for Cosmic Strings in New Observational Windows"
  4. Ting et al. - "Non-Gaussianity of the 21 cm Signal"

Citation

@software{morais2022cosmicstrings,
title = {Cosmic String Signals: Synthetic 3D Signal Detection Pipeline},
author = {Morais, Jeffrey},
year = {2022},
url = {https://github.com/IsolatedSingularity/Cosmic-String-Signals}
}

See Also

ProjectDescription
TQNNTopological Quantum Neural Networks: interactive visualization toolkit
Quantum TrajectoriesNumerical PDE solver for trajectory fields
QLDPCQuantum LDPC error correction toolkit
QRiNGQuantum random number generation framework

Contact

Jeffrey Morais - Website | GitHub | LinkedIn

Questions or ideas are welcome. Open an issue or reach out directly.


License

MIT

About

Data analysis pipeline utilizing wavelet decomposition and matched-filter detection to extract target waveforms from simulated 21cm primordial noise.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

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

2D Matched Filter Convolution

Cosmic String Signals

Synthetic 3D signal detection and matched-filter extraction in noisy fields.
Volumetric wake generation, SO(3) coordinate transforms, brightness temperature modeling, and correlation-based signal scoring.

CIPython 3.10+MIT Licensepip install

Overview | Quick Start | Pipeline | Architecture | Theory | References | Citation


Overview

This project implements a synthetic data generation and analysis pipeline for studying weak, structured signals embedded in high-dimensional noise fields. The system generates 3D scalar fields, embeds planar geometric features (modeled as cosmic string wakes), and evaluates detectability using statistical filtering methods against stochastic noise backgrounds.

Why This Pipeline?

Detecting faint topological signals buried in cosmological noise is a core challenge in observational cosmology and signal processing. The wake left by a cosmic string produces a temperature anisotropy in 21cm radiation that is orders of magnitude weaker than the surrounding primordial perturbations. Standard point-source detection fails here because the signal is spatially extended, geometrically structured, and non-Gaussian. This pipeline addresses the problem by combining volumetric field construction with matched-filter correlation, a technique proven in gravitational wave detection (LIGO) and adapted here for 3D cosmological data cubes.


Quick Start

git clone https://github.com/IsolatedSingularity/Cosmic-String-Signals.git
cd Cosmic-String-Signals
pip install -e .

Run the full simulation pipeline:

python "Cosmic String Extraction Statistics.py"

Run the test suite:

pip install -e ".[dev]"
python -m pytest tests/ -v

Pipeline

The simulation executes a five-stage pipeline, from universe initialization through statistical signal extraction.

1. Universe Initialization

Sets the Hubble volume, cosmological parameters ($H_0$, $\Omega_m$), and random seeds for reproducibility. Constructs the 3D lattice representing the observable volume.

2. Wake Geometry Construction

Builds a finite-length cosmic string segment and computes its wake wedge geometry as a 6-vertex convex structure in $\mathbb{R}^3$. The wake is parameterized by the string tension $G\mu$, deficit angle, string speed, and formation redshift. Arbitrary spatial orientations are applied via $SO(3)$ rotation matrices acting on the shifted vertex set.

Wake in Physical SpaceWake in Redshift Space
Wake wedge geometry in physical coordinates (Mpc)Same wake mapped to redshift space via $d(z)$

3. Temperature Field Assignment

Points inside the wake's convex hull receive a brightness temperature gradient $\delta T_b(z)$ derived from the 21cm emission model. Points outside the hull remain at ambient temperature. The convex hull membership test uses a vertex-stability method: if adding a test point does not alter the hull vertices, the point is interior.

Temperature in Physical SpaceTemperature in Redshift Space
Brightness temperature gradient within the wakeTemperature field mapped to redshift coordinates

4. Noise Embedding

Superimposes the wake signal onto a 3D $\Lambda\text{CDM}$ cosmological noise map (generated via 21cmFAST simulations). The combined data cube contains both the structured wake signal and the stochastic primordial perturbations, producing a realistic detection scenario.

Noise MapsWedge MapsCombined Maps
$\Lambda\text{CDM}$ noise slicesWake temperature slicesCombined signal + noise

5. Matched Filtering and Signal Extraction

Applies matched filtering by correlating the wake template with the observed data. The pipeline evaluates both 1D (unfolded array correlation via np.correlate) and 2D (convolution via scipy.signal.convolve2d) approaches across multiple slicing orientations to maximize the signal-to-noise ratio.

2D Match Filter1D Match Filter
2D convolution: wake-wake vs. wake-noise vs. wake-combined1D matched filter output across unfolding orientations

Architecture

cosmic_string_signals/
__init__.py # Package root, version
geometry.py # SO(3) rotations, wake wedge construction, hull checks
temperature.py # Brightness temperature models (CMB, kinetic, gas)
filtering.py # Matched filtering (1D correlation, 2D convolution, unfolding)
Cosmic String Extraction Statistics.py # Full simulation pipeline script
tests/
test_imports.py # Import smoke tests
test_geometry.py # Rotation matrices, wedge construction, hull membership
test_temperature.py # Temperature model sanity checks
test_filtering.py # Unfolding and correlation tests
Plots/ # Generated figures
Cited Literature/ # Reference papers

Tech Stack

TechnologyRole
Python 3.10+Core language
NumPyVectorized grid computation, array manipulation, correlation
SciPyConvex hull geometry, 2D signal convolution
AstropyCosmological distance-redshift conversions (Planck18)
Matplotlib3D scatter plots, 2D heatmaps, filter output visualization
pytestTest suite (20 tests)
GitHub ActionsCI across Python 3.10, 3.11, 3.12

Theory

Cosmic String Wakes and Signal Detection (click to expand)

Topological Defects

In the early universe, symmetry-breaking phase transitions can produce topologically stable defects. When a scalar field $\phi$ with potential

$$V(\phi) = \frac{1}{4}g(|\phi|^2 - \eta^2)^2$$

undergoes spontaneous symmetry breaking, the vacuum manifold $M$ may become topologically non-trivial. If $M \simeq S^1$, the first homotopy group $\pi_1(M)$ is non-trivial, ensuring the existence of stable line defects: cosmic strings.

String Tension and Wake Formation

The energy scale of symmetry breaking sets the string tension:

$$G\mu \sim \left(\frac{\eta}{M_{\text{Pl}}}\right)^2$$

As strings move at relativistic speeds, they generate planar overdensities (wakes) in the surrounding matter distribution. These wakes induce temperature anisotropies in 21cm radiation.

Brightness Temperature

The differential brightness temperature at redshift $z$ is modeled as:

$$\delta T_b(\nu) = [0.07 , \text{K}] , \frac{x_c}{1+x_c} \left(1 - \frac{T_{\gamma}(z)}{T_{K/g}(z)}\right) \sqrt{1+z}$$

where $x_c$ is the collision coupling coefficient, $T_{\gamma}(z)$ is the CMB photon temperature, and $T_{K/g}(z)$ characterizes the kinetic/gas temperature within the wake.

Matched Filtering

The signal extraction uses matched filtering, a technique widely applied in gravitational wave detection. By correlating an assumed template (wake profile) with the observed data, the method amplifies the structured signal relative to stochastic noise. Both 1D cross-correlation and 2D convolution are applied across multiple spatial orientations to identify the optimal detection axis.

Distance-Redshift Mapping

Physical coordinates are converted to redshift space via the cosmological distance-redshift relation for a flat FRW universe:

$$d(z) = \int_0^z \frac{c , dz'}{H(z')}$$

This mapping (computed numerically via astropy.cosmology) allows the wake geometry to be represented in the coordinate system most directly comparable to observations.


References

  1. Brandenberger, R. et al. - "The 21 cm Signature of Cosmic String Wakes"
  2. Maibach et al. - "Extracting the Signal of Cosmic String Wakes from 21-cm Observations"
  3. Brandenberger, R. - "Searching for Cosmic Strings in New Observational Windows"
  4. Ting et al. - "Non-Gaussianity of the 21 cm Signal"

Citation

@software{morais2022cosmicstrings,
title = {Cosmic String Signals: Synthetic 3D Signal Detection Pipeline},
author = {Morais, Jeffrey},
year = {2022},
url = {https://github.com/IsolatedSingularity/Cosmic-String-Signals}
}

See Also

ProjectDescription
TQNNTopological Quantum Neural Networks: interactive visualization toolkit
Quantum TrajectoriesNumerical PDE solver for trajectory fields
QLDPCQuantum LDPC error correction toolkit
QRiNGQuantum random number generation framework

Contact

Jeffrey Morais - Website | GitHub | LinkedIn

Questions or ideas are welcome. Open an issue or reach out directly.


License

MIT

About

Data analysis pipeline utilizing wavelet decomposition and matched-filter detection to extract target waveforms from simulated 21cm primordial noise.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

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

2D Matched Filter Convolution

Cosmic String Signals

Synthetic 3D signal detection and matched-filter extraction in noisy fields.
Volumetric wake generation, SO(3) coordinate transforms, brightness temperature modeling, and correlation-based signal scoring.

CIPython 3.10+MIT Licensepip install

Overview | Quick Start | Pipeline | Architecture | Theory | References | Citation


Overview

This project implements a synthetic data generation and analysis pipeline for studying weak, structured signals embedded in high-dimensional noise fields. The system generates 3D scalar fields, embeds planar geometric features (modeled as cosmic string wakes), and evaluates detectability using statistical filtering methods against stochastic noise backgrounds.

Why This Pipeline?

Detecting faint topological signals buried in cosmological noise is a core challenge in observational cosmology and signal processing. The wake left by a cosmic string produces a temperature anisotropy in 21cm radiation that is orders of magnitude weaker than the surrounding primordial perturbations. Standard point-source detection fails here because the signal is spatially extended, geometrically structured, and non-Gaussian. This pipeline addresses the problem by combining volumetric field construction with matched-filter correlation, a technique proven in gravitational wave detection (LIGO) and adapted here for 3D cosmological data cubes.


Quick Start

git clone https://github.com/IsolatedSingularity/Cosmic-String-Signals.git
cd Cosmic-String-Signals
pip install -e .

Run the full simulation pipeline:

python "Cosmic String Extraction Statistics.py"

Run the test suite:

pip install -e ".[dev]"
python -m pytest tests/ -v

Pipeline

The simulation executes a five-stage pipeline, from universe initialization through statistical signal extraction.

1. Universe Initialization

Sets the Hubble volume, cosmological parameters ($H_0$, $\Omega_m$), and random seeds for reproducibility. Constructs the 3D lattice representing the observable volume.

2. Wake Geometry Construction

Builds a finite-length cosmic string segment and computes its wake wedge geometry as a 6-vertex convex structure in $\mathbb{R}^3$. The wake is parameterized by the string tension $G\mu$, deficit angle, string speed, and formation redshift. Arbitrary spatial orientations are applied via $SO(3)$ rotation matrices acting on the shifted vertex set.

Wake in Physical SpaceWake in Redshift Space
Wake wedge geometry in physical coordinates (Mpc)Same wake mapped to redshift space via $d(z)$

3. Temperature Field Assignment

Points inside the wake's convex hull receive a brightness temperature gradient $\delta T_b(z)$ derived from the 21cm emission model. Points outside the hull remain at ambient temperature. The convex hull membership test uses a vertex-stability method: if adding a test point does not alter the hull vertices, the point is interior.

Temperature in Physical SpaceTemperature in Redshift Space
Brightness temperature gradient within the wakeTemperature field mapped to redshift coordinates

4. Noise Embedding

Superimposes the wake signal onto a 3D $\Lambda\text{CDM}$ cosmological noise map (generated via 21cmFAST simulations). The combined data cube contains both the structured wake signal and the stochastic primordial perturbations, producing a realistic detection scenario.

Noise MapsWedge MapsCombined Maps
$\Lambda\text{CDM}$ noise slicesWake temperature slicesCombined signal + noise

5. Matched Filtering and Signal Extraction

Applies matched filtering by correlating the wake template with the observed data. The pipeline evaluates both 1D (unfolded array correlation via np.correlate) and 2D (convolution via scipy.signal.convolve2d) approaches across multiple slicing orientations to maximize the signal-to-noise ratio.

2D Match Filter1D Match Filter
2D convolution: wake-wake vs. wake-noise vs. wake-combined1D matched filter output across unfolding orientations

Architecture

cosmic_string_signals/
__init__.py # Package root, version
geometry.py # SO(3) rotations, wake wedge construction, hull checks
temperature.py # Brightness temperature models (CMB, kinetic, gas)
filtering.py # Matched filtering (1D correlation, 2D convolution, unfolding)
Cosmic String Extraction Statistics.py # Full simulation pipeline script
tests/
test_imports.py # Import smoke tests
test_geometry.py # Rotation matrices, wedge construction, hull membership
test_temperature.py # Temperature model sanity checks
test_filtering.py # Unfolding and correlation tests
Plots/ # Generated figures
Cited Literature/ # Reference papers

Tech Stack

TechnologyRole
Python 3.10+Core language
NumPyVectorized grid computation, array manipulation, correlation
SciPyConvex hull geometry, 2D signal convolution
AstropyCosmological distance-redshift conversions (Planck18)
Matplotlib3D scatter plots, 2D heatmaps, filter output visualization
pytestTest suite (20 tests)
GitHub ActionsCI across Python 3.10, 3.11, 3.12

Theory

Cosmic String Wakes and Signal Detection (click to expand)

Topological Defects

In the early universe, symmetry-breaking phase transitions can produce topologically stable defects. When a scalar field $\phi$ with potential

$$V(\phi) = \frac{1}{4}g(|\phi|^2 - \eta^2)^2$$

undergoes spontaneous symmetry breaking, the vacuum manifold $M$ may become topologically non-trivial. If $M \simeq S^1$, the first homotopy group $\pi_1(M)$ is non-trivial, ensuring the existence of stable line defects: cosmic strings.

String Tension and Wake Formation

The energy scale of symmetry breaking sets the string tension:

$$G\mu \sim \left(\frac{\eta}{M_{\text{Pl}}}\right)^2$$

As strings move at relativistic speeds, they generate planar overdensities (wakes) in the surrounding matter distribution. These wakes induce temperature anisotropies in 21cm radiation.

Brightness Temperature

The differential brightness temperature at redshift $z$ is modeled as:

$$\delta T_b(\nu) = [0.07 , \text{K}] , \frac{x_c}{1+x_c} \left(1 - \frac{T_{\gamma}(z)}{T_{K/g}(z)}\right) \sqrt{1+z}$$

where $x_c$ is the collision coupling coefficient, $T_{\gamma}(z)$ is the CMB photon temperature, and $T_{K/g}(z)$ characterizes the kinetic/gas temperature within the wake.

Matched Filtering

The signal extraction uses matched filtering, a technique widely applied in gravitational wave detection. By correlating an assumed template (wake profile) with the observed data, the method amplifies the structured signal relative to stochastic noise. Both 1D cross-correlation and 2D convolution are applied across multiple spatial orientations to identify the optimal detection axis.

Distance-Redshift Mapping

Physical coordinates are converted to redshift space via the cosmological distance-redshift relation for a flat FRW universe:

$$d(z) = \int_0^z \frac{c , dz'}{H(z')}$$

This mapping (computed numerically via astropy.cosmology) allows the wake geometry to be represented in the coordinate system most directly comparable to observations.


References

  1. Brandenberger, R. et al. - "The 21 cm Signature of Cosmic String Wakes"
  2. Maibach et al. - "Extracting the Signal of Cosmic String Wakes from 21-cm Observations"
  3. Brandenberger, R. - "Searching for Cosmic Strings in New Observational Windows"
  4. Ting et al. - "Non-Gaussianity of the 21 cm Signal"

Citation

@software{morais2022cosmicstrings,
title = {Cosmic String Signals: Synthetic 3D Signal Detection Pipeline},
author = {Morais, Jeffrey},
year = {2022},
url = {https://github.com/IsolatedSingularity/Cosmic-String-Signals}
}

See Also

ProjectDescription
TQNNTopological Quantum Neural Networks: interactive visualization toolkit
Quantum TrajectoriesNumerical PDE solver for trajectory fields
QLDPCQuantum LDPC error correction toolkit
QRiNGQuantum random number generation framework

Contact

Jeffrey Morais - Website | GitHub | LinkedIn

Questions or ideas are welcome. Open an issue or reach out directly.


License

MIT

About

Data analysis pipeline utilizing wavelet decomposition and matched-filter detection to extract target waveforms from simulated 21cm primordial noise.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

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

2D Matched Filter Convolution

Cosmic String Signals

Synthetic 3D signal detection and matched-filter extraction in noisy fields.
Volumetric wake generation, SO(3) coordinate transforms, brightness temperature modeling, and correlation-based signal scoring.

CIPython 3.10+MIT Licensepip install

Overview | Quick Start | Pipeline | Architecture | Theory | References | Citation


Overview

This project implements a synthetic data generation and analysis pipeline for studying weak, structured signals embedded in high-dimensional noise fields. The system generates 3D scalar fields, embeds planar geometric features (modeled as cosmic string wakes), and evaluates detectability using statistical filtering methods against stochastic noise backgrounds.

Why This Pipeline?

Detecting faint topological signals buried in cosmological noise is a core challenge in observational cosmology and signal processing. The wake left by a cosmic string produces a temperature anisotropy in 21cm radiation that is orders of magnitude weaker than the surrounding primordial perturbations. Standard point-source detection fails here because the signal is spatially extended, geometrically structured, and non-Gaussian. This pipeline addresses the problem by combining volumetric field construction with matched-filter correlation, a technique proven in gravitational wave detection (LIGO) and adapted here for 3D cosmological data cubes.


Quick Start

git clone https://github.com/IsolatedSingularity/Cosmic-String-Signals.git
cd Cosmic-String-Signals
pip install -e .

Run the full simulation pipeline:

python "Cosmic String Extraction Statistics.py"

Run the test suite:

pip install -e ".[dev]"
python -m pytest tests/ -v

Pipeline

The simulation executes a five-stage pipeline, from universe initialization through statistical signal extraction.

1. Universe Initialization

Sets the Hubble volume, cosmological parameters ($H_0$, $\Omega_m$), and random seeds for reproducibility. Constructs the 3D lattice representing the observable volume.

2. Wake Geometry Construction

Builds a finite-length cosmic string segment and computes its wake wedge geometry as a 6-vertex convex structure in $\mathbb{R}^3$. The wake is parameterized by the string tension $G\mu$, deficit angle, string speed, and formation redshift. Arbitrary spatial orientations are applied via $SO(3)$ rotation matrices acting on the shifted vertex set.

Wake in Physical SpaceWake in Redshift Space
Wake wedge geometry in physical coordinates (Mpc)Same wake mapped to redshift space via $d(z)$

3. Temperature Field Assignment

Points inside the wake's convex hull receive a brightness temperature gradient $\delta T_b(z)$ derived from the 21cm emission model. Points outside the hull remain at ambient temperature. The convex hull membership test uses a vertex-stability method: if adding a test point does not alter the hull vertices, the point is interior.

Temperature in Physical SpaceTemperature in Redshift Space
Brightness temperature gradient within the wakeTemperature field mapped to redshift coordinates

4. Noise Embedding

Superimposes the wake signal onto a 3D $\Lambda\text{CDM}$ cosmological noise map (generated via 21cmFAST simulations). The combined data cube contains both the structured wake signal and the stochastic primordial perturbations, producing a realistic detection scenario.

Noise MapsWedge MapsCombined Maps
$\Lambda\text{CDM}$ noise slicesWake temperature slicesCombined signal + noise

5. Matched Filtering and Signal Extraction

Applies matched filtering by correlating the wake template with the observed data. The pipeline evaluates both 1D (unfolded array correlation via np.correlate) and 2D (convolution via scipy.signal.convolve2d) approaches across multiple slicing orientations to maximize the signal-to-noise ratio.

2D Match Filter1D Match Filter
2D convolution: wake-wake vs. wake-noise vs. wake-combined1D matched filter output across unfolding orientations

Architecture

cosmic_string_signals/
__init__.py # Package root, version
geometry.py # SO(3) rotations, wake wedge construction, hull checks
temperature.py # Brightness temperature models (CMB, kinetic, gas)
filtering.py # Matched filtering (1D correlation, 2D convolution, unfolding)
Cosmic String Extraction Statistics.py # Full simulation pipeline script
tests/
test_imports.py # Import smoke tests
test_geometry.py # Rotation matrices, wedge construction, hull membership
test_temperature.py # Temperature model sanity checks
test_filtering.py # Unfolding and correlation tests
Plots/ # Generated figures
Cited Literature/ # Reference papers

Tech Stack

TechnologyRole
Python 3.10+Core language
NumPyVectorized grid computation, array manipulation, correlation
SciPyConvex hull geometry, 2D signal convolution
AstropyCosmological distance-redshift conversions (Planck18)
Matplotlib3D scatter plots, 2D heatmaps, filter output visualization
pytestTest suite (20 tests)
GitHub ActionsCI across Python 3.10, 3.11, 3.12

Theory

Cosmic String Wakes and Signal Detection (click to expand)

Topological Defects

In the early universe, symmetry-breaking phase transitions can produce topologically stable defects. When a scalar field $\phi$ with potential

$$V(\phi) = \frac{1}{4}g(|\phi|^2 - \eta^2)^2$$

undergoes spontaneous symmetry breaking, the vacuum manifold $M$ may become topologically non-trivial. If $M \simeq S^1$, the first homotopy group $\pi_1(M)$ is non-trivial, ensuring the existence of stable line defects: cosmic strings.

String Tension and Wake Formation

The energy scale of symmetry breaking sets the string tension:

$$G\mu \sim \left(\frac{\eta}{M_{\text{Pl}}}\right)^2$$

As strings move at relativistic speeds, they generate planar overdensities (wakes) in the surrounding matter distribution. These wakes induce temperature anisotropies in 21cm radiation.

Brightness Temperature

The differential brightness temperature at redshift $z$ is modeled as:

$$\delta T_b(\nu) = [0.07 , \text{K}] , \frac{x_c}{1+x_c} \left(1 - \frac{T_{\gamma}(z)}{T_{K/g}(z)}\right) \sqrt{1+z}$$

where $x_c$ is the collision coupling coefficient, $T_{\gamma}(z)$ is the CMB photon temperature, and $T_{K/g}(z)$ characterizes the kinetic/gas temperature within the wake.

Matched Filtering

The signal extraction uses matched filtering, a technique widely applied in gravitational wave detection. By correlating an assumed template (wake profile) with the observed data, the method amplifies the structured signal relative to stochastic noise. Both 1D cross-correlation and 2D convolution are applied across multiple spatial orientations to identify the optimal detection axis.

Distance-Redshift Mapping

Physical coordinates are converted to redshift space via the cosmological distance-redshift relation for a flat FRW universe:

$$d(z) = \int_0^z \frac{c , dz'}{H(z')}$$

This mapping (computed numerically via astropy.cosmology) allows the wake geometry to be represented in the coordinate system most directly comparable to observations.


References

  1. Brandenberger, R. et al. - "The 21 cm Signature of Cosmic String Wakes"
  2. Maibach et al. - "Extracting the Signal of Cosmic String Wakes from 21-cm Observations"
  3. Brandenberger, R. - "Searching for Cosmic Strings in New Observational Windows"
  4. Ting et al. - "Non-Gaussianity of the 21 cm Signal"

Citation

@software{morais2022cosmicstrings,
title = {Cosmic String Signals: Synthetic 3D Signal Detection Pipeline},
author = {Morais, Jeffrey},
year = {2022},
url = {https://github.com/IsolatedSingularity/Cosmic-String-Signals}
}

See Also

ProjectDescription
TQNNTopological Quantum Neural Networks: interactive visualization toolkit
Quantum TrajectoriesNumerical PDE solver for trajectory fields
QLDPCQuantum LDPC error correction toolkit
QRiNGQuantum random number generation framework

Contact

Jeffrey Morais - Website | GitHub | LinkedIn

Questions or ideas are welcome. Open an issue or reach out directly.


License

MIT

About

Data analysis pipeline utilizing wavelet decomposition and matched-filter detection to extract target waveforms from simulated 21cm primordial noise.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

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

2D Matched Filter Convolution

Cosmic String Signals

Synthetic 3D signal detection and matched-filter extraction in noisy fields.
Volumetric wake generation, SO(3) coordinate transforms, brightness temperature modeling, and correlation-based signal scoring.

CIPython 3.10+MIT Licensepip install

Overview | Quick Start | Pipeline | Architecture | Theory | References | Citation


Overview

This project implements a synthetic data generation and analysis pipeline for studying weak, structured signals embedded in high-dimensional noise fields. The system generates 3D scalar fields, embeds planar geometric features (modeled as cosmic string wakes), and evaluates detectability using statistical filtering methods against stochastic noise backgrounds.

Why This Pipeline?

Detecting faint topological signals buried in cosmological noise is a core challenge in observational cosmology and signal processing. The wake left by a cosmic string produces a temperature anisotropy in 21cm radiation that is orders of magnitude weaker than the surrounding primordial perturbations. Standard point-source detection fails here because the signal is spatially extended, geometrically structured, and non-Gaussian. This pipeline addresses the problem by combining volumetric field construction with matched-filter correlation, a technique proven in gravitational wave detection (LIGO) and adapted here for 3D cosmological data cubes.


Quick Start

git clone https://github.com/IsolatedSingularity/Cosmic-String-Signals.git
cd Cosmic-String-Signals
pip install -e .

Run the full simulation pipeline:

python "Cosmic String Extraction Statistics.py"

Run the test suite:

pip install -e ".[dev]"
python -m pytest tests/ -v

Pipeline

The simulation executes a five-stage pipeline, from universe initialization through statistical signal extraction.

1. Universe Initialization

Sets the Hubble volume, cosmological parameters ($H_0$, $\Omega_m$), and random seeds for reproducibility. Constructs the 3D lattice representing the observable volume.

2. Wake Geometry Construction

Builds a finite-length cosmic string segment and computes its wake wedge geometry as a 6-vertex convex structure in $\mathbb{R}^3$. The wake is parameterized by the string tension $G\mu$, deficit angle, string speed, and formation redshift. Arbitrary spatial orientations are applied via $SO(3)$ rotation matrices acting on the shifted vertex set.

Wake in Physical SpaceWake in Redshift Space
Wake wedge geometry in physical coordinates (Mpc)Same wake mapped to redshift space via $d(z)$

3. Temperature Field Assignment

Points inside the wake's convex hull receive a brightness temperature gradient $\delta T_b(z)$ derived from the 21cm emission model. Points outside the hull remain at ambient temperature. The convex hull membership test uses a vertex-stability method: if adding a test point does not alter the hull vertices, the point is interior.

Temperature in Physical SpaceTemperature in Redshift Space
Brightness temperature gradient within the wakeTemperature field mapped to redshift coordinates

4. Noise Embedding

Superimposes the wake signal onto a 3D $\Lambda\text{CDM}$ cosmological noise map (generated via 21cmFAST simulations). The combined data cube contains both the structured wake signal and the stochastic primordial perturbations, producing a realistic detection scenario.

Noise MapsWedge MapsCombined Maps
$\Lambda\text{CDM}$ noise slicesWake temperature slicesCombined signal + noise

5. Matched Filtering and Signal Extraction

Applies matched filtering by correlating the wake template with the observed data. The pipeline evaluates both 1D (unfolded array correlation via np.correlate) and 2D (convolution via scipy.signal.convolve2d) approaches across multiple slicing orientations to maximize the signal-to-noise ratio.

2D Match Filter1D Match Filter
2D convolution: wake-wake vs. wake-noise vs. wake-combined1D matched filter output across unfolding orientations

Architecture

cosmic_string_signals/
__init__.py # Package root, version
geometry.py # SO(3) rotations, wake wedge construction, hull checks
temperature.py # Brightness temperature models (CMB, kinetic, gas)
filtering.py # Matched filtering (1D correlation, 2D convolution, unfolding)
Cosmic String Extraction Statistics.py # Full simulation pipeline script
tests/
test_imports.py # Import smoke tests
test_geometry.py # Rotation matrices, wedge construction, hull membership
test_temperature.py # Temperature model sanity checks
test_filtering.py # Unfolding and correlation tests
Plots/ # Generated figures
Cited Literature/ # Reference papers

Tech Stack

TechnologyRole
Python 3.10+Core language
NumPyVectorized grid computation, array manipulation, correlation
SciPyConvex hull geometry, 2D signal convolution
AstropyCosmological distance-redshift conversions (Planck18)
Matplotlib3D scatter plots, 2D heatmaps, filter output visualization
pytestTest suite (20 tests)
GitHub ActionsCI across Python 3.10, 3.11, 3.12

Theory

Cosmic String Wakes and Signal Detection (click to expand)

Topological Defects

In the early universe, symmetry-breaking phase transitions can produce topologically stable defects. When a scalar field $\phi$ with potential

$$V(\phi) = \frac{1}{4}g(|\phi|^2 - \eta^2)^2$$

undergoes spontaneous symmetry breaking, the vacuum manifold $M$ may become topologically non-trivial. If $M \simeq S^1$, the first homotopy group $\pi_1(M)$ is non-trivial, ensuring the existence of stable line defects: cosmic strings.

String Tension and Wake Formation

The energy scale of symmetry breaking sets the string tension:

$$G\mu \sim \left(\frac{\eta}{M_{\text{Pl}}}\right)^2$$

As strings move at relativistic speeds, they generate planar overdensities (wakes) in the surrounding matter distribution. These wakes induce temperature anisotropies in 21cm radiation.

Brightness Temperature

The differential brightness temperature at redshift $z$ is modeled as:

$$\delta T_b(\nu) = [0.07 , \text{K}] , \frac{x_c}{1+x_c} \left(1 - \frac{T_{\gamma}(z)}{T_{K/g}(z)}\right) \sqrt{1+z}$$

where $x_c$ is the collision coupling coefficient, $T_{\gamma}(z)$ is the CMB photon temperature, and $T_{K/g}(z)$ characterizes the kinetic/gas temperature within the wake.

Matched Filtering

The signal extraction uses matched filtering, a technique widely applied in gravitational wave detection. By correlating an assumed template (wake profile) with the observed data, the method amplifies the structured signal relative to stochastic noise. Both 1D cross-correlation and 2D convolution are applied across multiple spatial orientations to identify the optimal detection axis.

Distance-Redshift Mapping

Physical coordinates are converted to redshift space via the cosmological distance-redshift relation for a flat FRW universe:

$$d(z) = \int_0^z \frac{c , dz'}{H(z')}$$

This mapping (computed numerically via astropy.cosmology) allows the wake geometry to be represented in the coordinate system most directly comparable to observations.


References

  1. Brandenberger, R. et al. - "The 21 cm Signature of Cosmic String Wakes"
  2. Maibach et al. - "Extracting the Signal of Cosmic String Wakes from 21-cm Observations"
  3. Brandenberger, R. - "Searching for Cosmic Strings in New Observational Windows"
  4. Ting et al. - "Non-Gaussianity of the 21 cm Signal"

Citation

@software{morais2022cosmicstrings,
title = {Cosmic String Signals: Synthetic 3D Signal Detection Pipeline},
author = {Morais, Jeffrey},
year = {2022},
url = {https://github.com/IsolatedSingularity/Cosmic-String-Signals}
}

See Also

ProjectDescription
TQNNTopological Quantum Neural Networks: interactive visualization toolkit
Quantum TrajectoriesNumerical PDE solver for trajectory fields
QLDPCQuantum LDPC error correction toolkit
QRiNGQuantum random number generation framework

Contact

Jeffrey Morais - Website | GitHub | LinkedIn

Questions or ideas are welcome. Open an issue or reach out directly.


License

MIT

About

Data analysis pipeline utilizing wavelet decomposition and matched-filter detection to extract target waveforms from simulated 21cm primordial noise.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

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

2D Matched Filter Convolution

Cosmic String Signals

Synthetic 3D signal detection and matched-filter extraction in noisy fields.
Volumetric wake generation, SO(3) coordinate transforms, brightness temperature modeling, and correlation-based signal scoring.

CIPython 3.10+MIT Licensepip install

Overview | Quick Start | Pipeline | Architecture | Theory | References | Citation


Overview

This project implements a synthetic data generation and analysis pipeline for studying weak, structured signals embedded in high-dimensional noise fields. The system generates 3D scalar fields, embeds planar geometric features (modeled as cosmic string wakes), and evaluates detectability using statistical filtering methods against stochastic noise backgrounds.

Why This Pipeline?

Detecting faint topological signals buried in cosmological noise is a core challenge in observational cosmology and signal processing. The wake left by a cosmic string produces a temperature anisotropy in 21cm radiation that is orders of magnitude weaker than the surrounding primordial perturbations. Standard point-source detection fails here because the signal is spatially extended, geometrically structured, and non-Gaussian. This pipeline addresses the problem by combining volumetric field construction with matched-filter correlation, a technique proven in gravitational wave detection (LIGO) and adapted here for 3D cosmological data cubes.


Quick Start

git clone https://github.com/IsolatedSingularity/Cosmic-String-Signals.git
cd Cosmic-String-Signals
pip install -e .

Run the full simulation pipeline:

python "Cosmic String Extraction Statistics.py"

Run the test suite:

pip install -e ".[dev]"
python -m pytest tests/ -v

Pipeline

The simulation executes a five-stage pipeline, from universe initialization through statistical signal extraction.

1. Universe Initialization

Sets the Hubble volume, cosmological parameters ($H_0$, $\Omega_m$), and random seeds for reproducibility. Constructs the 3D lattice representing the observable volume.

2. Wake Geometry Construction

Builds a finite-length cosmic string segment and computes its wake wedge geometry as a 6-vertex convex structure in $\mathbb{R}^3$. The wake is parameterized by the string tension $G\mu$, deficit angle, string speed, and formation redshift. Arbitrary spatial orientations are applied via $SO(3)$ rotation matrices acting on the shifted vertex set.

Wake in Physical SpaceWake in Redshift Space
Wake wedge geometry in physical coordinates (Mpc)Same wake mapped to redshift space via $d(z)$

3. Temperature Field Assignment

Points inside the wake's convex hull receive a brightness temperature gradient $\delta T_b(z)$ derived from the 21cm emission model. Points outside the hull remain at ambient temperature. The convex hull membership test uses a vertex-stability method: if adding a test point does not alter the hull vertices, the point is interior.

Temperature in Physical SpaceTemperature in Redshift Space
Brightness temperature gradient within the wakeTemperature field mapped to redshift coordinates

4. Noise Embedding

Superimposes the wake signal onto a 3D $\Lambda\text{CDM}$ cosmological noise map (generated via 21cmFAST simulations). The combined data cube contains both the structured wake signal and the stochastic primordial perturbations, producing a realistic detection scenario.

Noise MapsWedge MapsCombined Maps
$\Lambda\text{CDM}$ noise slicesWake temperature slicesCombined signal + noise

5. Matched Filtering and Signal Extraction

Applies matched filtering by correlating the wake template with the observed data. The pipeline evaluates both 1D (unfolded array correlation via np.correlate) and 2D (convolution via scipy.signal.convolve2d) approaches across multiple slicing orientations to maximize the signal-to-noise ratio.

2D Match Filter1D Match Filter
2D convolution: wake-wake vs. wake-noise vs. wake-combined1D matched filter output across unfolding orientations

Architecture

cosmic_string_signals/
__init__.py # Package root, version
geometry.py # SO(3) rotations, wake wedge construction, hull checks
temperature.py # Brightness temperature models (CMB, kinetic, gas)
filtering.py # Matched filtering (1D correlation, 2D convolution, unfolding)
Cosmic String Extraction Statistics.py # Full simulation pipeline script
tests/
test_imports.py # Import smoke tests
test_geometry.py # Rotation matrices, wedge construction, hull membership
test_temperature.py # Temperature model sanity checks
test_filtering.py # Unfolding and correlation tests
Plots/ # Generated figures
Cited Literature/ # Reference papers

Tech Stack

TechnologyRole
Python 3.10+Core language
NumPyVectorized grid computation, array manipulation, correlation
SciPyConvex hull geometry, 2D signal convolution
AstropyCosmological distance-redshift conversions (Planck18)
Matplotlib3D scatter plots, 2D heatmaps, filter output visualization
pytestTest suite (20 tests)
GitHub ActionsCI across Python 3.10, 3.11, 3.12

Theory

Cosmic String Wakes and Signal Detection (click to expand)

Topological Defects

In the early universe, symmetry-breaking phase transitions can produce topologically stable defects. When a scalar field $\phi$ with potential

$$V(\phi) = \frac{1}{4}g(|\phi|^2 - \eta^2)^2$$

undergoes spontaneous symmetry breaking, the vacuum manifold $M$ may become topologically non-trivial. If $M \simeq S^1$, the first homotopy group $\pi_1(M)$ is non-trivial, ensuring the existence of stable line defects: cosmic strings.

String Tension and Wake Formation

The energy scale of symmetry breaking sets the string tension:

$$G\mu \sim \left(\frac{\eta}{M_{\text{Pl}}}\right)^2$$

As strings move at relativistic speeds, they generate planar overdensities (wakes) in the surrounding matter distribution. These wakes induce temperature anisotropies in 21cm radiation.

Brightness Temperature

The differential brightness temperature at redshift $z$ is modeled as:

$$\delta T_b(\nu) = [0.07 , \text{K}] , \frac{x_c}{1+x_c} \left(1 - \frac{T_{\gamma}(z)}{T_{K/g}(z)}\right) \sqrt{1+z}$$

where $x_c$ is the collision coupling coefficient, $T_{\gamma}(z)$ is the CMB photon temperature, and $T_{K/g}(z)$ characterizes the kinetic/gas temperature within the wake.

Matched Filtering

The signal extraction uses matched filtering, a technique widely applied in gravitational wave detection. By correlating an assumed template (wake profile) with the observed data, the method amplifies the structured signal relative to stochastic noise. Both 1D cross-correlation and 2D convolution are applied across multiple spatial orientations to identify the optimal detection axis.

Distance-Redshift Mapping

Physical coordinates are converted to redshift space via the cosmological distance-redshift relation for a flat FRW universe:

$$d(z) = \int_0^z \frac{c , dz'}{H(z')}$$

This mapping (computed numerically via astropy.cosmology) allows the wake geometry to be represented in the coordinate system most directly comparable to observations.


References

  1. Brandenberger, R. et al. - "The 21 cm Signature of Cosmic String Wakes"
  2. Maibach et al. - "Extracting the Signal of Cosmic String Wakes from 21-cm Observations"
  3. Brandenberger, R. - "Searching for Cosmic Strings in New Observational Windows"
  4. Ting et al. - "Non-Gaussianity of the 21 cm Signal"

Citation

@software{morais2022cosmicstrings,
title = {Cosmic String Signals: Synthetic 3D Signal Detection Pipeline},
author = {Morais, Jeffrey},
year = {2022},
url = {https://github.com/IsolatedSingularity/Cosmic-String-Signals}
}

See Also

ProjectDescription
TQNNTopological Quantum Neural Networks: interactive visualization toolkit
Quantum TrajectoriesNumerical PDE solver for trajectory fields
QLDPCQuantum LDPC error correction toolkit
QRiNGQuantum random number generation framework

Contact

Jeffrey Morais - Website | GitHub | LinkedIn

Questions or ideas are welcome. Open an issue or reach out directly.


License

MIT

About

Data analysis pipeline utilizing wavelet decomposition and matched-filter detection to extract target waveforms from simulated 21cm primordial noise.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

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

2D Matched Filter Convolution

Cosmic String Signals

Synthetic 3D signal detection and matched-filter extraction in noisy fields.
Volumetric wake generation, SO(3) coordinate transforms, brightness temperature modeling, and correlation-based signal scoring.

CIPython 3.10+MIT Licensepip install

Overview | Quick Start | Pipeline | Architecture | Theory | References | Citation


Overview

This project implements a synthetic data generation and analysis pipeline for studying weak, structured signals embedded in high-dimensional noise fields. The system generates 3D scalar fields, embeds planar geometric features (modeled as cosmic string wakes), and evaluates detectability using statistical filtering methods against stochastic noise backgrounds.

Why This Pipeline?

Detecting faint topological signals buried in cosmological noise is a core challenge in observational cosmology and signal processing. The wake left by a cosmic string produces a temperature anisotropy in 21cm radiation that is orders of magnitude weaker than the surrounding primordial perturbations. Standard point-source detection fails here because the signal is spatially extended, geometrically structured, and non-Gaussian. This pipeline addresses the problem by combining volumetric field construction with matched-filter correlation, a technique proven in gravitational wave detection (LIGO) and adapted here for 3D cosmological data cubes.


Quick Start

git clone https://github.com/IsolatedSingularity/Cosmic-String-Signals.git
cd Cosmic-String-Signals
pip install -e .

Run the full simulation pipeline:

python "Cosmic String Extraction Statistics.py"

Run the test suite:

pip install -e ".[dev]"
python -m pytest tests/ -v

Pipeline

The simulation executes a five-stage pipeline, from universe initialization through statistical signal extraction.

1. Universe Initialization

Sets the Hubble volume, cosmological parameters ($H_0$, $\Omega_m$), and random seeds for reproducibility. Constructs the 3D lattice representing the observable volume.

2. Wake Geometry Construction

Builds a finite-length cosmic string segment and computes its wake wedge geometry as a 6-vertex convex structure in $\mathbb{R}^3$. The wake is parameterized by the string tension $G\mu$, deficit angle, string speed, and formation redshift. Arbitrary spatial orientations are applied via $SO(3)$ rotation matrices acting on the shifted vertex set.

Wake in Physical SpaceWake in Redshift Space
Wake wedge geometry in physical coordinates (Mpc)Same wake mapped to redshift space via $d(z)$

3. Temperature Field Assignment

Points inside the wake's convex hull receive a brightness temperature gradient $\delta T_b(z)$ derived from the 21cm emission model. Points outside the hull remain at ambient temperature. The convex hull membership test uses a vertex-stability method: if adding a test point does not alter the hull vertices, the point is interior.

Temperature in Physical SpaceTemperature in Redshift Space
Brightness temperature gradient within the wakeTemperature field mapped to redshift coordinates

4. Noise Embedding

Superimposes the wake signal onto a 3D $\Lambda\text{CDM}$ cosmological noise map (generated via 21cmFAST simulations). The combined data cube contains both the structured wake signal and the stochastic primordial perturbations, producing a realistic detection scenario.

Noise MapsWedge MapsCombined Maps
$\Lambda\text{CDM}$ noise slicesWake temperature slicesCombined signal + noise

5. Matched Filtering and Signal Extraction

Applies matched filtering by correlating the wake template with the observed data. The pipeline evaluates both 1D (unfolded array correlation via np.correlate) and 2D (convolution via scipy.signal.convolve2d) approaches across multiple slicing orientations to maximize the signal-to-noise ratio.

2D Match Filter1D Match Filter
2D convolution: wake-wake vs. wake-noise vs. wake-combined1D matched filter output across unfolding orientations

Architecture

cosmic_string_signals/
__init__.py # Package root, version
geometry.py # SO(3) rotations, wake wedge construction, hull checks
temperature.py # Brightness temperature models (CMB, kinetic, gas)
filtering.py # Matched filtering (1D correlation, 2D convolution, unfolding)
Cosmic String Extraction Statistics.py # Full simulation pipeline script
tests/
test_imports.py # Import smoke tests
test_geometry.py # Rotation matrices, wedge construction, hull membership
test_temperature.py # Temperature model sanity checks
test_filtering.py # Unfolding and correlation tests
Plots/ # Generated figures
Cited Literature/ # Reference papers

Tech Stack

TechnologyRole
Python 3.10+Core language
NumPyVectorized grid computation, array manipulation, correlation
SciPyConvex hull geometry, 2D signal convolution
AstropyCosmological distance-redshift conversions (Planck18)
Matplotlib3D scatter plots, 2D heatmaps, filter output visualization
pytestTest suite (20 tests)
GitHub ActionsCI across Python 3.10, 3.11, 3.12

Theory

Cosmic String Wakes and Signal Detection (click to expand)

Topological Defects

In the early universe, symmetry-breaking phase transitions can produce topologically stable defects. When a scalar field $\phi$ with potential

$$V(\phi) = \frac{1}{4}g(|\phi|^2 - \eta^2)^2$$

undergoes spontaneous symmetry breaking, the vacuum manifold $M$ may become topologically non-trivial. If $M \simeq S^1$, the first homotopy group $\pi_1(M)$ is non-trivial, ensuring the existence of stable line defects: cosmic strings.

String Tension and Wake Formation

The energy scale of symmetry breaking sets the string tension:

$$G\mu \sim \left(\frac{\eta}{M_{\text{Pl}}}\right)^2$$

As strings move at relativistic speeds, they generate planar overdensities (wakes) in the surrounding matter distribution. These wakes induce temperature anisotropies in 21cm radiation.

Brightness Temperature

The differential brightness temperature at redshift $z$ is modeled as:

$$\delta T_b(\nu) = [0.07 , \text{K}] , \frac{x_c}{1+x_c} \left(1 - \frac{T_{\gamma}(z)}{T_{K/g}(z)}\right) \sqrt{1+z}$$

where $x_c$ is the collision coupling coefficient, $T_{\gamma}(z)$ is the CMB photon temperature, and $T_{K/g}(z)$ characterizes the kinetic/gas temperature within the wake.

Matched Filtering

The signal extraction uses matched filtering, a technique widely applied in gravitational wave detection. By correlating an assumed template (wake profile) with the observed data, the method amplifies the structured signal relative to stochastic noise. Both 1D cross-correlation and 2D convolution are applied across multiple spatial orientations to identify the optimal detection axis.

Distance-Redshift Mapping

Physical coordinates are converted to redshift space via the cosmological distance-redshift relation for a flat FRW universe:

$$d(z) = \int_0^z \frac{c , dz'}{H(z')}$$

This mapping (computed numerically via astropy.cosmology) allows the wake geometry to be represented in the coordinate system most directly comparable to observations.


References

  1. Brandenberger, R. et al. - "The 21 cm Signature of Cosmic String Wakes"
  2. Maibach et al. - "Extracting the Signal of Cosmic String Wakes from 21-cm Observations"
  3. Brandenberger, R. - "Searching for Cosmic Strings in New Observational Windows"
  4. Ting et al. - "Non-Gaussianity of the 21 cm Signal"

Citation

@software{morais2022cosmicstrings,
title = {Cosmic String Signals: Synthetic 3D Signal Detection Pipeline},
author = {Morais, Jeffrey},
year = {2022},
url = {https://github.com/IsolatedSingularity/Cosmic-String-Signals}
}

See Also

ProjectDescription
TQNNTopological Quantum Neural Networks: interactive visualization toolkit
Quantum TrajectoriesNumerical PDE solver for trajectory fields
QLDPCQuantum LDPC error correction toolkit
QRiNGQuantum random number generation framework

Contact

Jeffrey Morais - Website | GitHub | LinkedIn

Questions or ideas are welcome. Open an issue or reach out directly.


License

MIT

About

Data analysis pipeline utilizing wavelet decomposition and matched-filter detection to extract target waveforms from simulated 21cm primordial noise.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Contributors

Languages