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

Download this file

92 lines (92 with data), 9.5 kB

B

Œ^TDã@svdZddlZddlZddlZddlmZddlmmZddl	mm
Zddlm
Z
ddlmZddlmZmZddlmZddlmZddlZddlmZddlZddlZddlmZddlZddlm Z dd	l!m"Z"ddl#Z#ddl$Z$ddl%Z&ddl'Z'dd
l(m(Z(ddl)Z)ddl*Z*Gdd„dej+ƒZ,d
d„Z-dd„Z.dd„Z/dd„Z0dd„Z1dd„Z2dd„Z3dd„Z4dd„Z5dS)z
@author: Zhi Huang
éN)Ú
DataLoader)ÚdatasetsÚ
transforms)ÚVariable)ÚCounter)ÚRandomOverSampler)Úlogrank_test)Úconcordance_index)Útqdmcs$eZdZ‡fdd„Zdd„Z‡ZS)ÚSALMONc
s:tt|ƒ ¡||_d}d}||dkr\t t ||¡t ¡¡|_t t ||¡t ¡¡|_	||dkrœt t ||¡t ¡¡|_
t t ||¡t ¡¡|_	||d|dkrt t |d|¡t ¡¡|_t t |d|¡t ¡¡|_
t t |||¡t ¡¡|_	||d|d|d|dkr¦|d|d}}t t |d|¡t ¡¡|_t t |d|¡t ¡¡|_
t t |||||¡t ¡¡|_	||d|d|d|d|dkrV|d|d|d}}}	t t |d|¡t ¡¡|_t t |d|¡t ¡¡|_
t t |||||	|¡t ¡¡|_	||d|d|dkr²|d|d|d}}}	t t |||	|¡t ¡¡|_	||d|d|dkr6|d}	t t |d|¡t ¡¡|_t t |d|¡t ¡¡|_
t t |||	|¡t ¡¡|_	dS)NééÚmRNAseqÚmiRNAseqÚCNBÚTMBÚclinical)ÚsuperrÚ__init__Úlength_of_dataÚnnZ
SequentialÚLinearZSigmoidÚencoder1Ú
classifierÚencoder2)
ÚselfÚ	input_dimÚdropout_raterÚ	label_dimZhidden1Zhidden2Z
hidden_cnvZ
hidden_tmbZhidden_clinical)Ú	__class__©ú./home/zhihuan/Documents/SALMON/model/SALMON.pyr"sD&&.""zSALMON.__init__cCsn|jd}d}||jdkr4| |¡}| |¡}|}||jdkrZ| |¡}| |¡}|}||jd|jdkrØ| |dd…d|jd…f¡}| |dd…|jdd…f¡}| t ||fd¡¡}t ||fd¡}||jd|jd|jd|jdkrž| |dd…d|jd…f¡}| |dd…|jd|jd|jd…f¡}| t |||dd…|jd|jdd…ffd¡¡}t ||fd¡}||jd|jd|jd|jd|jdkrn| |dd…d|jd…f¡}| |dd…|jd|jd|jd…f¡}| t |||dd…|jd|jdd…ffd¡¡}t ||fd¡}||jd|jd|jdkr¨| |¡}t dg¡}||jd|jd|jdkrd| |dd…d|jd…f¡}| |dd…|jd|jd|jd…f¡}| t |||dd…|jd|jdd…ffd¡¡}t ||fd¡}|||fS)Nérrrrrr)ÚshaperrrrÚtorchÚcatÚFloatTensor)rÚxrZx_dÚcode1Úlbl_predÚcodeÚcode2r r r!ÚforwardNsD




  . 088 08$
$ 08zSALMON.forward)Ú__name__Ú
__module__Ú__qualname__rr,Ú
__classcell__r r )rr!r!s,rcCs6| d¡d |¡}| |¡ ¡}| ¡}|t|ƒS)Nr")ÚmaxZtype_asÚeqÚdoubleÚsumÚlen)ÚoutputÚlabelsZpredsÚcorrectr r r!Úaccuracyzsr9cCsd| ¡ ¡ d¡}t |¡}tjt|ƒgtd}d|||k<|j ¡ ¡}t 	||k¡}|t|ƒS)Néÿÿÿÿ)Údtyper")
ÚcpuÚnumpyÚreshapeÚnpÚmedianÚzerosr5ÚintÚdatar4)Úhazardsr7Úhazardsdatar@Úhazards_dichotomizer8r r r!Úaccuracy_cox€s
rGc
Cs¤| ¡ ¡ d¡}t |¡}tjt|ƒgtd}d|||k<|j ¡ ¡ d¡}|dk}|j ¡ ¡}||}||}||}	||}
t	|||	|
d}|j
}|S)Nr:)r;r"r)Zevent_observed_AZevent_observed_B)r<r=r>r?r@rAr5rBrCrZp_value)
rDr7Úsurvtime_allrEr@rFÚidxZT1ZT2ZE1ZE2ÚresultsÚpvalue_predr r r!Úcox_log_rankŠs


rLcCs°|j ¡ ¡}d}d}|jd}tj|td}xxt|ƒD]l}||dkr8xZt|ƒD]N}||||krR|d}||||krˆ|d}qR||||krR|d}qRWq8W||S)Ngr)r;r"gà?)rCr<r=r#r?ÚasarrayÚboolÚrange)rDr7rHZconcordÚtotalZN_testÚiÚjr r r!ÚCIndexšs

rScCs.|j ¡ ¡}| ¡ ¡ d¡}t|||ƒS)Nr:)rCr<r=r>r	)rDr7rHr r r!ÚCIndex_lifelineªsrTcCs"t t t ||¡d¡¡}|S)Né)r$Úsqrtr4Úabs)ÚaÚbÚlossr r r!Úfrobenius_norm_loss¯sr[c*
Csœ||d}||d}||d}	t |¡}
t |¡}t |	¡}t|
|dddd}
t||dddd}t||dddd}d}d}d}d}d}| ¡d}x‚t|
||ƒD]p\}}}|}t|ƒ}t|ƒ}|rä| ¡}| ¡}| ¡}||ƒ\}}}|dkr|}|}|}|}n8t ||g¡}t ||g¡}t ||g¡}t ||g¡}t	|ƒ}t
j||gtd	}x>t
|ƒD]2}x*t
|ƒD]} || ||k||| f<qxWqjWt |¡}!t|!ƒ}!|rÀ|! ¡}!|}"| d
¡}#t |#¡}$t |#t tj|$|!dd¡|" ¡¡}%||%j ¡}|d7}q¨W|j ¡ ¡}&t|j|ƒ}'t|j||ƒ}(t|j||ƒ})|dkrxtd ||¡d
 |)|(¡ƒ|&||'|(|)|j ¡ ¡ d
¡||fS)Nr'ÚeÚtr"TF)Ú
batch_sizeÚnum_workersÚ
pin_memoryÚshuffler)r;r:)Údimz
[{:s}]		loss (nn):{:.4f}z c_index: {:.4f}, p-value: {:.3e})r$r&Ú
LongTensorrÚevalÚziprÚcudar%r5r?rArBrOr>ÚexpÚmeanÚlogr4ÚfloatrCÚitemr<r=rGrLrTÚprintÚformat)*ÚmodelrÚwhichsetrr^rfÚverboser'r\r]ÚXÚOS_eventÚOSÚ
dataloaderÚ	lblloaderÚOSloaderÚlbl_pred_allÚlbl_allrHÚ
code_finalÚloss_nn_sumÚiterrCÚlblÚsurvtimeÚgraphr6r*r)Úcurrent_batch_lenZ
R_matrix_testrQrRZtest_RZtest_ystatusÚthetaÚ	exp_thetaÚloss_nnÚcode_final_4_original_dataÚacc_testrKÚc_indexr r r!Útest³st



$


,
r†cCs"t|ƒtjkr|jj dd¡dS)Nrgà?)ÚtyperrÚweightrCZnormal_)Úmr r r!Úinit_weightsósrŠc
?CsH|dd}
|dd}|dd}|
jd}
t |
¡}t |¡}t |¡}t||dddd	}t||dddd	}t||dddd	}dt_tj d
¡t 	d
¡t
 d
¡t|
||dd}|rÄ| ¡tj
j| ¡|dd}i}g|d<g|d
<g}g}g}g}d}d}x,tt|ƒƒD]}| ¡d}d}d} d}!d}"d}#t ¡xþt|||ƒD]ì\}$}%}&| ¡|$}'|rŠ| ¡}|' ¡}'|% ¡}%||'ƒ\}(})}*|#dkr´|*}|&} |%}|)}!n8t ||*g¡}t ||%g¡}t | |&g¡} t |!|)g¡}!t|&ƒ}+tj|+|+gtd},x>t|+ƒD]2}-x*t|+ƒD]}.|&|.|&|-k|,|-|.f<qWqWt |,¡}/|r^|/ ¡}/|%}0|* d¡}1t |1¡}2t |1t tj |2|/dd¡|0 !¡¡}3d}4x>| ¡D]2}5|4dkrÎt "|5¡  ¡}4n|4t "|5¡  ¡}4q°W|3||4}6|	dkrt#d|3||4fƒ|"|3j$ %¡}"|6 &¡| '¡|#d7}#tj (¡qTW|!j$ )¡ *¡}7|sh||dkrt+|j$|ƒ}8t,|j$|| ƒ}9t-|j$|| ƒ}:|d .|:¡|:|kr°|:}|7}|	dkrÒt#d /|"¡d /|:|9¡ƒ| .|9¡| .|:¡| .|"¡| .|8¡d
};t0|||;||||	ƒ\}<}"}=}9}>}}}|d
 .|>¡qW|||||||fS)NÚtrainr'r\r]r"rTF)r^r_r`raiš)r)ÚlrZweight_decayr†)r;r:)rbz
loss_nn: %.4f, L1: %.4fz
[Training]	 loss (nn):{:.4f}z c_index: {:.4f}, p-value: {:.3e})1r#r$r&rcrÚcudnnZ
deterministicrfZmanual_seed_allZmanual_seedÚrandomÚseedrÚoptimZAdamÚ
parametersr
rOr‹ÚgcÚcollectreZ	zero_gradr%r5r?rArBr>rgrhrir4rjrWrlrCrkÚbackwardÚstepÚempty_cacher<r=rGrLrTÚappendrmr†)?rÚ
num_epochsr^Z
learning_raterÚlambda_1rrfÚmeasurerpr'r\r]Znodes_inrqrrrsrtrurvrnZ	optimizerÚc_index_listÚloss_nn_allÚ
pvalue_allÚc_index_allÚ
acc_train_allZc_index_bestÚcode_outputÚepochrwrxrHryrzr{rCr|r}r~r6r*r)rZR_matrix_trainrQrRZtrain_RZ
train_ystatusr€rr‚Zl1_regÚWrZrƒÚ	acc_trainrKr…roZcode_validationr„Úc_index_predr r r!r‹÷sÄ






$


,








$r‹)6Ú__doc__ÚargparserŽr$Útorch.nnrZtorch.backends.cudnnÚbackendsrÚ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’ÚcopyÚModulerr9rGrLrSrTr[r†rŠr‹r r r r!Ú<module>sFY
@