Skip to content

fix: validate RDF inputs before running - #201

Open
galjos wants to merge 1 commit into
devfrom
fix/rdf-input-validation
Open

fix: validate RDF inputs before running#201
galjos wants to merge 1 commit into
devfrom
fix/rdf-input-validation

Conversation

@galjos

@galjos galjos commented Aug 24, 2026

Copy link
Copy Markdown
Member

A vacuum trajectory ran to completion and wrote NaN and inf into g(r), selections matching no atoms did the same or died in a bare ZeroDivisionError on the legacy path, and delta_r = 0.0 raised an OverflowError from deep inside the bin setup. All four now raise an RDFError naming the actual problem: vacuum trajectories at the start of the run, empty reference or target selections and non-positive delta_r at construction.

PositiveReal itself is untouched, since other analyses use it for values where zero is valid. The user guide sentence claiming vacuum trajectories were supported is corrected.

Fixes #200.

The RDF setup accepted inputs it cannot handle: a selection matching
no atoms produced an all-NaN g(r) on the general path and a bare
ZeroDivisionError on the legacy path, delta_r = 0.0 aborted with an
unhandled OverflowError or ZeroDivisionError, and a vacuum trajectory
with an explicit radial range divided by an infinite average volume
and silently wrote NaN and inf into every output column. Each case
now raises a clear RDFError during setup, matching the empty
selection handling of the MSD, VACF and momentum analyses. The user
guide no longer claims vacuum trajectories are supported.
@galjos
galjos requested a review from 97gamjak August 24, 2026 07:29
@github-actions

Copy link
Copy Markdown
Contributor

PYLINT REPORT

Your code has been rated at 9.78/10

Full report

Raw metrics

type number % previous difference
code 15675 45.61 NC NC
docstring 13067 38.02 NC NC
comment 463 1.35 NC NC
empty 5160 15.02 NC NC

Duplication

now previous difference
nb duplicated lines 0 NC NC
percent duplicated lines 0.000 NC NC

Messages by category

type number previous difference
convention 15 NC NC
refactor 137 NC NC
warning 17 NC NC
error 5 NC NC

% errors / warnings by module

module error warning refactor convention
PQAnalysis.type_checking 40.00 0.00 0.00 0.00
PQAnalysis.atomic_system.atomic_system 20.00 11.76 6.57 0.00
PQAnalysis.analysis.vibrational.vibrational_analysis 20.00 0.00 7.30 0.00
PQAnalysis 20.00 0.00 0.00 0.00
PQAnalysis.analysis.vacf._vacf_kernel_py 0.00 11.76 1.46 0.00
PQAnalysis.tools.traj_to_com_traj 0.00 11.76 0.00 0.00
PQAnalysis.io.traj_file._process_lines_py 0.00 11.76 0.00 0.00
PQAnalysis.io.moldescriptor_reader 0.00 11.76 0.00 0.00
PQAnalysis.tools.add_molecule 0.00 5.88 4.38 0.00
PQAnalysis.analysis.rdf._rdf_kernel_py 0.00 5.88 2.19 0.00
PQAnalysis.analysis.msd._msd_kernel_py 0.00 5.88 2.19 0.00
PQAnalysis.io.conversion_api 0.00 5.88 1.46 0.00
PQAnalysis.version 0.00 5.88 0.00 0.00
PQAnalysis.utils.custom_logging 0.00 5.88 0.00 0.00
PQAnalysis.io.write_api 0.00 5.88 0.00 0.00
PQAnalysis.io.restart_file.restart_writer 0.00 0.00 15.33 0.00
PQAnalysis.analysis.rdf.rdf 0.00 0.00 7.30 6.67
PQAnalysis.analysis.msd.msd 0.00 0.00 5.84 33.33
PQAnalysis.io.nep.nep_writer 0.00 0.00 5.11 6.67
PQAnalysis.analysis.vacf.vacf 0.00 0.00 4.38 13.33
PQAnalysis.io.traj_file._slab_parser_py 0.00 0.00 3.65 0.00
PQAnalysis.analysis.vacf.spectrum 0.00 0.00 3.65 0.00
PQAnalysis.io.traj_file.trajectory_reader 0.00 0.00 2.92 0.00
PQAnalysis.topology.bonded_topology.dihedral 0.00 0.00 2.19 0.00
PQAnalysis.core.residue 0.00 0.00 2.19 0.00
PQAnalysis.topology.bonded_topology.bonded_topology 0.00 0.00 1.46 0.00
PQAnalysis.topology.bonded_topology.bond 0.00 0.00 1.46 0.00
PQAnalysis.topology.bonded_topology.angle 0.00 0.00 1.46 0.00
PQAnalysis.io.traj_file.raw_frame_reader 0.00 0.00 1.46 0.00
PQAnalysis.core.cell.cell 0.00 0.00 1.46 0.00
PQAnalysis.atomic_system._standard_properties 0.00 0.00 1.46 0.00
PQAnalysis.analysis.vacf.api 0.00 0.00 1.46 0.00
PQAnalysis.analysis.spectrum_broadening.api 0.00 0.00 1.46 0.00
PQAnalysis.analysis.momentum.api 0.00 0.00 1.46 0.00
PQAnalysis.analysis.vibrational.vibrational_input_file_reader 0.00 0.00 0.73 6.67
PQAnalysis.traj.formats 0.00 0.00 0.73 0.00
PQAnalysis.topology.topology 0.00 0.00 0.73 0.00
PQAnalysis.topology.selection 0.00 0.00 0.73 0.00
PQAnalysis.io.traj_file.frame_reader 0.00 0.00 0.73 0.00
PQAnalysis.io.restart_file.restart_reader 0.00 0.00 0.73 0.00
PQAnalysis.io.input_file_reader.pq_analysis._parse 0.00 0.00 0.73 0.00
PQAnalysis.io.input_file_reader.pq.pq_input_file_reader 0.00 0.00 0.73 0.00
PQAnalysis.io.input_file_reader.input_file_parser 0.00 0.00 0.73 0.00
PQAnalysis.io.info_file_reader 0.00 0.00 0.73 0.00
PQAnalysis.io.formats 0.00 0.00 0.73 0.00
PQAnalysis.analysis.momentum.momentum 0.00 0.00 0.73 0.00
PQAnalysis.core.atom.element 0.00 0.00 0.00 13.33
PQAnalysis.analysis.vacf.vacf_input_file_reader 0.00 0.00 0.00 6.67
PQAnalysis.analysis.rdf.rdf_input_file_reader 0.00 0.00 0.00 6.67
PQAnalysis.analysis.msd.msd_input_file_reader 0.00 0.00 0.00 6.67

Messages

message id occurrences
too-many-positional-arguments 29
too-many-arguments 29
duplicate-code 21
too-many-locals 15
too-many-instance-attributes 13
invalid-name 12
too-complex 9
inconsistent-return-statements 8
fixme 7
too-many-branches 5
missing-type-doc 4
too-many-statements 3
too-many-return-statements 3
too-many-lines 3
unused-import 2
redefined-builtin 2
missing-kwoa 2
use-set-for-membership 1
unexpected-keyword-arg 1
too-many-public-methods 1
possibly-used-before-assignment 1
no-member 1
missing-param-doc 1
arguments-differ 1

@codecov

codecov Bot commented Aug 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 93.94%. Comparing base (0961625) to head (4741000).

Additional details and impacted files
@@           Coverage Diff           @@
##              dev     #201   +/-   ##
=======================================
  Coverage   93.94%   93.94%           
=======================================
  Files         177      177           
  Lines        9227     9235    +8     
=======================================
+ Hits         8668     8676    +8     
  Misses        559      559           
Flag Coverage Δ
unittests 93.94% <100.00%> (+<0.01%) ⬆️
Files with missing lines Coverage Δ
PQAnalysis/analysis/rdf/rdf.py 99.50% <100.00%> (+<0.01%) ⬆️
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant