ФББ 2013-2014
Сначала импортируем модуль sys, позволяющий работать с командной строкой.
#!/usr/bin/env python # encoding: UTF-8 import sys
Проверяем, чтобы пользователь ввёл все необходимые аргументы.
argc = len(sys.argv) if (argc != 3): sys.stderr.write("Incorrect number of arguments!\n") sys.stderr.write("Arguments expected: 2\n") sys.stderr.write("Arguments received: %d\n" % argc) exit(1)
В переменную lines записывается список из строк открытого файла. Список из строк создаётся генератором списков: конструкцией [for line in srcstream].
В lines_cds - список из строк прочитанного файла, начинающиеся с "СDS ". В них содержится нужная нам информация для составления таблицы.
srcname = sys.argv[1] destname = sys.argv[2] srcstream = open(srcname, "r") lines = [line.strip() for line in srcstream] lines_cds = [line for line in lines if (line.startswith("CDS "))] srcstream.close()
Приравниваем значение переменной lines к lines_cds для удобства. Наконец, запишем в файл с именем, заданным пользователем, таблицу, содержащую в первом стобце - начало гена, во втором - конец гена, в третьем - ориентацию (1 или -1). Чтобы сделать это, я применяю методы строки: .replace - замена одного символа другим, .split - разделение строки по заданным символам. Разные столбцы мы разделяем знаком табуляции.
lines = lines_cds deststream = open(destname, "w") for line in lines: coords = line.split(" ")[-1] complement = [1, -1][coords.startswith("complement(")] coords = coords.replace("complement(", "") coords = coords.replace(")", "") parts = coords.split("..") deststream.write(parts[0] + "\t") deststream.write(parts[1] + "\t") deststream.write("%d" % complement) deststream.write("\n") print sys.argv[0]