求助解析Python处理BED文件代码中的split分支逻辑
代码分支逻辑解析
这段代码用于遍历目标文件夹(folder)下所有后缀为.regions.bed的文件,根据文件名的下划线拆分结构,分两种情况生成run和sample两个标识字段,具体逻辑如下:
核心前提:文件名拆分
代码里的file.split('_')会把文件名按下划线_拆分成字符串列表,比如文件名SampleA_Group_AA_Run001.regions.bed拆分后得到:
['SampleA', 'Group', 'AA', 'Run001.regions.bed']
列表索引从0开始,所以第3个元素(索引2)是"AA",第4个元素(索引3)是"Run001.regions.bed"。
分支1:当文件名拆分后的第3个元素是"AA"时
对应代码片段:
if file.split('_')[2] == "AA": r = "GX_" + file.split('_')[3] run = r[0:len(r)-12] sample = file.split('_')[0] + "_" + file.split('_')[1]
- 生成
r:取拆分后的第4个元素(索引3),前面拼接"GX_",比如示例文件名会得到"GX_Run001.regions.bed" - 生成
run:移除r的最后12个字符——因为.regions.bed正好是12个字符,这一步本质是去掉文件后缀,最终得到"GX_Run001" - 生成
sample:把拆分后的前两个元素用下划线拼接,示例中得到"SampleA_Group"
分支2:当文件名拆分后的第3个元素不是"AA"时
对应代码片段:
else: r = "AA_" + file.split('_')[2] run = r[0:len(r)-12] sample = file.split('_')[0]
- 生成
r:取拆分后的第3个元素(索引2),前面拼接"AA_",比如文件名SampleB_TypeX_Run002.regions.bed会得到"AA_Run002.regions.bed" - 生成
run:同样移除r的最后12个字符(去掉后缀),得到"AA_Run002" - 生成
sample:直接取拆分后的第一个元素,示例中得到"SampleB"
完整代码块
out_coverage = pd.DataFrame() for subdir, dirs, files in os.walk(folder): for file in files: if file.endswith(".regions.bed"): #file = f[0:len(f)-12] if file.split('_')[2] == "AA": r = "GX_" + file.split('_')[3] run = r[0:len(r)-12] sample = file.split('_')[0] + "_" + file.split('_')[1] else: r = "AA_" + file.split('_')[2] run = r[0:len(r)-12] sample = file.split('_')[0]
内容的提问来源于stack exchange,提问作者nermze
相关产品推荐
相关产品推荐

