[Amr] yt inside paraview
Jorge Poco
jorge.poco at kitware.com
Fri Jun 10 15:18:08 EDT 2011
HI Matt
Another doubt: I'm using the tests/DD0010/moving7_0010 data set. I have
tried to load it using YT and Paraview.
The problem is that grid values are different in both tools except temperature
field. I'm wondering if you
do any conversions in the grid values when you load the data set.
The code I'm using in yt is:
>> pf = load('tests/DD0010/moving7_0010')
>> pf.h.grids[0]['Density'].min()
>> pf.h.grids[0]['Density'].max()
Regards,
On Fri, Jun 10, 2011 at 2:40 PM, George Zagaris
<george.zagaris at kitware.com>wrote:
> That's great!
>
> Yes the vtkHierarchicalBoxDataSet has IBLANK information that
> can be supplied directly to yt.
>
> Best,
> George
>
> On Fri, Jun 10, 2011 at 2:37 PM, Matthew Turk <matthewturk at gmail.com>
> wrote:
> > Hi Jorge,
> >
> > Nope, it should not be mandatory, although it currently is. It is
> > currently only used to calculate child masking, which I believe we can
> > also get from vtkHierarchicalBoxDataSet? I'll make this change later
> > today.
> >
> > -Matt
> >
> >
> >
> > On Fri, Jun 10, 2011 at 11:35 AM, Jorge Poco <jorge.poco at kitware.com>
> wrote:
> >> HI Matt
> >> Looks nice.
> >> In the 'stream' frontends, when the stream.StreamHandler(...) is create,
> >> one parameter is the parent_ids right? It's really mandatory to send it?
> >> because the vtkHierarchicalBoxDataSet doesn't save this information, but
> we
> >> can compute the parent/child relations.
> >> Regards,
> >>
> >> On Fri, Jun 10, 2011 at 2:19 PM, Matthew Turk <matthewturk at gmail.com>
> wrote:
> >>>
> >>> Hi Jorge,
> >>>
> >>> I thought this might be of interest to you; I've started keeping track
> >>> of how to interface with external codes such as ParaView here:
> >>>
> >>> http://hg.enzotools.org/yt/wiki/InterfacingWithYT
> >>>
> >>> I'll be updating this as need be with information about the in-memory
> >>> datasets and so on.
> >>>
> >>> Best,
> >>>
> >>> Matt
> >>>
> >>> On Fri, May 27, 2011 at 2:08 PM, Matthew Turk <matthewturk at gmail.com>
> >>> wrote:
> >>> > Hi all,
> >>> >
> >>> > I've created a new data frontend in yt entitled "Stream" (the name is
> >>> > up for discussion, if someone has a better idea -- Charles pointed
> out
> >>> > today that it might get confused with time series data.) The idea
> >>> > behind this is that the user can use it to construct an arbitrary
> >>> > dataset in memory. I've tested this by proxying an existing Enzo
> >>> > dataset:
> >>> >
> >>> >
> >>> >
> http://matthewturk.bitbucket.org/html/ba3fd37b-842c-4641-b21e-2d3f5268eefe-stream_proxy-py.html
> >>> >
> >>> > (downloadable at the top level domain, or by "yt_lodgeit.py
> >>> > --download=1672 if you have a yt stack installed.)
> >>> >
> >>> > You have to construct both a StreamHandler that knows how to pass
> >>> > around the grid geometry and which, although not instantiated with
> >>> > them, requires certain attributes to be set. In addition, a fields
> >>> > handler has to be created. This script executes to completion and
> >>> > passes its tests; projecting and slicing require slightly more
> effort,
> >>> > because I wanted to pose to the Kitware group how the data should be
> >>> > evaluated in terms of units -- should it be assumed to have CGS units
> >>> > already? How should the domain size be handled -- in yt right now
> >>> > units are distinct from the code definitions, but I don't know how
> >>> > Paraview handles this distinction. (If you want to try setting up a
> >>> > PlotCollection, you can, but you will have to set spf.units["cm"] =
> >>> > spf.units["unitary"] = 1.0).
> >>> >
> >>> > Hopefully this can be a start, and we can continue to iterate on the
> >>> > API necessary to load data in yt from that already loaded in
> Paraview.
> >>> > This is in the tip of the development yt repository, 6d4a5588a550.
> >>> >
> >>> > Best,
> >>> >
> >>> > Matt
> >>> >
> >>> > On Thu, May 26, 2011 at 3:54 PM, Jorge Poco <jorge.poco at kitware.com>
> >>> > wrote:
> >>> >> In the meantime I will be working to import yt's data structures
> >>> >> inside
> >>> >> vtkHierarchicalBoxDataset using ProgrammableSources inside Python.
> >>> >> Regards,
> >>> >>
> >>> >> On Thu, May 26, 2011 at 3:43 PM, Jorge Poco <jorge.poco at kitware.com
> >
> >>> >> wrote:
> >>> >>>
> >>> >>> Hi
> >>> >>> YT has some function to access the arrays data in numpy.array
> objects
> >>> >>> (
> >>> >>> pf.h.grids[0]['Density']), using them we can instantiate a
> >>> >>> vtkHierarchicalDataset to be process into paraview.
> >>> >>> On Thu, May 26, 2011 at 2:53 PM, Berk Geveci <
> berk.geveci at kitware.com>
> >>> >>> wrote:
> >>> >>>>
> >>> >>>> Awesome.
> >>> >>>>
> >>> >>>> What about from the other side? If we wanted to pass data
> structures
> >>> >>>> that yt loaded (from an Enzo file for example) to VTK/ParaView for
> >>> >>>> filtering/rendering?
> >>> >>>>
> >>> >>>> -berk
> >>> >>>>
> >>> >>>> On Thu, May 26, 2011 at 2:04 PM, Matthew Turk <
> matthewturk at gmail.com>
> >>> >>>> wrote:
> >>> >>>> > Hi Berk and Jorge,
> >>> >>>> >
> >>> >>>> > Okay, this makes sense.
> >>> >>>> >
> >>> >>>> > I will write up a new code frontend for yt that will act as a
> >>> >>>> > generalized system; this will draw upon the current in situ Enzo
> >>> >>>> > frontend, and will be designed to be instantiated with a list of
> >>> >>>> > arrays and a set of callback functions. We can them implement
> the
> >>> >>>> > paraview-specific code inside this, or perhaps inside a
> >>> >>>> > ProgrammableFilter inside paraview itself. I'll ping the list
> back
> >>> >>>> > when I have something up and running.
> >>> >>>> >
> >>> >>>> > Best,
> >>> >>>> >
> >>> >>>> > Matt
> >>> >>>> >
> >>> >>>> > On Thu, May 26, 2011 at 9:15 AM, Berk Geveci
> >>> >>>> > <berk.geveci at kitware.com>
> >>> >>>> > wrote:
> >>> >>>> >> In VTK, an AMR mesh is represented as a collection of
> >>> >>>> >> vtkUniformGrid
> >>> >>>> >> objects. Each vtkUniformGrid has a set of Fortran-ordered data
> >>> >>>> >> arrays
> >>> >>>> >> that represent the variables. One exception is how vectors are
> >>> >>>> >> stored.
> >>> >>>> >> They are stored in hybrid Fortran - C ordering, i.e. vector
> >>> >>>> >> component
> >>> >>>> >> increases fastest then i, then j, then k. It is straightforward
> to
> >>> >>>> >> pass these to Python and back using NumPy arrays or buffer
> objects
> >>> >>>> >> at
> >>> >>>> >> the lowest level. So we can write Python code to bundle these
> >>> >>>> >> arrays
> >>> >>>> >> into any form that yt (and Enzo when we start doing in-situ)
> >>> >>>> >> wants. We
> >>> >>>> >> may have to deep-copy the vectors because of the issue I
> >>> >>>> >> described.
> >>> >>>> >>
> >>> >>>> >> On Wed, May 25, 2011 at 7:59 PM, Matthew Turk
> >>> >>>> >> <matthewturk at gmail.com>
> >>> >>>> >> wrote:
> >>> >>>> >>> Hi Jorge,
> >>> >>>> >>>
> >>> >>>> >>> This is really cool!
> >>> >>>> >>>
> >>> >>>> >>> I've been thinking about how to invert this process, and I
> think
> >>> >>>> >>> we
> >>> >>>> >>> could address it by creating a new hierarchy of objects,
> similar
> >>> >>>> >>> to
> >>> >>>> >>> the EnzoStaticOutputInMemory family of objects, that enables a
> >>> >>>> >>> bi-directional transfer of information. All that's really
> >>> >>>> >>> necessary
> >>> >>>> >>> to get data in is to describe the mesh, describe the
> parameters
> >>> >>>> >>> of
> >>> >>>> >>> the
> >>> >>>> >>> simulation, and then communicate to yt how to access data.
> >>> >>>> >>>
> >>> >>>> >>> What do you think the best mechanism for passing data back and
> >>> >>>> >>> forth
> >>> >>>> >>> is? For in situ viz with Enzo, usually we do this by
> >>> >>>> >>> constructing a
> >>> >>>> >>> new module object in the C code, and then insert into that a
> set
> >>> >>>> >>> of
> >>> >>>> >>> arrays describing the mesh and a dictionary of dictionaries of
> >>> >>>> >>> fields,
> >>> >>>> >>> with keys that correspond to grid id and field name. But
> really,
> >>> >>>> >>> it
> >>> >>>> >>> could be any system, and I'm happy to work on constructing the
> >>> >>>> >>> methods
> >>> >>>> >>> to set this up.
> >>> >>>> >>>
> >>> >>>> >>> Best,
> >>> >>>> >>>
> >>> >>>> >>> Matt
> >>> >>>> >>>
> >>> >>>> >>> On Wed, May 25, 2011 at 5:54 PM, Jorge Poco
> >>> >>>> >>> <jorge.poco at kitware.com>
> >>> >>>> >>> wrote:
> >>> >>>> >>>> Hi Matthew and Berk
> >>> >>>> >>>>
> >>> >>>> >>>> the full stack is here http://paste.enzotools.org/show/1668/
> I'm
> >>> >>>> >>>> trying to
> >>> >>>> >>>> compile paraview with the VTK_USE_SYSTEM_HDF5 but It's giving
> me
> >>> >>>> >>>> some
> >>> >>>> >>>> errors, I will try again tomorrow.
> >>> >>>> >>>>
> >>> >>>> >>>> Matthew: Right now, I have written a 'programmable source'
> >>> >>>> >>>> script to
> >>> >>>> >>>> read a
> >>> >>>> >>>> file from the system using the yt function 'load'. Then,
> create
> >>> >>>> >>>> a
> >>> >>>> >>>> projection
> >>> >>>> >>>> using yt and then the ProjectionPlot object is converted into
> a
> >>> >>>> >>>> vtkImageData
> >>> >>>> >>>> to be displayed into paraview.
> >>> >>>> >>>> What I want to do now, is to read a Dataset using paraview,
> then
> >>> >>>> >>>> create a
> >>> >>>> >>>> 'programmable filter' script to convert the data set into
> yt's
> >>> >>>> >>>> data
> >>> >>>> >>>> structure to create a visualization and finally display the
> >>> >>>> >>>> image
> >>> >>>> >>>> inside
> >>> >>>> >>>> paraview. What would be the correct way to create yt objects
> >>> >>>> >>>> (EnzoHierarchy
> >>> >>>> >>>> and EnzoGrid)?
> >>> >>>> >>>>
> >>> >>>> >>>> Berk: I was trying to find a way to get access to camera
> >>> >>>> >>>> information
> >>> >>>> >>>> from
> >>> >>>> >>>> the 'programmable filter' to send this information to yt but
> I
> >>> >>>> >>>> didn't found
> >>> >>>> >>>> anything useful. Is it possible?
> >>> >>>> >>>>
> >>> >>>> >>>>
> >>> >>>> >>>> Regards,
> >>> >>>> >>>>
> >>> >>>> >>>> On Wed, May 25, 2011 at 3:10 PM, Berk Geveci
> >>> >>>> >>>> <berk.geveci at kitware.com>
> >>> >>>> >>>> wrote:
> >>> >>>> >>>>>
> >>> >>>> >>>>> If I understood what Matt is saying, the problem may be
> fixed
> >>> >>>> >>>>> by
> >>> >>>> >>>>> having ParaView use an external HDF5, the one that yt uses.
> I
> >>> >>>> >>>>> believe
> >>> >>>> >>>>> that the variable is something like PARAVIEW_USE_SYSTEM_HDF5
> >>> >>>> >>>>> (or
> >>> >>>> >>>>> VTK_,
> >>> >>>> >>>>> not sure) in CMake.
> >>> >>>> >>>>>
> >>> >>>> >>>>> On Wed, May 25, 2011 at 10:49 AM, Matthew Turk
> >>> >>>> >>>>> <matthewturk at gmail.com>
> >>> >>>> >>>>> wrote:
> >>> >>>> >>>>> > Hi Jorge,
> >>> >>>> >>>>> >
> >>> >>>> >>>>> > Wow, I didn't know that YT-embedding had taken off quite
> so
> >>> >>>> >>>>> > much!
> >>> >>>> >>>>> > This is great news.
> >>> >>>> >>>>> >
> >>> >>>> >>>>> > On Wed, May 25, 2011 at 9:48 AM, Jorge Poco
> >>> >>>> >>>>> > <jorge.poco at kitware.com>
> >>> >>>> >>>>> > wrote:
> >>> >>>> >>>>> >> Hi
> >>> >>>> >>>>> >> sorry my last email was sent incomplete
> >>> >>>> >>>>> >> I have been trying to use YT inside the Paraview's python
> >>> >>>> >>>>> >> shell.
> >>> >>>> >>>>> >> Initially I
> >>> >>>> >>>>> >> have had some problems which are now identified. It is
> not
> >>> >>>> >>>>> >> the
> >>> >>>> >>>>> >> best
> >>> >>>> >>>>> >> solution but I at least solve temporally these problems:
> >>> >>>> >>>>> >>
> >>> >>>> >>>>> >> argv problem:
> >>> >>>> >>>>> >>
> >>> >>>> >>>>> >> Sentence: 'from yt.mods import *'
> >>> >>>> >>>>> >> Error: for any reason paraview's python shell has not
> >>> >>>> >>>>> >> defined
> >>> >>>> >>>>> >> the
> >>> >>>> >>>>> >> variable
> >>> >>>> >>>>> >> 'sys.argv'
> >>> >>>> >>>>> >> Temporal solution: comment yt code where the sys.argv
> >>> >>>> >>>>> >> variable
> >>> >>>> >>>>> >> is used:
> >>> >>>> >>>>> >>
> >>> >>>> >>>>> >> yt/funcs.py: lines 439-453
> >>> >>>> >>>>> >>
> yt/utilities/parallel_tools/parallel_analysis_interface.py:
> >>> >>>> >>>>> >> lines 47
> >>> >>>> >>>>> >> and 48
> >>> >>>> >>>>> >
> >>> >>>> >>>>> > We can likely get around this on the yt side, although
> when
> >>> >>>> >>>>> > embedding
> >>> >>>> >>>>> > yt in Enzo we've escaped this by using the command
> >>> >>>> >>>>> > PySys_SetArgv(argc,
> >>> >>>> >>>>> > argv) immediately after calling Py_Initialize. Does
> >>> >>>> >>>>> > Partiview
> >>> >>>> >>>>> > report
> >>> >>>> >>>>> > a different executable name, by any chance? If so we can
> use
> >>> >>>> >>>>> > that as
> >>> >>>> >>>>> > a signal to avoid requesting argv.
> >>> >>>> >>>>> >
> >>> >>>> >>>>> >>
> >>> >>>> >>>>> >> :
> >>> >>>> >>>>> >>
> >>> >>>> >>>>> >> Sentence: "pf = load('tests/DD0010/moving7_0010')"
> >>> >>>> >>>>> >> Error: python shell does not complete the load function
> and
> >>> >>>> >>>>> >> paraview
> >>> >>>> >>>>> >> keeps
> >>> >>>> >>>>> >> waiting.
> >>> >>>> >>>>> >> Temporal solution: When I debug paraview and interrupt
> its
> >>> >>>> >>>>> >> execution
> >>> >>>> >>>>> >> the
> >>> >>>> >>>>> >> backtrace shows sem_wait(). It happens inside the load
> >>> >>>> >>>>> >> function
> >>> >>>> >>>>> >> when
> >>> >>>> >>>>> >> tries
> >>> >>>> >>>>> >> to identify the candidates for input file (convenience.py
> >>> >>>> >>>>> >> line
> >>> >>>> >>>>> >> 74).
> >>> >>>> >>>>> >> There
> >>> >>>> >>>>> >> are 11 possible candidates and gives error for 2 of them:
> >>> >>>> >>>>> >> ChomboStaticOutput
> >>> >>>> >>>>> >> and FlashStaticOutput. Skipping those candidates solve
> >>> >>>> >>>>> >> temporally the
> >>> >>>> >>>>> >> problem: (yt/convenienve.py line 75) inside the loop
> add if
> >>> >>>> >>>>> >> n ==
> >>> >>>> >>>>> >> 'ChomboStaticOutput' or n == 'FlashStaticOutput':
> continue;
> >>> >>>> >>>>> >
> >>> >>>> >>>>> > This is interesting. What those two routines have in
> common
> >>> >>>> >>>>> > is
> >>> >>>> >>>>> > that
> >>> >>>> >>>>> > they are the only two that try opening the file using
> h5py.
> >>> >>>> >>>>> > HDF5
> >>> >>>> >>>>> > has
> >>> >>>> >>>>> > a number of error handling routines, which in the past
> I've
> >>> >>>> >>>>> > seen
> >>> >>>> >>>>> > issues with when embedding one app in another -- h5py for
> >>> >>>> >>>>> > instance
> >>> >>>> >>>>> > handles error handling, but that can conflict with other
> >>> >>>> >>>>> > mechanisms
> >>> >>>> >>>>> > that are attempting to handle those errors.
> >>> >>>> >>>>> >
> >>> >>>> >>>>> > Another solution that would avoid digging into the source
> >>> >>>> >>>>> > code
> >>> >>>> >>>>> > would
> >>> >>>> >>>>> > be to remove the types from the actual type registry:
> >>> >>>> >>>>> >
> >>> >>>> >>>>> > from yt.convenience import output_type_registry
> >>> >>>> >>>>> > del output_type_registry["ChomboStaticOutput"]
> >>> >>>> >>>>> > del output_type_registry["FlashStaticOutput"]
> >>> >>>> >>>>> >
> >>> >>>> >>>>> > I'm more interested in figuring out how to fix the
> interplay
> >>> >>>> >>>>> > between
> >>> >>>> >>>>> > hdf5-paraview and h5py, though. Do you happen to have a
> full
> >>> >>>> >>>>> > stack
> >>> >>>> >>>>> > trace?
> >>> >>>> >>>>> >
> >>> >>>> >>>>> > Thanks very much for these reports -- this is very
> exciting,
> >>> >>>> >>>>> > and
> >>> >>>> >>>>> > I'm
> >>> >>>> >>>>> > eager to help out!
> >>> >>>> >>>>> >
> >>> >>>> >>>>> > Best,
> >>> >>>> >>>>> >
> >>> >>>> >>>>> > Matt
> >>> >>>> >>>>> >
> >>> >>>> >>>>> >>
> >>> >>>> >>>>> >> Any of you have a better way to solve the problems above?
> >>> >>>> >>>>> >> Regards,
> >>> >>>> >>>>> >> On Wed, May 25, 2011 at 9:43 AM, Jorge Poco
> >>> >>>> >>>>> >> <jorge.poco at kitware.com>
> >>> >>>> >>>>> >> wrote:
> >>> >>>> >>>>> >>>
> >>> >>>> >>>>> >>> Hi
> >>> >>>> >>>>> >>> I have been trying to use YT inside the Paraview's
> python
> >>> >>>> >>>>> >>> shell.
> >>> >>>> >>>>> >>> Initially
> >>> >>>> >>>>> >>> I have had some problems which are now identified. It is
> >>> >>>> >>>>> >>> not
> >>> >>>> >>>>> >>> the
> >>> >>>> >>>>> >>> smart solution but I at least solve temporally these
> >>> >>>> >>>>> >>> problems:
> >>> >>>> >>>>> >>>
> >>> >>>> >>>>> >>> argv problem:
> >>> >>>> >>>>> >>>
> >>> >>>> >>>>> >>> Sentence: 'from yt.mods import *'
> >>> >>>> >>>>> >>> Error: for any reason paraview's python shell has not
> >>> >>>> >>>>> >>> defined
> >>> >>>> >>>>> >>> the
> >>> >>>> >>>>> >>> variable
> >>> >>>> >>>>> >>> 'sys.argv'
> >>> >>>> >>>>> >>> Temporal solution: comment yt code where the sys.argv
> >>> >>>> >>>>> >>> variable
> >>> >>>> >>>>> >>> is
> >>> >>>> >>>>> >>> used:
> >>> >>>> >>>>> >>>
> >>> >>>> >>>>> >>> yt/funcs.py: lines 439-453
> >>> >>>> >>>>> >>>
> yt/utilities/parallel_tools/parallel_analysis_interface.py:
> >>> >>>> >>>>> >>> lines 47
> >>> >>>> >>>>> >>> and
> >>> >>>> >>>>> >>> 48
> >>> >>>> >>>>> >>>
> >>> >>>> >>>>> >>> pa:
> >>> >>>> >>>>> >>>
> >>> >>>> >>>>> >>> Sentence: "pf = load('tests/DD0010/moving7_0010')"
> >>> >>>> >>>>> >>> Error: python shell does not complete the load function
> and
> >>> >>>> >>>>> >>> paraview
> >>> >>>> >>>>> >>> keeps
> >>> >>>> >>>>> >>> waiting.
> >>> >>>> >>>>> >>> Temporal solution: When I debug paraview and interrupt
> its
> >>> >>>> >>>>> >>> execution
> >>> >>>> >>>>> >>> the
> >>> >>>> >>>>> >>> backtrace shows sem_wait(). It happens inside the load
> >>> >>>> >>>>> >>> function
> >>> >>>> >>>>> >>> when
> >>> >>>> >>>>> >>> tries
> >>> >>>> >>>>> >>> to identify the candidates for input file
> (convenience.py
> >>> >>>> >>>>> >>> line
> >>> >>>> >>>>> >>> 74).
> >>> >>>> >>>>> >>> There
> >>> >>>> >>>>> >>> are 11 possible candidates and gives error for 2 of
> them:
> >>> >>>> >>>>> >>> ChomboStaticOutput
> >>> >>>> >>>>> >>> and FlashStaticOutput. Skipping those candidates solve
> >>> >>>> >>>>> >>> temporally the
> >>> >>>> >>>>> >>> problem:
> >>> >>>> >>>>> >>
> >>> >>>> >>>>> >>
> >>> >>>> >>>>> >> _______________________________________________
> >>> >>>> >>>>> >> Amr mailing list
> >>> >>>> >>>>> >> Amr at public.kitware.com
> >>> >>>> >>>>> >> http://public.kitware.com/cgi-bin/mailman/listinfo/amr
> >>> >>>> >>>>> >>
> >>> >>>> >>>>> >>
> >>> >>>> >>>>> > _______________________________________________
> >>> >>>> >>>>> > Amr mailing list
> >>> >>>> >>>>> > Amr at public.kitware.com
> >>> >>>> >>>>> > http://public.kitware.com/cgi-bin/mailman/listinfo/amr
> >>> >>>> >>>>> >
> >>> >>>> >>>>> _______________________________________________
> >>> >>>> >>>>> Amr mailing list
> >>> >>>> >>>>> Amr at public.kitware.com
> >>> >>>> >>>>> http://public.kitware.com/cgi-bin/mailman/listinfo/amr
> >>> >>>> >>>>
> >>> >>>> >>>>
> >>> >>>> >>>> _______________________________________________
> >>> >>>> >>>> Amr mailing list
> >>> >>>> >>>> Amr at public.kitware.com
> >>> >>>> >>>> http://public.kitware.com/cgi-bin/mailman/listinfo/amr
> >>> >>>> >>>>
> >>> >>>> >>>>
> >>> >>>> >>> _______________________________________________
> >>> >>>> >>> Amr mailing list
> >>> >>>> >>> Amr at public.kitware.com
> >>> >>>> >>> http://public.kitware.com/cgi-bin/mailman/listinfo/amr
> >>> >>>> >>>
> >>> >>>> >>
> >>> >>>> > _______________________________________________
> >>> >>>> > Amr mailing list
> >>> >>>> > Amr at public.kitware.com
> >>> >>>> > http://public.kitware.com/cgi-bin/mailman/listinfo/amr
> >>> >>>> >
> >>> >>>> _______________________________________________
> >>> >>>> Amr mailing list
> >>> >>>> Amr at public.kitware.com
> >>> >>>> http://public.kitware.com/cgi-bin/mailman/listinfo/amr
> >>> >>>
> >>> >>
> >>> >>
> >>> >
> >>> _______________________________________________
> >>> Amr mailing list
> >>> Amr at public.kitware.com
> >>> http://public.kitware.com/cgi-bin/mailman/listinfo/amr
> >>
> >>
> > _______________________________________________
> > Amr mailing list
> > Amr at public.kitware.com
> > http://public.kitware.com/cgi-bin/mailman/listinfo/amr
> >
> _______________________________________________
> Amr mailing list
> Amr at public.kitware.com
> http://public.kitware.com/cgi-bin/mailman/listinfo/amr
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/amr/attachments/20110610/fe3b12a1/attachment-0001.htm>
More information about the Amr
mailing list