Bien, esto ya es una pista. La pregunta anterior entonces se puede replantear de la siguiente manera: ¿puede aparecer, en el archivo primero o en el segundo, más de una línea, con el mismo cromosoma? O... ¿cada cromosoma solo aparece una vez en todo el archivo primero y una sola vez en todo el archivo segundo?
Claro, aparecen muchas veces, miles.
Aquí pego 10 líneas del archivo "solo_prom" correspondiente a los promotores:
Chr1 TAIR10 gene 3130 3630 . + . ID=AT1G01010;Note=protein_coding_gene;Name=AT1G01010
Chr1 TAIR10 gene 8738 9238 . - . ID=AT1G01020;Note=protein_coding_gene;Name=AT1G01020
Chr1 TAIR10 gene 13715 14215 . - . ID=AT1G01030;Note=protein_coding_gene;Name=AT1G01030
Chr1 TAIR10 gene 22645 23145 . + . ID=AT1G01040;Note=protein_coding_gene;Name=AT1G01040
Chr1 TAIR10 gene 27999 28499 . + . ID=AT1G01046;Note=miRNA;Name=AT1G01046
Chr1 TAIR10 gene 33154 33654 . - . ID=
AT1G01050;Note=protein_coding_gene;Name=AT1G01050
Chr1 TAIR10 gene 37872 38372 . - . ID=AT1G01060;Note=protein_coding_gene;Name=AT1G01060
Chr1 TAIR10 gene 40945 41445 . - . ID=AT1G01070;Note=protein_coding_gene;Name=AT1G01070
Chr1 TAIR10 gene 44176 44676 . + . ID=AT1G01073;Note=protein_coding_gene;Name=AT1G01073
Chr1 TAIR10 gene 47020 47520 . - . ID=AT1G01080;Note=protein_coding_gene;Name=AT1G01080
Aquí pego 10 líneas del archivo " solo_gene" correspondiente a los genes:
Chr1 TAIR10 gene 3631 5899 . + . ID=AT1G01010;Note=protein_coding_gene;Name=AT1G01010
Chr1 TAIR10 gene 5928 8737 . - . ID=AT1G01020;Note=protein_coding_gene;Name=AT1G01020
Chr1 TAIR10 gene 11649 13714 . - . ID=AT1G01030;Note=protein_coding_gene;Name=AT1G01030
Chr1 TAIR10 gene 28500 28706 . + . ID=AT1G01046;Note=miRNA;Name=AT1G01046
Chr1 TAIR10 gene 31170 33153 . - . ID=
AT1G01050;Note=protein_coding_gene;Name=AT1G01050
Chr1 TAIR10 gene 33379 37871 . - . ID=
AT1G01060;Note=protein_coding_gene;Name=AT1G01060
Chr1 TAIR10 gene 38752 40944 . - . ID=AT1G01070;Note=protein_coding_gene;Name=AT1G01070
Chr1 TAIR10 gene 44677 44787 . + . ID=AT1G01073;Note=protein_coding_gene;Name=AT1G01073
Chr1 TAIR10 gene 45296 47019 . - . ID=AT1G01080;Note=protein_coding_gene;Name=AT1G01080
Chr1 TAIR10 gene 47485 49286 . - . ID=AT1G01090;Note=protein_coding_gene;Name=AT1G01090
y los archivos de salida son "genes_solapados":
Chr1 33154 33654 Chr1 33379 37871 ID=
AT1G01050;Note=protein_coding_gene;Name=AT1G01050
ID=AT1G01060;Note=protein_coding_gene;Name=AT1G01060
Chr1 47020 47520 Chr1 47485 49286 ID=AT1G01080;Note=protein_coding_gene;Name=AT1G01080
ID=AT1G01090;Note=protein_coding_gene;Name=AT1G01090
Chr1 63812 64312 Chr1 64166 67625 ID=AT1G01130;Note=protein_coding_gene;Name=AT1G01130
ID=AT1G01140;Note=protein_coding_gene;Name=AT1G01140
Chr1 72139 72639 Chr1 72339 74096 ID=AT1G01150;Note=protein_coding_gene;Name=AT1G01150
ID=AT1G01160;Note=protein_coding_gene;Name=AT1G01160
Chr1 71838 72338 Chr1 70115 72138 ID=AT1G01160;Note=protein_coding_gene;Name=AT1G01160
ID=AT1G01150;Note=protein_coding_gene;Name=AT1G01150
y "genes_sin_solapar":
Chr1 TAIR10 gene 3130 3630 . + . ID=AT1G01010;Note=protein_coding_gene;Name=AT1G01010
Chr1 TAIR10 gene 3130 3630 . + . ID=AT1G01010;Note=protein_coding_gene;Name=AT1G01010
Chr1 TAIR10 gene 3130 3630 . + . ID=AT1G01010;Note=protein_coding_gene;Name=AT1G01010
Chr1 TAIR10 gene 3130 3630 . + . ID=AT1G01010;Note=protein_coding_gene;Name=AT1G01010
Chr1 TAIR10 gene 3130 3630 . + . ID=AT1G01010;Note=protein_coding_gene;Name=AT1G01010
Chr1 TAIR10 gene 8738 9238 . - . ID=AT1G01020;Note=protein_coding_gene;Name=AT1G01020
Chr1 TAIR10 gene 8738 9238 . - . ID=AT1G01020;Note=protein_coding_gene;Name=AT1G01020
Chr1 TAIR10 gene 8738 9238 . - . ID=AT1G01020;Note=protein_coding_gene;Name=AT1G01020
Chr1 TAIR10 gene 8738 9238 . - . ID=AT1G01020;Note=protein_coding_gene;Name=AT1G01020
Chr1 TAIR10 gene 13715 14215 . - . ID=AT1G01030;Note=protein_coding_gene;Name=AT1G01030
Chr1 TAIR10 gene 13715 14215 . - . ID=AT1G01030;Note=protein_coding_gene;Name=AT1G01030
Chr1 TAIR10 gene 13715 14215 . - . ID=AT1G01030;Note=protein_coding_gene;Name=AT1G01030
Chr1 TAIR10 gene 13715 14215 . - . ID=AT1G01030;Note=protein_coding_gene;Name=AT1G01030
Chr1 TAIR10 gene 22645 23145 . + . ID=AT1G01040;Note=protein_coding_gene;Name=AT1G01040
Chr1 TAIR10 gene 22645 23145 . + . ID=AT1G01040;Note=protein_coding_gene;Name=AT1G01040
Chr1 TAIR10 gene 22645 23145 . + . ID=AT1G01040;Note=protein_coding_gene;Name=AT1G01040
Chr1 TAIR10 gene 22645 23145 . + . ID=AT1G01040;Note=protein_coding_gene;Name=AT1G01040
Chr1 TAIR10 gene 27999 28499 . + . ID=AT1G01046;Note=miRNA;Name=AT1G01046
Chr1 TAIR10 gene 27999 28499 . + . ID=AT1G01046;Note=miRNA;Name=AT1G01046
Chr1 TAIR10 gene 27999 28499 . + . ID=AT1G01046;Note=miRNA;Name=AT1G01046
Chr1 TAIR10 gene 33154 33654 . - . ID=
AT1G01050;Note=protein_coding_gene;Name=AT1G01050
Chr1 TAIR10 gene 33154 33654 . - . ID=
AT1G01050;Note=protein_coding_gene;Name=AT1G01050
Chr1 TAIR10 gene 33154 33654 . - . ID=
AT1G01050;Note=protein_coding_gene;Name=AT1G01050
Chr1 TAIR10 gene 33154 33654 . - . ID=
AT1G01050;Note=protein_coding_gene;Name=AT1G01050
Remarqué en color uno de los ID como ejemplo. Si observas las coordenadas del promotor
AT1G01050 del archivo "solo_prom", se solapa con el gen
AT1G01060 del archivo "solo_gene", porque lo que según las condiciones que quiero ajustar, debería archivarse solo en "genes_solapados", como efectivamente aparece, e imprimir los campos que quiero.
Pero no debería aparecer en "genes_sin_solapar" por la condición else{}. Sin embargo también me lo imprime allí (última línea).
Además, como se puede observar, me repite las líneas varias veces, no sé por qué.
Subo un gráfico en donde creo se ve más claramente las combinaciones que quiero hacer.
promotor.jpg
Aquí se ven las dos posibles maneras en que se solapen el promotor y un gen (si está en la hebra positiva o en la negativa). Es por ello que necesito todas esas condiciones juntas y que son excluyentes entre sí. No me debería aparecer en los dos archivos.
Using perl Syntax Highlighting
if ( ($chr1 eq $chr2) and (($coord1 >= $coord3) and ($coord1 <= $coord4)) or (($coord2 >= $coord3) and ($coord2 <= $coord4)) ) {
Coloreado en 0.001 segundos, usando
GeSHi 1.0.8.4
Ahora que tal vez me explique mejor, y con las correcciones que me pasaste, vuelvo a mostrar mi
script, salvo que en esta oportunidad, el archivo "sin_solapar" repite la primera línea indefinidamente.
Using perl Syntax Highlighting
#!/usr/local/bin/perl
use strict;
use warnings;
my $input1 = "/home/diego-ubuntu/0-archivos_deep_seq/indices/index/TAIR10_solo_prom";
my $input2 = "/home/diego-ubuntu/0-archivos_deep_seq/indices/index/TAIR10_solo_gene";
my $output1 = "/home/diego-ubuntu/0-archivos_deep_seq/indices/index/TAIR10_join_promotores_genes_solapados1";
my $output2 = "/home/diego-ubuntu/0-archivos_deep_seq/indices/index/TAIR10_join_promotores_genes_sin_solapar1";
open (FILE1, "<$input1.gff3") or die "could not open $input1 file";
open (OUTPUTFILE1, ">>$output1.gff") or die "could not $output1.txt output file";
open (OUTPUTFILE2, ">>$output2.gff") or die "could not $output2.txt output file";
while (<FILE1>) { # Chr1 TAIR10 gene 3130 3630 . + . ID=AT1G01010;Note=protein_coding_gene;Name=AT1G01010
chomp;
my($chr1, $tair1, $gene1, $coord1, $coord2, $column5, $strand1, $column7, $id1) = split /\t/;
open (FILE2, "<$input2.gff") or die "could not open $input2 file";
while (<FILE2>) { # Chr1 TAIR10 gene 3131 5899 . + . ID=AT1G01010;Note=protein_coding_gene;Name=AT1G01010
chomp;
my($chr2, undef, undef, $coord3, $coord4, undef, $strand2, undef, $id2) = split /\t/;
if ( ($chr1 eq $chr2) and (($coord1 >= $coord3) and ($coord1 <= $coord4)) or (($coord2 >= $coord4) and ($coord2 <= $coord4)) ) {
my $msg = join("\t", $chr1, $coord1, $coord2, $chr2, $coord3, $coord4, $id1);
print OUTPUTFILE1 "$msg\n";
print "$msg\n";
} else {
print OUTPUTFILE2 join("\t", $chr1, $tair1, $gene1, $coord1, $coord2, $column5, $strand1, $column7, $id1), "\n";
}
}
}
exit;
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
¿Qué estoy haciendo mal con mis condiciones?
Espero que haya sido más claro que mi anterior explicación, y desde ya agradezco mucho la ayuda.