Skip to content

Commit

Permalink
my recent progress on serialization
Browse files Browse the repository at this point in the history
  • Loading branch information
fcollman committed May 19, 2017
1 parent 8f57f0c commit 2ed6fa7
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 5 deletions.
33 changes: 30 additions & 3 deletions PositionList.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,28 @@
from scipy.interpolate import griddata
import lxml.etree as ET
import json

import marshmallow as mm

class NumberDisplaySettingsSchema(mm.Schema):
shownumbers = mm.fields.Bool(required=True)
color = mm.fields.Str(required=True)
horizontalAlignment = mm.fields.Str(required=True)
verticalAlignment = mm.fields.Str(required=True)

class NumberDisplaySettings(object):
def __init__(self,shownumbers=False,color='y',horizontalAlignment='right',verticalAlignment='top'):
self.shownumbers = shownumbers
self.color=color
self.horizontalAlignment = horizontalAlignment
self.verticalAlignment = verticalAlignment


class posListSchema(mm.Schema):
mosaic_settings = mm.Nested(MosaicSettingsSchema,required=True)
camera_settings = mm.Nested(CameraSettingsSchema,required=True)
slicePositions = mm.List(slicePositionSchema)
dosort = mm.fields.Bool(required=False,default=True)
numberDisplaySettings = mm.Nested(NumberDisplaySettings)

class posList():
"""class for holding, altering, and plotting the position list"""
def __init__(self,axis,mosaic_settings=MosaicSettings(),camera_settings=CameraSettings(),
Expand Down Expand Up @@ -944,7 +958,20 @@ def destroy(self):
for pos in self.slicePositions:
pos.destroy()
del pos


class slicePositionSchema(mm.Schema):
x = mm.fields.Float(required=True)
y = mm.fields.Float(required=True)
angle = mm.fields.Angle(required=True)
showAngle = mm.fields.Bool(required=False,default=True)
selected = mm.fields.Bool(required=False,default=False)
activated = mm.fields.Bool(required=False,default=True)
withpoint = mm.fields.Bool(required=False,default=True)
number = mm.fields.Int(required=True)
numberDisplaySettings = mm.Nested(NumberDisplaySettings)
self.frameList = mm.Nested(posListSchema)


class slicePosition():
"""class which contains information about a single position in the position list, and is responsible for keeping
its matplotlib representation up to date via function calls which are mostly managed by its posList"""
Expand Down
16 changes: 14 additions & 2 deletions Settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import wx
import os
import json
import marshmallow as mm

class DirectorySettings():

Expand Down Expand Up @@ -426,7 +427,12 @@ def GetSettings(self):
inlier_thresh = self.inlierThreshIntCtrl.GetValue()
return SiftSettings(contrastThreshold,numFeatures,inlier_thresh)


class CameraSettingsSchema(mm.Schema):
sensor_height = mm.fields.Int(required=True)
sensor_widht = mm.fields.Int(required=True)
pix_width = mm.fields.Float(required=True)
pix_height = mm.fields.Float(required=True)

class CameraSettings():
"""simple struct for containing the parameters for the camera"""
def __init__(self,sensor_height=1040,sensor_width=1388,pix_width=6.5,pix_height=6.5):
Expand Down Expand Up @@ -600,7 +606,13 @@ def GetSettings(self):
zoffsets[ch]=self.ZOffCtrls[i].GetValue()
return ChannelSettings(self.settings.channels,exposure_times=exposure_times,zoffsets=zoffsets,usechannels=usechannels,prot_names=prot_names,map_chan=map_chan)


class MosaicSettingsSchema(mm.Schema):
mx = mm.fields.Int(required=True)
my = mm.fields.Int(required=True)
overlap = mm.fields.Int(required=True)
show_box = mm.fields.Bool(required=True)
mag = mm.fields.Float(required=True)

class MosaicSettings:
def __init__(self,mag=65.486,mx=1,my=1,overlap=20,show_box=False,show_frames=False):
"""a simple struct class for encoding settings about mosaics
Expand Down

0 comments on commit 2ed6fa7

Please sign in to comment.