A Library For Generating Morphological Semantic Segmentation Maps of Astronomical Images
Project description
Morpheus is a neural network model used to generate pixel level morphological classifications for astronomical sources. This model can be used to generate segmentation maps or to inform other photometric measurements with granular morphological information.
Installation
Morpheus is implemented using Tensorflow. Tensorflow is not listed in the dependencies for the package. So you need to install Tensorflow before you install Morpheus. It has to be done this way to support the GPU accelerated version of Tensorflow, which has a different package name. For more information on installing Tensorflow visit the Tensorflow website.
pip install morpheus-astro
Docker
Morpheus has two main flavors of Docker Image: gpu for the GPU enabled version of Tensorflow and cpu for the standard CPU implementation of Tensorflow. Visit the Docker Hub page for relevant tags.
For GPU support:
docker run --runtime=nvidia -it morpheusastro/morpheus:0.3-gpu
For CPU only:
docker run -it morpheusastro/morpheus:0.3-cpu
Usage
The main way to interact with Morpheus is by using the morpheus.classifier.Classifier class. Using this class you can classify astronomical images in 2 ways:
Using classify_arrays to classify numpy arrays.
from morpheus.classifier import Classifier
from morpheus.data import example
h, j, v, z = example.get_sample()
morphs = Classifier.classify_arrays(h=h, j=j, v=v, z=z)
The output that is returned is a dictionary where the keys are the morphological classes: spheroid, disk, irregular, point source, and background and the values are the corresponding numpy arrays.
Using classify_files to classify FITS files:
from morpheus.classifier import Classifier
from morpheus.data import example
# this saves the sample numpy arrays as FITS files in 'out_dir'
example.get_sample(out_dir='.')
h, j, v, z = [f'{band}.fits' for band in 'hjvz']
morphs = Classifier.classify_files(h=h, j=j, v=v, z=z)
Using FITS files can be useful for classifying files that are too large to fit into memory. If an image is too large to fit into memory, then specify the out_dir argument and the outputs will be saved there rather than returned.
from morpheus.classifier import Classifier
from morpheus.data import example
# this saves the sample numpy arrays as fits files in 'out_dir'
example.get_sample(out_dir='.')
h, j, v, z = [f'{band}.fits' for band in 'hjvz']
Classifier.classify_files(h=h, j=j, v=v, z=z, out_dir='.')
If you’re classifying a large image and have multiple NVIDIA GPUs on the same machine available the image can be classified in parallel using the gpus argument. The image split evenly along the first axis and then handed off to subprocess to classify the subset of the image, after which, the image is stitched back together.
from morpheus.classifier import Classifier
# h, j, v, and, z are strings that point to a large image
# gpus should be an integer list containing the GPU ids for the GPUs that
# you want to use to classify the images. You can get these values by
# calling 'nvidia-smi'
gpus = [0, 1]
Classifier.classify_files(h=h, j=j, v=v, z=z, out_dir='.', gpus=gpus)
Morpheus can also be used to generate a catalog of morphological classifications from an input image using catalog_arrays. The catalog will include an id, location (in pixels), and a morphological classification for each source in the following order: [Spheroid, Disk, Irregular, Point Source].
from morpheus.classifier import Classifier
from morpheus.data import example
h, j, v, z = example.get_sample()
catalog = Classifier.catalog_arrays(h=h, j=j, v=v, z=z)
Demo
Try it out on Google Colab!
Documentation
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file morpheus-astro-0.3.2.tar.gz
.
File metadata
- Download URL: morpheus-astro-0.3.2.tar.gz
- Upload date:
- Size: 1.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ee77ec401e6f222fdedab60c851507bd78928379fa2b0000bfbc9ba457d39a6 |
|
MD5 | 10c1d5fc244333310e106068a7f8c0e1 |
|
BLAKE2b-256 | 2feac7764552efcbe1fb6f1d2793b2077a5c3ae5cb23350650e1efd584e12a87 |
File details
Details for the file morpheus_astro-0.3.2-py3-none-any.whl
.
File metadata
- Download URL: morpheus_astro-0.3.2-py3-none-any.whl
- Upload date:
- Size: 1.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.21.0 setuptools/40.6.3 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.6.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ba4814366a987c48812c7f7073ff85b6343ed42bdbd47e928aeca32321fb0d4 |
|
MD5 | 2eda36abb95bf8b9f19770f6ecb5c781 |
|
BLAKE2b-256 | d3ccee01666149d293b8c93f50c709b30131a52e0b6b49f1f14bc8bd8cf3c21d |