annotate SMART/bacteriaRegulatoryRegion_Detection/sortGff.pl @ 31:0ab839023fe4

Uploaded
author m-zytnicki
date Tue, 30 Apr 2013 14:33:21 -0400
parents 94ab73e8a190
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
18
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
1 #!/usr/bin/perl -w
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
2 ###
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
3 # But : ajout ou modif de couleur d'un gff
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
4 #
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
5 # Entrees : fichier gff
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
6 #
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
7 # Sortie : gff affiche a l'ecran
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
8 #
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
9 ###------------------------------------------------------
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
10
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
11 #!/usr/bin/perl -w
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
12
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
13 use vars qw($USAGE);
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
14 use strict;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
15
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
16 =head1 NAME
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
17
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
18 sortGff.pl - sort a gff file
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
19
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
20 =head1 SYNOPSIS
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
21
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
22 % sortGff.pl -i file.gff [-h]
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
23
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
24 =head1 DESCRIPTION
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
25 This script will sort a gff file (only when inversion of two successive lines).
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
26
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
27 -i|--input fileName gff input file name
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
28 -o|--output fileName gff3 output file name
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
29 [-h|--help] help mode then die
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
30
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
31 =head1 AUTHOR - Claire Toffano-Nioche - mar.11
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
32
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
33 =cut
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
34
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
35 #-----------------------
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
36 my ($fileName, $colourGff, $outFileName) = ("", "", "sortOut.gff3") ;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
37 # command line check
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
38 foreach my $num (0 .. $#ARGV) {
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
39 SWITCH: for ($ARGV[$num]) {
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
40 /--input|-i/ && do {
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
41 $fileName=$ARGV[$num+1];
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
42 open ( fichierGff, "< $fileName" ) or die "Can't open gff file: \"$fileName\"\n" ;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
43 last };
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
44 # /--output|-o/ && do {
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
45 # $outFileName=$ARGV[$num+1];
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
46 # last };
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
47 /--help|-h/ && do { exec("pod2text $0\n") ; die };
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
48 }
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
49 }
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
50 # informations retrieval
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
51 # open(OUT,">$outFileName") or die "Error can't $outFileName open for output. $!\n";
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
52 my @lines = <fichierGff> ;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
53 close fichierGff ;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
54 # treatment
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
55 #print "gff file read ; number of lines : $#lines\n";
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
56 my $previous = 0;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
57 my $i = 0;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
58 #print "$#lines\n" ;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
59 while ($i <= $#lines) {
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
60 my @infos = split('\t', $lines[$i]) ;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
61 #print "info[3]:$infos[3]; prv:$previous!\n";
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
62 if ($infos[3] < $previous) {
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
63 &exchange($i, $infos[3]) ;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
64 $previous=$infos[3] ;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
65 $i--;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
66 }
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
67 $previous=$infos[3];
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
68 $i++;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
69 }
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
70 for (my $i=0 ; $i <= $#lines ; $i++) {
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
71 # print OUT $lines[$i] ;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
72 print $lines[$i] ;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
73 }
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
74 #close OUT ;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
75 exit(0);
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
76 #-----------------------
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
77 sub exchange {
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
78 my ($index, $position) = @_ ;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
79 my @info_col = split("\t", $lines[$index-1]) ;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
80 if ($info_col[3] > $position) {
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
81 #print "$lines[$index]";
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
82 my $line_to_push = $lines[$index-1] ;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
83 $lines[$index-1] = $lines[$index] ;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
84 $lines[$index] = $line_to_push ;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
85 } else {
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
86 print "TODO : push > one line\n" ;
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
87 }
94ab73e8a190 Uploaded
m-zytnicki
parents:
diff changeset
88 }