Git Product home page Git Product logo

openchemistry / tomviz Goto Github PK

View Code? Open in Web Editor NEW
316.0 36.0 84.0 23.5 MB

Cross platform, open source application for the processing, visualization, and analysis of 3D tomography data

Home Page: https://tomviz.org/

License: BSD 3-Clause "New" or "Revised" License

CMake 1.56% C++ 78.20% Python 19.64% Shell 0.32% Dockerfile 0.27% C 0.01% Batchfile 0.01%
tomography visualization 3d-graphics open-source opengl scientific-visualization open-science python materials-science

tomviz's Introduction

tomviz_logo

Build Status

The Tomviz project is developing a cross platform, open source application for the processing, visualization, and analysis of 3D tomographic data. It features a complete pipeline capable processing data from alignment, reconstruction, and segmentation through to displaying, visualizing, and interacting with 3D reconstructions of tomographic data. Many of the data operators are available as editable Python scripts that can be modified in the interface to experiment with different techniques. The pipeline can be saved to disk, and a number of common file formats are supported for importing and exporting data.

tomviz_screenshot

The Tomviz project was founded by Marcus D. Hanwell and Utkarsh Ayachit at Kitware, David A. Muller (Cornell University), and Robert Hovden (University of Michigan), funded by DOE Office of Science contract DE-SC0011385.

Installing

We recommend downloading the current stable release, but also provide nightly binaries built by our dashboards for Windows, macOS, and Linux.

Windows: Follow the installation instructions, double-click on the Tomviz icon to launch the application. macOS: After downloading the package double-click to begin installation. Drag the Tomviz icon into your Applications directory – or anywhere else you would like to store it. Double-click on the icon to open it, nightly builds will require right-clicking and selecting open. Linux: A binary (tar.gz) is provided, or it can be built from source. See instructions for building found in the BUILDING.md document.

A Quick Tutorial

  1. Open a sample dataset by clicking “Sample Menu > Reconstruction ” at the top menubar.
  2. Create a 3D volumetric visualization by clicking “Visualization > Volume” at the top menubar.
  3. Interact with your volume in the center panel titled “RenderView”.

User Guide

Start by watching this short video to see Tomviz in action.

Also Tomviz user guide has more detailed information to get started.

Cite Tomviz

When using tomviz in your research, please cite:

Real-time 3D analysis during electron tomography using tomviz, J. Schwartz et al., Nature Comm. 13, 4458 (2022)

Publications using Tomviz

Contributing

Our project uses GitHub for code review, please fork the project and make a pull request if you would like us to consider your patch for inclusion.

Kitware, Inc.

tomviz's People

Contributors

alesgenova avatar alvarosan avatar bdalevin avatar bnmajor avatar cclauss avatar cjh1 avatar cquammen avatar cryos avatar danielballan avatar dependabot[bot] avatar elliotpadgett avatar hovden avatar jabl avatar jepietryga avatar jourdain avatar jtschwar avatar mathstuf avatar mathturtle avatar psavery avatar serval2412 avatar sukhsung avatar thewtex avatar tjcorona avatar utkarshayachit avatar yijiang1 avatar zhuokaizhao 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  avatar  avatar  avatar  avatar

Watchers

 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

tomviz's Issues

Manual alignment: zoom to any point

Currently the widget allows the user to zoom in and out in the data view, but the zoom is always centered on the data center point. It would be useful to be able to zoom in on any part of the data.

Manual alignment: difference map comparison mode

In addition to "flashing" comparison mode where the user minimizes the wobble as the display flashes back and forth between images, it would be useful to have a "difference map" comparison, where the user makes the display of (imageA-imageB) flat around the alignment point.

I'm not sure what the best way is to make this fit with the current color map scheme, since it will need to display positive and negative values with magnitude significantly less than the typical data values. Maybe the difference map will need to be scaled to fit in the same range as the original data?

State files should use relative paths for data

State files are storing absolute file paths for data. If a state file (dir1/state) and data (dir1/data) are packaged in the same directory (dir1), then the entire directory is copied (to dir2) and dir1 is renamed or deleted, opening dir2/state fails and results in an error saying "Initialize: could not open file dir1/data". Relative file paths should be used instead, so that Tomviz tries to open dir2/data.

This is a key issue for scientific reproducibility, as it prevents state files from being shared across computers.

Raw reader requires .raw extension to load file

When importing a .raw file, the "Open File" interface will only display files with *.raw extensions. Often binary files will be stored as a variety of alternative extensions (such as *.bin and *.dat ).

Suggested Solution: when importing raw, either display all files (.) or at least add *.bin and *.dat

Make module and data properties context aware

The module and data properties as implemented are confusing, it is not clear which module the module properties refer to, and the connection to the data is loose. We always have a selected data item or module - show an integrated properties dialog that shows the properties for the highlighted item.

Viz panels and tabs not loading properly from save State File

When saving and loading the tomviz state, the panels and tabs are not restored properly. For example, if one has a tab with three split viz panels and a second tab containing a single viz panel the state will restore with four viz panels in a single tab.

Also, the size / spacing of the panel splits are not saved.

Auto save state and restore when tomviz crashes.

Tomviz crashes frequently. To alleviate this issue, we should have an auto save state that runs every so often and restores the last known state in the event of a crash. It could prevent a user from losing hours of work.

Merge Data Transforms and Visualization Modules Pipeline

Merge the datatransform pipeline and the visualization modules pipeline.

The data transforms will appear as objects below the data icon and new transforms will be added below the previous transform. Data transforms will be indented once.

The visualization modules will appear after the data transforms and indented twice.

Slice tool's orientation arrow cannot be turned off

The slice tool displays an arrow perpendicular to its surface and allows the user to change the slices orientation. After a user is done choosing an orientation, they should be able to disable the visibility of the arrow.

Suggested Solution: Add a checkbox in the slice view properties that can disable or enable the orientation arrows visibility.

Building in multiple animations

When adding an animation in the animator, it seems as though only one animation can be added at a time. I'll explain in more detail referencing the following image:
animator image
Here, I've added a simple orbit about the z axis as an animation. This animation is represented by the row with a red diagonal cross, a tick box, and the word "camera".
I would like to add a second simple animation, a simple orbit about the x-axis. However, when trying to add another animation (using the blue plus button), nothing happens. The blue plus button is unresponsive.
The only way to add additional animations seems to be to edit the first animation, and build custom paths, which is fun, but time consuming.
Allowing users to put some simple pre-defined orbit animations together to make a movie would be a really nice feature to add. The logical way to do this would seem to be to allow users to add in additional animations with the blue plus button.

Error thrown after cross-correlation autoalignment

I tried loading a tilt series in tiff stack format and running the Auto-Align (xcorr) data transform. It appeared to run successfully (my data looked aligned afterward) but ended up the following to the "Output messages" box (in Windows):

Align Images Complete
ERROR: In C:\DBD\matviz-x64\paraview\src\paraview\VTK\Charts\Core\vtkPlotBar.cxx, line 853 
vtkPlotBar (0000000010BBC7D0): No X column is set (index 0).

The error looks similar on OSX, but obviously with a different file path.

Manual alignment: erroneous jump with button press

In the manual alignment widget, after applying a significant shift pressing any key (even ones that should do nothing) causes the image to jump to a location not specified by the user-defined shifts. I have only observed this starting with unaligned data.

To replicate clearly (with sample star-particle tilt series):

  1. misalign the stack with the cross-correlation auto-align.
  2. open stack in manual alignment widget and begin aligning.
  3. after aligning 5-10 images so that you need to apply a significant shift to align, hold down space (or any other inactive key) on a well-aligned image pair and you will see the image pair appear misaligned again.

This behavior also happens when doing regular alignment and is confusing, but this is the clearest way to observe it. The spurious shift appears to be in the direction of user-applied shifts, but maybe 1/2 or less in magnitude.

Add ability to set tilt angles for a tilt series

  • Show tilt angles on the Data Properties panel
  • Edit tilt angles on Data Properties panel
  • Add option to context menu/toolbar to mark a data set as a tilt series.
  • Add checkbox to File | Open to open a file as tilt series.

Slice and orthoslice icons look the same

Orthoslice and slice icons should be distinguishable. For the orthogonal slice, it does not make sense in tomviz (or paraview) to show a tilted slice icon since this is not possible. However, this is great for the slice tool that allows any angle of slicing.

Suggested solution: "Orthogonal Slice" icon should show an orthogonal green slice. "Slice" icon should show a non-orthogonal slice with different color (maybe pink or blue?).

Smooth surfaces for "Threshold" module

Currently the threshold module renders each voxel as a cube. For some applications this is distracting and aesthetically unappealing, so it would be nice to have the option to render the surfaces smoothly instead.

Add slider for contour threshold

Currently the user must type the values for single isosurface contours. It would be nice to be able to use a slider for this. The nicest would be if you could have the threshold shown on top of the histogram (I think Chimera's volume viewer works this way) as well.

Non-orthogonal slice OpenGL2 warnings

Using the non-orthogonal slice when the widget first appearsh or when moving the slice plane, I get OpenGL warnings:

Warning: In /home/shawn/dev/tomviz/src/paraview/VTK/Rendering/OpenGL2/vtkOpenGLPolyDataMapper.cxx, line 1418
vtkOpenGLPolyDataMapper (0x6219340): line widths above 1.0 are not supported by OpenGL 3.2

Animator fails to rotate past x-y plane

Simple orbit animation only works around z axis. Around x and y axes, the software tries to flip the image over half way through, and spits out an error message:
Warning: In C:\DBD\matviz-x64\paraview\src\paraview\VTK\Rendering\Core\vtkRenderer.cxx, line 1029
vtkOpenGLRenderer (00000000093D9C80): Resetting view-up since view plane normal is parallel.

Get / Set Tilt Angles in Python

In addition to setting the tilt-angles associated with a dataset, we need to be able to get them in Python for reconstruction. Right now they are hard-coded into the reconstruction, but in real life every dataset will have a different set of tilt angles.

It would also be good to set the tilt angles from within Python. There may be reasons to change them.

Change Color of Bounding Box

User should be able to change the color of the "Outline" bounding box, like they can change the color of the background. Currently the bounding box is always rendered in white.

Uncouple "Set view direction" and "Zoom to data"?

In the zoom and view direction controls at the top left of the window, pressing one of the "Set view direction to * " buttons both sets the view direction AND also resets the zoom out to show the full view of the data. Since there is already a "Zoom to data" button, should the "set view direction" buttons just change the direction and let the user keep their zoom?

File Reader, .MRC read support

Need to be able to read .mrc files, a popular format for microscopists doing tomography. Writing is probably not necessary.

Open Stack of Images

Hi,

Apparently if I select a stack of images from a folder, it only ends up loading the last one. There should be a way to set the spacing manually or fetching it from either a summary file. I thought that it should be automatically recognized from a DICOM input, but it didn't work on my end...

Colormap editor tab in histogram panel

In order to make the colormap editor more accessible and useable add a colormap to the histogram panel. Tabs will allow users to jump between the histogram and the colormap editor.

Saving video as Ogg not working

Exporting animation as ogg video not working. It currently throws the following error on Mac OSX:

ERROR: In /Users/kitware/Dashboards/MyTests/NightlyBinary/MatVizSuperbuild-Release/paraview/src/paraview/ParaViewCore/Animation/vtkSMAnimationSceneImageWriter.cxx, line 385
pqAnimationSceneImageWriter (0x11c2c4990): Unknown extension .ogv

"Custom Transform" dialogue focus prevents interacting with Python Shell

Right now I can’t edit a custom transform and type in the python interpreter at the same time, which is unfortunate.
--Elliot

Comment: Users will likely test syntax in the Python Shell as they write code in the "Custom Transform" dialogue. If it is not excessively difficult, this would be a good feature to allow.

Downsample Dataset

Need a datatransform that downsamples the data by factors of 2x, 4x, etc.

Possible solution: Downsampling should not simply read every other datapoint, it should interpolate (most simply, this would be an average of adjacent pixels). This probably means a new dataset will be created in memory - I think this is OK.

Rotate /Translate Data and Modules in the Visualization

Objects need to be rotatable and translatable in the visualization. For example, two datasets, each with their own volume and/or isosurface rendering can be moved and rotated relative to each other. Users can display two datasets side-by-side and rotated them each individually. This probably means that the entire dataset and the visualization modules associated with a single dataset all rotate / translate together.

Delete data and transforms is non-obvious

“Delete data and modules” right now is hidden in the “data transforms” menu. This should be somewhere more obvious. It was one of the first things I looked for in the interface since I loaded my data wrong several times and wanted to clear it without restarting. I expect this will be a common experience.
--Elliot

Proposed solution: Users should be able to delete the data from the pipeline. This would include pressing the delete key and possibly right clicking and selecting 'delete'.

Non-orthogonal slicing, move center of rotation

Need to be able to move the center of rotation in the non-orthogonal slice tool.

Suggested solution, when clicking the central in-plane part of the arrow (the little ball) the arrow can be translated in the plane of the slice. Also / or slider bars in the module properties could be useful for more exact positioning.

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.