En este notebook se presenta la manipulación de cadenas de texto que corresponden a 60 bases nitrogenadas del genoma de la Saccharomyces cerevisiae tomadas de la página https://www.ncbi.nlm.nih.gov/genbank/samplerecord/ como una motivación a la bioinformática.
In [1]:
secuencia_A="gatcctccatatacaacggtatctccacctcaggtttagatctcaacaacggaaccattg".upper()
In [2]:
secuencia_B="caggtttagatctcaacaacggaaccattggatcctccatatacaacggtatctccacct".upper() # secuencia_A partida en mitades
In [3]:
secuencia_C="ccgacatgagacagttaggtatcgtcgagagttacaagctaaaacgagcagtagtcagct".upper()
In [4]:
secuencia_D="tttactctcacatcctgtagtgattgacactgcaacagccaccatcactagaagaacaga".upper()
In [5]:
len(secuencia_A)
Out[5]:
In [6]:
print(secuencia_A.count("A"))
print(secuencia_A.count("G"))
print(secuencia_A.count("C"))
print(secuencia_A.count("T"))
In [7]:
for i in secuencia_A:
print(i)
In [9]:
def secuenciaComplementaria(secuencia_original):
secuencia_complementaria=""
for i in secuencia_original:
if(i=="A"):
secuencia_complementaria+="T"
if(i=="T"):
secuencia_complementaria+="A"
if(i=="C"):
secuencia_complementaria+="G"
if(i=="G"):
secuencia_complementaria+="C"
return secuencia_complementaria
Probemos que la función arroje un resultado correcto
In [10]:
print(secuencia_A)
print(secuenciaComplementaria(secuencia_A))
In [11]:
def secuenciaRNA(secuencia_original):
secuencia_rna=""
for i in secuencia_original:
if(i=="T"):
secuencia_rna+="U"
else:
secuencia_rna+=i
return secuencia_rna
Probemos nuestra función
In [12]:
print(secuencia_A))
print(secuenciaRNA(secuenciaComplementaria(secuencia_A)))
In [13]:
if(secuencia_A==secuencia_B):
print("Son secuencias iguales")
else:
print("Son secuencias diferentes")
Como ejercicio de programación, comprobemos que tanta información comparten dos secuencias en términos de cuantas A-G-T-C comparten entre sí.
In [175]:
''.join(sorted(secuencia_A)) # Este método permite ordenar una secuencia alfabéticamente
Out[175]:
Construímos una función que compara dos secuencias ordenadas y nos dice en cuanto se parecen una a la otra en términos de porcentaje
In [15]:
def secuenciaSimilaridad(secuencia_primera,secuencia_segunda):
porcentaje=0.0
sec_P_org=''.join(sorted(secuencia_primera))
sec_S_org=''.join(sorted(secuencia_segunda))
for i in range(0,len(secuencia_primera)):
if(sec_P_org[i]==sec_S_org[i]):
porcentaje+=1.0
return porcentaje/len(secuencia_primera)
In [16]:
secuenciaSimilaridad(secuencia_A,secuencia_B)
Out[16]:
In [55]:
secuenciaSimilaridad(secuencia_A,secuencia_C)
Out[55]:
In [187]:
secuenciaSimilaridad(secuencia_A,secuencia_D)
Out[187]:
In [188]:
secuenciaSimilaridad(secuencia_C,secuencia_D)
Out[188]:
In [186]:
secuenciaSimilaridad(secuencia_D,secuencia_D)
Out[186]:
In [18]:
def secuenciaPatron(secuencia_original,secuencia_patron):
status=0
lugares=list()
for i in range(0,len(secuencia_original)):
for j in range(0,len(secuencia_patron)):
if(i+j<len(secuencia_original)):
if(secuencia_original[i+j]==secuencia_patron[j]):
status+=1
#print(i+j,j,status)
else:
status=0
break
if(status==len(secuencia_patron)):
lugares.append(i)
return lugares
In [19]:
secuenciaPatron(secuencia_A,"CAAC")
Out[19]:
In [20]:
secuenciaPatron(secuencia_B,"CAAC")
Out[20]:
In [21]:
secuenciaPatron(secuencia_C,"CAAC")
Out[21]:
In [191]:
secuenciaPatron(secuencia_D,"CAAC")
Out[191]: