[cctbxbb] flex.histogram giving ArgumentError when arguments correct

Tristan Croll tic20 at cam.ac.uk
Tue Aug 4 05:14:41 PDT 2020


Not a specialist in boost.python by any stretch - but as a quick sanity 
check, have you tried data_max=float(dim) to see if it's failing to do 
the implicit conversion?

On 2020-08-04 12:56, Winter, Graeme (DLSLtd,RAL,LSCI) wrote:
> H = flex.histogram(coords, data_min=0.0, data_max=dim, n_slots=dim)
> 
> Gives
> 
> Boost.Python.ArgumentError: Please report this error to
> dials-support at lists.sourceforge.net: Python argument types in
>     histogram.__init__(histogram)
> did not match C++ signature:
>     __init__(_object*, double, double, double,
> scitbx::af::shared<long>, unsigned long)
>     __init__(_object*, scitbx::histogram<double, long> other,
> scitbx::af::const_ref<double, scitbx::af::trivial_accessor> data,
> double relative_tolerance=0.0001)
>     __init__(_object*, scitbx::af::const_ref<double,
> scitbx::af::trivial_accessor> data, double data_min, double data_max,
> unsigned long n_slots=1000, double relative_tolerance=0.0001)
>     __init__(_object*, scitbx::af::const_ref<double,
> scitbx::af::trivial_accessor> data, unsigned long n_slots=1000)
> 
> Despite
> 
> coords being
> 
> <scitbx_array_family_flex_ext.double object at 0x7fa8d671b5b0>
> 
> with shape
> 
> (31294944,)
> 
> and dim being 18093576 (i.e. integer)
> 
> and
> 
> h = flex.histogram(a, data_min=0, data_max=100, n_slots=100)
> 
> working fine in another context i.e. the calling convention is correct
> 
> This has so far cost a few hours, so what gives? How can this be
> holding it wrong? C++ code suggests that the bin types are long so
> this should be fine
> 
> Any hints?
> 
> Thanks Graeme


More information about the cctbxbb mailing list