Printing different views of a shape plot

Particularly useful chunks of hoc and/or NMODL code. May be pedestrian or stunningly brilliant, may make you gasp or bring tears to your eyes, but always makes you think "I wish I had written that; I'm sure going to steal it."
Post Reply
shhong
Posts: 9
Joined: Wed Jan 07, 2009 6:52 am

Printing different views of a shape plot

Post by shhong » Mon Oct 05, 2015 6:07 am

I am trying to generate many shape plots with different focuses and magnifications and save them by a python script. I managed to make the plots using .view, but discovered that .printfile only saves only the first view. Is there any way around this?

ted
Site Admin
Posts: 5351
Joined: Wed May 18, 2005 4:50 pm
Location: Yale University School of Medicine
Contact:

Re: Printing different views of a shape plot

Post by ted » Tue Oct 06, 2015 12:23 pm

Good question. Here's Michael Hines's answer:
The printfile methods for Graph, etc should be extended to allow an optional second arg that specifies the view number.

With some difficulty, one can use the PWFM to iterate over all the printable windows, and, based on the window title returned by pwfm.name(i) decide whether to add to the print list with pwfm.paper_place() and then print with pwmf.printfile, eg partially

Code: Select all

>>> from neuron import h
>>> s = h.Section()
# now start some graph and shapeplots with views.

>>> pwfm = h.PWManager[0]
>>> a = [pwfm.name(i) for i in range(int(pwfm.count()))]
>>> a
['NEURON Main Menu', 'Print & File Window Manager', 'Graph NewView x -0.5 : 5.5  y -92 : 52', 'Graph NewView x 1.11022 : 1.80032  y -19.5399 : 19.1054', 'Graph NewView x 3.79393 : 5.05911  y -67.1566 : -0.217262', 'Shape NewView x -281.1 : 381.1  y -331.1 : 331.1', 'Shape NewView x -182.879 : 73.7631  y -98.5293 : 176.067']
>>>
and here's a hoc example that assumes that some windows already exist, including two different views of a Shape:

Code: Select all

oc>objref pwfm
oc>pwfm = PWManager[0]
oc>pwfm.count()
	10 
oc>for i=0,pwfm.count()-1 print i, pwfm.name(i)
0 NEURON Main Menu 
1 Print & File Window Manager 
2 Temperature 
3 VariableTimeStep 
4 RunControl 
5 NEURON Demonstrations 
6 PointProcessManager 
7 Shape NewView x -619.845 : 653.847  y -334.027 : 937.633 
8 Graph[0]  x -0.5 : 5.5  y -92 : 52 
9 Shape NewView x -288.3 : 351.593  y -300 : 338.949 
oc>
I should mention that you don't have to create an instance of the PWManager class--it automatically exists if you are using NEURON's standard run system.

Post Reply