Python notes

From DreamsteepWiki

Jump to: navigation, search

Notes from Keith


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
Personal tools