ФББ 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]