U Phi@sddlmZddlZddlZddlZddlZddlmZddl m Z m Z m Z e ddd\Z Ze d\ZZejjeZdd d d gZGd d d e Zd dddddZdd ddddddd Zddddddddd ZdS)) annotationsN) ConfigParser)StrEnum ensure_tupleoptional_importtqdm)namenibabel analyze_datacreate_new_data_copycreate_new_dataset_json NNUNETModec@seZdZdZdZdZdZdS)r Z2dZ 3d_fullresZ 3d_lowresZ3d_cascade_fullresN)__name__ __module__ __qualname__N_2D N_3D_FULLRES N_3D_LOWRESN_3D_CASCADE_FULLRESrrL/home/dell461/cl/sdc2/HISourceFinder-master-l/src/monai/apps/nnunet/utils.pyr sdictstrztuple[int, int]) datalist_jsondata_dirreturncCstjjddddtj||ddd}|dkrD|dnd}t d|d}t t |dD]B}tjjddddtj||d|d }t |t | }qlt 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 &sr2None)test_keyrrr4output_datafolderrc Csd}dg|gi}ttd|gddgddgD]T\}}} |dkrBq,td|d trlttt||ntt||D]} t||| t r||| d n ||| } d |} |d 7}t j j d d d dt j|| } | jd}| } t|D]P}t| |df|}dt|ddd}t|t j||| |dqt||| t rd||| krt j j d d d dt j|||| d} | jd}| tj} | jdkr| jdd kr| dn| } tt| |t j|| | dt||| t rDt||| }| |d<|||n||||| | dtj|t j|ddd dddq|q,dS)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!rCz datalist.jsonjsonFconfigfilepathfmt sort_keysindent ensure_ascii) listzipr-r.has_tqdmrr/r0 isinstancerr%r&r'r(r)r*metanumpynib Nifti1Imagersaveastypenpuint8ndimshapecopydeepcopyappendrexport_config_file)r9rrr4r:_indexZnew_datalist_json_keyZ_folderZ _label_folder_kZ orig_img_nameZimg_namendaaffine_lZoutimgindex_valrrrr ?sb  .     "& (   )modalityr5r4num_training_dataoutput_filepathrcCsi}t|}i|d<t|D]}|||dt|<qi|d<d|dd<t|D]}|d|dd|d<qR||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. Z channel_nameslabelsr backgroundr#class numTrainingrBZ file_endingrDTr"FrEN)rr/rrr])rfr5r4rgrhZ new_json_data_jrrrr s(     ) __future__rrZr(rQrVr% monai.bundler monai.utilsrrrrrNrRr@appsutils get_loggerrr-__all__r r r r rrrr s    J