#!/usr/bin/python
import sys
file = sys.argv[-1]
d = dict()
l = list()
f = open(file, 'r')
a = f.readlines()
for i in a:
if i[0] != '#' and i[0] != ' ' and len(i) > 1:
l.append(i[:-1])
for j in l:
list = j.split()
if not list[0] in d:
d[list[0]] = list[2]
else:
a = d.get(list[0]) + list[2]
d[list[0]] = a
total_q = 0
for key, value in d.items():
q = 0
for e in range(0, len(value)-1):
if value[e] == '-' and value[e+1] != '-':
q += 1
if value[-1] == '-':
q += 1
print(key, q)
total_q +=q
print('Total', total_q)
f.close()
получение списка ID
infoseq 'sw:*_ECOLI' -only -name -nohead -out ecoli.txt
infoseq 'sw:*_BACSU' -only -name -nohead -out bacsu.txt
получение мнемоники из ID
awk '{print $1}' FS='[_]' ecoli.txt > id_ecoli.txt
awk '{print $1}' FS='[_]' bacsu.txt > id_bacsu.txt
отбор одинаковых мнемоник
sort id_ecoli.txt id_bacsu.txt | awk 'dup[$0]++ == 1' | less
глобальное парное выравнивание (пример)
needle sw:UXUA_ECOLI sw:UXUA__BACSU uxua.needle -auto
water sw:UXUA_ECOLI sw:UXUA_BACSU uxua.water -auto
Подсчет покрытия (coverage) проводился вручную с использованием команды infoseq для получения полной длины белка и с учетом того, что длина последовательности, для которой указан первый и последний элемент, считается как:
N(last)-N(first)+1
Применение команд needle и water аналогично пунктам 2 и 3.
Поисковой запрос:
uxua AND (reviewed:true)
Файл и команды для построения множественного выравнивания
sw:uxua_bruc2
sw:uxua_yerpe
sw:uxua_strp7
sw:uxua_cros8
sw:uxua_lacla
sw:uxua_ecoli
sw:uxua_bacsu
seqret @uxua.txt uxua.fasta
muscle -in uxua.fasta -out uxua_alignment.fasta