0

I'm interested in different algorithms people use to visualise millions of particles in a box. I know you can use Cloud-In-Cell, adaptive mesh, Kernel smoothing, nearest grid point methods etc to reduce the load in memory but there is very little documentation on how to do these things online.

i.e. I have array with:

x,y,z
1,2,3
4,5,6
6,7,8
xi,yi,zi

for i = 100 million for example. I don't want a package like Mayavi/Paraview to do it, I want to code this myself then load the decomposed matrix into Mayavi (rather than on-the-fly rendering) My poor 8Gb Macbook explodes if I try and use the particle positions. Any tutorials would be appreciated.

Griff
  • 2,064
  • 5
  • 31
  • 47
  • Griff, do you only have 3D points, or do you have measured data at those points? Data could be velocity, air pressure, etc. – Kevin A. Naudé Dec 18 '12 at 16:54
  • Is your question about visualisations, or handling the large amount of data? – Kevin A. Naudé Dec 18 '12 at 17:05
  • It is just 3D positions. There is structure in the data (i.e. clumps of particles in certain places and voids in other places). I just want a nice way to visualise the over and under densities in the distribution of particles. Thanks Kevin. – Griff Dec 18 '12 at 17:09

1 Answers1

0

Analysing and creating visualisations for complex multi-dimensional data is complex. The best visualisation almost always depends on what the data is, and what relationships exists within the data. Of course, you are probably wanting to create visualisation of the data to show and explore relationships. Ultimately, this comes down to trying different posibilities.

My advice is to think about the data, and try to find sensible ways to slice up the dimensions. 3D plots, like surface plots or voxel renderings may be what you want. Personally, I prefer trying to find 2D representations, because they are easier to understand and to communicate to other people. Contour plots are great because they show 3D information in a 2D form. You can show a sequence of contour plots side by side, or in a timelapse to add a fourth dimension. There are also creative ways to use colour to add dimensions, while keeping the visualisation comprehensible -- which is the most important thing.

I see you want to write the code yourself. I understand that. Doing so will take a non-trivial effort, and afterwards, you might not have an effective visualisation. My advice is this: use a tool to help you prototype visualisations first! I've used gnuplot with some success, although I'm sure there are other options.

Once you have a good handle on the data, and how to communicate what it means, then you will be well positioned to code a good visualisation.

UPDATE

I'll offer a suggestion for the data you have described. It sounds as though you want/need a point density map. These are popular in geographical information systems, but have other uses. I haven't used one before, but the basic idea is to use a function to enstimate the density in a 3D space. The density becomes the fourth dimension. Something relatively simple, like the equation below, may be good enough.

enter image description here

The point density map might be easier to slice, summarise and render than the raw particle data.

The data I have analysed has been of a different nature, so I have not used this particular method before. Hopefully it proves helpful.

PS. I've just seen your comment below, and I'm not sure that this information will help you with that. However, I am posting my update anyway, just in case it is useful information.

Kevin A. Naudé
  • 3,992
  • 19
  • 20
  • For the moment I am using MayAvi but I want to extend this in future. I am just after ways to reduce the system load of loading in all of the particles by decomposing the positions into something less memory intensive whilst retaining resolution. A hard ask. – Griff Dec 18 '12 at 17:30
  • Thanks Kevin. I'll see how I go. – Griff Dec 18 '12 at 18:04
  • Fixed a silly typo: geological information systems -> geographic information systems, hehe – Kevin A. Naudé Dec 18 '12 at 18:08