Replies: 2 comments 1 reply
-
It is possible to pickle the Continuous Signal classes and sub-classes (well, we broke it with the Performance PR for TM30-18 but I just fixed it). Would it work for your needs or you are looking for something else? >>> import colour
>>> import pickle
>>> pickle.dumps(colour.SDS_ILLUMINANTS["D65"])
b'\x80\x04\x95\t\t\x00\x00\x00\x00\x00\x00\x8c\x1bcolour.colorimetry.spectrum\x94\x8c\x14SpectralDistribution\x94\x93\x94)\x81\x94}\x94(\x8c\n_callbacks\x94\x8c\x0bcollections\x94\x8c\x0bdefaultdict\x94\x93\x94\x8c\x08builtins\x94\x8c\x04list\x94\x93\x94\x85\x94R\x94\x8c\x07_domain\x94]\x94\x8c\x19colour.utilities.callback\x94\x8c\x08Callback\x94\x93\x94)\x81\x94}\x94(\x8c\x04name\x94\x8c\x11on_domain_changed\x94\x8c\x08function\x94h\x00\x8c\'SpectralDistribution._on_domain_changed\x94\x93\x94ubas\x8c\x05_name\x94\x8c\x03D65\x94\x8c\x06_dtype\x94\x8c\x05numpy\x94\x8c\x07float64\x94\x93\x94h\x0e\x8c\x15numpy.core.multiarray\x94\x8c\x0c_reconstruct\x94\x93\x94h\x1d\x8c\x07ndarray\x94\x93\x94K\x00\x85\x94C\x01b\x94\x87\x94R\x94(K\x01Ka\x85\x94h\x1d\x8c\x05dtype\x94\x93\x94\x8c\x02f8\x94\x89\x88\x87\x94R\x94(K\x03\x8c\x01<\x94NNNJ\xff\xff\xff\xffJ\xff\xff\xff\xffK\x00t\x94b\x89B\x08\x03\x00\x00\x00\x00\x00\x00\x00\xc0r@\x00\x00\x00\x00\x00\x10s@\x00\x00\x00\x00\x00`s@\x00\x00\x00\x00\x00\xb0s@\x00\x00\x00\x00\x00\x00t@\x00\x00\x00\x00\x00Pt@\x00\x00\x00\x00\x00\xa0t@\x00\x00\x00\x00\x00\xf0t@\x00\x00\x00\x00\x00@u@\x00\x00\x00\x00\x00\x90u@\x00\x00\x00\x00\x00\xe0u@\x00\x00\x00\x00\x000v@\x00\x00\x00\x00\x00\x80v@\x00\x00\x00\x00\x00\xd0v@\x00\x00\x00\x00\x00 w@\x00\x00\x00\x00\x00pw@\x00\x00\x00\x00\x00\xc0w@\x00\x00\x00\x00\x00\x10x@\x00\x00\x00\x00\x00`x@\x00\x00\x00\x00\x00\xb0x@\x00\x00\x00\x00\x00\x00y@\x00\x00\x00\x00\x00Py@\x00\x00\x00\x00\x00\xa0y@\x00\x00\x00\x00\x00\xf0y@\x00\x00\x00\x00\x00@z@\x00\x00\x00\x00\x00\x90z@\x00\x00\x00\x00\x00\xe0z@\x00\x00\x00\x00\x000{@\x00\x00\x00\x00\x00\x80{@\x00\x00\x00\x00\x00\xd0{@\x00\x00\x00\x00\x00 |@\x00\x00\x00\x00\x00p|@\x00\x00\x00\x00\x00\xc0|@\x00\x00\x00\x00\x00\x10}@\x00\x00\x00\x00\x00`}@\x00\x00\x00\x00\x00\xb0}@\x00\x00\x00\x00\x00\x00~@\x00\x00\x00\x00\x00P~@\x00\x00\x00\x00\x00\xa0~@\x00\x00\x00\x00\x00\xf0~@\x00\x00\x00\x00\x00@\x7f@\x00\x00\x00\x00\x00\x90\x7f@\x00\x00\x00\x00\x00\xe0\x7f@\x00\x00\x00\x00\x00\x18\x80@\x00\x00\x00\x00\x00@\x80@\x00\x00\x00\x00\x00h\x80@\x00\x00\x00\x00\x00\x90\x80@\x00\x00\x00\x00\x00\xb8\x80@\x00\x00\x00\x00\x00\xe0\x80@\x00\x00\x00\x00\x00\x08\x81@\x00\x00\x00\x00\x000\x81@\x00\x00\x00\x00\x00X\x81@\x00\x00\x00\x00\x00\x80\x81@\x00\x00\x00\x00\x00\xa8\x81@\x00\x00\x00\x00\x00\xd0\x81@\x00\x00\x00\x00\x00\xf8\x81@\x00\x00\x00\x00\x00 \x82@\x00\x00\x00\x00\x00H\x82@\x00\x00\x00\x00\x00p\x82@\x00\x00\x00\x00\x00\x98\x82@\x00\x00\x00\x00\x00\xc0\x82@\x00\x00\x00\x00\x00\xe8\x82@\x00\x00\x00\x00\x00\x10\x83@\x00\x00\x00\x00\x008\x83@\x00\x00\x00\x00\x00`\x83@\x00\x00\x00\x00\x00\x88\x83@\x00\x00\x00\x00\x00\xb0\x83@\x00\x00\x00\x00\x00\xd8\x83@\x00\x00\x00\x00\x00\x00\x84@\x00\x00\x00\x00\x00(\x84@\x00\x00\x00\x00\x00P\x84@\x00\x00\x00\x00\x00x\x84@\x00\x00\x00\x00\x00\xa0\x84@\x00\x00\x00\x00\x00\xc8\x84@\x00\x00\x00\x00\x00\xf0\x84@\x00\x00\x00\x00\x00\x18\x85@\x00\x00\x00\x00\x00@\x85@\x00\x00\x00\x00\x00h\x85@\x00\x00\x00\x00\x00\x90\x85@\x00\x00\x00\x00\x00\xb8\x85@\x00\x00\x00\x00\x00\xe0\x85@\x00\x00\x00\x00\x00\x08\x86@\x00\x00\x00\x00\x000\x86@\x00\x00\x00\x00\x00X\x86@\x00\x00\x00\x00\x00\x80\x86@\x00\x00\x00\x00\x00\xa8\x86@\x00\x00\x00\x00\x00\xd0\x86@\x00\x00\x00\x00\x00\xf8\x86@\x00\x00\x00\x00\x00 \x87@\x00\x00\x00\x00\x00H\x87@\x00\x00\x00\x00\x00p\x87@\x00\x00\x00\x00\x00\x98\x87@\x00\x00\x00\x00\x00\xc0\x87@\x00\x00\x00\x00\x00\xe8\x87@\x00\x00\x00\x00\x00\x10\x88@\x00\x00\x00\x00\x008\x88@\x00\x00\x00\x00\x00`\x88@\x94t\x94b\x8c\x06_range\x94h"h$K\x00\x85\x94h&\x87\x94R\x94(K\x01Ka\x85\x94h.\x89B\x08\x03\x00\x00\xbdR\x96!\x8eu\xa1?\x8c\xb9k\t\xf9\xa0\xfa?B`\xe5\xd0"[\n@d\xcc]K\xc8\x87\'@#\xdb\xf9~j<4@0\xbb\'\x0f\x0b\xa5<@\x02+\x87\x16\xd9\x86B@G\x03x\x0b$@C@\xef8EGr\xf9C@\x9e^)\xcb\x107E@\xb1\xe1\xe9\x95\xb2tF@33333\xe3F@\xb6\x84|\xd0\xb3QG@\x11\xc7\xba\xb8\x8d\xaeH@l\t\xf9\xa0g\x0bJ@\x95\xd4\th"\x84I@\xbe\x9f\x1a/\xdd\xfcH@Gr\xf9\x0f\xe9\'J@4\xa2\xb47\xf8RK@7\x89A`\xe5,Q@\x07\xf0\x16HP\xb0T@\x0f\x9c3\xa2\xb4\xc7U@\xc9v\xbe\x9f\x1a\xdfV@\x9a\x08\x1b\x9e^\x1dW@k\x9aw\x9c\xa2[W@\xcf\xf7S\xe3\xa5\x83V@\xe4\x83\x9e\xcd\xaa\xabU@\xe1\x0b\x93\xa9\x82\xf1W@\x8f\xc2\xf5(\\7Z@\x96C\x8bl\xe7\xbb[@\x8d\x97n\x12\x83@]@\n\xd7\xa3p=Z]@\x87\x16\xd9\xce\xf7s]@/\xdd$\x06\x81\x15]@\xc9v\xbe\x9f\x1a\xb7\\@\x0c\x02+\x87\x16\xd9\\@P\x8d\x97n\x12\xfb\\@sh\x91\xed|\x17\\@\x96C\x8bl\xe73[@h\x91\xed|?E[@-\xb2\x9d\xef\xa7V[@\xa2E\xb6\xf3\xfd$[@\x17\xd9\xce\xf7S\xf3Z@m\xe7\xfb\xa9\xf1\x92Z@\xc3\xf5(\\\x8f2Z@\x9e\xef\xa7\xc6K\x8fZ@j\xbct\x93\x18\xecZ@^\xbaI\x0c\x02\x83Z@R\xb8\x1e\x85\xeb\x19Z@fffff\x0eZ@m\xe7\xfb\xa9\xf1\x02Z@\xb6\xf3\xfd\xd4x\x81Y@\x00\x00\x00\x00\x00\x00Y@X\xca2\xc4\xb1\x8aX@\xaf\x94e\x88c\x15X@Gr\xf9\x0f\xe9\x03X@\xdfO\x8d\x97n\xf2W@W\xec/\xbb\'\x0fW@\xce\x88\xd2\xde\xe0+V@\xee\xeb\xc09#VV@\x0eO\xaf\x94e\x80V@A\xf1c\xcc]sV@\'\xc2\x86\xa7WfV@\xf6\x97\xdd\x93\x87)V@\xc6m4\x80\xb7\xecU@\x8fSt$\x97_U@\nh"lx\xd2T@\xa4\xdf\xbe\x0e\x9c\xdfT@?W[\xb1\xbf\xecT@\xac\x1cZd;wT@\x19\xe2X\x17\xb7\x01T@$(~\x8c\xb9\x07T@/n\xa3\x01\xbc\rT@\x9d\x11\xa5\xbd\xc1OT@\x0b\xb5\xa6y\xc7\x91T@D\x8bl\xe7\xfb\x11T@|a2U0\x92S@\xc0\xec\x9e<,\x80R@\xb5\xa6y\xc7)nQ@&S\x05\xa3\x92\xaaQ@\x97\xff\x90~\xfb\xe6Q@-\xb2\x9d\xef\xa7>R@u\x93\x18\x04V\x96R@\xd1"\xdb\xf9~\xfeP@Zd;\xdfO\xcdN@\xe4\x83\x9e\xcd\xaaoP@\x9bU\x9f\xab\xadxQ@\xde\x02\t\x8a\x1f\x1fR@!\xb0rh\x91\xc5R@\x92\xcb\x7fH\xbfUQ@k+\xf6\x97\xdd\xcbO@\xff\xb2{\xf2\xb0\x80K@\xf6\x97\xdd\x93\x875G@\xae\xd8_vONL@\xb3\x0cq\xac\x8b\xb3P@n\xa3\x01\xbc\x05FP@Tt$\x97\xff\xb0O@\x94t\x94b\x8c\r_interpolator\x94\x8c\x1ccolour.algebra.interpolation\x94\x8c\x12LinearInterpolator\x94\x93\x94\x8c\x14_interpolator_kwargs\x94}\x94\x8c\r_extrapolator\x94\x8c\x1ccolour.algebra.extrapolation\x94\x8c\x0cExtrapolator\x94\x93\x94\x8c\x14_extrapolator_kwargs\x94}\x94(\x8c\x06method\x94\x8c\x08Constant\x94\x8c\x04left\x94N\x8c\x05right\x94Nu\x8c\t_function\x94N\x8c\r_display_name\x94h\x1b\x8c\x06_shape\x94Nub.' |
Beta Was this translation helpful? Give feedback.
0 replies
-
I explored this a little bit but I want to be able to produce serialized outputs with colour that can easily be integrated into other user codebases. Offering a clearly defined output structure like protobufs that users can use code generation to read colour outputs. |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
I have been using protobufs to store and manipulate colour-data for a while in colour-specio and am quite happy with the result. It's an efficient binary storage that solves some of the problems of storing numpy-arrays using to-buffer or to-file which doesn't include important information like dtype and shape. Other types of data can be serialized to pandas frames relatively well, but at some point there is some utility to having a forwards compatible, expandable binary data structure to serialize and move things like
SpectralDistribution
around.If we start writing serialization for certain classes I would like help in, designing an api that can be added to various class signatures to signal to coders that this class supports binary serialization. For now it seems useful to serialze the most important objects like
Signal
or more usefullyMultiSpectralDistributions
andSpectralDistribution
but other candidate use cases would be CAM data objects and others.Other useful libraries might be FastBuffers (similar to Protobuf but less flexable and more easily memory mapped for multi-processing) and Amazon Ion (which I know nothing about, but seems more painful)
Thoughts?
Beta Was this translation helpful? Give feedback.
All reactions