ó
ž{ Ic           @   sV   d  e  f d „  ƒ  YZ d e  f d „  ƒ  YZ d d	 d „  ƒ  YZ d d
 d „  ƒ  YZ d S(   t   ChainExceptionc           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyR       s   t   NodeExceptionc           B   s   e  Z RS(    (   R   R   (    (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyR      s   t   Chainc           B   sk   e  Z d  Z d „  Z d „  Z d „  Z d d „ Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z RS(   s0   Stores a list of nodes that are linked together.c         C   s   i  |  _  d |  _ d S(   s   Initiates a node chain: (self).iÿÿÿÿN(   t   chaint   id(   t   self(    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyt   __init__   s    	c         C   s   |  j  d 7_  |  j  S(   s&   Gets a new id for a node in the chain.i   (   R   (   R   (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyt   _get_id   s    c         C   s   |  j  j ƒ  S(   s   Return a list of all node ids.(   R   t   keys(   R   (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyt   all_ids$   s    c         C   sŽ   | d k	 r4 | |  j k r4 t d t | ƒ ƒ ‚ nV |  j ƒ  } | j | ƒ | j | ƒ | d k	 r} |  j | j | ƒ n  | |  j | <| S(   s-   Attaches node to another: (self, node, prev).s   Unknown predecessor: N(   t   NoneR   R    t   strR	   t   set_idt   set_prevt   add_succ(   R   t   nodet   prevR   (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyt   add(   s    c         C   s¹   | |  j  k r( t d t | ƒ ƒ ‚ n  |  j  | j ƒ  } |  j  | j | ƒ |  j  | j ƒ  } x" | D] } |  j  | j | ƒ qi W|  j  | j | ƒ |  j  | } |  j | ƒ | S(   sR   Deletes node from chain and relinks successors to predecessor: collapse(self, id).s   Unknown ID: (	   R   R    R   t   get_prevt   remove_succt   get_succR   R   t   kill(   R   R   t   prev_idt   succ_idst   iR   (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyt   collapse5   s    c         C   s6   | |  j  k r( t d t | ƒ ƒ ‚ n
 |  j  | =d S(   sN   Kills a node from chain without caring to what it is connected: kill(self,id).s   Unknown ID: N(   R   R    R   (   R   R   (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyR   C   s    c         C   s‰   | |  j  k r( t d t | ƒ ƒ ‚ n] |  j  | j } | d k	 rq |  j  | j j |  j  | j j | ƒ ƒ n  d |  j  | _ | Sd S(   s7   Disconnects node from his predecessor: unlink(self,id).s   Unknown ID: N(   R   R    R   R   R   t   succt   popt   index(   R   R   R   (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyt   unlinkJ   s    -c         C   sŒ   | |  j  k r( t d t | ƒ ƒ ‚ n` | |  j  k rP t d t | ƒ ƒ ‚ n8 |  j | ƒ |  j  | j j | ƒ |  j  | j | ƒ d S(   s.   Connects son to parent: link(self,son,parent).s   Unknown ID: N(   R   R    R   R   R   t   appendR   (   R   t   parentt   child(    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyt   linkU   s    c         C   se   | | k s% | |  j  | j ƒ  k r) t Sx5 |  j  | j ƒ  D] } |  j | | ƒ r= t Sq= Wt Sd S(   sQ   Check if grandchild is a subnode of parent: is_parent_of(self,parent,grandchild).N(   R   R   t   Truet   is_parent_oft   False(   R   R!   t
   grandchildt   sn(    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyR%   `   s    %c         C   s›   | |  j  k s | |  j  k r- t d ƒ ‚ n  |  j | | ƒ sL | | k rP g  SxD |  j  | j ƒ  D]/ } |  j | | ƒ rd | g |  j | | ƒ Sqd Wd S(   sd   Returns a list of all node_ids between two nodes (excluding start, including end): trace(start,end).s   Unknown node.N(   R   R   R%   R   t   trace(   R   t   startt   finishR(   (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyR)   k   s    N(   R   R   t   __doc__R   R	   R   R   R   R   R   R   R#   R%   R)   (    (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyR      s   								t   Nodec           B   st   e  Z d  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z RS(   s   A single node.c         C   s(   d |  _ | |  _ d |  _ g  |  _ d S(   sR   Represents a node with one predecessor and multiple successors: (self, data=None).N(   R   R   t   dataR   R   (   R   R.   (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyR   x   s    			c         C   s+   |  j  d k	 r t d ƒ ‚ n  | |  _  d S(   s1   Sets the id of a node, if not set yet: (self,id).s   Node id cannot be changed.N(   R   R   R   (   R   R   (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyR      s    c         C   s   |  j  S(   s   Returns the node's id: (self).(   R   (   R   (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyt   get_id…   s    c         C   s   |  j  S(   s0   Returns a list of the node's successors: (self).(   R   (   R   (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyR   ‰   s    c         C   s   |  j  S(   s1   Returns the id of the node's predecessor: (self).(   R   (   R   (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyR      s    c         C   s<   t  | t g  ƒ ƒ r( |  j j | ƒ n |  j j | ƒ d S(   s3   Adds a node id to the node's successors: (self,id).N(   t
   isinstancet   typeR   t   extendR    (   R   R   (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyR   ‘   s    c         C   s   |  j  j | ƒ d S(   s8   Removes a node id from the node's successors: (self,id).N(   R   t   remove(   R   R   (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyR   ˜   s    c         C   s1   t  | t g  ƒ ƒ s$ t d ƒ ‚ n  | |  _ d S(   s,   Sets the node's successors: (self,new_succ).s$   Node successor must be of list type.N(   R0   R1   R   R   (   R   t   new_succ(    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyt   set_succœ   s    c         C   s   | |  _  d S(   s'   Sets the node's predecessor: (self,id).N(   R   (   R   R   (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyR   ¢   s    c         C   s   |  j  S(   s   Returns a node's data: (self).(   R.   (   R   (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyt   get_data¦   s    c         C   s   | |  _  d S(   s    Sets a node's data: (self,data).N(   R.   (   R   R.   (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyt   set_dataª   s    N(   R   R   R,   R   R   R   R/   R   R   R   R   R5   R   R6   R7   (    (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyR-   u   s   									N(    (    (   t	   ExceptionR    R   R   R-   (    (    (    s‚   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Nexus/Nodes.pyt   <module>   s   ^