Skip to content

Commit 590aae5

Browse files
authored
Switch PickleToNpz for Npz column and remove conversion script (#242)
* Use Npz custom column type * Delete conversion script * Change obj to value
1 parent dae4028 commit 590aae5

File tree

1 file changed

+8
-22
lines changed

1 file changed

+8
-22
lines changed

deepcell_label/models.py

+8-22
Original file line numberDiff line numberDiff line change
@@ -33,17 +33,7 @@
3333
db = SQLAlchemy(session_options={'autoflush': False}) # pylint: disable=C0103
3434

3535

36-
def load_pickle_obj(obj):
37-
return pickle.loads(obj)
38-
39-
40-
def load_npz_from_db(obj):
41-
bytestream = io.BytesIO(obj)
42-
bytestream.seek(0)
43-
return np.load(bytestream)['array']
44-
45-
46-
class PickleToNpz(types.TypeDecorator):
36+
class Npz(types.TypeDecorator):
4737
"""Marshals a pickles already in the database to npz if not already npz"""
4838
impl = types.LargeBinary
4939

@@ -56,15 +46,11 @@ def process_bind_param(self, value, dialect):
5646
return bytestream.read()
5747

5848
def process_result_value(self, value, dialect):
59-
# Some columns are still pickles,
60-
# others have been converted to NPZ
6149
if value is None:
6250
return None
63-
try:
64-
result = load_pickle_obj(value)
65-
except pickle.UnpicklingError:
66-
result = load_npz_from_db(value)
67-
return result
51+
bytestream = io.BytesIO(value)
52+
bytestream.seek(0)
53+
return np.load(bytestream)['array']
6854

6955

7056
@compiles(db.PickleType, 'mysql')
@@ -563,7 +549,7 @@ class RawFrame(db.Model):
563549
project_id = db.Column(db.Integer, db.ForeignKey('projects.id'),
564550
primary_key=True, nullable=False)
565551
frame_id = db.Column(db.Integer, primary_key=True, nullable=False)
566-
frame = db.Column(PickleToNpz)
552+
frame = db.Column(Npz)
567553

568554
def __init__(self, frame_id, frame):
569555
self.frame_id = frame_id
@@ -585,7 +571,7 @@ class RGBFrame(db.Model):
585571
project_id = db.Column(db.Integer, db.ForeignKey('projects.id'),
586572
primary_key=True, nullable=False)
587573
frame_id = db.Column(db.Integer, primary_key=True, nullable=False)
588-
frame = db.Column(PickleToNpz)
574+
frame = db.Column(Npz)
589575

590576
def __init__(self, frame_id, frame):
591577
self.frame_id = frame_id
@@ -683,7 +669,7 @@ class LabelFrame(db.Model):
683669
project_id = db.Column(db.Integer, db.ForeignKey('projects.id'),
684670
primary_key=True, nullable=False)
685671
frame_id = db.Column(db.Integer, primary_key=True, nullable=False)
686-
frame = db.Column(MutableNdarray.as_mutable(PickleToNpz))
672+
frame = db.Column(MutableNdarray.as_mutable(Npz))
687673

688674
actions = association_proxy('frame_actions', 'action')
689675

@@ -787,7 +773,7 @@ class FrameMemento(db.Model):
787773
project_id = db.Column(db.Integer)
788774
action_id = db.Column(db.Integer)
789775
frame_id = db.Column(db.Integer)
790-
frame_array = db.Column(PickleToNpz)
776+
frame_array = db.Column(Npz)
791777

792778
action = db.relationship("Action", backref="action_frames")
793779
frame = db.relationship("LabelFrame", backref="frame_actions")

0 commit comments

Comments
 (0)