EJERCICIOS DE PERL"SECUENCIAS Y CADENAS".FUNCIONES . CON SU RESPECTIVA SOLUCION.


EJERCICIOS:

EJERCICIO 1. SECUENCIAS Y CADENAS

A. Crea un programa para que almacene la secuencia de DNA que hay a continuación en una variable, y la escriba en la pantalla.

Secuencia de DNA: ACGGGAGGACGGGAAAATTACTACGGCATTAGC



B. Guarda las dos secuencias de DNA siguientes en dos variables escalares y escríbelas en la pantalla. A continuación, crea una tercera variable que contenga las dos primeras concatenadas. Escribe también el resultado.

Primera secuencia de DNA: ACGGGAGGACGGGAAAATTACTACGGCATTAGC

Segunda secuencia de DNA: ATAGTGCCGTGAGAGTGATGTAGTA



C. La transcripción es el paso de DNA a RNA, donde todas las timinas (T) de la secuencia cambian a uridinas (U). En este apartado debes escribir un programa para transcribir secuencias de DNA. Introduce la siguiente secuencia de DNA en el programa en forma de variable escalar, y cambia todas sus T's por U's. Finalmente, como siempre, escribe el resultado para comprobar que el programa hace lo esperado.

Secuencia de DNA: ACGGGAGGACGGGAAAATTACTACGGCATTAGC



D. El DNA es una hélice formada por dos cadenas, una complementaria de la otra, que avanzan en sentidos opuestos:

5' ACTCAGA 3' à
ß 3' TGAGTCT 5'

En la cadena complementaria, las sustituciones de nucleótidos son las siguientes:

A à T
T à A
C à G
G à C

La dirección en la que siempre de deben dar las secuencias (por consenso) es 5' à 3'.

Escribe un programa que, dada una secuencia de DNA, calcule su complementaria (y reversa).

Secuencia de DNA: ACGGGAGGACGGGAAAATTACTACGGCATTAGC



E. Es importante saber convertir entre mayúsculas y minúsculas. A partir de una secuencia de DNA haz conversiones globales utilizando las funciones uc y lc, y otras en caracteres específicos utilizando los operadores s///g y tr///.

FUNCIONES:
A.

Comandos básicos: variables escalares

Funciones: print



B.

Comandos básicos: variables escalares, concatenación de cadenas (.)

Expresiones regulares: \n

Funciones: print



C.

Comandos básicos: variables escalares

Expresiones regulares: \n, s//g

Funciones: print



D.

Comandos básicos: variables escalares

Expresiones regulares: \n, tr//

Funciones: print, reverse



E.

Comandos básicos: variables escalares

Expresiones regulares: s//g, tr//

Funciones: print, uc, lc



SOLUCION:
EJERCICIO: 1A

#!/usr/bin/perl -w
# Example 4-1 Storing DNA in a variable, and printing it out

# First we store the DNA in a variable called $DNA
$DNA = 'ACGGGAGGACGGGAAAATTACTACGGCATTAGC';

# Next, we print the DNA onto the screen
print $DNA;

# Finally, we'll specifically tell the program to exit.
exit;

EJERCICIO 1B

#!/usr/bin/perl -w
# Example 4-2 Concatenating DNA

# Store two DNA fragments into two variables called $DNA1 and $DNA2
$DNA1 = 'ACGGGAGGACGGGAAAATTACTACGGCATTAGC';
$DNA2 = 'ATAGTGCCGTGAGAGTGATGTAGTA';

# Print the DNA onto the screen
print "Here are the original two DNA fragments:\n\n";

print $DNA1, "\n";

print $DNA2, "\n\n";

# Concatenate the DNA fragments into a third variable and print them
# Using "string interpolation"
$DNA3 = "$DNA1$DNA2";

print "Here is the concatenation of the first two fragments (version 1):\n\n";

print "$DNA3\n\n";

# An alternative way using the "dot operator":
# Concatenate the DNA fragments into a third variable and print them
$DNA3 = $DNA1 . $DNA2;

print "Here is the concatenation of the first two fragments (version 2):\n\n";

print "$DNA3\n\n";

# Print the same thing without using the variable $DNA3
print "Here is the concatenation of the first two fragments (version 3):\n\n";

print $DNA1, $DNA2, "\n";

exit;
EJERCICIO 1C:

#!/usr/bin/perl -w
# Example 4-3 Transcribing DNA into RNA

# The DNA
$DNA = 'ACGGGAGGACGGGAAAATTACTACGGCATTAGC';

# Print the DNA onto the screen
print "Here is the starting DNA:\n\n";

print "$DNA\n\n";

# Transcribe the DNA to RNA by substituting all T's with U's.
$RNA = $DNA;

$RNA =~ s/T/U/g;

# Print the RNA onto the screen
print "Here is the result of transcribing the DNA to RNA:\n\n";

print "$RNA\n";

# Exit the program.
exit;

EJERCICIO 1D:
#!/usr/bin/perl -w
# Example 4-4 Calculating the reverse complement of a strand of DNA

# The DNA
$DNA = 'ACGGGAGGACGGGAAAATTACTACGGCATTAGC';

# Print the DNA onto the screen
print "Here is the starting DNA:\n\n";

print "$DNA\n\n";

# Calculate the reverse complement
# Warning: this attempt will fail!
#
# First, copy the DNA into new variable $revcom
# (short for REVerse COMplement)
# Notice that variable names can use lowercase letters like
# "revcom" as well as uppercase like "DNA". In fact,
# lowercase is more common.
#
# It doesn't matter if we first reverse the string and then
# do the complementation; or if we first do the complementation
# and then reverse the string. Same result each time.
# So when we make the copy we'll do the reverse in the same statement.
#

$revcom = reverse $DNA;

#
# Next substitute all bases by their complements,
# A->T, T->A, G->C, C->G
#

$revcom =~ s/A/T/g;
$revcom =~ s/T/A/g;
$revcom =~ s/G/C/g;
$revcom =~ s/C/G/g;

# Print the reverse complement DNA onto the screen
print "Here is the reverse complement DNA (using s\/\/\/g):\n\n";

print "$revcom\n";

#
# Oh-oh, that didn't work right!
# Our reverse complement should have all the bases in it, since the
# original DNA had all the bases-but ours only has A and G!
#
# Do you see why?
#
# The problem is that the first two substitute commands above change
# all the A's to T's (so there are no A's) and then all the
# T's to A's (so all the original A's and T's are all now A's).
# Same thing happens to the G's and C's all turning into G's.
#

print "\nThat was a bad algorithm, and the reverse complement was wrong!\n";
print "Try again ... \n\n";

# Make a new copy of the DNA (see why we saved the original?)
$revcom = reverse $DNA;

# See the text for a discussion of tr///
$revcom =~ tr/ACGTacgt/TGCAtgca/;

# Print the reverse complement DNA onto the screen
print "Here is the reverse complement DNA (using tr\/\/\/g):\n\n";

print "$revcom\n";

print "\nThis time it worked!\n\n";

exit;

EJERCICIO 1E: