[VTK ARB] Dependency generations and visualisation - take 2
Andrew Maclean
a.maclean at cas.edu.au
Tue Aug 24 20:09:40 EDT 2010
Thanks.
Give us a couple of days, I have just realised how to specify a
particular kit and optionally all or one or several classes in it. The
trick is to make sure dependencies on other kits are picked up.
Regards
Andrew
On Tue, 2010-08-24 at 08:56 -0400, Jeff Baumes wrote:
> I like it. These should be good tools to have on hand as we figure out
> the new kit boundaries.
>
>
> Jeff
>
> On Sun, Aug 22, 2010 at 6:28 PM, Andrew Maclean <a.maclean at cas.edu.au>
> wrote:
> Hi Jeff,
> This extends your idea of looking at the includes, by
> allowing the
> user to specify a particular class and (optionally) restrict
> the depth
> of the subsequent tree.
>
> You can select a particular class and view all the includes
> for that
> class. Optionally you can control the depth of the tree and
> create an
> output suitable for graphviz. To do this, use get_subgraph.py
> and run it
> using vtkdepends.py as input.
>
> python depends.py > vtkdepends.txt
>
> Here we select a particular class (vtkParametricTorus), the
> topmost two
> levels of the tree and format for subsequent use by graphviz.
> python get_subgraph.py -i vtkdepends.txt -c vtkParametricTorus
> -g -d 2 >
> x
> dot -Tps -O x
>
> Here we select a particular class (vtkParametricTorus), all
> levels of
> the tree and run it dependsview.py.
> python get_subgraph.py -i vtkdepends.txt -c vtkParametricTorus
> > x
> vtkpython dependsview.py x
>
>
>
> One issue I have is that I get a segfault if I restrich the
> depth of the
> tree output and run dependsview.py.
> e.g
> python get_subgraph.py -i vtkdepends.txt -c vtkParametricTorus
> -d 2 > x
> vtkpython dependsview.py x
>
> Produces this output:
> Total number of classes: 5
> Top Ten:
> 18
> vtkMath 7
> vtkObjectFactory 7
> vtkParametricTorus 3
> vtkParametricFunction 1
> 0
> Segmentation fault
>
>
> Regards
> Andrew
>
>
>
> On Thu, 2010-08-19 at 11:43 -0400, Jeff Baumes wrote:
> > I attempted some custom scripts to see the include structure
> of VTK.
> >
> >
> > python depends.py > vtkdepends.txt
> > vtkpython dependsview.py vtkdepends.txt
> >
> >
> > The first will create a two-column list of all includes from
> one class
> > to another in VTK and must be called from the root of VTK
> source. The
> > second visualizes the data with VTK itself and prints out
> the classes
> > with the highest number of connections. Since the network
> makes a
> > so-called "hairball", the second script optionally takes a
> maximum
> > linkage cutoff to simplify the graph, e.g.
> >
> >
> > vtkpython dependsview.py vtkdepends.txt 10
> >
> >
> > will remove any classes with more than 10 links. Nodes are
> colored by
> > number of connections.
> >
> >
> > Jeff
> >
> > On Wed, Aug 18, 2010 at 10:31 PM, Andrew Maclean
> > <a.maclean at cas.edu.au> wrote:
> > Hey Bill, need some python practice?
> >
> > This could be useful in looking at the examples.
> >
> > I attach a python script taken from
> >
> http://furius.ca/pubcode/pub/conf/common/bin/depends-dot.html
> > And modified so that just the executable and the VTK
> nodes of
> > the graph
> > are traversed.
> >
> > Run it as:
> > python depends-dot ./Executable_File > depends.dot
> > Then:
> > neato -Tps -O depends.dot
> > Or:
> > dot -Tps -O depends.dot
> >
> > As you know you can also run:
> > cmake --graphviz=g.dot ..
> > Assuming the source is in ..
> > Then:
> > neato -Tps -O g.dot
> > Or:
> > dot -Tps -O g.dot
> >
> > However the python script (as modified) displays a
> lot more
> > information.
> > My modifications are:
> > # Eliminate /usr or /lib libraries and
> keep the
> > first level
> > VTK links.
> > #if fn.find('/usr') == -1 and
> fn.find('/lib') == -1
> > and
> > dfn.find('VTK') != -1:
> > # Just the executable and the VTK nodes
> of the
> > graph are
> > traversed.
> > if dfn.find('VTK') != -1:
> > print '"%s" -> "%s";' % (fn, dfn)
> >
> > Just uncomment the first if statement to just get
> the
> > first-level
> > linkages to libraries.
> >
> > This might be a good start in visualising
> dependencies.
> >
> > I also found perl script called cinclude2dot that
> produces
> > an include
> > dependency graph see:
> http://www.flourish.org/cinclude2dot/ .
> > The
> > problem with this one is that it cannot follow links
> to
> > includes in
> > other directories. My perl is not good enough but it
> may be
> > possible to
> > parse CMakeCache.txt to pick up the include paths
> and traverse
> > those
> > directories too.
> > I ran this on the vtk directory and the output
> is ... well ...
> > spectacular and unreadable.
> > Try:
> > ./cinclude2dot --merge module > source.dot
> >
> >
> > The python script focuses on libraries and the perl
> one
> > focuses on
> > includes. So the approaches are different. However I
> feel the
> > perl one
> > could be more useful with the --merge module option
> since in
> > general vtk
> > include names reflect class names.
> >
> > Regards
> > Andrew
> >
> >
> > --
> > ___________________________________________
> > Andrew J. P. Maclean
> > Centre for Autonomous Systems
> > The Rose Street Building J04
> > The University of Sydney 2006 NSW
> > AUSTRALIA
> > Ph: +61 2 9351 3283
> > Fax: +61 2 9351 7474
> > URL: http://www.acfr.usyd.edu.au/
> > ___________________________________________
> >
> > _______________________________________________
> > Arb mailing list
> > Arb at vtk.org
> >
> http://public.kitware.com/cgi-bin/mailman/listinfo/arb
> >
> >
> >
> >
> > --
> > Jeff Baumes, Ph.D.
> > Technical Lead, Kitware Inc.
> > (518) 881-4932
> >
>
> --
> ___________________________________________
> Andrew J. P. Maclean
> Centre for Autonomous Systems
> The Rose Street Building J04
> The University of Sydney 2006 NSW
> AUSTRALIA
> Ph: +61 2 9351 3283
> Fax: +61 2 9351 7474
> URL: http://www.acfr.usyd.edu.au/
> ___________________________________________
>
>
>
>
> --
> Jeff Baumes, Ph.D.
> Technical Lead, Kitware Inc.
> (518) 881-4932
>
--
___________________________________________
Andrew J. P. Maclean
Centre for Autonomous Systems
The Rose Street Building J04
The University of Sydney 2006 NSW
AUSTRALIA
Ph: +61 2 9351 3283
Fax: +61 2 9351 7474
URL: http://www.acfr.usyd.edu.au/
___________________________________________
More information about the Arb
mailing list