Common Problems

This contains a list of common problems that people have run into and solutions to them. If you run into others, and an FAQ entry here is a more appropriate place than text in the main part of the manual, please feel to add them to this page.

Setting Values of a FlatSkyMap

Because the implementations of __setitem__ and __getitem__ in G3SkyMap have to handle both 1D and 2D semantics), the FlatSkyMap class has different slicing semantics than a numpy array. To slice it as though it were a numpy array, you can cast it to one:

numpy.asarray(your_flat_sky_map)[:] = the_numpy_array_you_are_assigning

Because sky maps, like timestreams, implement the Python buffer protocol, there is no performance or memory penalty for these kinds of operations.

Error Message Decryption

Argument Errors

If you are adding a module to a pipeline in python, and if the module is written in C++, when you misspell a keyword argument, you may get an unhelpful message like the following:

Boost.Python.ArgumentError: Python argument types in
        FilterEventsOnSameSquid.__init__(FilterEventsOnSameSquid) did not match C++ signature:

The unhelpfulness of this message arises because Python and C++ have different semantics for overloaded functions, preventing Boost from succesfully disambiguating a misspelled or otherwise wrong argument from an attempt to execute a different function entirely. If you see errors like the above, check your arguements for typos in keywords, number of positional arguments, and types.

Misbehaving Compilers

  1. Clang 3.6.0 has some bugs with the std::unordered_map implementation that our code encounters.