Kodomo

Пользователь

Практикум 13

Задание 1.

Код:
n = input()
dic = {}
with open(n, 'r') as f:
  a = f.readlines()
  for i in range(len(a) - 1):
    if '>' in a[i]:
      b = a[i + 1]
      b = b[0:3]
      if b in dic.keys():
        dic[b] += 1
      else:
        dic[b] = 1
ls = []
for i in dic.keys():
  ls.append(i)
ls.sort()
for i in ls:
  print(f'{i}\t{dic[i]}') 

Ниже представлена информация о используемых бактериями старт-кодонах:

Escherichia coli

ATG 3890

ATT 4

CTG 2

GTG 338

TTC 1

TTG 80

Candidatus Gracilibacteria

ACA 1

ATG 1129

GTG 41

TCA 1

TCT 1

TTG 23

Mycoplasma pneumoniae

AAA 1

ACA 1

ACT 1

ATA 3

ATC 1

ATG 626

ATT 7

CAA 1

CAC 1

CTA 1

CTC 3

CTG 2

GAA 1

GTG 60

GTT 1

TCC 2

TCT 1

TGA 1

TTA 2

TTC 1

TTG 49

Из приведённых выше данных следует, что стандартный старт-кодон (ATG) является самым распространённым у всех трёх бактерий. Вторым по частоте использования является GTG, который отличается от стандартного наличием гуанина вместо аденина, однако данные нуклеотиды относятся к пуриновым основаниям и обладают похожими конфигурациями, что свидетельствует о небольшом отличии данных кодонов. Третьим по частоте является TTG. Тимин комплементарен аденину, что могло привести к мутации при трансляции. Остальные старт-кодоны встречаются слишком редко относительно ATG, GTG и TTG. Поэтому мы можем предположить, что они возникли в результате ряда мутаций и большинство из них утратили свою функцию.

Задание 2.

Код:
N = input()
s = {}
with open(N) as f:
  for i in f.readlines():
    if i[0] == '>':
      s[i[1:].rstrip()] = ''
      b = i[1:].rstrip()
    else:
      s[b] += i.rstrip()
c = 1
for i, j in s.items():
  lst = [j[n:n+3] for n in range(0, len(j) - 3, 3)]
  if 'TGA' in lst or 'TAG' in lst or 'TAA' in lst:
    print(f'{c})\t{i}')  
    c += 1

Вывод программы: 1) lcl|U00096.3_cds_b4587_250 [gene=insN] [locus_tag=b4587] [db_xref=ASAP:ABE-0285253,ECOCYC:G6130] [protein=IS911A regulator fragment] [pseudo=true] [location=join(270278..270540,271764..272190)] [gbkey=CDS]

2) lcl|U00096.3_cds_AAD13438.1_1459 [gene=fdnG] [locus_tag=b1474] [db_xref=UniProtKB/Swiss-Prot:P24183] [protein=formate dehydrogenase N subunit alpha] [transl_except=(pos:586..588,aa:Sec)] [protein_id=AAD13438.1] [location=1547401..1550448] [gbkey=CDS]

3) lcl|U00096.3_cds_AAD13456.1_3824 [gene=fdoG] [locus_tag=b3894] [db_xref=UniProtKB/Swiss-Prot:P32176] [protein=formate dehydrogenase O subunit alpha] [transl_except=(pos:586..588,aa:Sec)] [protein_id=AAD13456.1] [location=complement(4082772..4085822)] [gbkey=CDS]

4) lcl|U00096.3_cds_AAD13462.1_3997 [gene=fdhF] [locus_tag=b4079] [db_xref=UniProtKB/Swiss-Prot:P07658] [protein=formate dehydrogenase H] [transl_except=(pos:418..420,aa:Sec)] [protein_id=AAD13462.1] [location=complement(4297219..4299366)] [gbkey=CDS]

Первая последовательность является псевдогеном. В остальных трёх содержится кодон TGA, который кодирует селеноцистеин.

Задание 3.

Код:
N = input()
s = {}
with open(N) as f:
  for i in f.readlines():
    if i[0] == '>':
      s[i[1:].rstrip()] = ''
      b = i[1:].rstrip()
    else:
      s[b] += i.rstrip()
c = 1
for i, j in s.items():
  lst = [j[n:n+3] for n in range(0, len(j) - 3, 3)]
  if 'TGA' in lst or 'TAG' in lst or 'TAA' in lst:
    print(f'{c})\t{i}')  
    c += 1

Escherichia coli

TGA 1246

TAA 2761

TAG 306

Candidatus Gracilibacteria

TGA 1

TAA 1000

TAG 188

Mycoplasma pneumoniae

TGA 0

TAA 526

TAG 220

У последних двух бактерий кодон TGA с высокой долей вероятностью полностью утратил функцию стоп-кодона и стал кодировать селеноцистеин. (ссылка на статью с информацией об причинах отсутствия стоп-кодона TGA в последовательностях: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4967479/)

Задание 4.

Код:
 = input()
with open(s) as f:
  a = f.readlines()
  tga = 0
  taa = 0
  tag = 0
  ss = ''
  for j in a:
    if j[0] == '>':
      print(ss[-3:])
      if 'TGA' in ss[-3:]:
        tga += 1
      elif 'TAA' in ss[-3:]:
        taa += 1
      elif 'TAG' in ss[-3:]:
        tag += 1
      ss = ''
    else:
      ss += j.strip()
  if 'TGA' in ss[-3:]:
    tga += 1
  elif 'TAA' in ss[-3:]:
    taa += 1
  elif 'TAG' in ss[-3:]:
    tag += 1
print(f"TGA {tga}\nTAA {taa}\nTAG {tag}")

Escherichia coli

TTA 18505

TTG 18301

CTA 5203

CTG 71305

CTC 14952

CTT 14728

Candidatus Gracilibacteria

TTA 15077

TTG 8048

CTA 4861

CTG 4147

CTC 4491

CTT 8053

Mycoplasma pneumoniae

TTA 9246

TTG 6554

CTA 3505

CTG 3054

CTC 2193

CTT 4623

Задание 5.

Код:
file = input()
s = ''
with open(file, 'r')  as f:
  for i in f.readlines():
    if i[0] != '>':
      s += i.strip()

with open("out.txt", 'w') as f:
  summ = 0
  wind, step = 100000, 1000
  for i in range(0, len(s), step):
    if i + wind - 1 < len(s):
      C = s[i:i+wind].count("C")
      G = s[i:i+wind].count("G")
      if G + C != 0:
        summ += (G - C) / (G + C)
        f.write(f'{i}\t{"{0:0.3f}".format((G - C) / (G + C))}\t{"{0:0.3f}".format(summ)}\n')
      else:
        f.write(f'{i}\t0.000\t{"{0:0.3f}".format(summ)}\n')

Ссылка на файл с графиком: https://docs.google.com/spreadsheets/d/1jGu8ReF28SiS7yxEu3Zu4PhosRXZQZ_3/edit?usp=sharing&ouid=116846341272336115491&rtpof=true&sd=true

Минимум расположен между 3870000-3970000 нуклеотидами и равен -28,328. Максимум находится между 1513000-1613000 нуклеотидами и равен 47,733. Минимум соответсвует локусу ori (origin), а максимум - ter (terminus)

Задание 6

Код (bank обозначает файл в формате genomebank, genome - файл с полным геномом):
bank = input()
genome = input()
stls = []
with open(bank, 'r') as f:
  a = f.readlines()
  for i in range(len(a)):
    if a[i][0] == '>':
      t = a[i]
      if 'complement' in t:
        b = '-' + t[t.find('complement') + 11:t.find('..')]
      else:
        b = t[t.find('location') + 9:t.find('..')]
      if b not in stls:
        stls.append(b) 

gnm = ''
anls = []
comdic = {'A': 'T', 'C': 'G', 'G': 'C', 'T': 'A'}
with open(genome) as n:
  for i in n.readlines()[1:]:
    gnm += i.strip()
  for q in stls:
    if '-' not in q:
      e = gnm[int(q) - 20:int(q)]
    else:
      e = gnm[int(q[1:]) - 20:int(q[1:])]
      e = list(e)
      for r in range(20):
        e[r] = comdic[e[r]]
      a =''
      for t in e:
        a += t
      e = a[::-1]
    anls.append(e)

lst = [['']]
p = 0
while p < 6:
  p += 1
  l = []
  for j in lst[-1]:
    l.append(j +'A')
    l.append(j + 'C')
    l.append(j + 'T')
    l.append(j + 'G')
    lst.append(l)
dic = {}
for i in lst[-1]:
  dic[i] = 0
  
for i in dic.keys():
  for m in anls:
    if i in m:
      dic[i] += 1

with open('out.txt', 'w') as f:
  for i, j in dic.items():
    if j >= 100:
      f.write(f'{i}\t{j}\n')

Программа выводит 6-меры, которые встречаются 100 или больше раз (можно убрать предпоследнюю строчку кода, чтобы получить частоту встреч всех 6-меров):

AAAAAA 119

AAAAAT 102

AAAAAG 117

AAAAGG 109

AAAGGA 143

AAGGAA 138

AAGGAG 193

ATAAAA 104

AGGAAA 112

AGGAGA 151

AGGAGT 128

CAGGAG 131

TAAGGA 170

GAAAAA 116

GGAGAA 116

Чаше всего встречаются 6-меры похожие на последовательность Шайна-Дальгарна (AGGAGG), служащие для улучшения эффективности трансляции, такие, как AGGAGA, AAAAGG, AGGAAA, AGGAGT.

Users/petros/pr13 (последним исправлял пользователь petros 2023-02-26 22:19:03)