Drawing phylogenies Weve seen several tree data structures

  • Slides: 16
Download presentation
Drawing phylogenies We've seen several tree data structures but we still can't draw a

Drawing phylogenies We've seen several tree data structures but we still can't draw a tree In the tree drawing exercise we write a drawtree function for the Node class: 1

Drawing other trees Can we reuse this phylogeny drawtree method with other trees? •

Drawing other trees Can we reuse this phylogeny drawtree method with other trees? • drawtree needs to know child nodes and name of node No problem: A node in any tree has some sons (or none) and a name. Node specifics for drawtree: • uses method get_sons (returns list of child nodes) • used method get_name (returns string) Problem: Corresponding methods in other trees may have different names 2

Can't use drawtree directly We want: General tree drawing tool that can draw any

Can't use drawtree directly We want: General tree drawing tool that can draw any tree if given a converter object: an "interpreter" which knows what methods to call for the given kind of node instead of get_sons get_name • For each tree data structure we need to write a converter • Need to modify drawtree slightly to use a converter 3

A converter class for tree data structure X • Should have two methods, each

A converter class for tree data structure X • Should have two methods, each taking an X node as argument: – one for returning a list of the node's sons – one for returning the name of the node 4

New version of drawtree module • All functions that call get_name or get_sons on

New version of drawtree module • All functions that call get_name or get_sons on a node some_node must also take a converter object converter as argument • All occurrences of some_node. get_name() and some_node. get_sons() are replaced with converter. get_name( some_node ) and converter. get_sons( some_node ) 5

Example: converter for XML DOM trees xml_draw. py (part 1) A DOM tree consists

Example: converter for XML DOM trees xml_draw. py (part 1) A DOM tree consists of nodes representing tags in the XML data drawtree doesn’t know how to get to the sons and the name of a DOM tree node, but this XML converter tells it how 6

Drawing XML DOM trees xml_draw. py (part 2) Import modified drawtree module Parse XML

Drawing XML DOM trees xml_draw. py (part 2) Import modified drawtree module Parse XML file, obtain DOM tree Please draw this tree, here is how (neat!) 7

Drawing article 2. xml 8

Drawing article 2. xml 8

And now for something completely different os module: Interface to operating system functionality os.

And now for something completely different os module: Interface to operating system functionality os. linesep The string used to terminate lines on the current platform. This may be a single character, such as 'n' for Unix or 'r' for Mac OS, or multiple characters, for example, 'rn' for Windows. os. getcwd() Returns a string representing the current directory os. mkdir( path ) Creates a directory with the given name os. listdir( path ) Returns a list of all entries in the given directory path 9

os. path module: functions on pathnames os. path. split( path ) Split the pathname

os. path module: functions on pathnames os. path. split( path ) Split the pathname path into a pair, (head, tail) where tail is the part after the last / and head is everything leading up to that. os. path. dirname( path ) , os. path. basename( path ) Returns the head and tail of path, respectively. os. path. splitext( path ) Split the path into a pair (root, ext) such that root + ext == path, and ext is the extension. os. path. exists( path ) Returns true if the given file or directory exists, false otherwise. os. path. join( path 1[, path 2[, . . . ]] ) Joins the paths to form a new path in format valid on current platform: os. path. join( "/users/chili/PBI", "plan. html" ) gives /users/chili/PBI/plan. html 10

os. walk - recursively traverse directory Notes figures Program. Examples From. Course. Notes os.

os. walk - recursively traverse directory Notes figures Program. Examples From. Course. Notes os. walk( top ) walk() generates the entries in a directory tree, by walking the tree either top down or bottom up. It returns a list of tuples: Each directory in the tree rooted at directory top (including top itself) yields a 3 -tuple (dirpath, dirnames, filenames). dirpath is a string, the path to the directory. dirnames is a list of the names of the subdirectories in dirpath (excluding '. ' and '. . '). filenames is a list of 11 the names of the non-directory files in dirpath.

dirwalk. py Find all python programs in PBI directories Traversal is top-down by default:

dirwalk. py Find all python programs in PBI directories Traversal is top-down by default: OK to remove a directory from the subdirs list to avoid visiting it 12

Notes figures Program. Examples From. Course. Notes /users/chili/PBI/Exercises contains 3. py files (out of

Notes figures Program. Examples From. Course. Notes /users/chili/PBI/Exercises contains 3. py files (out of 211 files) /users/chili/PBI/Exercises/Solutions contains 29. py files (out of 67 files) /users/chili/PBI/Program. Examples contains 48. py files (out of 89 files) /users/chili/PBI/Program. Examples/From. Course. Notes contains 25. py files (out of 27 files) 13

Now that we have a drawtree function. . dirdraw. py entry names only local:

Now that we have a drawtree function. . dirdraw. py entry names only local: join with root to get full path 14

Tadaa! 15

Tadaa! 15

. . on to the exercises 16

. . on to the exercises 16