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.

Ejercicio 1:

  1. Crear un array con el nombre de 4 ácidos nucleicos
  2. Insertar uno más al final
  3. Eliminar el primero
  4. Invertirlo
  5. Ordenarlo alfabéticamente
  6. Imprimir el número de elementos

Imprimir el array después de cada paso

Ejercicio 2:

  1. Crear un array asociativo con el nombre de 4 ácidos nucleicos y su abreviatura
  2. Insertar uno más
  3. Eliminar uno de ellos usando su abreviatura
  4. Imprimir los nombres de todos los ácidos
  5. Imprimir todos las abreviaturas
  6. Imprimir el número de elementos

Ejercicio 3:

  1. Guardar en dos variables dos cadenas de DNA.
  2. Crear una nueva variable uniendo las dos anteriores
  3. Crear una nueva variable repitiendo tres veces la cadena 2

Ejercicio 4:

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.

Ejercicio 5:

Definir una función que calcule el factorial de un número de manera recursiva.

 

Ejercicio 6:  

 

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.

Ejercicio 7:

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.

Ejercicio 8:

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.

Ejercicio 9:

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.

Ejercicio 10:

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.

Ejercicio 11:

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

Ejercicio 13:

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.   

Ejercicio 14:

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.

 

Ejercicio 15:

 

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

 

Ejercicio 16:

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.

 

Ejercicio 17:

 

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