ó
°;çIc           @   sÌ   d  Z  d d l m Z d d l Td d l m Z d d l m Z d d l m	 Z	 d d d „  ƒ  YZ
 d	 e f d
 „  ƒ  YZ d d d „  ƒ  YZ d d d „  ƒ  YZ d d d „  ƒ  YZ d e f d „  ƒ  YZ d S(   sG   Parsing AlignACE and CompareACE files: AlignAceParser,CompareAceParser
iÿÿÿÿ(   t   File(   t   *(   t   Motif(   t   IUPAC(   t   Seqt   AlignAceConsumerc           B   sz   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z RS(   sÞ   
    The general purpose consumer for the AlignAceScanner.

    Should be passed as the consumer to the feed method of the AlignAceScanner. After 'consuming' the file, it has the list of motifs in the motifs property.
    c         C   s   g  |  _  d  |  _ d  |  _ d  S(   N(   t   motifst   Nonet   current_motift
   param_dict(   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/Motif/Parsers/AlignAce.pyt   __init__   s    		c         C   s   i  |  _  d  S(   N(   R	   (   R
   t   line(    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Motif/Parsers/AlignAce.pyt
   parameters   s    c         C   sC   | j  d ƒ d j ƒ  } | j  d ƒ d j ƒ  } | |  j | <d  S(   Nt   =i    i   (   t   splitt   stripR	   (   R
   R   t   par_namet	   par_value(    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Motif/Parsers/AlignAce.pyt	   parameter   s    c         C   s   g  |  _  d  S(   N(   t   seq_dict(   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/Motif/Parsers/AlignAce.pyt	   sequences#   s    c         C   s'   | j  d ƒ d } |  j j | ƒ d  S(   Ns   	i   (   R   R   t   append(   R
   R   t   seq_name(    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Motif/Parsers/AlignAce.pyt   sequence&   s    c         C   s2   t  ƒ  |  _ |  j j |  j ƒ t j |  j _ d  S(   N(   R   R   R   R   R   t   unambiguous_dnat   alphabet(   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/Motif/Parsers/AlignAce.pyt   motif*   s    c         C   s3   t  | j d ƒ d t j ƒ } |  j j | ƒ d  S(   Ns   	i    (   R   R   R   R   R   t   add_instance(   R
   R   t   seq(    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Motif/Parsers/AlignAce.pyt	   motif_hit/   s    c         C   s    t  | j ƒ  d ƒ |  j _ d  S(   Niÿÿÿÿ(   t   floatR   R   t   score(   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/Motif/Parsers/AlignAce.pyt   motif_score3   s    c         C   s   |  j  j | j d ƒ ƒ d  S(   Ns   
\c(   R   t   set_maskR   (   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/Motif/Parsers/AlignAce.pyt
   motif_mask6   s    c         C   s   d  S(   N(    (   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/Motif/Parsers/AlignAce.pyt   noevent9   s    c         C   s   | |  _  d  S(   N(   t   ver(   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/Motif/Parsers/AlignAce.pyt   version<   s    c         C   s   | |  _  d  S(   N(   t   cmd_line(   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/Motif/Parsers/AlignAce.pyt   command_line?   s    (   t   __name__t
   __module__t   __doc__R   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/Motif/Parsers/AlignAce.pyR      s   											t   AlignAceParserc           B   s    e  Z d  Z d „  Z d „  Z RS(   s4   Parses AlignAce data into a sequence of Motifs.
    c         C   s   t  ƒ  |  _ t ƒ  |  _ d S(   s   __init__(self)N(   t   AlignAceScannert   _scannerR   t	   _consumer(   R
   (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Motif/Parsers/AlignAce.pyR   E   s    c         C   s   |  j  j | |  j ƒ |  j S(   s   parse(self, handle)(   R.   t   feedR/   (   R
   t   handle(    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Motif/Parsers/AlignAce.pyt   parseJ   s    (   R)   R*   R+   R   R2   (    (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Motif/Parsers/AlignAce.pyR,   B   s   	R-   c           B   s   e  Z d  Z d „  Z RS(   sF  Scannner for AlignACE output

    Methods:
    feed     Feed data into the scanner.

    The scanner generates (and calls the consumer) the following types of events:

    noevent - blank line

    version - AlignACE version number
    command_line - AlignACE command line string
    parameters - the begining of the parameters
    parameter - the line containing a parameter
    sequences - the begining of the sequences list
    sequence - line containing the name of the input sequence (and a respective number)
    motif - the begining of the motif (contains the number)
    motif_hit - one hit for a motif
    motif_mask - mask of the motif (space - gap, asterisk - significant position)
    motif_score - MAP score of the motif - approx. N * log R, where R == (num. of actual occur.) / (num. of occur. expected by random.)
    
    c         C   sl  | j  | j ƒ  ƒ | j | j ƒ  ƒ x?| D]7} | j ƒ  d k rU | j | ƒ q- | d  d k ru | j | ƒ q- | d d k r• | j | ƒ q- d | k r± | j | ƒ q- | d  d k rÑ | j | ƒ q- | d  d	 k rñ | j	 | ƒ q- | d
  d k r| j
 | ƒ q- t | j d ƒ ƒ d k r<| j | ƒ q- d | k rX| j | ƒ q- t | ƒ ‚ q- Wd S(   sõ   S.feed(handle, consumer)

        Feed in a AlignACE report for scanning.  handle is a file-like
        object that contains the AlignACE report.  consumer is a Consumer
        object that will receive events as the report is scanned.
        t    i   t   Parai    t   #R   i   t   InputR   i   t   MAPs   	R   N(   R&   t   readlineR(   R   R$   R   R   R   R   R   R!   t   lenR   R   R#   t
   ValueError(   R
   R1   t   consumerR   (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Motif/Parsers/AlignAce.pyR0   e   s,    (   R)   R*   R+   R0   (    (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Motif/Parsers/AlignAce.pyR-   O   s   t   CompareAceScannerc           B   s   e  Z d  Z d „  Z RS(   s;  Scannner for CompareACE output

    Methods:
    feed     Feed data into the scanner.

    The scanner generates (and calls the consumer) the following types of events:

    motif_score - CompareACE score of motifs

    ###### TO DO #############3
    extend the scanner to include other, more complex outputs.
    c         C   s   | j  | j ƒ  ƒ d S(   sù   S.feed(handle, consumer)

        Feed in a CompareACE report for scanning.  handle is a file-like
        object that contains the CompareACE report.  consumer is a Consumer
        object that will receive events as the report is scanned.
        N(   R!   R8   (   R
   R1   R;   (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Motif/Parsers/AlignAce.pyR0   ‘   s    (   R)   R*   R+   R0   (    (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Motif/Parsers/AlignAce.pyR<   „   s   t   CompareAceConsumerc           B   s    e  Z d  Z d „  Z d „  Z RS(   sâ   
    The general purpose consumer for the CompareAceScanner.

    Should be passed as the consumer to the feed method of the CompareAceScanner. After 'consuming' the file, it has the list of motifs in the motifs property.
    c         C   s   d  S(   N(    (   R
   (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Motif/Parsers/AlignAce.pyR   ¡   s    c         C   s   t  | j ƒ  d ƒ |  _ d  S(   Niÿÿÿÿ(   R   R   t   data(   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/Motif/Parsers/AlignAce.pyR!   £   s    (   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/Motif/Parsers/AlignAce.pyR=   ›   s   	t   CompareAceParserc           B   s    e  Z d  Z d „  Z d „  Z RS(   sW   Parses CompareAce output to usable form

    ### so far only in a very limited way
    c         C   s   t  ƒ  |  _ t ƒ  |  _ d S(   s   __init__(self)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/Motif/Parsers/AlignAce.pyR   «   s    c         C   s    |  j  j | |  j ƒ |  j j S(   s   parse(self, handle)(   R.   R0   R/   R>   (   R
   R1   (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Motif/Parsers/AlignAce.pyR2   °   s    (   R)   R*   R+   R   R2   (    (    (    s   /oak/stanford/groups/akundaje/marinovg/programs/biopython-1.50.tar.gz/biopython-1.50/build/lib.linux-x86_64-2.7/Bio/Motif/Parsers/AlignAce.pyR?   ¦   s   	N(    (    (    (    (   R+   t   BioR    t   Bio.ParserSupportt	   Bio.MotifR   t   Bio.AlphabetR   t   Bio.SeqR   R   t   AbstractParserR,   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/Motif/Parsers/AlignAce.pyt   <module>   s   
25