manejo de archivos en perl

46
Manejo de archivos en Perl

Upload: kaya

Post on 21-Jan-2016

69 views

Category:

Documents


0 download

DESCRIPTION

Manejo de archivos en Perl. Tipos de archivo:. Archivos de texto es una secuencia de líneas de caracteres, cada línea de caracteres es separada por marcas de fin de línea, los caracteres son todos aquellos que están incluidos en el código ASCII. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Manejo de archivos en Perl

Manejo de archivos en Perl

Page 2: Manejo de archivos en Perl

Archivo binario codificada en forma binaria para el propósitos de almacenamiento

Tipos de archivo:

Archivos de texto es una secuencia de líneas de caracteres, cada línea de caracteres es separada por marcas de fin de línea, los caracteres son todos aquellos que están incluidos en el código ASCII.

Page 3: Manejo de archivos en Perl

Acceso a archivos en Perl.

Para que Perl pueda manipular un archivoutiliza lo que es denominado "filehandle”,“manejador” ó “file descriptor", este"filehandle" es una referencia hacia el archivo en cuestión.

Programa en PERL

Archivo deDATOS

S.O.

Page 4: Manejo de archivos en Perl

Escritura

Agregar

Lectura

Formas de acceder a archivos:

Page 5: Manejo de archivos en Perl

Sintaxis apertura de archivos:

open(MANEJADOR, "modo de acceso + nombre de archivo");

El manejador es el nombre de la conexión entre el programaEn Perl y el exterior. Cuando necesitemos acceder al exteriorlo haremos a través del manejador dentro del programa.

>>Permite crear un archivo Permite crear un archivo nuevo e insertar datosnuevo e insertar datos

>>>> Permite abrir un archivo Permite abrir un archivo para anexar datos.para anexar datos.

<<

Permite abrir un archivo Permite abrir un archivo para lectura para lectura (predeterminado si no (predeterminado si no utilizamos modo de acceso)utilizamos modo de acceso)

Page 6: Manejo de archivos en Perl

Apertura para crear archivo:

Open(ARCHIVO, ”> resultados.txt");

Apertura para leer archivo:

Open(ARCHIVO, ”<resultados.txt");

Open(ARCHIVO, ”resultados.txt");

Para anexar datos:

Open(ARCHIVO, ”>>resultados.txt");

Ejemplos apertura de archivos

Page 7: Manejo de archivos en Perl

Ejemplo para crear un archivo nuevo llamadollamado datos.dat :

open(ARCH, ”>datos.dat");

Si existe un archivo con el mismo nombre en el directorio donde se va a crear el archivo,el contenido de ese archivo se borrara y no será posible su recuperación.

Page 8: Manejo de archivos en Perl

ARCHopen(ARCH, ”>datos.dat");

Sintaxis para agregar datos : print MANEJADOR “ texto a agregar al archivo”;

Ejemplo: print ARCH“agregando linea \n”; print ARCH“agregando linea \n”;

ARCH

Page 9: Manejo de archivos en Perl

Al final de la utilización el archivo se cierra mediante el operador close.Sintaxis: close (MANEJADOR);

Ejemplo completo:

#!/usr/bin/perl#ejem-4-01.pl

open (ARCH,">datos.dat");

print "Ejemplo de escritura en archivo\n";print ARCH "Esta es la primera linea agregada al archivo \n";print ARCH "Esta es la primera segunda agregada archivo \n";

close (ARCH);

Page 10: Manejo de archivos en Perl

ARCH

Ejemplo para leer el archivo recien creadollamado datos.dat :

open(ARCH, ”<datos.dat");open(ARCH, ”datos.dat");

Una vez iniciado el archivo mediante la rutina open, el “manejador” de archivos permite acceder a los datosmediante el operador <>.Sintaxis:

<MANEJADOR>;$linea_leida=<ARCH>;

Page 11: Manejo de archivos en Perl

Ejemplo completo:

#!/usr/bin/perl#ejem-4-02.pl

open (ARCH,"datos.dat");

print "Ejemplo de lectura de archivos\n";$linea=<ARCH>;print "LINEA 1 : $linea \n";$linea=<ARCH>;print "LINEA 2: $linea \n";

close (ARCH);

Page 12: Manejo de archivos en Perl

Ejemplo para agregar datos a un archivo existente creado anteriormente datos.dat :

open(ARCH, ”>>datos.dat");

Agregar

Page 13: Manejo de archivos en Perl

#!/usr/bin/perl#ejem-4-03.pl

open (ARCH,">>datos.dat");

print "Ejemplo agregando datos a un en archivo\n";print ARCH "Vamos a agregar una lina mas \n";print ARCH "Agregamos otra y cerramos el archivo \n";

close (ARCH);

Ejemplo completo:

Page 14: Manejo de archivos en Perl

¿Que pasa si el archivo no existe?

!/usr/bin/perl#ejem-4-02.pl

open (ARCH,"datos1.dat");

print "Ejemplo de lectura de archivos\n";$linea=<ARCH>;print "Primera linea leida : $linea \n";$linea=<ARCH>;print "Segunda linea leida : $linea \n";

close (ARCH);

Page 15: Manejo de archivos en Perl

Operadores de Archivo:

estos operadores se emplean para verificar en el sistema operativo los permisos de un archivo, o su naturaleza de ejecución, etc.A continuación se muestra los diferentes operadores:

-r : indica si el archivo tiene permiso de lectura. -W : indica si el archivo tiene permiso de escritura. -T : indica si el archivo es de tipo texto. -e : indica si el archivo existe. -z : indica si el archivo tiene tamaño 0. -s : indica si el archivo es mayor que 0. -f : indica si el archivo es plano. -d : indica si se trata de un directorio. -M : indica el número dias después de la última modificación -B : indica si el archivo es binario. -t : indica si el archivo esta abierto en un terminal.

Page 16: Manejo de archivos en Perl

#!/usr/bin/perl#ejem-4-04.pl

$nom_arch="datos.dat";if (-e "$nom_arch"){ open (ARCH,$nom_arch); print "Ejemplo de lectura de archivos\n"; $linea=<ARCH>; print "LINEA 1 : $linea \n"; $linea=<ARCH>; print "LINEA 2: $linea \n"; close (ARCH);}else{ print "No existe el archivo $nom_arch\n";}

Ejemplo de apertura de archivo usando operadores:

Page 17: Manejo de archivos en Perl

#!/usr/bin/perl#ejem-4-05.pl

$nom_arch="datos.dat";if (-e "$nom_arch"){ if (-r $nom_arch){ open (ARCH,$nom_arch); print "Ejemplo de lectura de archivos\n"; $linea=<ARCH>; print "LINEA 1 : $linea \n"; $linea=<ARCH>; print "LINEA 2: $linea \n"; close (ARCH); }else{ print "El archivo $nom_arch si existe pero no tiene permisos de lectura \n"; }#fin if}else{ print "No existe el archivo \n";}#fin otro if

Ejemplo de apertura de archivo usando operadores:

Page 18: Manejo de archivos en Perl

die Toma como argumento una cadena y sale inmediatamente del programa viendo esta cadena como mensaje de error.

Otra forma común de terminar un programaal producirse un error al abrir el archivo es mediante la función die,

Ejemplo para salir del programa enviandoUn mensaje de error se utilizaría como sigue :

open(ARCH, ”>datos.dat")||die “no puedo abrir archivo”;

Page 19: Manejo de archivos en Perl

#!/usr/bin/perl#ejem-4-06.pl

open (ARCH,"datos.dat")||die "no puedo abrir archivo datos.dat";

print "Ejemplo de lectura de archivos\n";$linea=<ARCH>;print "LINEA 1 : $linea \n";$linea=<ARCH>;print "LINEA 2: $linea \n";

close (ARCH);

Ejemplo de apertura de archivo utilizando die:

Page 20: Manejo de archivos en Perl

Lectura secuencial de un archivo mediante la estructura de control while:

#!/usr/bin/perl#ejem-4-07.pl

$nom_arch="datos.dat";open (ARCH,"$nom_arch")||die "No puedo abrir archivo $nom_arch\n";

print "Ejemplo de lectura de archivos\n";while($linea=<ARCH>){ chomp $linea; print "LINEA : $linea \n";}close (ARCH);

Page 21: Manejo de archivos en Perl

#!/usr/bin/perl#ejem-4-08.pl

$nom_arch="datos.dat";open (ARCH,"$nom_arch")||die "No puedo abrir archivo $nom_arch\n";

@lista=<ARCH>;

print "Ejemplo de lectura de archivos\n\n";print "Primero imprimimos lista completa\n";print "@lista";print "\nAhora recorremos la lista \n\n";foreach $linea (@lista){ chomp $linea; print "LINEA : $linea \n";}close (ARCH);

Lectura secuencial de un archivo mediante la estructura de control foreach:

Page 22: Manejo de archivos en Perl

Este es un archivo de texto solo Utilizado para Demostrar como Funciona de malEl power pointDe micosoft

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

Valor de $linea

Page 23: Manejo de archivos en Perl

Este es un archivo de texto solo Utilizado para Demostrar como Funciona de malEl pouer pointDe micosoft

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

Valor de $linea “Este es un archivo”

Page 24: Manejo de archivos en Perl

Este es un archivo de texto solo Utilizado para Demostrar como Funciona de malEl pouer pointDe micosoft

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

Valor de $linea “de texto solo”

Page 25: Manejo de archivos en Perl

Este es un archivo de texto solo Utilizado para Demostrar como Funciona de malEl pouer pointDe micosoft

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

Valor de $linea “Utilizado para”

Page 26: Manejo de archivos en Perl

Este es un archivo de texto solo Utilizado para Demostrar como Funciona de malEl pouer pointDe micosoft

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

Valor de $linea “Demostrar como”

Page 27: Manejo de archivos en Perl

Este es un archivo de texto solo Utilizado para Demostrar como Funciona de malEl pouer pointDe micosoft

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

Valor de $linea “Funciona de mal”

Page 28: Manejo de archivos en Perl

Este es un archivo de texto solo Utilizado para Demostrar como Funciona de malEl pouer pointDe micosoft

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

Valor de $linea “El pouer point”

Page 29: Manejo de archivos en Perl

Este es un archivo de texto solo Utilizado para Demostrar como Funciona de malEl pouer pointDe micosoft

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

$linea=<ARCH>;

Valor de $linea “De micosoft”

Page 30: Manejo de archivos en Perl

Ejercicio 1:

Leer 10 nombres del teclado y grabarlos en un archivode texto.

Ejercicio 2:

Leer el archivo de texto generado anteriormente

Ejercicio 3:

Leer 5 nombres del teclado y anexarlos al archivo generado anteriormente.

Page 31: Manejo de archivos en Perl

# Abrir una consola y ejecutar los siguientes comandos:

* ftp * open ftp.ncbi.nih.gov

# Como login, usar "anonymous"# Como password, usar su direccion de correo# Entraremos en el directrio raiz del servidor FTP del NCBI.# Seguimos ejecutando comandos:

* ls (para hacer un listado) * cd genomes * cd Bacteria * ls * get README (para bajarnos un fichero con información sobre el directorio) * cd Nombre_bacteria_descargar * ls

# Aparecen varios ficheros, cuyos nombres contienen el número de acceso del genoma NC_000???.

* get NC_000???.gbk (para bajarse la entrada completa en formato GenBank). * get NC_000???.fna (para bajarse la secuencia en formato FASTA). * get NC_000???.ptt (para bajarse una tabla con las coordenadas de todas las ORFs, la Protein Translation Table). * get NC_000???.faa (para bajarse un fichero con la traducción de todas las ORFs, en formato FASTA).

# bye (para cerrar la conexion)# Los ficheros que nos hemos bajado debieran estar en nuestro directorio personal y estar en formato texto

Page 32: Manejo de archivos en Perl

Mediante un navegador, en la barra de direccionescolocar la direccion del servidor de ftp de NCBI :

ftp://ftp.ncbi.nih.gov

Ingresar en ->genomas ->Bacteria ->Escherichia_coli_K12

Descargar :NC_000913.faa (Genes traducidos)NC_000913.gbk (Genoma con anotaciones)

Page 33: Manejo de archivos en Perl

#!/usr/bin/perl#!/usr/bin/perl#ejem-4-09.plopen (ARCH,"Ecoli_k12.gbk")||die "No puedo abrir archivo \n";open (ARCHSAL,">Ecoli_k12.genoma")||die "No puedo generar Ecoli_k12.genoma\n";$bandera=0;while ($linea=<ARCH>){ if($linea =~ "ORIGIN"){ $bandera=1; } if($bandera==1){ print "$linea"; print ARCHSAL "$linea"; }}close (ARCH);close (ARCHSAL)

Ejemplo extraer la secuencia de nucleótidosDel genoma de Ecoli_k12:

Page 34: Manejo de archivos en Perl

Ejercicio :

Modificar el programa anterior para que extraigaen una sola cadena el genoma completo de E_coli_k12

Page 35: Manejo de archivos en Perl

Ejemplo extraer la secuencia de nucleótidosDel genoma de Ecoli_k12:

#eje_4_09-2.plopen (ARCH,"Ecoli_k12.gbk")||die "No puedo abrir archivo \n";open (ARCHSAL,">Ecoli_k12.genoma")||die "No puedo generar Ecoli_k12.genoma\n";$bandera=0;while ($linea=<ARCH>){ if($linea =~ "ORIGIN"){ $bandera=1; } if($bandera==1){ print "$linea"; @arr=split (/\s+/,$linea); print "@arr"; if (!($linea =~ "ORIGIN")){ print ARCHSAL "$arr[2]$arr[3]$arr[4]$arr[5]$arr[6]$arr[7]"; } }}close (ARCH);

Page 36: Manejo de archivos en Perl

Ejemplo leer un archivo en formato fasta, obtener Contenido de GCs de cada secuencia:

Un archivo en formato fasta consiste en líneas que inician con el símbolo “>” seguidas por la descripción de la secuencia, las siguientes líneascontienen la secuencia de nucleótidos o aminoácidos,así sucesivamente con las siguientes descripcionesy secuencias.Un ejemplo de formato fasta seria:

>Nombre de la secuencia GcgagcgcgccgaggtgtgcacgcatgtagcatgctagctgtcgagagcactgacgtacgtacgtagCcggccgagatcaggcgatgcatgcgcagggagcagcgagcgacgagcacagcatgctagctagatgcatgctacgtaggcagccgccgagagacgatggagctgc

Page 37: Manejo de archivos en Perl

Ejemplo : Del archivo fasta del genoma de Ecoli_k12 que contiene los genes traducidos,extraer la descripción de los genes.

#!/usr/bin/perl#ejem-4-10.plopen (ARCH,"Ecoli_k12.faa")||die "No puedo abrir archivo Ecoli_k12.faa\n";

while ($linea=<ARCH>){ if($linea =~ ">"){ print "$linea"; }}close (ARCH);print "Total de genes $cont \n";

Page 38: Manejo de archivos en Perl

Ejercicio para desarrollar en clase:Modifique el ejemplo anterior para que seimpriman todos los genes con función hipotética(predicted ), cuente en total cuantos son.

Page 39: Manejo de archivos en Perl

#!/usr/bin/perl#ejem-4-10-2.plopen (ARCH,"Ecoli_k12.faa")||die "No puedo abrir archivo Ecoli_k12.faa\n";while ($linea=<ARCH>){ if(($linea =~ ">")&&($linea =~ "predicted")){ print "$linea"; }}close (ARCH);

print "Total de genes $cont \n";

Page 40: Manejo de archivos en Perl

Mediante el uso del programa blastn, se realizóla busqueda de la secuencia del gen nagB (Glucosa-6-fosfato-deaminasa) el resultado se presenta en el archivo anexo; obtener las 5 proteínas con evalue mas alto (las 5 mas parecidas).

Page 41: Manejo de archivos en Perl

#ejem-4-12.pl

$nomarch="blastnnagb.txt";open(ARCH,"$nomarch")||die "No puedo abrir archivo $nomarch\n";$flag=0;$cont=0;while($linea=<ARCH>){ if($linea =~ "Sequences producing significant alignments:"){ $flag=1; $linea=<ARCH>; $linea=<ARCH>; } if ( ($flag==1)and (cont<=5)){ push (@lista,$linea); $cont++; } if($cont==5){ $flag=0; }}

close (ARCH);print "Los elementos con evalue mas altos son:\n";foreach $elemento (@lista){ print "$elemento "; }

Page 42: Manejo de archivos en Perl

TareaDesarrolle un programa que del archivo fastadel genoma de Ecoli_k12 obtenga el total deaminoácidos por gen, y guarde en otro archivoel gi (identificador del gen) , total de aminoácidos,así como también calcule el promedio de aminoácidos por gen del genoma completo.

Page 43: Manejo de archivos en Perl
Page 44: Manejo de archivos en Perl
Page 45: Manejo de archivos en Perl

#!/usr/bin/perl#ejem-4-12.pl$nomarch="blastnnagb.txt";open(ARCH,"$nomarch")||die "No puedo abrir archivo $nomarch\n";$flag=0;$cont=0;while($linea=<ARCH>){ if($linea =~ "Sequences producing significant alignments:"){ $flag=1; $linea=<ARCH>; $linea=<ARCH>; } if ( ($flag==1)and (cont<=5)){ push (@lista,$linea); $cont++; } if($cont==5){ $flag=0; }}

close (ARCH);print "Los elementos con evalue mas altos son:\n";foreach $elemento (@lista){ print "$elemento "; }

Page 46: Manejo de archivos en Perl

Ejercicio acerca del blast 1:Modificar el ejemplo anterior para obtener las5 Proteínas mas parecidas que no pertenezcanal genoma de Ecoli

Ejercicio acerca del blast 2:Modificar el ejemplo anterior para obtener lasproteínas con un evalue entre 6e-74 y 2e-42 que no Pertenezcan al genoma de Ecoli