An out-there possibility - but in the past I ran into a similar head-scratcher when working with SWIG (thankful to not be using that any more). Numpy integer scalars are distinct from the Python int type, leading to similar error messages when you try to feed one into a SWIG-wrapped function expecting a C++ integer type. Had to be explicitly cast on the Python side first, i.e. int(numpy_array_of_ints[i]). On 2020-08-04 13:19, Winter, Graeme (DLSLtd,RAL,LSCI) wrote:
Hi Tristan
Given that it worked for other integers as input (as shown further down) I’d hope this makes no difference however
H = flex.histogram(data=coords, data_min=0.0, data_max=float(dim), n_slots=dim) Boost.Python.ArgumentError: Please report this error to [email protected]: Python argument types in
Nope :-(
It still fails…
This one is properly weird…
Thanks Graeme
On 4 Aug 2020, at 13:14, Tristan Croll
wrote: 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 [email protected]: 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
other, scitbx::af::const_ref data, double relative_tolerance=0.0001) __init__(_object*, scitbx::af::const_ref data, double data_min, double data_max, unsigned long n_slots=1000, double relative_tolerance=0.0001) __init__(_object*, scitbx::af::const_ref data, unsigned long n_slots=1000) Despite coords being 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
cctbxbb mailing list [email protected] http://phenix-online.org/mailman/listinfo/cctbxbb