Python example: editing HV results

From GeopsyWiki
Revision as of 08:53, 22 October 2024 by Marc (talk | contribs)
Jump to navigation Jump to search

Import SciFigs module and create a blank sheet

 import GeopsyPySciFigs as sf
 s=sf.newSheet()

Open the .page file saved from Geopsy H/V module

 s.fileOpen_2("hv-before-9.10.page")

Import a few Python functions to manipulate graphical objects.

 import hvedit

Change the color and the width of the average and stddev curves

 hvedit.setRed(s)

Save the average and stddev layers

 hvedit.saveLayers(s)

Open other results with the same stations, change the width of curves and compare the results

 s.fileNew()
 s.fileOpen_2("hv-after-9.10.page")
 hvedit.setWidth(s)
 hvedit.addLayer(s)


 def setWidth(s):
   n=s.numberOfObjects()
   for i in range(0, n):
     g=s.object_1(i)
     print(g.objectName())
     # Average
     l=g.object(1).graphContents().layer(3)
     if l:
       leg=l.legend()
       pen=leg.child("LegendItem index='0'").child("Pen")
       pen.setValue("width", '0.3')
       l.setLegend(leg)
     # stddev
     l=g.object(1).graphContents().layer(4)
     if l:
       leg=l.legend()
       pen=leg.child("LegendItem index='0'").child("Pen")
       pen.setValue("width", '0.3')
       pen=leg.child("LegendItem index='1'").child("Pen")
       pen.setValue("width", '0.3')
       l.setLegend(leg)
 def setRed():
   n=s.numberOfObjects()
   for i in range(0, n):
     g=s.object_1(i)
     print(g.objectName())
     # Average
     l=g.object(1).graphContents().layer(3)
     if l:
       leg=l.legend()
       pen=leg.child("LegendItem index='0'").child("Pen")
       pen.setValue("color", '#FF0000')
       pen.setValue("width", '0.3')
       l.setLegend(leg)
     # stddev
     l=g.object(1).graphContents().layer(4)
     if l:
       leg=l.legend()
       pen=leg.child("LegendItem index='0'").child("Pen")
       pen.setValue("color", '#FF0000')
       pen.setValue("width", '0.3')
       pen=leg.child("LegendItem index='1'").child("Pen")
       pen.setValue("color", '#FF0000')
       pen.setValue("width", '0.3')
       l.setLegend(leg)
 def saveLayers(s):
   n=s.numberOfObjects()
   for i in range(0, n):
     g=s.object_1(i)
     print(g.objectName())
     gc=g.object(1).graphContents()
     if gc:
       gc.saveLayers_3(g.objectName()+"-average.layer", "Average")
       gc.saveLayers_3(g.objectName()+"-stddev.layer", "Stddev")
     
 def addLayer(s):
   n=s.numberOfObjects()
   for i in range(0, n):
     g=s.object_1(i)
     print(g.objectName())
     gc=g.object(1).graphContents()
     if gc:
       gc.insertLayers(g.objectName()+"-average.layer", "Stddev")
       gc.insertLayers(g.objectName()+"-stddev.layer", "Stddev")