Página 1 de 1

Expresión Diferencial RNA-seq

NotaPublicado: 2012-11-26 17:44 @780
por cibercop666
¡¡¡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.004 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.

Re: Expresión Diferencial RNA-seq

NotaPublicado: 2012-11-26 19:49 @867
por explorer
¿2.5 "veces"?

¿No querrás decir que la tolerancia de error sea de ±2.5?

Re: Expresión Diferencial RNA-seq

NotaPublicado: 2012-11-27 14:53 @662
por cibercop666
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.

Re: Expresión Diferencial RNA-seq

NotaPublicado: 2012-11-27 15:23 @682
por explorer
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.

Re: Expresión Diferencial RNA-seq

NotaPublicado: 2012-11-28 14:14 @635
por cibercop666
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.

Re: Expresión Diferencial RNA-seq

NotaPublicado: 2012-11-28 17:58 @790
por explorer
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?