Команды и скрипты для практикума 9

1. Программа подсчёта инделей

#!/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()

2. Глобальное парное выравнивание гомологичных белков

получение списка 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 

3. Локальное парное выравнивание гомологичных белков

water sw:UXUA_ECOLI sw:UXUA_BACSU uxua.water -auto

Подсчет покрытия (coverage) проводился вручную с использованием команды infoseq для получения полной длины белка и с учетом того, что длина последовательности, для которой указан первый и последний элемент, считается как:

N(last)-N(first)+1

4. Применение выравнивания к неродственным белкам

Применение команд needle и water аналогично пунктам 2 и 3.


5. Множественное выравнивание белков и импорт в Jalview

Поисковой запрос:

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