Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 分段故障_Python_Unix_Segmentation Fault_Fasta - Fatal编程技术网

Python 分段故障

Python 分段故障,python,unix,segmentation-fault,fasta,Python,Unix,Segmentation Fault,Fasta,我正在UNIX机器上使用python 2.4.4(旧机器,对此无能为力)。我对python/编程非常陌生,以前从未使用过UNIX机器。这就是我想做的: 从FASTA文件(蛋白质+核苷酸)提取单个序列到临时文本文件 将此临时文件交给名为“threader”的程序 将threader(名为tempresult.out)的输出附加到名为results.out的文件中 删除临时文件 删除tempresult.out文件 使用下一个FASTA序列重复 以下是我目前的代码: import os from i

我正在UNIX机器上使用python 2.4.4(旧机器,对此无能为力)。我对python/编程非常陌生,以前从未使用过UNIX机器。这就是我想做的:

  • 从FASTA文件(蛋白质+核苷酸)提取单个序列到临时文本文件
  • 将此临时文件交给名为“threader”的程序
  • 将threader(名为tempresult.out)的输出附加到名为results.out的文件中
  • 删除临时文件
  • 删除tempresult.out文件
  • 使用下一个FASTA序列重复
  • 以下是我目前的代码:

    import os
    from itertools import groupby
    
    input_file = open('controls.txt', 'r')
    output_file = open('results.out', 'a')
    
    def fasta_parser(fasta_name):
    input = fasta_name
    parse = (x[1] for x in groupby(input, lambda line: line[0] == ">"))
    for header in parse:
        header = header.next()[0:].strip()
        seq = "\n".join(s.strip() for s in parse.next())
        yield (header, '\n', seq)
    
    parsedfile = fasta_parser(input_file)
    
    mylist = list(parsedfile)
    
    index = 0
    
    while index < len(mylist): 
        temp_file = open('temp.txt', 'a+')
        temp_file.write(' '.join(mylist[index]))    
        os.system('threader' + ' temp.txt' + ' tempresult.out' + ' structures.txt')
        os.remove('temp.txt')
        f = open('tempresult.out', 'r')
        data = str(f.read())
        output_file.write(data)   
        os.remove('tempresult.out')
        index +=1
    
    
    output_file.close()
    temp_file.close()
    input_file.close()
    
    导入操作系统
    从itertools导入groupby
    input_file=open('controls.txt','r')
    输出文件=打开('results.out','a')
    def fasta_解析器(fasta_名称):
    输入=fasta\u名称
    parse=(groupby中x的x[1](输入,lambda行:行[0]==“>”)
    对于解析中的标头:
    header=header.next()[0:][.strip()
    seq=“\n”.join(parse.next()中s的s.strip())
    收益率(标题“\n”,序号)
    parsedfile=fasta_解析器(输入_文件)
    mylist=list(解析文件)
    索引=0
    而索引
    当我运行这个脚本时,我得到错误“Segmentation Fault”。从我收集到的信息来看,这与我扰乱记忆有关,我不应该扰乱(???)。我想这与临时文件有关,但我不知道该如何解决这个问题

    任何帮助都将不胜感激

    谢谢

    更新1: Threader在我多次给出相同的序列时工作正常,如下所示:

    import os
    
    
    input_file = open('control.txt', 'r')
    output_file = open('results.out', 'a')
    
    x=0
    
    while x<3:    
        os.system('threader' + ' control.txt' + ' tempresult.out' + ' structures.txt')
        f = open('tempresult.out', 'r')  
        data = str(f.read())
        output_file.write(data)    
        os.remove('result.out')
        x += 1
    
    
    output_file.close()
    input_file.close()
    
    导入操作系统
    input_file=open('control.txt','r')
    输出文件=打开('results.out','a')
    x=0
    
    欢迎来到SO!部分正确-分段冲突是由于程序试图访问不应该访问的内存造成的。但是您可能也有部分错误-错误可能出现在您没有向我们展示的代码中(即您的fasta_解析器例程)。请回答您的问题并添加fasta_parser的代码,以及.OT,但是您在tempfile.write(..)和parsedfile=(fasta…)周围有额外的参数(它们并不重要)。您不需要它们,但是@FrankSchmitt关于需要看到fasta_parser()完成的说法是正确的:)这是一个有点像弗兰肯斯坦黑客的工作,但它是有效的。任何改进它的建议都将非常棒!此外,我会使用“biopython”,但我使用的机器没有,我也没有安装它的权限。谢谢括号里的注释@FrankSchmitt doneMore问题:-)什么是
    threader
    ?如果您注释掉
    os.system()
    调用,是否仍会收到错误?欢迎使用SO!部分正确-分段冲突是由于程序试图访问不应该访问的内存造成的。但是您可能也有部分错误-错误可能出现在您没有向我们展示的代码中(即您的fasta_解析器例程)。请回答您的问题并添加fasta_parser的代码,以及.OT,但是您在tempfile.write(..)和parsedfile=(fasta…)周围有额外的参数(它们并不重要)。您不需要它们,但是@FrankSchmitt关于需要看到fasta_parser()完成的说法是正确的:)这是一个有点像弗兰肯斯坦黑客的工作,但它是有效的。任何改进它的建议都将非常棒!此外,我会使用“biopython”,但我使用的机器没有,我也没有安装它的权限。谢谢括号里的注释@FrankSchmitt doneMore问题:-)什么是
    threader
    ?如果注释掉
    os.system()
    调用,是否仍会出现错误?