diff --git a/package/CHANGELOG b/package/CHANGELOG index 5d8328f331..9fe6e8713c 100644 --- a/package/CHANGELOG +++ b/package/CHANGELOG @@ -33,6 +33,7 @@ Enhancements * Enable parallelization for analysis.nucleicacids.NucPairDist (Issue #4670) * Add check and warning for empty (all zero) coordinates in RDKit converter (PR #4824) * Added `precision` for XYZWriter (Issue #4775, PR #4771) + * explicitly mark `analysis.rdf.InterRDF` and `analysis.rdf.InterRDF` as not parallelizable (Issue #4675) Changes diff --git a/package/MDAnalysis/analysis/rdf.py b/package/MDAnalysis/analysis/rdf.py index 02ac014d47..9990a1e2b0 100644 --- a/package/MDAnalysis/analysis/rdf.py +++ b/package/MDAnalysis/analysis/rdf.py @@ -218,6 +218,12 @@ class InterRDF(AnalysisBase): :class:`~MDAnalysis.analysis.AnalysisBase`. """ + @classmethod + def get_supported_backends(cls): + return ('serial',) + + _analysis_algorithm_is_parallelizable = False + def __init__( self, g1, @@ -563,6 +569,12 @@ class InterRDF_s(AnalysisBase): The `universe` parameter is superflous. """ + @classmethod + def get_supported_backends(cls): + return ('serial',) + + _analysis_algorithm_is_parallelizable = False + def __init__( self, u, diff --git a/testsuite/MDAnalysisTests/analysis/test_rdf.py b/testsuite/MDAnalysisTests/analysis/test_rdf.py index d3507e5673..4a8fe46994 100644 --- a/testsuite/MDAnalysisTests/analysis/test_rdf.py +++ b/testsuite/MDAnalysisTests/analysis/test_rdf.py @@ -152,3 +152,21 @@ def test_unknown_norm(sels): s1, s2 = sels with pytest.raises(ValueError, match="invalid norm"): InterRDF(s1, s2, sels, norm="foo") + +@pytest.mark.parametrize( + "classname,is_parallelizable", + [ + (mda.analysis.rdf, False), + ] +) +def test_class_is_parallelizable(classname, is_parallelizable): + assert classname.InterRDF._analysis_algorithm_is_parallelizable == is_parallelizable + +@pytest.mark.parametrize( + "classname,backends", + [ + (mda.analysis.rdf, ('serial',)), + ] +) +def test_supported_backends(classname, backends): + assert classname.InterRDF.get_supported_backends() == backends diff --git a/testsuite/MDAnalysisTests/analysis/test_rdf_s.py b/testsuite/MDAnalysisTests/analysis/test_rdf_s.py index 5c6e8b6031..bdce3eed64 100644 --- a/testsuite/MDAnalysisTests/analysis/test_rdf_s.py +++ b/testsuite/MDAnalysisTests/analysis/test_rdf_s.py @@ -171,3 +171,21 @@ def test_rdf_attr_warning(rdf, attr): wmsg = f"The `{attr}` attribute was deprecated in MDAnalysis 2.0.0" with pytest.warns(DeprecationWarning, match=wmsg): getattr(rdf, attr) is rdf.results[attr] + +@pytest.mark.parametrize( + "classname,is_parallelizable", + [ + (mda.analysis.rdf, False), + ] +) +def test_class_is_parallelizable(classname, is_parallelizable): + assert classname.InterRDF_s._analysis_algorithm_is_parallelizable == is_parallelizable + +@pytest.mark.parametrize( + "classname,backends", + [ + (mda.analysis.rdf, ('serial',)), + ] +) +def test_supported_backends(classname, backends): + assert classname.InterRDF_s.get_supported_backends() == backends