Skip to content

Commit

Permalink
Dev (#14)
Browse files Browse the repository at this point in the history
* setup auto discover modules

* improve anatomist controller class
  • Loading branch information
mpascucci authored Mar 8, 2022
1 parent afaac63 commit 0dbd39b
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 11 deletions.
63 changes: 53 additions & 10 deletions dico_toolbox/anatomist/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,34 +8,77 @@
os.environ["QT_API"] = "pyqt5"

message_lines = ["NOTES for jupyter users:"
"Remember to set '%gui qt' in a cell of your notebook"
"Remember to set '%gui qt' in a cell of your notebook.\n"
"To hide anatomist logs, use the '%%capture' magic command at the beginning of the cell"]


class Anatomist():
info_displayed = False
instance = None
_instance = None
windows = {}
objects = {}
blocks = {}

def __init__(self):
log.warning("/n".join(message_lines))
self.instance = anatomist.Anatomist()
self._instance = anatomist.Anatomist()

def new_window_3D(self, name="Default"):
w = self.instance.createWindow("3D", geometry=[1200, 350, 500, 500])
def _new_window(self, name, window_type, **kwargs):
w = self._instance.createWindow(window_type, **kwargs)
self.windows[name] = w
return w

def new_window_block(self, name="DefaultBlock", columns=2, windows=("Axial", "Sagittal", "Coronal", "3D")):
"""Create a new window block"""
block = self._instance.createWindowsBlock(2) # 2 columns
wd = {wt: self._new_window(
f"{name}_{wt}", window_type=wt, block=block) for wt in windows}
self.windows.update(wd)
block.windows = wd
self.blocks[name] = block

def new_window_3D(self, name="Default", size=(500, 500), pos=(0, 0)):
"""Create a new window"""
self._new_window(name, window_type="3D", geometry=pos + size)

def new_window_Sagittal(self, name="Default", size=(500, 500), pos=(0, 0)):
self._new_window(name, window_type="Sagittal", geometry=pos + size)

def new_window_Axial(self, name="Default", size=(500, 500), pos=(0, 0)):
self._new_window(name, window_type="Axial", geometry=pos + size)

def new_window_Coronal(self, name="Default", size=(500, 500), pos=(0, 0)):
self._new_window(name, window_type="Coronal", geometry=pos + size)

def get_window_names(self):
return list(self.windows.keys())

def close(self):
self.instance.close()
self._instance.close()

def get_anatomist_instance(self):
return self._instance

def reload_objects(self):
self._instance.reloadObjects(self._instance.getObjects())

def add_objects(self, objects, window_name="Default"):
def _add_objects(self, objects, window_names=["Default"]):
if type(objects) == dict:
pass
elif type(objects) in [list, tuple]:
# list to dict
objects = {str(n): obj for n, obj in enumerate(object)}
objects = {str(n): obj for n, obj in enumerate(objects)}

for name, obj in objects.items():
m = self.instance.toAObject(obj)
m = self._instance.toAObject(obj)
m.name = name
m.addInWindows(self.windows[window_name])
m.addInWindows([self.windows[window_name]
for window_name in window_names])
self.objects[name] = obj

def add_objects_to_window(self, objects, window_name="Default"):
self._add_objects(objects, window_names=[window_name])

def add_objects_to_block(self, objects, block_name="DefaultBlock"):
window_names = self.blocks[block_name].windows
self._add_objects(objects, window_names=window_names)
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@
long_description=long_description,
long_description_content_type="text/markdown",
url=release_info['URL'],
packages=['dico_toolbox'],
packages=setuptools.find_packages(),
install_requires=release_info["REQUIRES"],
classifiers=release_info["CLASSIFIERS"],
extras_require=release_info['EXTRA_REQUIRES'],
Expand Down

0 comments on commit 0dbd39b

Please sign in to comment.