Skip to main content

rail_dnf

Template codecov PyPI

DNF: Directional Neighbourhood Fitting

DNF is a nearest-neighbor approach for photometric redshift estimation developed at the CIEMAT (Centro de Investigaciones Energéticas, Medioambientales y Tecnológicas). DNF computes the photo-z hyperplane that best fits the directional neighbourhood of a photometric galaxy in the training sample. A detailed description of DNF is available here.

If you have any questions or suggestions, please don't hesitate to contact us at laura.toribio@ciemat.es and/or juan.vicente@ciemat.es.

The current version of the code for RAILconsists of a training stage, DNFInformer and a estimation stage DNFEstimator. DNFInformer is a class that preprocesses the protometric data, handles missing or non-detected values, and trains a firts basic k-Nearest Neighbors regressor for redshift prediction. The DNFEstimator calculates photometric redshifts based on an enhancement of Nearest Neighbor techniques. The class supports three main metrics for redshift estimation: ENF, ANF or DNF.

  • ENF: Euclidean neighbourhood. It's a common distance metric used in kNN (k-Nearest Neighbors) for photometric redshift prediction.
  • ANF: uses normalized inner product for more accurate photo-z predictions. It is particularly recommended when working with datasets containing more than four filters. Use normalized inner product for more accurate photo-z predictions when signal/noise is good enough.
  • DNF: combines Euclidean and angular metrics, improving accuracy, especially for larger neighborhoods, and maintaining proportionality in observable content.

DNFInformer

The DNFInformer class processes a training dataset and produces a model file containing the computed magnitudes, colors, and their associated errors for the dataset. This model is then utilized in the DNFEstimator stage for photometric redshift estimation. Missing photometric detections (non-detections) are handled by replacing them with a configurable placeholder value, or optionally ignoring them during model training.

The configurable parameters for DNFInformer include:

  • bands: List of band names expected in the input dataset.
  • err_bands: List of magnitude error column names corresponding to the bands.
  • redshift_col: String indicating the name of the redshift column in the input data.
  • mag_limits: Dictionary with band names as keys and floats representing the acceptable magnitude range for each band.
  • nondetect_val: Float or np.nan, the value indicating a non-detection, which will be replaced by the values in mag_limits.
  • replace_nondetect: Boolean; if True, non-detections are replaced with the specified nondetect_val. If False, non-detections are ignored during the neighbor-finding process.

DNFEstimator

The DNFEstimator class uses the model generated by DNFInformer to compute photometric redshifts for new datasets and the PDFs. It identifies the nearest neighbors from the training data using various distance metrics and estimates redshifts based on these neighbors.

The configurable parameters for DNFEstimator include:

  • bands, err_bands, redshift_col, nondetect_val, mag_limits: As described for DNFInformer.
  • selection_mode: Integer indicating the method for neighbor selection:
    • 0: Euclidean Neighbourhood Fitting (ENF).
    • 1: Angular Neighbourhood Fitting (ANF).
    • 2: Directional Neighbourhood Fitting (DNF).
  • zmin, zmax, nzbins: Float values defining the minimum and maximum redshift range and the number of bins for estimation of the PDFs.
  • pdf_estimation: Boolean; if True, computes a probability density function (PDF) for the redshift of each object.

DNF calculates its own point estimate, DNF_Z, which is stored in the qp Ensemble ancil data. Also, DNF calculates other photo-zs called DNF_ZN.

  • DNF_Z represents the photometric redshift for each galaxy computed as the weighted average or hyperplane fit (depending on the option selected) for a set of neighbors determined by a specific metric (ENF, ANF, DNF) where the outliers are removed

  • DNF_ZN represents the photometric redshift using only the closest neighbor. It is mainly used for computing the redshift distributions.

RAIL: Redshift Assessment Infrastructure Layers

This package is part of the larger ecosystem of Photometric Redshifts in RAIL.

Citing RAIL

RAIL is open source and may be used according to the terms of its LICENSE (BSD 3-Clause). If you used RAIL in your study, please cite this repository https://github.com/LSSTDESC/RAIL, and RAIL Team et al. (2025) https://arxiv.org/abs/2505.02928

@ARTICLE{2025arXiv250502928T,
       author = {{The RAIL Team} and {van den Busch}, Jan Luca and {Charles}, Eric and {Cohen-Tanugi}, Johann and {Crafford}, Alice and {Crenshaw}, John Franklin and {Dagoret}, Sylvie and {De-Santiago}, Josue and {De Vicente}, Juan and {Hang}, Qianjun and {Joachimi}, Benjamin and {Joudaki}, Shahab and {Bryce Kalmbach}, J. and {Kannawadi}, Arun and {Liang}, Shuang and {Lynn}, Olivia and {Malz}, Alex I. and {Mandelbaum}, Rachel and {Merz}, Grant and {Moskowitz}, Irene and {Oldag}, Drew and {Ruiz-Zapatero}, Jaime and {Rahman}, Mubdi and {Rau}, Markus M. and {Schmidt}, Samuel J. and {Scora}, Jennifer and {Shirley}, Raphael and {St{\"o}lzner}, Benjamin and {Toribio San Cipriano}, Laura and {Tortorelli}, Luca and {Yan}, Ziang and {Zhang}, Tianqing and {the Dark Energy Science Collaboration}},
        title = "{Redshift Assessment Infrastructure Layers (RAIL): Rubin-era photometric redshift stress-testing and at-scale production}",
      journal = {arXiv e-prints},
     keywords = {Instrumentation and Methods for Astrophysics, Cosmology and Nongalactic Astrophysics, Astrophysics of Galaxies},
         year = 2025,
        month = may,
          eid = {arXiv:2505.02928},
        pages = {arXiv:2505.02928},
          doi = {10.48550/arXiv.2505.02928},
archivePrefix = {arXiv},
       eprint = {2505.02928},
 primaryClass = {astro-ph.IM},
       adsurl = {https://ui.adsabs.harvard.edu/abs/2025arXiv250502928T},
      adsnote = {Provided by the SAO/NASA Astrophysics Data System}
}

Please consider also inviting the developers as co-authors on publications resulting from your use of RAIL by making an issue. A convenient list of what to cite may be found under Citing RAIL on ReadTheDocs. Additionally, several of the codes accessible through the RAIL ecosystem must be cited if used in a publication.

Citing this package

Users of rail_dnf can cite De Vicente, Sanchez, & Sevilla-Noarbe If you use this package, you should also cite the appropriate papers for each code used. A list of such codes is included in the Citing RAIL section of the main RAIL Read The Docs page.

Metadata

Release files for pz-rail-dnf 2.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pz-rail-dnf 2.0.4
File Size Uploaded
pz_rail_dnf-2.0.4.tar.gz 19.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pz-rail-dnf 2.0.4
File Interpreter ABI Platform
pz_rail_dnf-2.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 32.9 kB

Release files / pz_rail_dnf-2.0.4.tar.gz

Download URL pz_rail_dnf-2.0.4.tar.gz
Size 19.4 kB
Tags Source
SHA-256 checksum
How to use checksums
1d716003f9b5e4723162aea032f13043183155f14c1fa00e39c6e93b83f4f64e
BLAKE2b-256 checksum
How to use checksums
a9608bbf9b10de87640b6de275b012510622f5aff180d5340775adc49e7a55b2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.

Transparency log

Release files / pz_rail_dnf-2.0.4-py3-none-any.whl

Download URL pz_rail_dnf-2.0.4-py3-none-any.whl
Size 13.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
27c69693d5840cda28839aecace76bd7d3a05d0244fff4936812a45b4d7fc306
BLAKE2b-256 checksum
How to use checksums
2b4d129946aacec7cebed24691ae84376e797be595a05ccf0e325c372fa5cb2d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 5, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.0.4 This release

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.1.6

2 release files

1.1.5

2 release files

1.1.4

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page