motifs.py

Created by schraf

Created on September 07, 2019

890 Bytes

Vidéo d’explication

Attention ! Depuis la dernière mise à jour de Numworks concernant la gestion des couleurs sous forme uniquement de tuples (par exemple (0,0,0) pour le noir et non plus un nombre), plusieurs programmes ne fonctionnent plus. Le programme ci-dessous fonctionnera sur votre calculatrice mais semble planter en ligne.

Recherche d’une séquence d’ADN en utilisant l’algorithme naïf (case après case)
Le motif du haut de taille 5 est trouvé sur le brin d’ADN à la 1511e case :


La séquence de taille 7 est absente du brin:


La séquence de taille 7 est présente à la 1870e place :


Algorithmes plus sophistiqués :


from kandinsky import *
from random import *

ACTG = [(0,0,0),(0,252,0),(240,88,96),(248,180,48)] # L'ADN est fait de 4 composants (ACTG) donc 4 couleurs
T=5 # taille de la sequence cherchee

def rect(x,y,l,h,c):
  for i in range(l*h):
    set_pixel(x+i%l,y+i//l,c)

def brin():
  for i in range(80*50):
    fill_rect(4*(i%80),20+4*(i//80),4,4,choice(ACTG))

def aff(m):
  draw_string(str(m),0,0)
  fill_rect(4*(m%80),16+4*(m//80),4*T,4,(255,255,255))
  fill_rect(4*(m%80),24+4*(m//80),4*T,4,(255,255,255))

def pixel(i):
  return get_pixel(4*(i%80),20+4*(i//80))

def naif(seq):
  m=0
  while m<=80*50-T:
    if all(pixel(m+j)==seq[j] for j in range(T)):
      aff(m)
      return True
    else: m+=1
  draw_string("ABS",0,0)  
  return False
  
def go():
  seq=[choice(ACTG) for i in range(T)]
  for i,c in enumerate(seq):
    fill_rect(160+8*i,5,8,8,c)
  brin()
  naif(seq)

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.