[2345e0]: / model / __pycache__ / SALMON.cpython-36.pyc

Download this file

98 lines (98 with data), 9.2 kB

3


E\@Ń@sxdZddlZddlZddlZddljZddljjZddl	jj
Zddlj
Z
ddlmZddlmZmZddlmZddlmZddlZddljZddlZddlZddlmZddlZddlm Z dd	l!m"Z"ddl#Z#ddl$Z$ddl%Z&ddl'Z'dd
l(m(Z(ddl)Z)ddl*Z*dZ+dZ,d
Z-d
Z.dZ/Gddädej0âZ1ddäZ2ddäZ3ddäZ4ddäZ5ddäZ6ddäZ7ddäZ8dd äZ9d!d"äZ:dS)#z
@author: Zhi Huang
ÚN)┌
DataLoader)┌datasets┌
transforms)┌Variable)┌Counter)┌RandomOverSampler)┌logrank_test)┌concordance_index)┌tqdmÚ9ÚÚÚcs$eZdZçfddäZddäZçZS)┌SALMONc	sótt|âjâd}d}|tkrRtjtj||âtjââ|_tjtj||âtjââ|_	|t
krÄtjtj||âtjââ|_tjtj||âtjââ|_	|tt
krýtjtjt|âtjââ|_tjtjt
|âtjââ|_tjtj|||âtjââ|_	|tt
tt
kÉrftt
}}tjtjt|âtjââ|_tjtjt
|âtjââ|_tjtj|||||âtjââ|_	|tt
tt
tkÉrţtt
t}}}tjtjt|âtjââ|_tjtjt
|âtjââ|_tjtj||||||âtjââ|_	|tt
tkÉr2tt
t}}}tjtj||||âtjââ|_	|tt
tkÉr×t}tjtjt|âtjââ|_tjtjt
|âtjââ|_tjtj||||âtjââ|_	dS)NÚÚ)┌superr┌__init__┌
len_of_RNAseq┌nnZ
Sequential┌LinearZSigmoid┌encoder1┌
classifier┌len_of_miRNAseq┌encoder2┌
len_of_cnv┌
len_of_tmb┌len_of_clinical)	┌self┌	input_dim┌dropout_rate┌	label_dimZhidden1Zhidden2Z
hidden_cnvZ
hidden_tmbZhidden_clinical)┌	__class__ę˙./home/zhihuan/Documents/SALMON/model/SALMON.pyr'sB
&""zSALMON.__init__cCsä|jd}d}|tkr.|j|â}|j|â}|}|tkrN|j|â}|j|â}|}|ttkr┤|j|ddůdtůfâ}|j|ddůtdůfâ}|jtj||fdââ}tj||fdâ}|tttt	kÉr>|j|ddůdtůfâ}|j|ddůtttůfâ}|jtj|||ddůttdůffdââ}tj||fdâ}|tttt	t
kÉr╠|j|ddůdtůfâ}|j|ddůtttůfâ}|jtj|||ddůttdůffdââ}tj||fdâ}|tt	t
kÉr˘|j|â}tjdgâ}|ttt
kÉrz|j|ddůdtůfâ}|j|ddůtttůfâ}|jtj|||ddůttdůffdââ}tj||fdâ}|||fS)Nr
r)┌shaperrrrr┌torch┌catrrr┌FloatTensor)r┌xrZx_dZcode1┌lbl_pred┌codeZcode2r#r#r$┌forwardQsD




,,
,zSALMON.forward)┌__name__┌
__module__┌__qualname__rr,┌
__classcell__r#r#)r"r$r&s*rcCs6|jdâdj|â}|j|âjâ}|jâ}|t|âS)Nr
)┌maxZtype_as┌eqZdouble┌sum┌len)┌output┌labelsZpreds┌correctr#r#r$┌accuracy}sr8cCsd|jâjâjdâ}tj|â}tjt|âgtdŹ}d|||k<|jjâjâ}tj	||kâ}|t|âS)Nr
)┌dtypeÚ    )
┌cpu┌numpy┌reshape┌np┌median┌zerosr4┌int┌datar3)┌hazardsr6┌hazardsdatar?┌hazards_dichotomizer7r#r#r$┌accuracy_coxâs
rFc
CsĄ|jâjâjdâ}tj|â}tjt|âgtdŹ}d|||k<|jjâjâjdâ}|dk}|jjâjâ}||}||}||}	||}
t	|||	|
dŹ}|j
}|S)Nr
)r9r)Zevent_observed_AZevent_observed_Br:r:)r;r<r=r>r?r@r4rArBrZp_value)
rCr6┌survtime_allrDr?rEZidxZT1ZT2ZE1ZE2Zresults┌pvalue_predr#r#r$┌cox_log_rankŹs


rIcCs░|jjâjâ}d}d}|jd}tj|tdŹ}xxt|âD]l}||dkr8xZt|âD]N}||||krR|d}||||krł|d}qR||||krR|d}qRWq8W||S)Ngr)r9r
gÓ?)rBr;r<r%r>Zasarray┌bool┌range)rCr6rGZconcordZtotalZN_test┌i┌jr#r#r$┌CIndexŁs

rNcCs.|jjâjâ}|jâjâjdâ}t|||âS)Nr
r:)rBr;r<r=r	)rCr6rGr#r#r$┌CIndex_lifelineşsrOcCs"tjtjtj||âdââ}|S)NÚ)r&Zsqrtr3┌abs)┌a┌b┌lossr#r#r$┌frobenius_norm_loss▓srUc)Csť||d}||d}||d}tj|â}	tj|â}
tj|â}t|	|ddddŹ}t|
|ddddŹ}
t||ddddŹ}d}d}d}d}d}|jâd}Éxét||
|âDÉ]p\}}}|}t|â}t|â}|rń|jâ}|jâ}|jâ}||â\}}}|dkÉr|}|}|}|}n8tj||gâ}tj||gâ}tj||gâ}tj||gâ}t	|â}t
j||gtd	Ź}x>t
|âD]2}x*t
|âD]}||||k|||f<ÉqxWÉqjWtj|â} t| â} |Ér└| jâ} |}!|jd
â}"tj|"â}#tj|"tjtj|#| dd
Źâ|!jââ}$||$jjâ}|d7}qĘW|jjâjâ}%t|j|â}&t|j||â}'t|j||â}(|dkÉrxtdj||âdj|(|'ââ|%||&|'|(|jjâjâjdâ|
|fS)Nr)┌e┌tr
TF)┌
batch_size┌num_workers┌
pin_memory┌shuffler)r9)┌dimz
[{:s}]		loss (nn):{:.4f}z c_index: {:.4f}, p-value: {:.3e}r:r:)r&r(┌
LongTensorr┌eval┌zipr┌cudar'r4r>r@rArKr=┌exp┌mean┌logr3┌floatrB┌itemr;r<rFrIrO┌print┌format))┌modelr┌whichsetrXr`┌verboser)rVrW┌X┌OS_event┌OS┌
dataloader┌	lblloader┌OSloader┌lbl_pred_all┌lbl_allrG┌
code_final┌loss_nn_sum┌iterrB┌lbl┌survtime┌graphr5r+r*┌current_batch_lenZ
R_matrix_testrLrMZtest_RZtest_ystatus┌theta┌	exp_theta┌loss_nn┌code_final_4_original_data┌acc_testrH┌c_indexr#r#r$┌testÂst



$


,
rÇcCs"t|âtjkr|jjjddâdS)NrgÓ?)┌typerrZweightrBZnormal_)┌mr#r#r$┌init_weights÷srâc	>	CsD|dd}	|dd}
|dd}|	jd}tj|	â}
tj|
â}tj|â}t|
|ddddŹ}t||ddddŹ}t||ddddŹ}dt_tjjd	âtj	d	ât
jd	ât||dd
Ź}|r┬|jâtj
j|jâ|ddŹ}i}g|d<g|d
<g}g}g}g}d}d}Éx*tt|ââDÉ]}|jâd}d}d}d} d}!d}"tjâÉx■t|||âDÉ]ý\}#}$}%|jâ|#}&|Érł|jâ}|&jâ}&|$jâ}$||&â\}'}(})|"dkÉr▓|)}|%}|$}|(} n8tj||)gâ}tj||$gâ}tj||%gâ}tj| |(gâ} t|%â}*tj|*|*gtdŹ}+x>t|*âD]2},x*t|*âD]}-|%|-|%|,k|+|,|-f<ÉqWÉqWtj|+â}.|Ér\|.jâ}.|$}/|)jdâ}0tj|0â}1tj|0tjtj |1|.ddŹâ|/j!ââ}2d}3x>|jâD]2}4|3dkÉr╠tj"|4âj â}3n|3tj"|4âj â}3Éq«W|2||3}5|dkÉrt#d|2||3fâ|!|2j$j%â}!|5j&â|j'â|"d7}"tjj(âÉqRW| j$j)âj*â}6|Ésf||dkÉrt+|j$|â}7t,|j$||â}8t-|j$||â}9|dj.|9â|9|kÉr«|9}|6}|dkÉrđt#dj/|!âdj/|9|8ââ|j.|8â|j.|9â|j.|!â|j.|7âd
}:t0|||:|||â\};}!}<}8}=}}}|d
j.|=âÉqW|||||||fS)N┌trainr)rVrWr
TF)rXrYrZr[iÜ)r!r)┌lrZweight_decayrÇ)r9)r\z
loss_nn: %.4f, L1: %.4fz
[Training]	 loss (nn):{:.4f}z c_index: {:.4f}, p-value: {:.3e}r:)1r%r&r(r]r┌cudnnZ
deterministicr`Zmanual_seed_allZmanual_seed┌randomZseedr┌optimZAdamZ
parametersr
rKrä┌gcZcollectr_Z	zero_gradr'r4r>r@rAr=rarbrcr3rdrQrfrBreZbackward┌step┌empty_cacher;r<rFrIrO┌appendrgrÇ)>r┌
num_epochsrXZ
learning_rater ┌lambda_1r`Zmeasurerjr)rVrWZnodes_inrkrlrmrnrorprhZ	optimizer┌c_index_list┌loss_nn_all┌
pvalue_all┌c_index_all┌
acc_train_allZc_index_best┌code_outputZepochrqrrrGrsrtrurBrvrwrxr5r+r*ryZR_matrix_trainrLrMZtrain_RZ
train_ystatusrzr{r|Zl1_reg┌WrTr}┌	acc_trainrHrriZcode_validationr~┌c_index_predr#r#r$rä˙s─






$


,








"rä);┌__doc__┌argparserçr&┌torch.nnrZtorch.backends.cudnnZbackendsrć┌torch.nn.functional┌
functional┌F┌torch.optimrł┌torch.utils.datar┌torchvisionrr┌torch.autogradr┌collectionsr┌pandas┌pd┌matplotlib.pyplot┌pyplot┌plt┌math┌imblearn.over_samplingr┌lifelines.statisticsrZlifelines.utilsr	┌tables┌csvr<r>┌jsonr
rë┌copyrrrrrZModulerr8rFrIrNrOrUrÇrârär#r#r#r$┌<module>sP


W
@