2016-08-09 5 views
0

Я пытаюсь создать рабочий процесс, где я беру каталог, содержащий список входных файлов, и запускает их через инструмент командной строки и выводит результаты в выходной каталог. Это должно быть очень просто, и я получил его на работу ... в основном.Пропуск файла 'FILE', который не существует или не может быть прочитан error

Проблема в том, что всякий раз, когда я даю ему ввод directory, я получаю сообщение об ошибке «Пропуск файла, который не существует или не может быть прочитан», хотя я на 100% уверен, что файлы существуют в моем каталоге ввода.

Однако, если я немного изменил код и сделаю так, чтобы я только подавал его на вход файл, а не каталог, сценарий работает так, как должен, и отлично завершается.

Мои входные файлы gzipped.

Вот сценарий:

import argparse 
import subprocess 
import os 

parser = argparse.ArgumentParser(description="A RNAseq pipeline for pair-end data") 
parser.add_argument("-i", "--inputDir", help="A input directory containing your gzipped fastq files", required=True) 
parser.add_argument("-o", "--outputDir", help="Output directory", required=True) 
parser.parse_args() 

### Define global variables 
args = parser.parse_args() 
inputDir = args.inputDir 
outputDir = args.outputDir 

### Grab all fastq files in input directory 
fastq_directory = os.listdir("{}".format(inputDir)) 
fastq_files = [] 
for file in fastq_directory: 
    fastq_files.append(file) 

### Run FastQC 
for file in fastq_files: 
    fastqc_command = "fastqc --extract -o {} {}".format(outputDir, file) 
    subprocess.check_output(['bash', '-c', fastqc_command]) 

Ошибка:

Skipping 'KO1_R1.fastq.gz' which didn't exist, or couldn't be read 
Skipping 'KO1_R2.fastq.gz' which didn't exist, or couldn't be read 
Skipping 'KO2_R1.fastq.gz' which didn't exist, or couldn't be read 
Skipping 'KO2_R2.fastq.gz' which didn't exist, or couldn't be read 
Skipping 'KO3_R1.fastq.gz' which didn't exist, or couldn't be read 
Skipping 'KO3_R2.fastq.gz' which didn't exist, or couldn't be read 
Skipping 'WT1_R1.fastq.gz' which didn't exist, or couldn't be read 
Skipping 'WT1_R2.fastq.gz' which didn't exist, or couldn't be read 
Skipping 'WT2_R1.fastq.gz' which didn't exist, or couldn't be read 
Skipping 'WT2_R2.fastq.gz' which didn't exist, or couldn't be read 
Skipping 'WT3_R1.fastq.gz' which didn't exist, or couldn't be read 
Skipping 'WT3_R2.fastq.gz' which didn't exist, or couldn't be read 

Любые рекомендации?

PS: Я знаю, что сценарий ужасен, но я учусь :). Хотя предложения определенно приветствуются!

+0

Является ли fastqc исполняемым в том же каталоге, что и файлы? Если нет, я подозреваю, что ошибка заключается в том, что вы указываете только имя файла (то есть 'KO1_R1.fastq.gz'), а не абсолютный путь (т.е.'/Documents/name/KO1_R1.fastq.gz') – nbryans

ответ

2

Попробуйте это изменить:

fastq_directory = os.listdir("{}".format(inputDir)) 
fastq_files = [] 
for file in fastq_directory: 
     fastq_files.append(file) 

Для этого:

fastq_directory = os.listdir("{}".format(inputDir)) 
fastq_files = [] 
for file in fastq_directory: 
     fastq_files.append(os.path.join(inputDir, file)) 

Это потому, что os.listdir() будет возвращать только имена файлов, а не полные пути.

+0

Это решило проблему , Спасибо! – System