os.path.join使用list

本文探讨了Python中如何使用split方法将字符串分解为列表,然后利用os.path.join将列表元素组合成路径。示例中展示了错误的直接调用方式以及正确使用星号展开的方法,最终形成一个合法的路径字符串。
l1 = 'a,b,c,d,e'

l2 = l1.split(',') # l2 = ['a', 'b', 'c', 'd', 'e']

path = os.path.join(l2) #报错

path = os.path.join(*l2) # 输出: 'a\\b\\c\\d\\e'

 

else: print('Normal') # process in parallel if parallel: print('Reshape reconstructed volumes in parallel') max_processes = 10 list_of_arguments = [] reconstructed_dir = os.path.join(os.path.abspath(args.output_dir), 'reconstructed_niftis') reshaped_dir = os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_reshaped') if os.path.exists(reshaped_dir) == False: os.makedirs(reshaped_dir) for plane in planes: for sub in full_subject_list: list_of_arguments.append((sub, plane, reconstructed_dir, reshaped_dir)) # spawn up to 10 processes at a time with multiprocessing.Pool(processes=max_processes) as pool: pool.starmap(reshape_reconstructed_volumes.reshape_t1_t2_flair, list_of_arguments) # run in series else: reshape_reconstructed_volumes.iterate_for_each_plane( subject_list=full_subject_list, data_dir=os.path.abspath(args.output_dir), out_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_reshaped') ) print('Finished reshaping reconstructed volumes') print('Coregister reshaped reconstructed volumes') # coregister reshaped reconstructed volumes if ensemble: print('Ensemble') coregister_reshaped_reconstructed_volumes_ensemble.coregister_all_folds( subs_file=os.path.abspath(args.subs_file), data_dir=os.path.abspath(args.output_dir), out_dir=os.path.abspath(args.output_dir), n_splits=12 ) else: print('Normal') coregister_reshaped_reconstructed_volumes.coregister_all_subjects( subjects_list=full_subject_list, data_dir=os.path.abspath(args.output_dir), output_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_reshaped_coregistered') ) print('Finished coregistering reshaped reconstructed volumes') print('Filtering volumes using wavelet transform') if ensemble: if parallel: print('Ensemble') wavelet_transform_filter_ensemble.filter_in_parallel( subs_file=os.path.abspath(args.subs_file), path=os.path.abspath(args.output_dir), output_dir=os.path.abspath(args.output_dir), n_splits=12, decNum=8, wname='db25', damp_sigma=8 ) else: wavelet_transform_filter_ensemble.filter_in_series( subs_file=os.path.abspath(args.subs_file), path=os.path.abspath(args.output_dir), output_dir=os.path.abspath(args.output_dir), n_splits=12, decNum=8, wname='db25', damp_sigma=8 ) else: print('Normal') if parallel: wavelet_transform_filter.filter_in_parallel( subjects=full_subject_list, path=os.path.abspath(args.output_dir), output_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_reshaped_coregistered_filtered'), decNum=8, wname='db25', damp_sigma=8 ) else: wavelet_transform_filter.filter_in_series( subjects=full_subject_list, path=os.path.abspath(args.output_dir), output_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_reshaped_coregistered_filtered'), decNum=8, wname='db25', damp_sigma=8 ) print('Finished filtering volumes using wavelet transform') print('Coregistering filtered outputs') if ensemble: coregister_filtered_outputs_ensemble.coregister_all_subjects( subs_file=os.path.abspath(args.subs_file), ensemble_output_dir=os.path.abspath(args.output_dir), n_splits=12 ) print('Finished coregistering filtered outputs') # average the outputs across each fold to increase signal-to-noise ratio if ensemble: print('Averaging filtered volumes') if parallel: print('Averaging in parallel') averaging_filtered_ensemble.iterate_in_parallel( subs_file=os.path.abspath(args.subs_file), input_dir=os.path.abspath(args.output_dir), output_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_filtered_averaged_across_folds'), n_splits=12 ) else: print('Averaging in series') averaging_filtered_ensemble.iterate_for_each_sub( subs_file=os.path.abspath(args.subs_file), input_dir=os.path.abspath(args.output_dir), output_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_filtered_averaged_across_folds'), n_splits=12 ) print('Finished averaging filtered volumes') print('Unpadding volumes to original shape') if ensemble: if parallel: unpad.unpad_parallel( subjects=full_subject_list, padded_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_filtered_averaged_across_folds'), orig_dir=os.path.abspath(args.data), output_dir=os.path.join(os.path.abspath(args.output_dir), 'LowGAN_outputs') ) else: unpad.unpad_series( subjects=full_subject_list, padded_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_filtered_averaged_across_folds'), orig_dir=os.path.abspath(args.data), output_dir=os.path.join(os.path.abspath(args.output_dir), 'LowGAN_outputs') ) else: if parallel: unpad.unpad_parallel( subjects=full_subject_list, padded_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_reshaped_coregistered_filtered'), orig_dir=os.path.abspath(args.data), output_dir=os.path.join(os.path.abspath(args.output_dir), 'LowGAN_outputs') ) else: unpad.unpad_series( subjects=full_subject_list, padded_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_reshaped_coregistered_filtered'), orig_dir=os.path.abspath(args.data), output_dir=os.path.join(os.path.abspath(args.output_dir), 'LowGAN_outputs') ) print('Finished unpadding volumes to original shape') if intermediates: print('Moving intermediate outputs to intermediates directory') if os.path.exists(os.path.join(os.path.abspath(args.output_dir), 'intermediates')) == False: os.makedirs(os.path.join(os.path.abspath(args.output_dir), 'intermediates')) # we will move only the specific directories that were generated by LowGAN to the intermediates directory # to make sure that we don't mess with any other files that may be in the output directory planes = ['axial', 'coronal', 'sagittal'] for plane in planes: os.system(f'mv {os.path.join(os.path.abspath(args.output_dir), f"dataset_{plane}_pix2pix")} {os.path.join(os.path.abspath(args.output_dir), "intermediates")}') if ensemble: folds = [f'fold_{fold}' for fold in range(0, 12)] for fold in folds: os.system(f'mv {os.path.join(os.path.abspath(args.output_dir), fold)} {os.path.join(os.path.abspath(args.output_dir), "intermediates")}') os.system(f'mv {os.path.join(os.path.abspath(args.output_dir), "recon_niftis_filtered_averaged_across_folds")} {os.path.join(os.path.abspath(args.output_dir), "intermediates")}') else: os.system(f'mv {os.path.join(os.path.abspath(args.output_dir), "results_LowGAN")} {os.path.join(os.path.abspath(args.output_dir), "intermediates")}') os.system(f'mv {os.path.join(os.path.abspath(args.output_dir), "reconstructed_niftis")} {os.path.join(os.path.abspath(args.output_dir), "intermediates")}') os.system(f'mv {os.path.join(os.path.abspath(args.output_dir), "recon_niftis_reshaped")} {os.path.join(os.path.abspath(args.output_dir), "intermediates")}') os.system(f'mv {os.path.join(os.path.abspath(args.output_dir), "recon_niftis_reshaped_coregistered")} {os.path.join(os.path.abspath(args.output_dir), "intermediates")}') os.system(f'mv {os.path.join(os.path.abspath(args.output_dir), "recon_niftis_reshaped_coregistered_filtered")} {os.path.join(os.path.abspath(args.output_dir), "intermediates")}') print('Finished moving intermediate outputs to intermediates directory')改为中文注释
最新发布
07-08
以下是将你提供的完整代码片段中的英文注释**完整翻译为中文**的版本,同时保留原有逻辑结构和功能不变: ```python else: print('使用普通模型') # 并行处理 if parallel: print('并行调整重建图像尺寸') max_processes = 10 list_of_arguments = [] reconstructed_dir = os.path.join(os.path.abspath(args.output_dir), 'reconstructed_niftis') reshaped_dir = os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_reshaped') if not os.path.exists(reshaped_dir): os.makedirs(reshaped_dir) for plane in planes: for sub in full_subject_list: list_of_arguments.append((sub, plane, reconstructed_dir, reshaped_dir)) # 启动最多 10 个进程并发执行 with multiprocessing.Pool(processes=max_processes) as pool: pool.starmap(reshape_reconstructed_volumes.reshape_t1_t2_flair, list_of_arguments) # 串行运行 else: reshape_reconstructed_volumes.iterate_for_each_plane( subject_list=full_subject_list, data_dir=os.path.abspath(args.output_dir), out_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_reshaped') ) print('已完成重建图像的尺寸调整') print('配准调整后的重建图像') # 配准调整后的重建图像 if ensemble: print('使用集成模型') coregister_reshaped_reconstructed_volumes_ensemble.coregister_all_folds( subs_file=os.path.abspath(args.subs_file), data_dir=os.path.abspath(args.output_dir), out_dir=os.path.abspath(args.output_dir), n_splits=12 ) else: print('使用普通模型') coregister_reshaped_reconstructed_volumes.coregister_all_subjects( subjects_list=full_subject_list, data_dir=os.path.abspath(args.output_dir), output_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_reshaped_coregistered') ) print('已完成对调整后图像的配准') print('使用小波变换滤波图像') if ensemble: if parallel: print('使用集成模型进行并行滤波') wavelet_transform_filter_ensemble.filter_in_parallel( subs_file=os.path.abspath(args.subs_file), path=os.path.abspath(args.output_dir), output_dir=os.path.abspath(args.output_dir), n_splits=12, decNum=8, wname='db25', damp_sigma=8 ) else: wavelet_transform_filter_ensemble.filter_in_series( subs_file=os.path.abspath(args.subs_file), path=os.path.abspath(args.output_dir), output_dir=os.path.abspath(args.output_dir), n_splits=12, decNum=8, wname='db25', damp_sigma=8 ) else: print('使用普通模型') if parallel: wavelet_transform_filter.filter_in_parallel( subjects=full_subject_list, path=os.path.abspath(args.output_dir), output_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_reshaped_coregistered_filtered'), decNum=8, wname='db25', damp_sigma=8 ) else: wavelet_transform_filter.filter_in_series( subjects=full_subject_list, path=os.path.abspath(args.output_dir), output_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_reshaped_coregistered_filtered'), decNum=8, wname='db25', damp_sigma=8 ) print('已完成小波变换滤波') print('配准滤波后的输出图像') if ensemble: coregister_filtered_outputs_ensemble.coregister_all_subjects( subs_file=os.path.abspath(args.subs_file), ensemble_output_dir=os.path.abspath(args.output_dir), n_splits=12 ) print('已完成对滤波后图像的配准') # 对各折的结果取平均以提高信噪比 if ensemble: print('对滤波结果进行平均') if parallel: print('并行平均') averaging_filtered_ensemble.iterate_in_parallel( subs_file=os.path.abspath(args.subs_file), input_dir=os.path.abspath(args.output_dir), output_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_filtered_averaged_across_folds'), n_splits=12 ) else: print('串行平均') averaging_filtered_ensemble.iterate_for_each_sub( subs_file=os.path.abspath(args.subs_file), input_dir=os.path.abspath(args.output_dir), output_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_filtered_averaged_across_folds'), n_splits=12 ) print('已完成滤波结果的平均') print('将图像恢复到原始尺寸') if ensemble: if parallel: unpad.unpad_parallel( subjects=full_subject_list, padded_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_filtered_averaged_across_folds'), orig_dir=os.path.abspath(args.data), output_dir=os.path.join(os.path.abspath(args.output_dir), 'LowGAN_outputs') ) else: unpad.unpad_series( subjects=full_subject_list, padded_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_filtered_averaged_across_folds'), orig_dir=os.path.abspath(args.data), output_dir=os.path.join(os.path.abspath(args.output_dir), 'LowGAN_outputs') ) else: if parallel: unpad.unpad_parallel( subjects=full_subject_list, padded_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_reshaped_coregistered_filtered'), orig_dir=os.path.abspath(args.data), output_dir=os.path.join(os.path.abspath(args.output_dir), 'LowGAN_outputs') ) else: unpad.unpad_series( subjects=full_subject_list, padded_dir=os.path.join(os.path.abspath(args.output_dir), 'recon_niftis_reshaped_coregistered_filtered'), orig_dir=os.path.abspath(args.data), output_dir=os.path.join(os.path.abspath(args.output_dir), 'LowGAN_outputs') ) print('已完成图像尺寸恢复至原始形状') if intermediates: print('移动中间输出文件到 intermediate 目录') if not os.path.exists(os.path.join(os.path.abspath(args.output_dir), 'intermediates')): os.makedirs(os.path.join(os.path.abspath(args.output_dir), 'intermediates')) planes = ['axial', 'coronal', 'sagittal'] for plane in planes: os.system(f'mv {os.path.join(os.path.abspath(args.output_dir), f"dataset_{plane}_pix2pix")} {os.path.join(os.path.abspath(args.output_dir), "intermediates")}') if ensemble: folds = [f'fold_{fold}' for fold in range(0, 12)] for fold in folds: os.system(f'mv {os.path.join(os.path.abspath(args.output_dir), fold)} {os.path.join(os.path.abspath(args.output_dir), "intermediates")}') os.system(f'mv {os.path.join(os.path.abspath(args.output_dir), "recon_niftis_filtered_averaged_across_folds")} {os.path.join(os.path.abspath(args.output_dir), "intermediates")}') else: os.system(f'mv {os.path.join(os.path.abspath(args.output_dir), "results_LowGAN")} {os.path.join(os.path.abspath(args.output_dir), "intermediates")}') os.system(f'mv {os.path.join(os.path.abspath(args.output_dir), "reconstructed_niftis")} {os.path.join(os.path.abspath(args.output_dir), "intermediates")}') os.system(f'mv {os.path.join(os.path.abspath(args.output_dir), "recon_niftis_reshaped")} {os.path.join(os.path.abspath(args.output_dir), "intermediates")}') os.system(f'mv {os.path.join(os.path.abspath(args.output_dir), "recon_niftis_reshaped_coregistered")} {os.path.join(os.path.abspath(args.output_dir), "intermediates")}') os.system(f'mv {os.path.join(os.path.abspath(args.output_dir), "recon_niftis_reshaped_coregistered_filtered")} {os.path.join(os.path.abspath(args.output_dir), "intermediates")}') print('已完成中间文件的移动') ``` --- ### 解释: - **`multiprocessing.Pool()`**:用于创建进程池,实现多进程任务并行。 - **`starmap()` vs `map()`**:`starmap` 支持多个参数元组传入,而 `map` 只能处理一个可迭代对象。 - **路径操作 `os.path.abspath()`、`os.makedirs()`**:确保路径统一且自动创建缺失目录。 - **`os.system("mv ...")`**:调用系统命令来移动文件/目录(注意跨平台兼容性)。 - 整体流程包括数据集生成、推理、重建、形状调整、配准、滤波、去填充、中间文件管理等。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值