1 Manejo de archivos en Perl
2 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. Archivo binario codificada en forma binaria para el propósitos de almacenamiento
3 Acceso a archivos en Perl.Para que Perl pueda manipular un archivo utiliza lo que es denominado "filehandle”, “manejador” ó “file descriptor", este "filehandle" es una referencia hacia el archivo en cuestión. Programa en PERL Archivo de DATOS S.O.
4 Formas de acceder a archivos:Escritura Agregar Lectura
5 Sintaxis apertura de archivos:open(MANEJADOR, "modo de acceso + nombre de archivo"); El manejador es el nombre de la conexión entre el programa En Perl y el exterior. Cuando necesitemos acceder al exterior lo haremos a través del manejador dentro del programa. > Permite crear un archivo nuevo e insertar datos >> Permite abrir un archivo para anexar datos. < Permite abrir un archivo para lectura (predeterminado si no utilizamos modo de acceso)
6 Ejemplos apertura de archivosApertura para crear archivo: Open(ARCHIVO, ”> resultados.txt"); Apertura para leer archivo: Open(ARCHIVO, ”
7 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.
8 open(ARCH, ”>datos.dat");Sintaxis para agregar datos : print MANEJADOR “ texto a agregar al archivo”; Ejemplo: print ARCH“agregando linea \n”; ARCH
9 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);
10 Ejemplo para leer el archivo recien creado llamado datos.dat : open(ARCH, ”
11 Ejemplo completo: #!/usr/bin/perl #ejem-4-02.plopen (ARCH,"datos.dat"); print "Ejemplo de lectura de archivos\n"; $linea=
12 Ejemplo para agregar datos a un archivo existente creado anteriormente datos.dat : open(ARCH, ”>>datos.dat"); Agregar
13 Ejemplo completo: #!/usr/bin/perl #ejem-4-03.plopen (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);
14 ¿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=
15 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.
16 Ejemplo de apertura de archivo usando operadores:#!/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=
17 Ejemplo de apertura de archivo usando operadores:#!/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=
18 die Toma como argumento una cadena y saleOtra forma común de terminar un programa al producirse un error al abrir el archivo es mediante la función die, die Toma como argumento una cadena y sale inmediatamente del programa viendo esta cadena como mensaje de error. Ejemplo para salir del programa enviando Un mensaje de error se utilizaría como sigue : open(ARCH, ”>datos.dat")||die “no puedo abrir archivo”;
19 Ejemplo de apertura de archivo utilizando die:#!/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=
20 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=
21 Lectura secuencial de un archivo mediante la estructura de control foreach: #!/usr/bin/perl #ejem-4-08.pl $nom_arch="datos.dat"; open (ARCH,"$nom_arch")||die "No puedo abrir archivo $nom_arch\n"; @lista=
22 Este es un archivo de texto solo Utilizado para Demostrar como$linea=
23 Este es un archivo de texto solo Utilizado para Demostrar como$linea=
24 Este es un archivo de texto solo Utilizado para Demostrar como$linea=
25 Este es un archivo de texto solo Utilizado para Demostrar como$linea=
26 Este es un archivo de texto solo Utilizado para Demostrar como$linea=
27 Este es un archivo de texto solo Utilizado para Demostrar como$linea=
28 Este es un archivo de texto solo Utilizado para Demostrar como$linea=
29 Este es un archivo de texto solo Utilizado para Demostrar como$linea=
30 Ejercicio 1: Leer 10 nombres del teclado y grabarlos en un archivo de texto. Ejercicio 2: Leer el archivo de texto generado anteriormente Ejercicio 3: Leer 5 nombres del teclado y anexarlos al archivo generado anteriormente.
31 # 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 # 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
32 Mediante un navegador, en la barra de direcciones colocar la direccion del servidor de ftp de NCBI : ftp://ftp.ncbi.nih.gov Ingresar en ->genomas ->Bacteria ->Escherichia_coli_K12 Descargar : NC_ faa (Genes traducidos) NC_ gbk (Genoma con anotaciones)
33 Ejemplo extraer la secuencia de nucleótidos Del genoma de Ecoli_k12:#!/usr/bin/perl #ejem-4-09.pl open (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=
34 Ejercicio : Modificar el programa anterior para que extraiga en una sola cadena el genoma completo de E_coli_k12
35 Ejemplo extraer la secuencia de nucleótidos Del genoma de Ecoli_k12:#eje_4_09-2.pl open (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=
36 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íneas contienen la secuencia de nucleótidos o aminoácidos, así sucesivamente con las siguientes descripciones y secuencias. Un ejemplo de formato fasta seria: >Nombre de la secuencia Gcgagcgcgccgaggtgtgcacgcatgtagcatgctagctgtcgagagcactgacgtacgtacgtag Ccggccgagatcaggcgatgcatgcgcagggagcagcgagcgacgagcacagcatgctagctagat gcatgctacgtaggcagccgccgagagacgatggagctgc
37 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.pl open (ARCH,"Ecoli_k12.faa")||die "No puedo abrir archivo Ecoli_k12.faa\n"; while ($linea=
38 Ejercicio para desarrollar en clase:Modifique el ejemplo anterior para que se impriman todos los genes con función hipotética (predicted ), cuente en total cuantos son.
39 #!/usr/bin/perl #ejem pl open (ARCH,"Ecoli_k12.faa")||die "No puedo abrir archivo Ecoli_k12.faa\n"; while ($linea=
40 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).
41 #ejem-4-12.pl $nomarch="blastnnagb.txt"; open(ARCH,"$nomarch")||die "No puedo abrir archivo $nomarch\n"; $flag=0; $cont=0; while($linea=
42 Tarea Desarrolle un programa que del archivo fastadel genoma de Ecoli_k12 obtenga el total de aminoácidos por gen, y guarde en otro archivo el gi (identificador del gen) , total de aminoácidos, así como también calcule el promedio de aminoácidos por gen del genoma completo.
43
44
45 #!/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=
46 Ejercicio acerca del blast 1: Modificar el ejemplo anterior para obtener las Proteínas mas parecidas que no pertenezcan al genoma de Ecoli Ejercicio acerca del blast 2: Modificar el ejemplo anterior para obtener las proteínas con un evalue entre 6e-74 y 2e-42 que no Pertenezcan al genoma de Ecoli