B
    ‘ ^y  ã               @   s´   d dl Z d dlZd dlZdZdZdd„ Zdd„ Zdd	„ Zd
d„ Ze	dkr°ee j
d ƒ\ZZee j
d ƒZeeeƒZeeƒZx4ed eƒD ]&Ze j dee ee ee f ¡ q†W dS )é    Ni6eÄg:Œ0âŽyE>c             C   s   | t ks|t krt S | | S )N)ÚLOG_ZERO)Zv1Zv2© r   úa/Users/cnotredame/Dropbox/Teaching/Practicals_Bed/bed/practicals_db/ex.7.3/sol/2.1.viterbi.sol.pyÚlog_multiply
   s    r   c             C   s†  t }d}t| ƒ}| ¡ }t|ƒ}i }i }x&td|d ƒD ]}	i ||	< i ||	< q8W x|D ]}
d|d |
< qVW x¢td|d ƒD ]}	| |	d  }x~|D ]v}t }d}xB|D ]:}
t||	d  |
 ||
 | ƒ}||ksÔ|t kr¢|}|
}q¢W t|| | |ƒ||	 |< |||	 |< qW qzW t }d}x6|D ].}
|| |
 }||ks@|t kr|}|
}qW i }x.t|ddƒD ]}	|||	d < ||	 | }q`W |S )NÚ r   é   éÿÿÿÿ)r   ÚlenÚkeysÚranger   )ÚDataÚModelZmaxkZptr_kÚLZStatesZNsÚVZPTRÚiÚkÚsymbolÚlZmax_kÚvZvvZvdr   r   r   Úviterbi   sH    




r   c          	   C   s   i }t | ƒz}xr|D ]j}t d|¡}|r| d¡}| d¡}t| d¡ƒ}|tk rXt}n
t |¡}||krri ||< ||| |< qW |S Q R X d S )Nz(\S*)::(\S*)::(\S*)r   é   é   )	ÚopenÚreÚmatchÚgroupÚfloatÚSMALLr   ÚmathÚlog)Únamer   ÚfÚlineZmobjÚs1Ús2Úpr   r   r   Ú	readmodel<   s    



 
r&   c          	   C   sV   i }i }d}t | ƒ4}x,|D ]$}|d ||< |d ||< |d7 }qW W d Q R X ||fS )Nr   r   )r   )r    r   ÚRefr   r!   r"   r   r   r   ÚreaddataO   s    

r(   Ú__main__r   r   z%c%c%c
)Úsysr   r   r   r   r   r   r&   r(   Ú__name__Úargvr   r'   r   ZViterbiDr	   r   r   r   ÚstdoutÚwriter   r   r   r   Ú<module>   s   -
