ImageTank vs DataGraph
A natural question is what is the relationship between ImageTank and DataGraph. Certainly DataGraph is older and more mature than ImageTank but ImageTank has some functions that can be found in DataGraph. This document is intended to compare the two programs and how the goals and design differ.
ImageTank is not as easy
It can’t be. There are several reasons for that. The main one is that DataGraph combines data, analysis and graphing. There are certainly benefits to that since you can modify individual values in the table, change in place and view everything at the same time. There are also drawbacks to this model in that files can get large, you end up copying data if it doesn’t make sense to do everything in a single document and it keeps everything in memory. And most of all, not everything is a table. A lot is, and since DataGraph focuses on a table it can make assumptions fit everything into a table.
ImageTank has a much bigger data model. In fact the DataGraph group maps to the Table variable type so each group becomes a separate variable. This is closer to the database view of tables. Then there are other data types that are at the same level such as images, surfaces etc which DataGraph either doesn’t do at all or does inside a specific drawing command.
ImageTank also moves computations to the background/extra cores. That means that you can get ahead of where the calculation is. You can add actions and give commands while previous actions are still being computed. This speeds you up, but there are additional concepts that you need to understand in order to use them. This means that there are a lot more building blocks than DataGraph and your learning curve is going to longer.
In short, since ImageTank aims to do a lot more it needs a bigger foundation.
ImageTank is young
ImageTank is still in public beta and will change quite a bit. Where it goes isn’t completely clear since it will depend very much on early users and use cases. ImageTank is a re-imaging of DataTank, a program that is very mature but shows its age. DataTank started on the first version of MacOSX, when it was called Rhaposody. That version focused on spatial and temporal data, with a focus on PDEs in 2D and 3D. DataGraph initially grew out of the 1D drawing routines in DataTank (2006), but it just got the spine from DataTank and grew a body of its own.
ImageTank is in many ways another seedling from ImageTank, but includes more of the data science focus of DataGraph and reflects research interest in image processing and analysis. The image processing definitely is definitely inspired by PDE based image processing.
ImageTank is Powerful
DataGraph is designed to look friendly but with a deep feature set when you start exploring. ImageTank is meant to do the same. It should be relatively simple to get going, and example files online and documentation should guide through the starting difficulties.
ImageTank is in some ways Jupyter notebook on steroids. You can extend it using C++ and Python and it has a lot more graphical power. And the C++ integration is pretty extensive and includes actions to help you debug the program through Xcode.
ImageTank is highly optimized, just like DataGraph, and it uses multi-core machines by running a lot of computations concurrently and splits up tasks automatically.
ImageTank handles caching and schedules computations so that you can run programs which can’t fit into memory. You don’t have to do anything, ImageTank will automatically adjust and cache/recompute so without you doing anything or at most giving it hints.
ImageTank is great for computational exploration, and updates things incrementally to speed things up.
If you use C++/Python as the underlying computational coding language, the way ImageTank interacts with that separates the computation from the UI so that you can easily run your program without any ImageTank dependence. This is very different than tools like matlab which give you the interactivity at the cost of writing your algorithm and code logic in their language.
Just like DataGraph, the goal is to be able to easily repeat and document the steps you took from data to results. You can then send those computations to collaborators that have the same data.
ImageTank and DataGraph
In fact you can use ImageTank and DataGraph together. You can send data easily between them and even have ImageTank automatically send data to DataGraph and DataGraph draw that result in real time.
DataGraph has resisted 3D plots for several reasons. One is that it will not do business type 3D bar graph, and neither will ImageTank. The main reason however is that 3D plotting is requires a different data model and adding that to DataGraph risks breaking the simplicity of DataGraph. ImageTank is a program that is set up for 3D Plotting. Maybe some of that will make its way back into DataGraph at some point in the future, but it will be an example of ImageTank giving back to DataGraph just like DataGraph gave back to DataTank to create ImageTank.
The DataGraph community has been really helpful, and hopefully many of you will explore ImageTank as a tool which can be used where DataGraph reaches its limit of complexity. The help documents as well as the program will evolve based on user feedback and use cases. ImageTank will stay in public beta for a while, and when it matures to the point that it becomes a commercial product it will have a very reasonable pricing structure aimed at the community that builds around it.