Bioinformática y biología computacional
Escuela de verano Complutense 2004
A lo largo del curso se han enunciado una serie de ejercicios prácticos para que los alumnos puedan comprobar si van asimilando los conocimientos teóricos dados en clase.
A continuación se muestran posibles soluciones a estos problemas. Es importante tener en cuenta que una de las características de PERL es que cualquier problema se puede solucionar de múltiples modos, por ello, aquí sólo se muestra una posible solución.
Imprimir el array después
de cada paso
Usando
la siguiente función:
@dna =
split(‘’, $dna);
Que
coloca cada una de las bases de la cadena de ADN almacenada en la variable $dna, en cada uno de los elementos
del array @dna
Contar
cuántas veces aparece cada una de las bases.
Definir
una función que calcule el factorial de un número de manera recursiva.
Diseñar un programa que
pida al usuario por pantalla tres cadenas de DNA.
Copiar estas cadenas en
tres arrays en los que cada base está en una posición del array.
Llamar a una función que recibe como parámetros los
tres arrays y devuelve el número de cada
tipo de base encontrada.
Realizar
un programa que pida al usuario el nombre de un fichero, lo abra y cuente cuántas
palabras de cada tipo existen. Se puede utilizar como ejemplo el fichero lope.txt.
Abrir
el fichero dna1.txt.
Este
fichero contiene 5 líneas de cabecero y el resto con DNA.
Contar
cuántas veces aparece cada una de las bases.
Usando
la subrutina que convierte codones en aminoácidos que encontrareis en el
fichero subs.txt, convertir todo el DNA en aminoácidos y
guardarlo en un fichero llamado amino.txt
Definir
una subrutina que cuente cuántos aminoácidos de cada tipo hay.
Por
pantalla solicitar al usuario un porcentaje y mostrar cuáles son los
aminoácidos por encima de ese porcentaje.
Introducir por teclado
una palabra y dar un mensaje en caso de que comience por vocal, después haya un
número y a continuación cualquier letra.
Introducir por teclado
una palabra y dar un mensaje en caso de que contenga la sílaba pa, indicando en
que posición dentro de la palabra se encuentra. Dar otro mensaje si contiene la
sílaba pi indicando también su posición.
Introducir por teclado
una palabra y dar un mensaje en caso de que sea un nombre de variable legal en
PERL.
Ejercicio 12:
Para el siguiente código:
$x = “the cat in the hat”;
$x =~ /^(.*)(cat)(.*)$/;
Determinar
que se identifica en cada uno de los agrupamientos.
Hacer lo
mismo con:
$x = “the cat in the hat”;
$x =~ /^(.*)(at)(.*)$/;
Explicar
lo ocurrido
Escribir un código que
pida al usuario un número y diga si es válido.
Debe
identificar números enteros con o sin signo y números en notación científica o
punto flotante: -12.23e-128.Nota: Los números en punto flotante pueden tener el
signo delante de la mantisa o no, pueden no tener parte decimal o no tener
parte entera. La letra que indica el exponente puede ser mayúscula o no, y el
exponente puede tener signo o no.
1. Crear un programa que abra el
fichero GenBank.gb y haga lo siguiente:
2. Guarde en un fichero toda la
información que no se corresponda con los datos de una secuencia.
3. Guarde en otro fichero los datos
de secuencia.
4. Analice cada línea de secuencia
e indique en qué líneas aparece tca y en qué posición dentro de la línea.
En el
subdirectorio GENBANK están almacenados una serie de ficheros con información
genética. Cada fichero corresponde a un organismo.
1.- Queremos leer cada uno de esos
ficheros y extraer de qué organismo se trata y cuántas bases de cada tipo
contiene.
Esta información la vamos a guardar
en una tabla que será un hash de hashes, donde las filas de la tabla se acceden
con el nombre del organismo y las columnas con el de cada una de las cuatro
bases.
2.-
Realizar una serie de subrutinas que permitan, mostrar por pantalla un menú con
varias opciones:
a) Mostrar todos los organismos por
pantalla
b) Guardar toda la tabla en un
fichero. Solicitar el nombre de fichero al usuario. El formato será:
ORGANISMO:
NOMBREORGANISMO
nº
de Adeninas =
nº
de citosinas =
…
c) Mostrar el porcentaje de bases de
un determinado tipo que existen en un determinado organismo (habrá que pedir al
usuario qué base y que organismo). Mostar el resultado con un solo decimal.
d) Finalizar el programa
1.- Implementar
una función que multiplique dos matrices de enteros. Los parámetros que se le
pasan son las referencias a las dos matrices.
2.- Implementar una función que
muestre por pantalla una matriz colocando de menera alineada las filas y las
columnas. Se le pasa como parámetro una referencia a la matriz
3.- Implementar una función que pida
por pantalla las dimensiones de una matriz, y vaya solicitando al usuario que
introduzca los datos para rellenar la matriz fila a fila, separando los
diferentes elementos de cada fila con :
4.- Realizar un programa principal
que solicite al usuario dos matrices las muestre por pantalla, las multiplique
y muestre el resultado por pantalla.
Queremos
almacenar los artículos que leemos en una base de datos (BD), pero no nos gusta
ninguna de las disponibles, por lo tanto vamos a construirla nosotros mismos.
La BD
será una array de hashes. Cada hash consta de 5 campos: Título del artículo,
autores, revista, fecha y el nombre del fichero donde guardamos un resumen del
artículo.
El
programa nos permitirá hacer una serie de cosas, elegidas por un menú:
1.- Introducir un nuevo elemento.
2.- Listar todos los artículos,
especificando los 4 primeros campos.
3.- Buscar si existe un artículo
dando una palabra clave del título.
4.- Buscar si existe un artículo
dando el nombre de un autor
5.- Listar todos los artículos de
una determinada revista