2017-06-02 1 views
1

Je veux produire des parcelles comme celle-ci, sauf avec beaucoup plus de particules. Le matplotlib est terriblement inadéquat.Tracer un grand nombre de sphères empilées générées à partir de python-- mayavi? paraview et pyevtk? Comment transmuter .npy en .vtk?

from google

En ce moment je suis en utilisant mayavi en python 3.5 en cours d'exécution à travers un ordinateur portable jupyter. Comme j'ai besoin de tracer 5x10^5 sphères, ce ne sera pas pratique, puisque le temps est déjà un facteur limitant à 2x10^4 sphères.

Voici mon code python pour produire le tracé mayavi. J'ai un tableau numérique de valeurs [a, r, x, y, z]. Ce n'est pas pertinent ce que la première quantité est pour ce problème.

"""VISUALIZATION WITH MAYAVI""" 
#I think this is too slow to be practical. 
#view particles with mayavi 
import mayavi 
from mayavi import mlab 
%gui qt 

def plot_sphere(p): #feed it p and get back a sphere \n", 
    t1,R,a,b,c = p 
    [phi,theta] = np.mgrid[0:2*np.pi:12j,0:np.pi:12j] #increase the numbers before j for better resolution but more time 
    x = R*np.cos(phi)*np.sin(theta) + a 
    y = R*np.sin(phi)*np.sin(theta) + b 
    z = R*np.cos(theta) + c 
    return mlab.mesh(x, y, z) 

#run s over all particles and plot it 
def view(particles): 
    for p in particles: 
     plot_sphere(p) 

view(spheres) 

Ce code produit des tracés comme celui-ci:

enter image description here

On m'a dit que je devrais envisager d'écrire mes tableaux numpy à .vtk fichiers à l'aide evtk, puis visualiser ceux-ci dans paraview. J'ai téléchargé paraview et lu this, mais peut-être ma version de python me limite? Tout d'abord, installez pyevtk-- okay: J'ai essayé l'installation de conda -c opengeostat pyevtk = 1.0.0, mais il échoue en raison de l'incompatibilité avec ma version de python. J'ai cherché des détails mais je n'en ai trouvé aucun.

Ensuite, j'ai téléchargé le dépôt [ici] [https://pypi.python.org/pypi/PyEVTK/1.0.0], puis utilisé pip pour l'installer avec succès. Ensuite, j'ai mis evtk.py, vtk.py, hl.py, et xml.py, et essayé quelques exemples dans le dépôt - aucun d'eux ne fonctionne. Apparemment il y a un problème avec

from .vtk import * 

commandes de type. J'ai essayé de remplacer tous ceux-ci dans les quatre fichiers .py avec

from evtk import vtk 
from vtk import * 

et tels, mais pas de chance. Longue histoire courte, je ne peux pas obtenir pyevtk travaillant pour exporter mes tableaux numpy sous forme de fichiers .vtk. Je pourrais utiliser de l'aide à cet égard, ou mieux encore j'aimerais une option différente pour obtenir mes tableaux chiffrés rendus par paraview. Toute aide est appréciée!

Répondre

-1

solved

Ok, je résolu mon problème. Cette image est faite en utilisant paraview, après avoir converti des tableaux numpy en un objet .vtu en utilisant pyevtk. En dehors de la boîte, le référentiel ne fonctionnait pas, il y avait un problème avec l'importation des modules dans les quatre fichiers .py, donc je les ai tous modifiés. Au lieu de .vtk import *, je l'ai changé de vtk import *, et ainsi de suite, dans chaque module de la bibliothèque. evtk.py n'a pas pu importer une classe de xml.py, donc je l'ai simplement copié et collé, puis j'ai supprimé xml.py. Après un peu de bricolage et de modification pour faire disparaître les erreurs, cela a finalement fonctionné.