Python notes
From DreamsteepWiki
INTERESTING MODULE INTERFACE (RECURSIVE CALLS/DOT NOTATION)
import sys_data_tree
"""
#USAGE:
import sys_dtree_dotnot
reload(sys_dtree_dotnot)
##########
#RUN ON ONE LINE
sys_dtree_dotnot.init("C:/keith_def_locs.klsys").bink().foo().show()
##########
#OR BREAK IT UP
import sys_dtree_dotnot
reload(sys_dtree_dotnot)
testtwo = sys_dtree_dotnot.init("C:/keith_def_locs.klsys")
testthree = testtwo.pause().addnode('s','s')
testthree .show().save('C://mygraph.klsys')
##################
#COPY A GRAPH AND INSERT ANOTHER NODE
import sys_dtree_dotnot
reload(sys_dtree_dotnot)
#start fresh
#testtwo = sys_dtree_dotnot.init(None)
#or load a graph
#testtwo = sys_dtree_dotnot.init("C:/keith_def_locs.klsys")
testthree = testtwo.addnode('mynewnode','s')
testthree.show().pause().save('C://mygraph.klsys')
###################
(ONE LINE!)
testtwo = sys_dtree_dotnot.init("C:/keith_def_locs.klsys").addnode('mynewtnodez','see').save('C://mygraphx.klsys')
"""
########################################
class _KL_OP:
def __init__(self, PKGRAPH):
self.KGRAPH = PKGRAPH
############################
def __deleteNode(self,nodename):
print 'delete!'
self.KGRAPH.delete_node_name(nodename)
return self.KGRAPH
##
def __createNode(self,name, type):
print 'kretae!'
node = sys_data_tree.node_base(name)
self.KGRAPH.add(node)
return self.KGRAPH
############################
#for debugging
def pause(self):
print 'debug pause'
raw_input()
return _KL_OP(self.KGRAPH)
##
def load(self,graphfile):
print 'loading ' + graphfile
self.KGRAPH.load_graph_file(graphfile)
return _KL_OP(self.KGRAPH)
##
def save(self,graphfile):
print 'loading ' + graphfile
self.KGRAPH.save_graph_file(graphfile)
return _KL_OP(self.KGRAPH)
#######
def addnode(self,name,type):
print 'adding node ' +name+ ' type '+ type
self.__createNode(name,type)
return _KL_OP(self.KGRAPH)
##
def delnode(self,name):
print 'deleteing node ' +name
self.__deleteNode(name)
return _KL_OP(self.KGRAPH)
######
def reset(self):
print 'reseting '
self.KGRAPH.reset()
return _KL_OP(self.KGRAPH)
##
def show(self):
self.KGRAPH.dumpall()
return _KL_OP(self.KGRAPH)
###
def init(graphfile):
KGRAPH = sys_data_tree.data_graph('KNODNET')
#make a new graph if arg is None
if graphfile == None:
return _KL_OP(KGRAPH)
#load if anything but None
if graphfile != None:
KGRAPH.load_graph_file(graphfile)
return _KL_OP(KGRAPH)
PUSH/POP
L = [] L.append(1) # push onto stack L.append(2) print L L.pop() # pop off stack print L
OS MODULE
print os.path.basename('aa/ee/aa/vv/dd')
result:dd
print os.path.dirname('aa/ee/aa/vv/dd')
result:aa/ee/aa/vv
GENERAL SETUP
on windows add C:/python25 (or whatever) to Path variable
ITERATING MULTIPLE ARRAYS
foos = [0, 1, 2, 3, 4]
bars = [1, 2, 3, 4, 5]
foobars = []
for i in range(len(foos)):
foo = foos[i]
bar = bars[i]
foobars.append(foo + bar)
print foobars
foos = [0, 1, 2, 3, 4]
bars = [1, 2, 3, 4, 5]
foobars = []
for foo, bar in zip(foos, bars):
foobars.append(foo + bar)
print foobars
RECURSION
#recursive function in python
def walkdag (catch):
catch = catch +1
if catch >= 10:
return
print 'hey',catch
walkdag(catch)
print 'you',catch
walkdag(0)
CONVERSIONS
RADIAN/DEGREE
def radian_to_degree(self,radians):
outdegrees = 0.0
outdegrees = radians * (180/3.14159265);
return outdegrees
######################
def degree_to_radians(self,degrees):
outradians = 0.0
outradians = (3.14159265/180 ) * float( degrees )
return outradians
ARC MINUTES TO DEGREE ( example n50d0'02"e )
def arc_to_degree(NS,degrees,minutes,seconds,EW):
outdegrees = 0.0
if NS =='n':
outdegrees = degrees
outdegrees = outdegrees + (minutes*.0166667) #1/60
outdegrees = outdegrees + (seconds*.0166667*.0166667) #1/60
if NS =='s':
outdegrees = 180.0
outdegrees = outdegrees + degrees
outdegrees = outdegrees + (minutes*.0166667) #1/60
outdegrees = outdegrees + (seconds*.0166667*.0166667) #1/60
if EW =='w' and NS =='s':
outdegrees = outdegrees * -1
###?
if EW =='e' and NS =='n':
outdegrees = outdegrees * -1
return outdegrees

