Skip to main content

Detection of filamentary structure in molecular clouds

Project description

FilFinder

NOTE: FilFinder v1.6 introduces API changes and several critical bug fixes, and v1.7 fixes an error when using networkx >v2. Please update to use v1.7!

To be notified of future package releases and updates to FilFinder, please join the mailing list.

If you use FilFinder in a publication, please cite Koch & Rosolowsky (2015).

Build and coverage status

Coverage Status DOI

Brief Description

FilFinder is a Python package for extraction and analysis of filamentary structure in molecular clouds. In particular, the algorithm is capable of uniformly extracting structure over a large dynamical range in intensity (see images below). FilFinder supports python 2 and 3.

The algorithm proceeds through multiple steps:

  • FilFinder segments filamentary structure by using adaptive thresholding. This performs thresholding over local neighborhoods, allowing for the extraction of structure over a large dynamic range.

  • The final filament mask is constructed by applying morphological operators to remove extraneous small regions. The order of these operations are:

    • (Optionally) Flatten using an arctan transform - this removes the effects of small bright features (ie. cores) from effecting the filament mask.

    • Smooth with a small median filter (half the size of the expected filament widths) - this decreases fragmentation of regions in the final mask

    • Apply the adaptive threshold - the patch size is set to the expected filament width (0.1 pc) by default - this sets the scale of the objects to be detected. Within a factor of a few, this size does not effect the result greatly. The widths of the masked regions are not used for deriving any physical properties.

    • Objects below a set area threshold are removed to give the final mask - For the HGBS data, we found a good threshold was 5 * (0.1 pc)^2 but this may change depending on the data the algorithm is used on.

  • The final regions are reduced to skeletons via a Medial Axis Transform for further analysis.

  • Pixels within each skeleton are classified by the number of connecting pixels. A pixel can be a body point, end point, or intersection point. The skeletons are broken up into a set of branches to determine the length.

  • The length is determined by converting the set of branches into a graph. Nodes on the graph are intersections and end points. The branches make up the connections and their weighting in the graph is determined by their length and average intensity. A shortest path algorithm determines the longest path through the skeleton, which is reported as the main length.

  • The skeletons are then pruned by removing branches that are: not in the main length, will not affect the connectivity of the entire graph if they are removed, and whose length and average intensity are below a set threshold.

  • The width of the filament is determined by building a radial profile using the distance from the skeleton. This is accomplished by using a Euclidean Distance Transform and binning the intensity values of the pixels based on their minimum distance from a skeleton pixel. By default, a Gaussian with a constant background is fit to the profile. The reported filament width is the FWHM after deconvolving with the the FWHM of the beam.

  • A measure of filament direction and curvature is found using the Rolling Hough Transform. This method returns a distribution of angles, from which the mean and variance are defined using circular statistics.

These are the basic steps of the algorithm, which will return the main filament properties: local amplitude and background, width, length, orientation and curvature. Additional tools are available, such as creating a filament-only image based on the properties of the radial fits.

The resulting mask and skeletons may be saved in FITS format. Property tables may be saved as a csv, fits or latex table. See the `fil_finder_2D` documentation for more details.

Contributing

We welcome any user feedback on FilFinder’s performance. If you find an issue with the code, or would like to request additional features, please raise an issue in the repository or send me an email at the address on this page.

We also welcome and encourage contributions to the code base! We want this package to evolve into a tool developed for the community, by the community.

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

fil_finder-1.7.2.tar.gz (7.6 MB view details)

Uploaded Source

Built Distribution

fil_finder-1.7.2-py3-none-any.whl (568.3 kB view details)

Uploaded Python 3

File details

Details for the file fil_finder-1.7.2.tar.gz.

File metadata

  • Download URL: fil_finder-1.7.2.tar.gz
  • Upload date:
  • Size: 7.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for fil_finder-1.7.2.tar.gz
Algorithm Hash digest
SHA256 3539fd4f9a08aeabccab92211e12a84fb3d135888ec64a6a15312456977ebb45
MD5 e826e5898ee2dba44fceb265acee01e3
BLAKE2b-256 0fc3ff61596bc721c18826bfb53413a1378a0a55cb9ca5d0547fcf0590a33e59

See more details on using hashes here.

File details

Details for the file fil_finder-1.7.2-py3-none-any.whl.

File metadata

  • Download URL: fil_finder-1.7.2-py3-none-any.whl
  • Upload date:
  • Size: 568.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.9

File hashes

Hashes for fil_finder-1.7.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e450e5dbc45c229c396db1fca43cc3e91d8557a97b0c827c424bc61f16596669
MD5 210d88e9a03cbb23f8c11a034b4714f4
BLAKE2b-256 5d1f3f2df490a2e701d63463f42f467927418e0b5300f8cdd9cb43763eec7afa

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page