We previously had implementations of __getstate__ and __setstate__ which (1) didn't work for non-human genomes and (2) used fragile positional arguments. This PR:
Creates a Serializable base class for Genome, EnsemblRelease, Gene, Transcript, and Exon, Species. This allows us to share serialization/flattening code between these objects with copy/paste madness.
Adds to_json/from_json and to_dict/from_dict methods to all serializable objects.
Moves normalize_chromosome and normalize_strand to a separate module (no changes to actual code)
Moved global state from species.py onto the Species class
Coverage increased (+0.7%) to 80.679% when pulling dc38ec75d8a2c5c97644d8243a85e79565256dc0 on json_serialization into 3108c6efea2c1dc9f36277348529a9fe5755f251 on master.
Coverage increased (+0.6%) to 80.607% when pulling 90bdfc16e3bd1b0f22d00850a05f1d4b1fe13488 on json_serialization into 3108c6efea2c1dc9f36277348529a9fe5755f251 on master.
Coverage increased (+0.6%) to 80.607% when pulling 90bdfc16e3bd1b0f22d00850a05f1d4b1fe13488 on json_serialization into 3108c6efea2c1dc9f36277348529a9fe5755f251 on master.
Coverage increased (+1.3%) to 81.356% when pulling 36495972491e17e65f8dbdbd51eb32ab84a24cfa on json_serialization into 3108c6efea2c1dc9f36277348529a9fe5755f251 on master.
Coverage increased (+1.3%) to 81.356% when pulling 36495972491e17e65f8dbdbd51eb32ab84a24cfa on json_serialization into 3108c6efea2c1dc9f36277348529a9fe5755f251 on master.
Coverage increased (+0.5%) to 80.544% when pulling 8d7bf729e9df3085fe3bf054aabef5382f43a85d on json_serialization into 3108c6efea2c1dc9f36277348529a9fe5755f251 on master.
Coverage increased (+0.5%) to 80.568% when pulling 8d7bf729e9df3085fe3bf054aabef5382f43a85d on json_serialization into 3108c6efea2c1dc9f36277348529a9fe5755f251 on master.
Coverage increased (+1.1%) to 81.503% when pulling b341b1402c43687b866423b2750b9d9be68d48dc on json_serialization into f2e4eead4cf6339cf919f13c83201309d49a1810 on master.
Coverage increased (+1.1%) to 81.503% when pulling b341b1402c43687b866423b2750b9d9be68d48dc on json_serialization into f2e4eead4cf6339cf919f13c83201309d49a1810 on master.
Coverage increased (+1.06%) to 81.419% when pulling 421498d51dbd9f26b424b59113c32efc45ee6423 on json_serialization into f2e4eead4cf6339cf919f13c83201309d49a1810 on master.
We previously had implementations of
__getstate__
and__setstate__
which (1) didn't work for non-human genomes and (2) used fragile positional arguments. This PR:Serializable
base class forGenome
,EnsemblRelease
,Gene
,Transcript
, andExon
,Species
. This allows us to share serialization/flattening code between these objects with copy/paste madness.to_json
/from_json
andto_dict
/from_dict
methods to all serializable objects.normalize_chromosome
andnormalize_strand
to a separate module (no changes to actual code)species.py
onto theSpecies
classThis change is