o
    v*Hdv,                     @   sB  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i 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*i d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d
d
ddddddddddddddi ddddddd d d"d"d$d$d&d&d(d(d*d*d,d,d.d.d0d0d2d2d4d4d6d6d8d8d:d:i d<d<d=d
d>dd?dd@ddAddBddCddDddEddFddGddHd dId"dJd$dKd&dLd(i dMd*dNd,dOd.dPd0dQd2dRd4dSd6dTd8dUd:dVd<dWd
dXddYddZdd[dd\dd]di d^dd_dd`d
daddbddcdddddeddfddgddhddid6djd8dkd:dld<dmd6dnd8i dod6dpd8dqd:drd<dsd6dtd8dud6dvd8dwd:dxd<dyd6dzd8d{d6d|d8d}d:d~d<dd6d8d:d:d:d:d:d:dZi dd dddddddddddddddddddddddddd!dd#dd%dd'Zg dZd dddddddddd
Zdd Zdd ZdS )    )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   Z11   Z12   Z13   Z14   Z15   Z16   Z17   Z18   Z19   Z20   Z21   Z22   Z23   Z24   Z25   Z26Z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chr09Z01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chr0X)Zchr0YZchrMZmitoMmZchrmZMito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strand)
r6   r9   r4   r7   r8   r5   r;   r<   r=   r:   )
r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   c           "         s  d}d}d}d}g }g }g }g d}| j dkrVt| j}	|	 rMd}
|	jd   }td}td}t	||
 }t	||
 }|sL|rz	| \}}}W n   | \}}|}Y td	d|}td	d|}t| }zt|d }t|}W n   d
}
Y |
ra| d| d| }dt d| d|d  d| d	}t|  d}td| i }|D ]O}z|d\}}}t|}t|}W n   td|  d
}
Y qz|| d
 |kr||| d
< W n   ||g||< Y || d |k r	||| d< qt }| D ]O\}}|d\}|\}} d }||vr3|| nqzfddtD }W n   td d  Y q||||g || q|rdddt|d
 d  }t|dd |d }d!d |D }|d"d# |d"d$ |d"d% |d&d |D  ndt d'| d|d  d| d(	}t|  }|sd)}n|d}t| |d
 d} | d* | d+ }!d,|! d- d.}n}|tv rF|}|d"d% |tvrd
}d/}nftt | ! } | D ]  t"d0  } fd1dtD }|| || qdddt|d
 d2  }t|d3d |d }d4d |D }|d5d |D  nd
}d6}|}nd
}d}d}d7}nd
}d}t }	t#| d8|	||||||t||d9	S ):NZCACNA1A r   )r6   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.0rE   )idmignrF    /var/www/html/ddi/myapp/views.py
<listcomp>        zhome_view.<locals>.<listcomp>z5 this domain is not included in the DDI result : gn= z, dm = FT)+rA   c                 S      | d S )NirF   rE   rF   rF   rM   <lambda>       zhome_view.<locals>.<lambda>)keyreversec                       g | ]  fd ddD qS )c                       g | ]} | qS rF   rF   rI   irF   rM   rN          (home_view.<locals>.<listcomp>.<listcomp>)	r   r   r	   r   r   r   rF   rJ   rF   rZ   rM   rN          r	   ZQuery_Match_EndZQuery_Match_StartZChromc                 S       g | ]}|d  dkr|d qS )NAr	   rF   rI   rF   rF   rM   rN      rO   z0/static/files/range_cds_and_intron.bed -wb <<<$'z '|cut -f 2,3,5,6,7,8 2>/dev/nullzE<div id="error"><span>The query range is outside of gene</span></div>r`   r^   z[<div class="error"><span style="background: #ff8f6b;font-size:20px">The query range is the z region of gene z0, but outside of Pfam domain region</span></div>z1<div id="error"><span>Gene not found</span></div>r;   c                    s   g | ]} t |  qS rF   )rH   rI   )dm_tmprF   rM   rN      s    r_   c                 S   rR   )Nr_   rF   rS   rF   rF   rM   rT      rU   c                    rX   )c                    rY   rF   rF   rI   rZ   rF   rM   rN      r\   r]   )r   r   r^   r	   r   r   r   rF   ra   rF   rZ   rM   rN      rb   c                 S   rc   )r^   re   r	   rF   rI   rF   rF   rM   rN      rO   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input_error2validz_resultclinvar_genetable_header)$methodr   r?   is_validcleaned_datastripupperrecompilematchlowergroupssubchrmapintBASE_DIRospopenreadsplitprintsetitemsaddselected_fields_ddi_dictextendappendlistsortedinsert	hgnc_dict
ddi_gn_setrG   valuesrH   r   )"requestrh   rj   rk   rl   rm   Zz_result_sortedrn   ro   rg   Znormalri   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_rawZ	check_dupvZidm_snkZddi_resZreverse_tagtmpZregionrF   )rf   rK   rL   rM   	home_viewO   s   




"


"



r   c                 O   s8   t | D ]}td| }t| d| d qtdS )Nzrequest.z  = z
**************
z<p> this is the test page <p>)direvalr   r   )r   argskwargsr[   r   rF   rF   rM   	test_view
  s   r   )django.httpr   Zdjango.shortcutsr   formsr   r~   ru   loggingpickleZ	log_levelpathdirnameabspath__file__r}   joinfnloadopenr   rG   r   r   r{   rH   r   Zmap_zresultr   r   rF   rF   rF   rM   <module>   s0   J								









	
 <