在我的 Snakemake 管道中,我试图检索正确的通配符。我研究过 wildcard_constraints 和这个帖子 https://stackoverflow.com/questions/66882849/snakemake-how-to-use-glob-wilcards-properly and 这个帖子 https://stackoverflow.com/questions/46856698/cant-get-this-regex-to-work-for-wildcard-constraints-in-snakemake,但是我无法找出确切的解决方案。
以下是 2 个数据集中的文件名示例。 1 个数据集包含配对的小鼠 RNAseq 读取文件,另一个数据集包含人类配对的 RNAseq 读取文件。
“Mus_musculus”数据集为“PRJNA362883_GSE93946_SRP097621”,文件名:
“SRR5195524_GSM2465521_KrasT_45649_NoDox_Mus_musculus_RNA-Seq_1.fastq.gz”
“SRR5195524_GSM2465521_KrasT_45649_NoDox_Mus_musculus_RNA-Seq_2.fastq.gz”
“Homo_sapiens”数据集为“PRJNA362883_GSE93946_SRP097621”,文件名:
“SRR7942395_GSM3406786_sAML_Control_1_Homo_sapiens_RNA-Seq_1.fastq.gz”
“SRR7942395_GSM3406786_sAML_Control_1_Homo_sapiens_RNA-Seq_2.fastq.gz”
我希望 glob_wildcards 吐出以下通配符
> ['PRJNA362883_GSE93946_SRP097621', 'PRJNA362883_GSE93946_SRP097621',
> 'PRJNA493818_GSE120639_SRP162872', 'PRJNA493818_GSE120639_SRP162872']
> ['SRR5195524_GSM2465521_KrasT_45649_NoDox',
> 'SRR5195524_GSM2465521_KrasT_45649_NoDox',
> 'SRR7942395_GSM3406786_sAML_Control_1',
> 'SRR7942395_GSM3406786_sAML_Control_1'] ['Mus_musculus', 'Mus_musculus',
> 'Homo_sapiens', 'Homo_sapiens'] ['1', '2', '1', '2']
我尝试过以下代码:
> import glob import os
>
> DATASET,SAMPLE,SPECIES,FRR,
> =glob_wildcards(config["project_path"]+"resources/raw_datasets/{dataset}/{sample}_{species}_RNA-Seq_{frr}.fastq.gz")
> print(DATASET,SAMPLE,SPECIES,FRR)
但是,我得到了这个作为输出。许多下划线弄乱了 glob_wildcards
> ['PRJNA362883_GSE93946_SRP097621', 'PRJNA362883_GSE93946_SRP097621',
> 'PRJNA493818_GSE120639_SRP162872', 'PRJNA493818_GSE120639_SRP162872']
> ['SRR5195524_GSM2465521_KrasT_45649_NoDox_Mus',
> 'SRR5195524_GSM2465521_KrasT_45649_NoDox_Mus',
> 'SRR7942395_GSM3406786_sAML_Control_1_Homo',
> 'SRR7942395_GSM3406786_sAML_Control_1_Homo'] ['musculus', 'musculus',
> 'sapiens', 'sapiens'] ['1', '2', '1', '2']
例如,我尝试了这个,但输出保持不变:
通配符约束:物种 = '!(sapiens)'
谁能建议正确的代码来获得想要的通配符?提前致谢!