o $ i|'@s ddlmZddlZddlZddlZddlZddlmZddlm Z ddl m Z e d\Z Z gdZdZd Zd Zd Zd Ze Zd d diedeedd dddediddddiidd Zdgddddddd d!d"d#d$d%d&d$d%d'd$d%d(d$d)d*gd+d,d-d.d/d0d1d2d3dd4d5d6id"d7d8d9d:d;d8d9d<gd+d=d>d?d@dAidBgdCd)dDdAdEdFdGdHdIgdJZdKdLdMdNdOdMdPdQdMdRZedSdTdUdd9dVdWdXdYdZd[d\d9d9d]d^d9d_ dWdXdYdZd[d3d`dWdXdYdZd[d\d3d9dadb dcZddeiZdedfiZdvdmdnZdwdtduZdS)x) annotationsN)Any)get_config_values)optional_importyaml) ID_REF_KEY ID_SEP_KEYEXPR_KEY MACRO_KEY MERGE_KEYDEFAULT_MLFLOW_SETTINGSDEFAULT_EXP_MGMT_SETTINGS@z::$%+z0.0.1zInitial versionMONAIPytorchaNumpyz"Describe what the network predictszQA longer description of what the network does, use context, inputs, outputs, etc.zYour Name HerezCopyright (c) Your Name Here)inputsoutputs) version changelogZ monai_versionZpytorch_version numpy_versionrequired_packages_versiontask descriptionauthors copyrightZnetwork_data_formatz $import globz?$torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')z"$@bundle_root + '/models/model.pt'z/workspace/dataz2$list(sorted(glob.glob(@dataset_dir + '/*.jpeg')))z???)_target_ spatial_dimsz$@network_def.to(@device)Compose LoadImagedimage)r!keysEnsureChannelFirstdScaleIntensityd EnsureTypedz@device)r!r&device)r! transformsDatasetz"$[{'image': i} for i in @datalist]z@preprocessing)r!data transform DataLoaderz@datasetF)r!dataset batch_sizeshuffle num_workersr!Z SimpleInferer ActivationsdpredT)r!r&softmax AsDiscreted)r!r&argmaxZCheckpointLoaderz$not os.path.exists(@ckpt_path)z @ckpt_pathmodelz@network)r! _disabled_ load_path load_dictZSupervisedEvaluatorz @dataloaderz@infererz@postprocessingz @handlers)r!r*Zval_data_loadernetworkinfererpostprocessingZ val_handlersz$@evaluator.run())Zimportsr* ckpt_path dataset_dirdatalistZ network_defr> preprocessingr1 dataloaderr?r@handlers evaluatorZ evaluatingz train#trainerztrain#handlers)idrFzvalidate#evaluatorzvalidate#handlersrGrF)trainer validatorrGz$@bundle_root + '/eval'z1$monai.utils.path_to_uri(@output_dir) + '/mlruns'Zmonai_experimentz}$torch.distributed.is_available() and torch.distributed.is_initialized() and torch.distributed.get_rank() > 0Z MLFlowHandlerz @is_not_rank0z @tracking_uriz@experiment_namez @run_namez@save_execute_config train_lossz1$monai.handlers.from_engine(['loss'], first=True)) r!r; tracking_uriexperiment_namerun_name artifacts iteration_logZ epoch_logtag_nameZoutput_transformclose_on_complete)r!r;rLrMrNrP)r!r;rLrMrNrOrPrR) output_dirrLrMrNZsave_execute_configZ is_not_rank0rIrJrG)Z handlers_idconfigsmlflowZoptional_packages_versionr bundle_pathstr config_names load_kw_argsrreturncOsddlm}|}tj|std|dtj|r[g}|jddtj|ddi||D]}tj|d|}tj|sItd|d| |q1|j dd|i||Stj tj |\}} t |d } | } |d } | | vr|d } n |d } |d } t| | }|j|d|D]@}| |}|| vrtd|d| |}i}|drtj|fi|}n|drtj|fi|}|j |dq|S)a Load the metadata and nominated configuration files from a MONAI bundle without loading the network itself. This function will load the information from the bundle, which can be a directory or a zip file containing a directory or a Torchscript bundle, and return the parser object with the information. This saves having to load the model if only the information is wanted, and can work on any sort of bundle format. Args: bundle_path: path to the bundle directory or zip file config_names: names of configuration files with extensions to load, should not be full paths but just name+ext load_kw_args: keyword arguments to pass to the ConfigParser object when loading Returns: ConfigParser object containing the parsed information r) ConfigParserz#Cannot find bundle file/directory ''frTz metadata.jsonzCannot find config file 'rz/configs/metadata.jsonz /configs/z/extra/metadata.jsonz/extra/)r]json)rZymlN)monai.bundle.config_parserr[ospathexists ValueErrorisdirZ read_metajoinappend read_configsplitextbasenamezipfileZipFilenamelistr_loadsreadlowerendswithr safe_load)rVrXrYr[parserZ conf_datacnameZcpathname_archive all_filesZ zip_meta_nameprefixZ meta_jsonZ full_cnameZardatacdatar`r`T/home/dell461/cl/sdc2/last_ska_mid/HISourceFinder-master-l/src/monai/bundle/utils.pyload_bundle_configsH      $       r}args dict | AnykvNonec Cs|tr^ |dd}||vrLt|tr%t||tr%|||dSt|tr:t||tr:|||dSttd|dt|d|dt d|d|d |||<dS|||<dS) zQ Update the `args` dict-like object with the key/value pair `k` and `v`. r0Nz%config must be dict or list for key `z `, but got z: .zCan't merge entry ['z'], 'z*' is not in target dict - copying instead.) startswithr isinstancedictupdatelistextendretypewarningswarn)r~rrrHr`r`r|merge_kvs  $  r)rVrWrXrWrYrrZr)r~rrrWrrrZr) __future__rr_rbrrltypingrmonai.config.deviceconfigr monai.utilsrrrw__all__rrr r r Z _conf_valuesrWsplitZDEFAULT_METADATAZDEFAULT_INFERENCEZDEFAULT_HANDLERS_IDr r ZDEPRECATED_ID_MAPPINGr}rr`r`r`r|s             6 4 K