• Publicidad

Expresión Diferencial RNA-seq

Perl aplicado a la bioinformática

Expresión Diferencial RNA-seq

Notapor cibercop666 » 2012-11-26 17:44 @780

¡¡¡Hola a todos!!!

Tengo un problema y estoy atorado con esto desde hace ya varios días. Tengo un archivo así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
  1. ID      RPKM_C  RPKM_T1 RPKM_T2
  2. Pp1s10008_1V6.1 15.1413902      13.23147945     63.56598706
  3. Pp1s100_101V6.1 3.02827804      2.615525008     7.196149479
  4. Pp1s100_102V6.1 6.012701324     6.004640585     12.75103445
  5. Pp1s100_104V6.1 4.660445525     4.4133651       8.656488079
  6. Pp1s100_106V6.1 4.05209418      3.87275314      6.58645081
  7. Pp1s100_107V6.1 3.563197791     3.881832493     7.756641103
  8. Pp1s100_108V6.1 2.658938461     2.450037373     6.639192251
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Y necesito un script que me compare los RPKM_C vs RPKM_T1, RPKM_C vs RPKM_T2, de cada ID y que los asigne a archivos como Sin_Cambios (si son iguales), Reprimido (Si es menor), y a Inducidos (Si es mayor), para ello ya hice un script y me funciona muy bien:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use strict;
  2.  
  3. #!/usr/bin/perl
  4. ####-----Declarar Variables-----####
  5. my ( $linea1, $a_1, $a_2, $a_3, $a_4 );
  6.  
  7. ###------Inicio del Programa---###
  8.  
  9. ##### Control vs T1 ################################
  10.  
  11. open( SALIDA_A, ">Resprimido_C_vs_T1.txt" );
  12. open( SALIDA_B, ">Sobrexpresado_C_vs_T1.txt" );
  13. open( SALIDA_C, ">Igual_C_vs_T1.txt" );
  14.  
  15. open( ARCHIVO_A, $ARGV[0] );
  16. while ( $linea1 = <ARCHIVO_A> ) {
  17.     ( $a_1, $a_2, $a_3, $a_4 ) = split /\t/, $linea1;
  18.  
  19.     if ( $a_2 eq $a_3 ) {
  20.         print SALIDA_C "$a_1\n";
  21.     }
  22.     elsif ( $a_2 > $a_3 ) {
  23.         print SALIDA_A "$a_1\n";
  24.     }
  25.     else {
  26.         print SALIDA_B "$a_1\n";
  27.     }
  28. }
  29.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Mi problema es que fui muy estricto, ya que un RPKM de 15.1413902 (Ccontrol) es biológicamente igual a 13.23147945 (T1), por lo que necesito hacer una comparación de +/- 2.5 veces, o sea:

- Si el T1 es 2.5 veces más grande que el Control, este se induce
- Si el T1 es 2.5 veces más pequeño que el control, este se reprime
- Si el T1 está dentro del rango de +/- 2.5 veces el Control se mantiene igual

Sé que debo usar expresiones regulares, lo que no sé es cómo.

Ayuda por favor, es algo urgente, es para mi trabajo final.
cibercop666
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2011-09-22 11:45 @531

Publicidad

Re: Expresión Diferencial RNA-seq

Notapor explorer » 2012-11-26 19:49 @867

¿2.5 "veces"?

¿No querrás decir que la tolerancia de error sea de ±2.5?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Expresión Diferencial RNA-seq

Notapor cibercop666 » 2012-11-27 14:53 @662

Esta es la situación:

Por ejemplo si:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
ID       C   T1   T2
Pps1_1   10   15   45
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Entre C y T1, no hay diferencias por que C = 10 tiene un rango de tolerancia (+/- 2.5 veces) de -25 hasta 25, y como T1 = 15 pues está dentro del rango de tolerancia, o sea biológicamente es igual, mientras que T2 = 45, está fuera del rango (-25..25) entonces está sobrexpresado.

No sé cómo especificar esos rangos, y cómo utilizar las condicionales.

Ayuda, por favor.
cibercop666
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2011-09-22 11:45 @531

Re: Expresión Diferencial RNA-seq

Notapor explorer » 2012-11-27 15:23 @682

A ver, a ver... algo no está claro... (disculpas, pero no soy biotecnólogo del todo)

En el primer mensaje solo hablabas de T1, pero en el último mensaje hablas de T1 y T2...

Si hacemos caso a la última explicación,

- si T1 ∈ [-2.5C, 2.5C], entonces decimos que son iguales
- si T1 ∉ [-2.5C, 2.5C], entonces decimos que está sobreexpresado

Me faltan saber más cosas... ¿Hay que aplicar la misma operación para T1 y luego para T2, o todo a la vez?
En el primer ejemplo hablas de inducción, reprime e igualdad (tres intervalos), pero ahora solo comentas dos posibles intervalos (mejor dicho, solo uno).

A ver, si hago caso solo de las reglas puestas en el primer mensaje, pues se haría así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open( REPRIME, ">Reprimido_C_vs_T1.txt" );
  2. open( SOBREXP, ">Sobrexpresado_C_vs_T1.txt" );
  3. open( IGUALES, ">Igual_C_vs_T1.txt" );
  4.  
  5. while ( $linea1 = <ARCHIVO_A> ) {
  6.     my ($id, $control, $T1, $T2) = split /\t/, $linea1;
  7.  
  8.     # Si el T1 es 2.5 veces más grande que el control, éste se induce
  9.     if ( $T1 > $control * 2.5 ) {
  10.         print SOBREXP "$id\n";
  11.     }
  12.  
  13.     # Si el T1 es 2.5 veces más pequeño que el control, éste se reprime
  14.     elsif ( $T1 < -2.5 * $control ) {
  15.         print REPRIME "$id\n";
  16.     }
  17.  
  18.     # Si el T1 está dentro del rango de +/- 2.5 veces el control, se mantiene igual
  19.     else {
  20.         print IGUALES "$id\n";
  21.     }
  22. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
pero me temo que está mal...

Yo necesito instrucciones claras. Piensa que soy tan tonto como tu ordenador, y explícamelo.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Expresión Diferencial RNA-seq

Notapor cibercop666 » 2012-11-28 14:14 @635

Lo siento fue mi culpa no se supe explicar, haber intento de nuevo:

Tengo los perfiles de expresión de un Control(C), un experimento 1 (T1) y un segundo experimento (T2),

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
ID       C   T1   T2
Pps1_1   10   15   45
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


El "C" tiene una expresión de 10 lecturas para el gen Pps1_1, en el primer experimento tiene 15 lecturas ese mismo gen;

* Numéricamente es diferente, pero biológicamente no, porque para que esté Sobrexpresado tiene que estar 2.5 VECES más, o sea el T1 tendría que tener 26 lecturas. Si está dentro del rango entre -25..0..25 lecturas ese gen se mantiene igual o sin cambios.

* Sin embargo, en el T2 como tiene 45 lecturas, sí está Sobrexpresado, porque esta fuera del rango de 26 lecturas.

Ahora, como podrás inducir, estoy comparando C_vs_T1, C_vs_T2 y T1_vs_T2, con la misma lógica. Hummm, intenté hacer algo como lo que me propones pero no resulta del todo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open( SALIDA_A, ">Resprimido_C_vs_T1.txt" );
  2. open( SALIDA_B, ">Sobrexpresado_C_vs_T1.txt" );
  3. open( SALIDA_C, ">Igual_C_vs_T1.txt" );
  4.  
  5. open( ARCHIVO_A, $ARGV[0] );
  6. while ( $linea1 = <ARCHIVO_A> ) {
  7.     ( $id, $control, $T1, $T2 ) = split /\t/, $linea1;
  8.  
  9.     if ( $T1 > ( $control * 2 ) ) {
  10.         print SALIDA_B "$id_1\n";
  11.     }
  12.     elsif ( $T1 < ( $control * 2 ) ) {
  13.         print SALIDA_A "$id\n";
  14.     }
  15.     else {
  16.         print SALIDA_C "$id\n";
  17.     }
  18. }
  19.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Ojalá esta vez me haya explicado mejor, una disculpa por no hacerlo desde el inicio.

Gracias explorer, espero tu respuesta.
cibercop666
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2011-09-22 11:45 @531

Re: Expresión Diferencial RNA-seq

Notapor explorer » 2012-11-28 17:58 @790

Lo siento, pero sigo sin entender nada...

Con la frase "se mantiene igual o sin cambios" entiendo que hay que grabarlo en el archivo "igual", pero ¿y el archivo "reprimido"? ¿Qué hay que hacer con él?

Puedo entender lo de "Sobreexpresado" y "No sobreexpresado", con lo que queda así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.     if ($T1 < ($control * -2.5)  or  $T1 > ($control * 2.5)) {
  2.         print SOBREEXP "$id_1\n";               # $T1 está fuera del intervalo: está sobreexpresado
  3.     }
  4.     else {
  5.         print IGUALES "$id_1\n";                # $T1 está dentro del intervalo: queda igual
  6.     }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4



P.D. Por favor: intenta explicar este problema a una persona que no sepa nada de informática o de biología, y te darás cuenta de que te estás dejando muchas cosas sin explicar.

O de otra manera... ¿hay alguna página web que explique qué es lo que quieres hacer?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Bioinformática

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados