Code Monkey home page Code Monkey logo

slicerheart's Introduction

SlicerHeart extension for 3D Slicer

SlicerHeart extension contains tools for cardiac image import (3D/4D ultrasound, CT, MRI), quantification, surgical planning, and implant placement planning and assessment.

The extension currently includes the following features (new features are added continuously):

  • Cardiac image import and export:
    • DICOM ultrasound image importer plugins: they allow loading Philips Affinity 3D ultrasound images, GE 3D ultrasound images and 2D image sequences, Eigen Artemis 3D ultrasound images, and some Siemens, Samsung, Canon, and Hitachi 3D ultrasound images.
    • Philips 4D US DICOM patcher: Cartesian 4D echo images exported by Philips QLAB are not valid DICOM files. This module fixes the files and makes them loadable into 3D Slicer.
    • Reconstruct 4D cine-MRI: Reconstruct sequence of Cartesian volumes from a sparse set of cine-MRI frames.
    • Carto Export: export models to to be used in Carto EP mapping systems.
    • TomTec UCD data file importer: allows loading *.UCD.data.zip file as a model sequence. When drag-and-dropping the zip file to the application window, then choose "No" to the question "The selected file is a zip archive, open it and load contents" and then click OK in the displayed "Add data..." window.
  • Cardiac image visualization:
    • Echo Volume Render: module for display of 3D/4D cardiac ultrasound images with distance-dependent coloring.
    • Valve View: module for visualization of heart valves: allows reslicing the volume using two rotating orthogonal planes. This feature is mainly for Slicer-4.10, as in Slicer-4.11 and later, this feature is built into Slicer core (enable slice intersections and Ctrl/Cmd + Alt + Left-click-and drag to rotate slice view).
  • Quantification:
    • Valve annulus analysis: specify basic heart valve properties and annulus contour.
    • Valve segmentation: module for volumetric segmentation of heart valves.
    • Leaflet analysis: create valve leaflet surface models from volmetric valve segmentation.
    • Valve papillary analysis: allow specify papillary muscles and chords to compute angles and lengths.
    • Valve quantification: automatic computation heart valve annulus, leaflet, and papillary metrics
    • Valve batch export: run valve quantification and export results for a large cohort of data.
    • Orifice area: measure cross-sectional area of openings in a model, for example to quantify regurgitant orifice area.
    • Annulus Shape Analyzer: make population-wise observations on dynamic annular shape.
    • Fluoro Flow Calculator: measuring Qp-split using readily available fluoroscopy sequences.
  • Implant placement planning and assessment:
    • Cardiac Device Simulator: module for evaluating placement of cardiac implants. Shows all cardiac device models (Harmony device, generic cylindrical device, various ASD/VSD devices) and all available analysis tools.
    • ASD/VSD Device Simulator: cardiac device simulator for ASD/VSD device placement analysis.
    • TCAV Valve Simulator
    • ValveClip Device Simulator
    • Leaflet Mold Generator: tool for automatic generation of 3D-printable molds for making simulated valves out of silicone.
  • Surgical planning:
    • Baffle planner: modeling tool for virtual planning of intracardiac baffle - or any other thin curved surfaces in any clinical specialties (for example, cranial flaps).

Installation and setup

  • Download and install 3D Slicer from http://download.slicer.org/
  • Start Slicer, in the Extension manager install SlicerHeart extension (in Cardiac category), click Yes to install all dependencies, click Restart

If you have any questions about installing or using SlicerHeart modules please post it on the Slicer forum.

Authors

  • Authors: Matthew Jolley (CHOP/UPenn), Andras Lasso (PerkLab, Queen's University), Christian Herz (CHOP), Csaba Pinter (Pixel Medical), Anna Ilina (PerkLab, Queen's University), Steve Pieper (Isomics), Adam Rankin (Robarts)
  • Contacts:
  • License: BSD 3-Clause License

How to cite

If you utilized SlicerHeart, please cite the following paper when referring to SlicerHeart in your publication:

Lasso, A., Herz, C., Nam, H., Cianciulli, A., Pieper, S., Drouin, S., Pinter, C., St-Onge, S., Vigil, C., Ching, S., Sunderland, K., Fichtinger, G., Kikinis, R., & Jolley, M. A. (2022). "SlicerHeart: An open-source computing platform for cardiac image analysis and modeling." Frontiers in Cardiovascular Medicine, 9. https://doi.org/10.3389/fcvm.2022.886549

@ARTICLE{Lasso2022,
  title     = "{SlicerHeart}: An open-source computing platform for cardiac
               image analysis and modeling",
  author    = "Lasso, Andras and Herz, Christian and Nam, Hannah and
               Cianciulli, Alana and Pieper, Steve and Drouin, Simon and
               Pinter, Csaba and St-Onge, Samuelle and Vigil, Chad and Ching,
               Stephen and Sunderland, Kyle and Fichtinger, Gabor and Kikinis,
               Ron and Jolley, Matthew A",
  journal   = "Frontiers in Cardiovascular Medicine",
  publisher = "Frontiers Media SA",
  volume    =  9,
  month     =  sep,
  year      =  2022,
  copyright = "https://creativecommons.org/licenses/by/4.0/"
}

Acknowledgments

This work was partially supported by:

  • Department of Anesthesia and Critical Care at The Children’s Hospital of Philadelphia(CHOP)
  • The Cora Topolewski Fund at the Children's Hospital of Philadelphia
  • CHOP Frontier Grant (Pediatric Valve Center)
  • National Heart, Blood, and Lung Institute (NHLBI) (R01 HL153166)
  • National Institute of Biomedical Imaging and Bioengineering (NIBIB) (P41 EB015902)
  • Cancer Care Ontario with funds provided by the Ontario Ministry of Health and Long-Term Care
  • Natural Sciences and Engineering Research Council of Canada
  • Big Hearts to Little Hearts
  • Children’s Hospital of Philadelphia Cardiac Center Innovation Fund
  • National Cancer Institute (NCI) (contract number 19X037Q from Leidos Biomedical Research under Task Order HHSN26100071 from NCI, funding development of NCI Imaging Data Commons)

slicerheart's People

Contributors

amins3 avatar che85 avatar cpinter avatar cvigil5 avatar fedorov avatar jamesobutler avatar jcfr avatar lassoan avatar pieper avatar sunderlandkyl avatar tbirdso avatar yehan0223 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

slicerheart's Issues

python file is missing in extension

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/Applications/Slicer.app/Contents/Extensions-27501/SlicerHeart/lib/Slicer-4.10/qt-scripted-modules/CardiacDeviceSimulator.py", line 5, in <module>
    from CardiacDeviceSimulatorUtils.devices import *
ImportError: No module named CardiacDeviceSimulatorUtils.devices

NRRD Patch failure

Hi,

I am attempting to patch a 3D Cartesian DICOM format of a mitral valve obtained from QLab 10 from a Philips machine. I initially tried using the Heart Slicer with Slicer 4 v 4.10.2. With this version, I cannot patch the DICOM due to an error regarding the software unable to recognize pydicom as a module. The error is "pydicom modue not found." Of note, I have both 2.7 and 3.7 releases of python and I have pydicom module with python when I attempt to access it outside of the Slicer4 software.

I then updated Slicer to v4.11.0 and tried again. Now I can patch the DICOM but I am unable to write to NRRD Format. I've tried both versions of Slicer4 on both a Mac OSX Catalina and Windows 10 Pro x64. I have python installed on both devices.

The error from the NRRD format bug is below: This error was copied from my Mac OSx Catalina x64 with Slicer4 v4.11.0.


DICOM patching started...
Examining ./.DS_Store...
Not DICOM file. Skipped.
Examining ./T001361759_17Jan2020_1HUAY5RH_.dcm...
Patching...
Writing DICOM...
Created DICOM file: /Users/singamnv/Documents/3DDICOM/E2Results/T001361759_17Jan2020_1HUAY5RH_.dcm
sopClassUID 1.2.840.113543.6.6.1.3.10002 != supportedSOPClassUID 1.2.840.10008.5.1.4.1.1.3.1
Writing NRRD...
Traceback (most recent call last):
File "/Applications/Slicer.app/Contents/Extensions-28734/SlicerHeart/lib/Slicer-4.11/qt-scripted-modules/Philips4dUsDicomPatcher.py", line 103, in onPatchButton
self.logic.patchDicomDir(self.inputDirSelector.currentPath, self.outputDirSelector.currentPath, self.enableDicomOutputCheckBox.checked, self.anonymizeDicomCheckBox.checked, self.enableNrrdOutputCheckBox.checked)
File "/Applications/Slicer.app/Contents/Extensions-28734/SlicerHeart/lib/Slicer-4.11/qt-scripted-modules/Philips4dUsDicomPatcher.py", line 299, in patchDicomDir
if self.convertUltrasoundDicomToNrrd(patchedFilePath, nrrdFilePath):
File "/Applications/Slicer.app/Contents/Extensions-28734/SlicerHeart/lib/Slicer-4.11/qt-scripted-modules/Philips4dUsDicomPatcher.py", line 158, in convertUltrasoundDicomToNrrd
sequenceNode = dicomPlugin.load(loadable)
File "/Applications/Slicer.app/Contents/Extensions-28734/SlicerHeart/lib/Slicer-4.11/qt-scripted-modules/DicomUltrasoundPlugin.py", line 337, in load
loadedNode = self.loadPhilips4DUSAsSequence(loadable)
File "/Applications/Slicer.app/Contents/Extensions-28734/SlicerHeart/lib/Slicer-4.11/qt-scripted-modules/DicomUltrasoundPlugin.py", line 423, in loadPhilips4DUSAsSequence
pixelSize = reduce(lambda x,y : x*y, pixelShape)
NameError: name 'reduce' is not defined

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Applications/Slicer.app/Contents/Extensions-28734/SlicerHeart/lib/Slicer-4.11/qt-scripted-modules/Philips4dUsDicomPatcher.py", line 105, in onPatchButton
self.addLog("Unexpected error: {0}".format(e.message))
AttributeError: 'NameError' object has no attribute 'message'


Thoughts?

Thanks,
Sarma

Add a reusable widget for browsing valve sequences

The widget is implemented in Valve Annulus Analysis module and allows adding/removing/editing phases. This widget would be useful in most SlicerHeart modules for browsing valve sequences.

Add a read-only flag that allows browsing, without the ability to add/remove phases.

Artemis plugin no longer works

Report from Alan Priester below:

I have been receiving complaints from TCIA users that the ultrasound images from the Prostate-MRI-US-Biopsy dataset no longer load properly into 3D Slicer. I downloaded the most recent stable release (4.11.2021.0226) and confirmed that ultrasound data no longer loads correctly, with or without the "SlicerHeart" and "Quantitative Reporting" extensions. The following warning is displayed during attempts to load ultrasound image data:

"115: US [633] [Image sequence]: Image spacing may need to be calibrated for accurate size measurements."

The following screen capture shows the (erroneous) result:

image

It would seem that a Slicer release between June 2020 and February 2021 compromised this functionality--can you please investigate and advise?

Add a way to delete a valve

Where there is a place to create a new valve (currently only in Valve Annulus Analysis module) also add an option to delete the valve. It means deleting the valve sequence node, proxy node, and all associated display and storage nodes.

EchoVolumeRenderer does not show volume

User reported error here: Slicer/Slicer#7209

dear Slicer Program team,
thank you for your help,
I am really big fan of Slicer and it is big problem for me that this echo volume render module does not function anymore.

Summary

echo loop from Qlab exported into 3dslicer as NRRD file. the ECHO VOLUME RENDER module (sub module of CARDIAC module extension) does not function: no 3d volume showed in the 3d panel.

Environment

  • Slicer version: 5.4.0 r31938 / 311cb26
  • Operating system: Windows 10

Steps to reproduce

echo loop from Qlab exported into 3dslicer as NRRD file. works fine

then opening of module Cardiac, subset ECHO VOLUME RENDER,
then classic pathway:
click apply to sequence, (smoothing factor is 1)
apply.
Then I dont see any 3D volume…
image

Expected behavior

expected is to see a volume in the 3d Panel, which is not the case.

I used the ECHO VOLUME RENDER module a month ago and it was working.
now the module does not function anymore??
since a month, I did not use my computer (nothing new nothing was installed, nobody used computer).
I tried multiple procedures:
-modify Rendering settings (smoothing, threshold…),
-close other App in computer, restart the 3dslicer, restart computer,
-redo the philips 4d US dicom patcher,
-I also tried other NRDD files that were functioning last month.
-use older Slicer version (5.2),
-look at computer memory (seems all normal, no problem of computer memory),
-use another computer, use another windows User session.
(in fact I tried several computer from my center, AND on only one computer, it was functionning, but on 3 other it did not function; unfortunately I dont undersatnd why, because there is no big difference between the 1 computer and the other...)

Seems to be a setting problem, because
the ECHO VOLUME RENDER module does not function
BUT
the VOLUME RENDERING module DOES function:
image

Any idea???
many thanks for help!!!!!!!!!!!!!!

mathieu
big fan of 3dSlicer

Type inconsistency in an if block at DicomUltrasoundPlugin.py

Hi,

I've found a bug that causes loading a Philips affinity 3d ultrasound file without considering voxel spacing data.

The fix is quite easy. In the if block below there is a comparison between data_element.value.rstrip() and privateCreator values but data_element.value is a bytes object and privateCreator is a string.

My fix:
I've fixed the if block by encoding privateCreator value. privateCreator.encode()

Regards.

def findPrivateTag(ds, group, element, privateCreator):
  """Helper function to get private tag from private creator name"""
  for tag, data_element in ds.items():
    if (tag.group == group) and (tag.element < 0x0100) and (data_element.value.rstrip() == privateCreator):
      return dicom.tag.Tag(group, (tag.element << 8) + element)
  return None

How to load file using SlicerHeart extension via python console in slicer?

Hi,

Could you please tell me how to load file using SlicerHeart extension via python console in slicer? The auto-constructing 3D volume fuction is fantanstic when using slicer with SlicerHeart for ultrasound images from Eigen, Inc. So how could I use this in python so that I could write a script to do some thing automatically.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.