【问题标题】:From spreadsheet to dictionary in ipython/python & more?从电子表格到 ipython/python 中的字典等等?
【发布时间】:2013-03-07 18:34:09
【问题描述】:

我希望能够从文件(电子表格或其他文件)中获取数据并创建一个字典,然后我可以在循环中对键进行迭代,并在我的命令中为每个键插入相应的值。对不起,如果这没有多大意义,我将在下面更详细地解释。

我有几个样本正在通过生物信息学管道运行,并且我正在尝试自动化该过程。其中一个步骤是将“读取组”信息添加到我的文件中,这是使用以下 shell 命令完成的:

picard-tools AddOrReplaceReadGroups I=input.bam O=output.bam RGID=IDXX RGLB=LBXX RGPL=PLXX RGPU=PUXX RGSM=SMXX VALIDATION_STRINGENCY=SILENT SORT_ORDER=坐标 CREATE_INDEX=true

对于每个样本 ID,都有不同的 RGID、RGLB、GRPL、RGPU 和 RGSM(以及不同的输入文件,但我已经知道如何调用该信息。)我想做的是有一个循环执行此命令用于每个样本 ID,并在命令中插入相应的 RGLB、GRPL、RGPU 和 RGSM。是否有捷径可寻?我一直在阅读,似乎字典可能是要走的路,但我不清楚如何生成字典并将独立值调用到我的命令中。

【问题讨论】:

  • 你能从电子表格中给我们一两行吗?

标签: python dictionary ipython


【解决方案1】:

这应该很容易,但是如何操作取决于输入文件的格式。你会想要这样的东西:

import subprocess # This is how we're going to call the commands.

samples = {} # Empty dict
with open('inputfile','r') as f:
    for line in f:
        # Extract sampleID, other things depending on file format...

        samples[sampleID] = [rgid, rglb, grpl, rgpu, rgsm] # Populate dict

for sampleID in samples:
    rgid, rglb, grpl, rgpu, rgsm = samples[sampleID]

    # Now you can run your commands using the subprocess module.
    # Remember to add a change based on sampleID if e.g. the IO files differ.
    subprocess.call(['picard-tools', 'AddOrReplaceReadGroups', 'I=input.bam', 
        'O=output.bam', 'RGID=%s' % rgid, 'RGLB=%s' % rglb, 'RGPL=%s' %rgpl,
        'RGPU=%s' % rgpu, 'RGSM=%s' % rgsm, 'VALIDATION_STRINGENCY=SILENT', 
        'SORT_ORDER=coordinate', 'CREATE_INDEX=true'])

【讨论】:

    猜你喜欢
    • 2011-06-12
    • 2023-04-08
    • 2017-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    相关资源
    最近更新 更多