Reconstructs 3D density distributions from 2D column density maps using constrained diffusion.
Project description
This project provides Python functions to reconstruct a 3D density distribution from a 2D column density map using a multi-scale decomposition approach based on constrained diffusion. This method is particularly useful in astrophysics for analyzing gas and dust distributions.
Features
compute_mean_density_width(column_density, dx): Derives the mean density and characteristic widths from a column density map.
density_reconstruction_3d(data_in, dx): The main function to perform the full 3D density reconstruction from a 2D column density map.
Installation
To use this code, you need to install the following Python packages:
numpy
scipy
matplotlib
astropy
constrained-diffusion (This is the cdd module used for the core decomposition.)
You can install these using pip:
pip install numpy scipy matplotlib astropy
pip install constrained-diffusion
If constrained-diffusion is a custom package, clone and install it from its repository:
git clone https://github.com/gxli/Volume-Density-Mapper
cd Volume-Density-Mapper
pip install .
pip install -e .
Example Usage
This example demonstrates how to:
Estimate characteristic widths and mean density using compute_mean_density_width.
Construct a 3D density cube using density_reconstruction_3d.
#!/usr/bin/env python
# coding: utf-8
import matplotlib.pyplot as plt
import numpy as np
from astropy.io import fits
from volume_density_mapper import *
# --- Load Data and Define Constants ---
nh = fits.getdata('IC348_nh.fits')
header = fits.getheader('IC348_nh.fits')
mh2 = 1.34 * 3.34e-24 # Mass of H2 molecule in g
pc = 3.08e18 # Parsec in cm
dx = header['CDELT2'] / 180 * np.pi * 270 * pc # Pixel size in cm
# --- Compute Mean Density and Width ---
input_map = nh * mh2
density, width = compute_mean_density_width(input_map, dx)
# --- Reconstruct 3D Density Structure ---
data3d = density_reconstruction_3d(input_map, dx)
print(np.shape(data3d))
Example
import matplotlib.pyplot as plt
import matplotlib as mpl
from matplotlib import cm
import numpy as np
from astropy.io import fits
from astropy import constants as cons
from volume_density_mapper import *
nh = fits.getdata('IC348_nh.fits')
header = fits.getheader('IC348_nh.fits')
mh2 = 1.34*3.34e-24
pc = 3.08e18
plt.figure(dpi = 100)
plt.imshow(np.log10(nh * mh2), origin = 'lower')
plt.colorbar(label=r'Log(surface density ($\rm g cm^{-2}$))')
# charactersitic scale (width) measurements
input_map = nh.copy() * mh2
dx = header['CDELT2']/180*np.pi*270 * pc
#pixel size, the same unit with that of output
density, width = compute_mean_density_width(input_map, dx)
plt.figure(dpi = 100)
plt.imshow(np.log10(density), origin = 'lower')
plt.colorbar(label = r'log(Volume Density (r$g\;cm^{-3}$))')
plt.figure(dpi = 100)
plt.imshow(np.log10(width), origin = 'lower',cmap = 'magma')
plt.colorbar(label = r'log(width (cm))')
plt.show()
# restructure the density structure in 3D space
data_in = nh * mh2 # convert to cgs unit
dx = header['CDELT2']/180*np.pi*270 * pc #pixel size, unit as cm (cgs unit)
data3d = density_reconstruction_3d(data_in, dx)
print(np.shape(data3d))
License
This project is open-source and available under the MIT License.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file volume_density_mapper-0.1.0.tar.gz.
File metadata
- Download URL: volume_density_mapper-0.1.0.tar.gz
- Upload date:
- Size: 4.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b99e3a3ff02c606e465a17070b6e479753e57c9fc9ed835889591b81b58dc07
|
|
| MD5 |
7adf2f0b5704d109426e2bf0235b24f6
|
|
| BLAKE2b-256 |
2cdfbb5a565c74c9841196539479254c39e7184f84769a6e3bbbf79d77a3a9cb
|
File details
Details for the file volume_density_mapper-0.1.0-py3-none-any.whl.
File metadata
- Download URL: volume_density_mapper-0.1.0-py3-none-any.whl
- Upload date:
- Size: 4.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b820cfb6ca3b6e7209afdeeb2cbf89eef4048342e482313405ab93a464fe37b
|
|
| MD5 |
4bbce13598324755e239b3e556d00d02
|
|
| BLAKE2b-256 |
4f1a8fe8de5538ed7d5eebdb243a0e83473559f1f84f77d36c893a927262cdc0
|