B
    ,_&                 @   s  d dl mZ d dlmZ ddlmZ d dlZd dlZd dlZd dl	Z	dZ
ejejejeZejedZe	eedZejed	Ze	eedZeeZd
dddddddddddddddddddddd d!d"d#d
dddddddddddddddddddddd d!d"d#d
dddddddddddddddddddddd d!d"d#d
ddddddddd
ddddddddd d!d"d#d d!d d!d"d#d d!d d!d"d#d d!d d!d"d#d d!d"d"d"d"d"d"d$~Zd dd%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4Zd5d6d7d8d9d:d;d<d=d>g
Zd dd%d'd(d&d,d)d*d+d?
Zd@dA ZdBdC ZdS )D    )HttpResponse)render   )	QueryFormNDEBUGz$all_protein_coding_gene_name.set.pklrbzddi_score_for_website.dict.pkl1234567891011121314151617181920212223242526)~r                        	   
                                                   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   Zchr1Zchr2Zchr3Zchr4Zchr5Zchr6Zchr7Zchr8Zchr9Zchr10Zchr11Zchr12Zchr13Zchr14Zchr15Zchr16Zchr17Zchr18Zchr19Zchr20Zchr21Zchr22Zchr23Zchr24Zchr25Zchr26Zchr01Zchr02Zchr03Zchr04Zchr05Zchr06Zchr07Zchr08Zchr0901Z02Z03Z04Z05Z06Z07Z08Z09xyZxymt0xZ0yXYZXYZMTZ0XZ0YZchrxZchryZchrxyZchrmtZchr0xZchr0yZchrXZchrYZchrXYZchrMTZchr0XZchr0YZchrMZmitoMmZchrmZMitor"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   )gndmDDIdmnamedmfullDDI_rankZlen_dmZlen_cdsZmis_cdsZmis_dmZ
enrichmentZpath_count_dmZpath_count_geneorchrposstrandrF   rI   rD   rG   rH   rE   rK   rL   rM   rJ   )
rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   c                s>  d}d}d}g }g }g }dddddd	g}| j d
krt| j}| rd}	|jd   }
td}td}t	||

 }t	||

 }|s|r@y| \}}}W n   | \}}|}Y nX tdd|}tdd|}t| }yt|}t|}W n   d}	Y nX |	r.| d| d| }dt d| d|d  d| d	}t|  d}td| i }x|D ]}y&|d\}}}t|}t|}W n"   td|  d}	w~Y nX y"|| d |kr||| d< W n   ||g||< Y nX || d |k r~||| d< q~W |	rx| D ]z\}}|d\}|\}}yfddtD }W n$   td d  w>Y nX ||||g || q>W |r6ddd t|d d!  }t|d"d# |d$}d%d |D }|d&d' |d&d( |d&d) |d*d |D  nd}d+}n|
tkr|
}|
tkrbd}d,}ntt|
  }x*|D ]"  fd-dtD }|| qxW ddd t|d d.  }t|d/d# |d$}d0d |D }|d1d |D  nd}d2}|
}nd}d}
d}d3}nd}d}
t }t | d4|||
|||t!||d5S )6NZCACNA1A r   rF   zDDI rankZGenezDomain NamezDomain Full NamezPfam IDPOSTZgenez.^(?:chr)?([\dxymt]+)[:\-]([\d ,]+)\-([\d ,]+)$z&^(?:chr)?([\dxymt]+)[:\-]([\d ,]+)\S*$z[, ]r   :-z;/var/www/html/miniconda/bin/bedtools intersect -a stdin -b z$/static/files/range_dm.bed -wb <<<$'	z'|cut -f 2,3,7,8 2>/dev/null
zres=z error spliting  bedtools result #c                s    g | ]}t    t|  qS  )ddimap_ddi).0_)idmignrU    /var/www/html/ddi/myapp/views.py
<listcomp>   s    zhome_view.<locals>.<listcomp>z5 this domain is not included in the DDI result : gn= z, dm = FT)+rQ   c             S   s   | d S )NirU   )rY   rU   rU   r\   <lambda>       zhome_view.<locals>.<lambda>)keyreversec                s   g | ]  fd ddD qS )c                s   g | ]} | qS rU   rU   )rX   rY   )irU   r\   r]      s    z(home_view.<locals>.<listcomp>.<listcomp>)	r   r   r"   r#   r$   r%   rU   )rX   rU   )rd   r\   r]      s    r"   Z	Query_EndZQuery_StartzDomain_#c             S   s    g | ]}|d  dkr|d qS )NAr"   rU   )rX   rY   rU   rU   r\   r]      s    zG<div id="error"><span>This range does not contain any gene</span></div>z1<div id="error"><span>Gene not found</span></div>c                s   g | ]} t |  qS rU   )rW   )rX   rY   )dm_tmprU   r\   r]      s    rg   c             S   s   | d S )Nrf   rU   )rY   rU   rU   r\   r`      ra   c                s   g | ]  fd ddD qS )c                s   g | ]} | qS rU   rU   )rX   rY   )rd   rU   r\   r]      s    z(home_view.<locals>.<listcomp>.<listcomp>)r   r   r"   r#   r$   r%   rU   )rX   rU   )rd   r\   r]      s    c             S   s    g | ]}|d  dkr|d qS )re   ri   r"   rU   )rX   rY   rU   rU   r\   r]      s    zM<div id="error"><span>not a protein coding gene or invalid input</span></div>z0<div id="error"><span>Invalid Input</span></div>zt.html)form	igv_query
query_iteminput_errorvalidz_resultclinvar_genetable_header)"methodr   rO   is_validcleaned_datastripupperrecompilematchlowergroupssubchrmapintBASE_DIRospopenreadsplitprintitemsselected_fields_ddi_dictextendappendlistsortedinsert	hgnc_dict
ddi_gn_setrV   valuesr   set)requestrl   rn   ro   rp   Zz_result_sortedrq   rr   rk   Znormalrm   Z	reg_rangeZreg_range_single_positonZm_range1Zm_range2Zchr_Zpos_sZpos_ecmdresZ	query_tmpZiresZq_sZq_eZidm_rawvZidm_snZddi_resZreverse_tagtmprU   )rj   rZ   r[   r\   	home_viewO   s    






"







r   c             O   s<   x2t | D ]&}td| }t| d| d q
W tdS )Nzrequest.z  = z
**************
z<p> this is the test page <p>)direvalr   r   )r   argskwargsrd   r   rU   rU   r\   	test_view   s    r   )django.httpr   Zdjango.shortcutsr   formsr   r   rx   loggingpickleZ	log_levelpathdirnameabspath__file__r   joinfnloadopenr   rV   r   r   r~   rW   r   Zmap_zresultr   r   rU   rU   rU   r\   <module>   sv    