2017-09-08 81 views
1

如果這是一個直截了當的問題,我很抱歉,我在文檔中找不到任何東西。許多輸入到一個輸出,在輸入文件中訪問通配符

目前我的工作流程看起來像這樣。我正在創建一些作爲此工作流程的一部分的輸入文件,並對它們進行總結。

有沒有辦法避免這個手動正則表達式步驟來解析文件名中的通配符?

我想過cross_idsconfig["chromosomes"]的「擴展」,但不確定如何保證一致的順序。

rule report: 
    output: 
     table="output/mendel_errors.txt" 
    input: 
     files=expand("output/{chrom}/{cross}.in", chrom=config["chromosomes"], cross=cross_ids) 
    params: 
     req="h_vmem=4G", 
    run: 
     df = pd.DataFrame(index=range(len(input.files), columns=["stat", "chrom", "cross"]) 

     for i, fn in enumerate(input.files): 
      # open fn/make calculations etc // stat = 
      # manual regex of filename to get chrom cross // chrom, cross = 
      df.loc[i] = stat, chrom, choss 

當這些信息必須在某個環境中時,這似乎有些尷尬。

回答

0

(通過約翰內斯科斯特在谷歌組)

要回答你的問題: 展開用途functools.product從標準庫。因此,你可以寫

from functools import product 

product(config["chromosomes"], cross_ids)