Skip to content
Commits on Source (5)
invesalius (3.1.99992-1) UNRELEASED; urgency=medium
[ Thiago Franco de Moraes ]
* New upstream version
Closes: #908456
-- Thiago Franco de Moraes <tfmoraes@cti.gov.br> Mon, 10 Sep 2018 11:57:50 -0300
invesalius (3.1.99991-1) unstable; urgency=medium
[ Thiago Franco de Moraes ]
......
......@@ -5,11 +5,11 @@ Uploaders: Andreas Tille <tille@debian.org>,
Section: graphics
Priority: optional
Build-Depends: debhelper (>= 11~),
python-all-dev,
cython,
python3-all-dev,
cython3,
dh-python,
python-numpy
Build-Depends-Indep: python
python3-numpy
Build-Depends-Indep: python3
Standards-Version: 4.2.0
Vcs-Browser: https://salsa.debian.org/med-team/invesalius
Vcs-Git: https://salsa.debian.org/med-team/invesalius.git
......@@ -19,19 +19,17 @@ Package: invesalius
Architecture: all
Depends: ${python:Depends},
${misc:Depends},
python-numpy,
python-scipy,
python-skimage,
python-wxgtk4.0,
python-pil,
python-gdcm,
python-vtkgdcm,
python-vtk6,
python-nibabel,
python-serial,
python-psutil,
python-configparser,
python-concurrent.futures,
python3-numpy,
python3-scipy,
python3-skimage,
python3-wxgtk4.0,
python3-pil,
python3-gdcm,
python3-vtkgdcm,
python3-vtk7,
python3-nibabel,
python3-serial,
python3-psutil,
invesalius-bin
Description: 3D medical imaging reconstruction software
InVesalius generates 3D medical imaging reconstructions based on a sequence of
......
......@@ -14,10 +14,10 @@ version=2.0.5
major=2
%:
dh $@ --with python2
dh $@ --with python3
override_dh_auto_build: create-cython-dir
python setup.py build_ext --inplace
python3 setup.py build_ext --inplace
override_dh_auto_clean:
# dh_auto_clean
......@@ -40,10 +40,9 @@ override_dh_clean:
create-launcher:
echo '#!/bin/sh' > invesalius3
echo 'export PYTHONPATH=$$PYTHONPATH:"/usr/lib/invesalius"' >> invesalius3
echo 'export PYTHONPATH=$$PYTHONPATH:"/usr/lib/python2.7/dist-packages/wxPython-4.0.1-py2.7-linux-amd64.egg"' >> invesalius3
echo 'export INVESALIUS_LIBRARY_PATH="/usr/share/invesalius/"' >> invesalius3
echo 'cd $$INVESALIUS_LIBRARY_PATH' >> invesalius3
echo 'python app.py $$@' >> invesalius3
echo 'python3 app.py $$@' >> invesalius3
override_dh_install: create-launcher
dh_install
......
......@@ -352,7 +352,7 @@ As shown in Figure~\ref{fig:proj_maxip_qtd}, the number of MaxIP images is set a
\subsection{MinIP}
Unlike MaxIP, MinIP (\textit{Minimun Intensity Projection}) selects only the voxels that have minimal intensity among those visited, as shown in Figure~\ref{fig:proj_minIP}. The image number selection comprising the projection is made at the bottom of each orientation image as shown in Figure~\ref{fig:proj_maxip_qtd}.
Unlike MaxIP, MinIP (\textit{Minimum Intensity Projection}) selects only the voxels that have minimal intensity among those visited, as shown in Figure~\ref{fig:proj_minIP}. The image number selection comprising the projection is made at the bottom of each orientation image as shown in Figure~\ref{fig:proj_maxip_qtd}.
\begin{figure}[!h]
\centering
......
......@@ -412,7 +412,7 @@ Como mostra a figura~\ref{fig:proj_maxip_qtd}, a quantidade de imagens que irá
\subsection{MinIP}
Ao contrário do MaxIP, o MinIP (\textit{Minimun Intensity Projection}) seleciona somente os voxels que possuem internsidade minima entre os visitados, apresentamos na figura~\ref{fig:proj_minIP} um exemplo. A seleção da quantidade de imagens que irá compor a projeção é feita no inferior da imagem de cada orientação como mostra a figura~\ref{fig:proj_maxip_qtd}.
Ao contrário do MaxIP, o MinIP (\textit{Minimum Intensity Projection}) seleciona somente os voxels que possuem internsidade minima entre os visitados, apresentamos na figura~\ref{fig:proj_minIP} um exemplo. A seleção da quantidade de imagens que irá compor a projeção é feita no inferior da imagem de cada orientação como mostra a figura~\ref{fig:proj_maxip_qtd}.
\begin{figure}[H]
\centering
......
......@@ -355,7 +355,7 @@ if hasattr(sys,"frozen") and (sys.frozen == "windows_exe"\
else:
ICON_DIR = os.path.abspath(os.path.join(FILE_PATH, u'..', u'icons'))
SAMPLE_DIR = os.path.abspath(os.path.join(FILE_PATH, u'..', u'samples'))
SAMPLE_DIR = u"/usr/share/doc/invesalius-examples/examples/"
DOC_DIR = os.path.abspath(os.path.join(FILE_PATH, u'..', u'docs'))
folder=RAYCASTING_PRESETS_DIRECTORY= os.path.abspath(os.path.join(u".",
......
......@@ -173,7 +173,7 @@ cdef class Mesh:
Params:
v_id: id of the vertex
dmax: the maximun distance.
dmax: the maximum distance.
"""
cdef vector[vertex_id_t]* idfaces
cdef vector[vertex_id_t]* near_vertices = new vector[vertex_id_t]()
......@@ -230,7 +230,7 @@ cdef vector[weight_t]* calc_artifacts_weight(Mesh mesh, vector[vertex_id_t]& ver
vertices_staircase: the identified staircase artifact vertices
tmax: max distance the vertex must be to its nearest artifact vertex
to considered to calculate the weight
bmin: The minimun weight.
bmin: The minimum weight.
"""
cdef int vi_id, vj_id, nnv, n_ids, i, j
cdef vector[vertex_id_t]* near_vertices
......@@ -444,7 +444,7 @@ def ca_smoothing(Mesh mesh, double T, double tmax, double bmin, int n_iters):
vertex a staircase artifact
tmax: max distance the vertex must be to its nearest artifact vertex
to considered to calculate the weight
bmin: The minimun weight
bmin: The minimum weight
n_iters: Number of iterations.
"""
cdef double[3] stack_orientation = [0.0, 0.0, 1.0]
......
......@@ -30,7 +30,7 @@ import invesalius.constants as const
import invesalius.data.imagedata_utils as iu
import invesalius.session as ses
from . import floodfill
from invesalius_cy import floodfill
from wx.lib.pubsub import pub as Publisher
from scipy import ndimage
......
......@@ -33,9 +33,9 @@ import invesalius.session as ses
import invesalius.utils as utils
from invesalius.data.mask import Mask
from invesalius.project import Project
from invesalius.data import mips
from invesalius_cy import mips
from invesalius.data import transforms
from invesalius_cy import transforms
import invesalius.data.transformations as transformations
OTHER=0
PLIST=1
......
......@@ -47,7 +47,7 @@ from skimage.morphology import watershed
import invesalius.gui.dialogs as dialogs
from invesalius.data.measures import MeasureData
from . import floodfill
from invesalius_cy import floodfill
import invesalius.data.watershed_process as watershed_process
import invesalius.utils as utils
......
......@@ -48,7 +48,7 @@ import invesalius.data.surface_process as surface_process
import invesalius.utils as utl
import invesalius.data.vtk_utils as vu
from invesalius.data import cy_mesh
from invesalius_cy import cy_mesh
# TODO: Verificar ReleaseDataFlagOn and SetSource
class Surface():
......
......@@ -52,7 +52,7 @@ class Trigger(threading.Thread):
def __bind_events(self):
Publisher.subscribe(self.OnStylusPLH, 'PLH Stylus Button On')
def OnStylusPLH(self, pubsuv_evt):
def OnStylusPLH(self):
self.stylusplh = True
def stop(self):
......
......@@ -1135,7 +1135,7 @@ class MeasuresListCtrlPanel(wx.ListCtrl, listmix.TextEditMixin):
index=index, visibility=visibility)
def OnLoadData(self, measurement_dict, spacing=(1.0, 1.0, 1.0)):
for i in measurement_dict:
for i in sorted(measurement_dict):
m = measurement_dict[i]
image = self.CreateColourBitmap(m.colour)
image_index = self.imagelist.Add(image)
......
......@@ -239,6 +239,7 @@ class InnerFoldPanel(wx.Panel):
Publisher.sendMessage('Update trigger state', trigger_state=ctrl.GetValue())
def OnShowObject(self, evt=None, flag=None, obj_name=None):
if not evt:
if flag:
self.checkobj.Enable(True)
self.track_obj = True
......@@ -252,6 +253,7 @@ class InnerFoldPanel(wx.Panel):
Publisher.sendMessage('Update show object state', state=self.checkobj.GetValue())
def OnVolumeCamera(self, evt=None, target_mode=None):
if not evt:
if target_mode is True:
self.checkcamera.SetValue(0)
Publisher.sendMessage('Update volume camera state', camera_state=self.checkcamera.GetValue())
......@@ -860,7 +862,7 @@ class ObjectRegistrationPanel(wx.Panel):
self.btn_load.Enable(1)
if self.obj_fiducials is not None:
self.checktrack.Enable(1)
Publisher.sendMessage('Enable target button', True)
#Publisher.sendMessage('Enable target button', True)
def OnSelectAngleThreshold(self, evt, ctrl):
Publisher.sendMessage('Update angle threshold', angle=ctrl.GetValue())
......@@ -1121,7 +1123,7 @@ class MarkersPanel(wx.Panel):
self.tgt_index = self.lc.GetFocusedItem()
self.lc.SetItemBackgroundColour(self.tgt_index, 'RED')
Publisher.sendMessage('Update target', coord=self.list_coord[self.tgt_index])
Publisher.sendMessage('Update target', coord=self.list_coord[self.tgt_index][:6])
Publisher.sendMessage('Set target transparency', status=True, index=self.tgt_index)
Publisher.sendMessage('Disable or enable coil tracker', status=True)
self.OnMenuEditMarkerId('TARGET')
......@@ -1152,7 +1154,7 @@ class MarkersPanel(wx.Panel):
# OnDeleteSingleMarker is used for both pubsub and button click events
# Pubsub is used for fiducial handle and button click for all others
if marker_id is not None:
if not evt:
if self.lc.GetItemCount():
for id_n in range(self.lc.GetItemCount()):
item = self.lc.GetItem(id_n, 4)
......
......@@ -229,10 +229,9 @@ class SliceMenu(wx.Menu):
if sys.platform.startswith('linux'):
for i in self.pseudo_color_items:
it = self.pseudo_color_items[i]
if it.IsChecked():
it.Toggle()
it.Check(False)
item.Toggle()
item.Check()
self.HideClutDialog()
self._gen_event = True
......@@ -244,10 +243,9 @@ class SliceMenu(wx.Menu):
if sys.platform.startswith('linux'):
for i in self.pseudo_color_items:
it = self.pseudo_color_items[i]
if it.IsChecked():
it.Toggle()
it.Check(False)
item.Toggle()
item.Check()
self.HideClutDialog()
self._gen_event = True
......@@ -276,10 +274,9 @@ class SliceMenu(wx.Menu):
if sys.platform.startswith('linux'):
for i in self.pseudo_color_items:
it = self.pseudo_color_items[i]
if it.IsChecked():
it.Toggle()
it.Check(False)
item.Toggle()
item.Check()
item = self.ID_TO_TOOL_ITEM[evt.GetId()]
item.Check(True)
self._gen_event = False
......
......@@ -11,26 +11,26 @@ import numpy
if sys.platform.startswith('linux'):
setup(
cmdclass = {'build_ext': build_ext},
ext_modules = cythonize([ Extension("invesalius.data.mips", ["invesalius/data/mips.pyx"],
ext_modules = cythonize([ Extension("invesalius_cy.mips", ["invesalius_cy/mips.pyx"],
include_dirs = [numpy.get_include()],
extra_compile_args=['-fopenmp'],
extra_link_args=['-fopenmp']),
Extension("invesalius.data.interpolation", ["invesalius/data/interpolation.pyx"],
Extension("invesalius_cy.interpolation", ["invesalius_cy/interpolation.pyx"],
include_dirs=[numpy.get_include()],
extra_compile_args=['-fopenmp',],
extra_link_args=['-fopenmp',]),
Extension("invesalius.data.transforms", ["invesalius/data/transforms.pyx"],
Extension("invesalius_cy.transforms", ["invesalius_cy/transforms.pyx"],
include_dirs=[numpy.get_include()],
extra_compile_args=['-fopenmp',],
extra_link_args=['-fopenmp',]),
Extension("invesalius.data.floodfill", ["invesalius/data/floodfill.pyx"],
Extension("invesalius_cy.floodfill", ["invesalius_cy/floodfill.pyx"],
include_dirs=[numpy.get_include()],
language='c++',),
Extension("invesalius.data.cy_mesh", ["invesalius/data/cy_mesh.pyx"],
Extension("invesalius_cy.cy_mesh", ["invesalius_cy/cy_mesh.pyx"],
include_dirs=[numpy.get_include()],
extra_compile_args=['-fopenmp', '-std=c++11'],
extra_link_args=['-fopenmp', '-std=c++11'],
......