суббота, 12 ноября 2016 г.

ROSALIND FIB

Given: Positive integers n≤40 and k≤5.
Return: The total number of rabbit pairs that will be present after n
months, if we begin with 1 pair and in each generation, every pair of reproduction-age rabbits produces a litter of k rabbit pairs (instead of only 1 pair).

import sys

def F(n, k):
 Fn_2 = 1
 Fn_1 = k+1
 if n > 1:
  i = 3
  while i < n:
   Fn = Fn_1 + k*Fn_2
   Fn_2 = Fn_1
   Fn_1 = Fn
   i+=1
  return Fn
 elif n == 1:
  return 1
 elif n == 2:
  return k+1

def main():
 if len(sys.argv) > 1:
  print F(int(sys.argv[1]), int(sys.argv[2]))
 else:
  print 'Enter k and n.'

if __name__ == '__main__':
 main()

четверг, 10 ноября 2016 г.

ROSALIND REVC

Given: A DNA string s of length at most 1000 bp.
Return: The reverse complement of s.

import sys
import re

def rev_comp(s):
 res = ''
 for i in s:
  if i == 'A':
   res += 'T'
  elif i == 'G':
   res += 'C'
  elif i == 'T':
   res += 'A'
  elif i == 'C':
   res += 'G'
 return res[::-1]

def main():
 if len(sys.argv) > 1:
  print rev_comp(sys.argv[1])
 else:
  print 'Enter your sequence!'

if __name__ == '__main__':
 main()

ROSALIND RNA

Given: A DNA string t having length at most 1000 nt.
Return: The transcribed RNA string of t.

import sys
import re

def main():
 if len(sys.argv) > 1:
  print re.sub(r'T', r'U', sys.argv[1])
 else:
  print 'Enter your sequence!'

if __name__ == '__main__':
 main()

ROSALIND DNA

Given: A DNA string s of length at most 1000 nt.
Return: Four integers (separated by spaces) counting the respective number of times that the symbols 'A', 'C', 'G', and 'T' occur in s.

I've wrote even two functions to count lettes:

import sys
import re

def cycle(s):
 a_num = 0
 t_num = 0
 g_num = 0
 c_num = 0
 for i in s:
  if i == 'A':
   a_num += 1
  elif i == 'T':
   t_num += 1
  elif i == 'G':
   g_num += 1
  elif i == 'C':
   c_num += 1
 return str(a_num) + ' ' + str(c_num) + ' ' + str(g_num) + ' ' + str(t_num)

def reg_expr(s):
 A = re.findall(r'A', s)
 C = re.findall(r'C', s)
 G = re.findall(r'G', s)
 T = re.findall(r'T', s)
 return str(len(A)) + ' ' + str(len(C)) + ' ' + str(len(G)) + ' ' + str(len(T))

def main():
 if len(sys.argv) > 1:
  print reg_expr(sys.argv[1])   #cycle(sys.argv[1])
 else:
  print 'Enter your sequence!'

if __name__ == '__main__':
 main()

Развлекательныне сайты по биоинформатике

Сайты для биоинформатика

Информация по геномам NCBI

Статьи по биомедицине PubMed

Шкалы Phred 33 Phred 64

пятница, 6 февраля 2015 г.

План рассказа про дифракцию света на нити


1.       Интерференция света – это явление перераспределения интенсивности света в результате наложения (суперпозиции) нескольких когерентных световых волн. Это явление сопровождается чередующимися в пространстве максимумами и минимумами интенсивности, которые называются интерференционной картиной.
2.       Принцип Гюйгенса-Френеля
Гюйгенс сказал в конце 17 века: каждая точка фронта (поверхности, достигнутой волной) является вторичным (т.е. новым) источником сферических волн.
Френель почти через 40 лет дополнил: эти источники когерентны между собой, а испускаемые ими волны интерферируют.
3.       Дифракция света — это совокупность физических явлений, обусловленных волновой природой света и наблюдаемых при его распространении в среде с резко выраженной оптической неоднородностью (например, при прохождении через отверстия в экранах, вблизи границ непрозрачных тел и т.п.). В более узком смысле этого слова под дифракцией понимают огибание светом различных препятствий, т.е. отклонение от законов геометрической оптики.

3.1  Дифракция на круглом отверстии.
Повторим понятия: разность хода для двух интерферирующих лучей, волновая фаза (аргумент функции).
* Зоны Френеля (Ро – источник, Р – точка наблюдения) – кольца, отсекаемые линиями длиной b+n лямбда/2  от окружности радиуса а.
* Так как расстояния до границ соседних зон отличаются на лямбда пополам, то свет от них будет приходить в провивофазе, т.е. разность фаз равна пи (поэтому если их четное кол-во – в центре темное пятно).


* Спираль Френеля. Разобьем зону Френеля на m подзон. Разность хода от двух соседних волн будет лямбда/2m, что дает разницу в фазе волны равную некому сигма. Лучу света, идущему от каждой такой подзоны, сопоставим некий вектор. Тогда изображение этих векторов вместе будет иметь вид как на картинке ниже и называться спиралью Френеля.
Спираль Френеля – именно спираль, а не окружность, т.к. амплитуда света при удалении точки наблюдения от источника света несколько уменьшается (т.к. при таком разбиении площадь зон все же несколько уменьшается?).


3.2 Дифракция на крае экрана.