o  ii@sddlmZddlZddlZddlZddlZddlmZddl m Z m Z m Z e ddd\Z Ze d\ZZejjeZgdZGd d d e Zd ddZd!ddZd"ddZdS)#) annotationsN) ConfigParser)StrEnum ensure_tupleoptional_importtqdm)namenibabel) analyze_datacreate_new_data_copycreate_new_dataset_json NNUNETModec@seZdZdZdZdZdZdS)r 2d 3d_fullresZ 3d_lowresZ3d_cascade_fullresN)__name__ __module__ __qualname__N_2D N_3D_FULLRES N_3D_LOWRESN_3D_CASCADE_FULLRESrrY/home/dell461/cl/sdc2/last_ska_mid/HISourceFinder-master-l/src/monai/apps/nnunet/utils.pyr s r datalist_jsondictdata_dirstrreturntuple[int, int]cCstjjddddtj||ddd}|dkr"|dnd}t d|d}t t |dD]!}tjjddddtj||d|d }t |t | }q6t d |||fS) z Analyze (training) data Args: datalist_json: original data list .json (required by most monai tutorials). data_dir: raw data directory. T image_onlyensure_channel_first simple_keystrainingrimageznum_input_channels: labelznum_foreground_classes: )monai transforms LoadImageospathjoindimsizeloggerinforangelenmaxint)rrimgnum_input_channelsnum_foreground_classes_isegrrrr &sr test_keyr7r5output_datafolderNonec Cs~d}dg|gi}ttd|gddgddgD]%\}}} |dur!qtd|d tr6ttt||ntt||D]} t||| t rQ||| d n||| } d |} |d 7}t j j d d d dt j|| } | jd}| } t|D](}t| |df|}dt|ddd}t|t j||| |dq}t||| t rd||| vrt j j d d d dt j|||| d} | jd}| tj} | jdkr| jdd kr| dn| } tt| |t j|| | dt||| t rt||| }| |d<|||n||||| | dtj|t j|ddd dddq>qdS)a Create and organize a new copy of data to meet the requirements of nnU-Net V2 Args: test_key: key for test data in the data list .json. datalist_json: original data list .json (required by most monai tutorials). data_dir: raw data directory. num_input_channels: number of input (image) channels. output_datafolder: output folder. rr#imagesTrimagesTslabelsTrlabelsTsNzconverting data section: z...r$Zcase_r&Troriginal_affine._i'.nii.gzr'r%)r.new_name)r$rFz datalist.jsonjsonFconfigfilepathfmt sort_keysindent ensure_ascii) listzipr0r1has_tqdmrr2r3 isinstancerr(r)r*r+r,r-metanumpynib Nifti1Imagersaveastypenpuint8ndimshapecopydeepcopyappendrexport_config_file)r;rrr7r<_indexZnew_datalist_json_keyZ_folderZ _label_folder_kZ orig_img_nameZimg_namendaaffine_lZoutimgindex_valrrrr ?sb ,     "" $ 0r modalityr8num_training_dataoutput_filepathcCsi}t|}i|d<t|D] }|||dt|<qi|d<d|dd<t|D]}|d|dd|d<q)||d<d|d <tj||d d d d ddS)a Create a new copy of dataset .json to meet the requirements of nnU-Net V2 Args: modality: image modality, could a string or a list of strings. num_foreground_classes: number of foreground classes. num_input_channels: number of input (image) channels. num_training_data: number of training data. output_filepath: output file path/name. channel_nameslabelsr backgroundr&class numTrainingrEZ file_endingrGTr%FrHN)rr2rrr`)rir8r7rjrkZ new_json_data_jrrrr s(     r )rrrrrr) r;rrrrrr7r5r<rrr=) rirr8r5r7r5rjr5rkrrr=) __future__rr]r+rTrYr( monai.bundler monai.utilsrrrrrQrUrCappsutils get_loggerrr0__all__r r r r rrrrs     J