Comments (4)
In python, I tried
import copy_reg
import quaternion
def pickle_quaternion(q):
return (quaternion.quaternion, tuple(q.components))
copy_reg.constructor(quaternion.quaternion)
copy_reg.pickle(quaternion.quaternion, pickle_quaternion)
I also tried variations on where to find quaternion
. These all gave me the same error as above.
from quaternion.
I've also tried writing the __reduce__
function as
static PyObject *
pyquaternion__reduce(PyQuaternion* self)
{
return pyquaternion_repr((PyObject*)self);
}
which results in PicklingError: Can't pickle quaternion(1, 2, 3, 4): it's not found as __main__.quaternion(1, 2, 3, 4)
; and
static PyObject *
pyquaternion__reduce(PyQuaternion* self)
{
return PyUString_FromString("quaternion.quaternion");
}
which results in PicklingError: Can't pickle quaternion(1, 2, 3, 4): it's not found as __main__.quaternion.quaternion
; and
static PyObject *
pyquaternion__reduce(PyQuaternion* self)
{
return PyUString_FromString("quaternion");
}
which results in PicklingError: Can't pickle quaternion(1, 2, 3, 4): it's not found as __main__.quaternion
.
from quaternion.
While trying to debug using a suggestion from stackoverflow, I found an implementation that actually works for pickling quaternions. Basically, I have to subclass the pickle.Pickler
and give quaternions persistent ids. Unfortunately, I don't understand how this relates to the standard pickler being able to pickle quaternions, which is what I really need.
import pickle
class MyPickler(pickle.Pickler):
def save(self, obj):
print('pickling object `{0}` of type `{1}`.'.format(obj, type(obj)))
pickle.Pickler.save(self, obj)
import quaternion
def persistent_id(obj):
if isinstance(obj, quaternion.quaternion):
return "quaternion"
else:
return None
def dump_filtered(obj, file):
p = MyPickler(file)
p.persistent_id = persistent_id
p.dump(obj)
dump_filtered(quaternion.one, open("one.p","wb"))
from quaternion.
I don't see how this will work without upstream changes.
from quaternion.
Related Issues (20)
- None check fails HOT 1
- angular_velocity() output format HOT 2
- Euler angles are horrible, and so are quaternions HOT 2
- Documentation should clarify that the quaternions are defined using an active rotation convention HOT 2
- `np.sum` breaks in latest Numpy
- Object mode fallback deprecation in numba.jit
- Version number of latest release HOT 1
- Add a rotation example into the documentation HOT 1
- possible docstring error HOT 2
- add from_euler_angles equivalent for Tait-Bryan angles HOT 1
- slight improvement to "Why Euler angles are horrible"
- Identity decorator exception HOT 1
- Scalar quaternion objects are mutable HOT 1
- `cumprod()` with quaternions crashes HOT 5
- Computation Error: from euler angles to quaternion HOT 1
- Build problem on arm32v7 HOT 2
- Numpy 2.0 support HOT 9
- allow np.float32 precision instead of default float64 or higher HOT 2
- quaternion dtype in cupy to benefit from GPU HOT 1
- Numpy 2.0.0 compatibility HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from quaternion.