[Bio] / FigKernelScripts / distribute_attributes.pl Repository:
ViewVC logotype

View of /FigKernelScripts/distribute_attributes.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.11 - (download) (as text) (annotate)
Mon Dec 5 18:56:37 2005 UTC (14 years, 2 months ago) by olson
Branch: MAIN
CVS Tags: mgrast_dev_08112011, rast_rel_2009_05_18, mgrast_dev_08022011, rast_rel_2014_0912, rast_rel_2008_06_18, myrast_rel40, rast_rel_2008_06_16, mgrast_dev_05262011, rast_rel_2008_12_18, mgrast_dev_04082011, rast_rel_2008_07_21, rast_rel_2010_0928, rast_2008_0924, mgrast_version_3_2, mgrast_dev_12152011, rast_rel_2008_04_23, mgrast_dev_06072011, rast_rel_2008_09_30, rast_rel_2009_0925, rast_rel_2010_0526, rast_rel_2014_0729, mgrast_dev_02212011, rast_rel_2010_1206, caBIG-05Apr06-00, mgrast_release_3_0, mgrast_dev_03252011, rast_rel_2010_0118, mgrast_rel_2008_0924, mgrast_rel_2008_1110_v2, rast_rel_2009_02_05, rast_rel_2011_0119, mgrast_rel_2008_0625, mgrast_release_3_0_4, mgrast_release_3_0_2, mgrast_release_3_0_3, mgrast_release_3_0_1, mgrast_dev_03312011, mgrast_release_3_1_2, mgrast_release_3_1_1, mgrast_release_3_1_0, mgrast_dev_04132011, rast_rel_2008_10_09, mgrast_dev_04012011, rast_release_2008_09_29, mgrast_rel_2008_0806, mgrast_rel_2008_0923, mgrast_rel_2008_0919, rast_rel_2009_07_09, rast_rel_2010_0827, mgrast_rel_2008_1110, myrast_33, rast_rel_2011_0928, rast_rel_2008_09_29, mgrast_rel_2008_0917, rast_rel_2008_10_29, mgrast_dev_04052011, mgrast_dev_02222011, caBIG-13Feb06-00, rast_rel_2009_03_26, mgrast_dev_10262011, rast_rel_2008_11_24, rast_rel_2008_08_07, HEAD
Changes since 1.10: +17 -0 lines
Add license words.

#
# Copyright (c) 2003-2006 University of Chicago and Fellowship
# for Interpretations of Genomes. All Rights Reserved.
#
# This file is part of the SEED Toolkit.
# 
# The SEED Toolkit is free software. You can redistribute
# it and/or modify it under the terms of the SEED Toolkit
# Public License. 
#
# You should have received a copy of the SEED Toolkit Public License
# along with this program; if not write to the University of Chicago
# at info@ci.uchicago.edu or the Fellowship for Interpretation of
# Genomes at veronika@thefig.info or download a copy from
# http://www.theseed.org/LICENSE.TXT.
#

#__perl__

use FIG;
use Tracer;
use strict;

my $fig = new FIG;

=pod

=head1 distribute attributes

Given a file with attributes, one per line, distribute them to the right directories.

The basic process is to figure out where the attribute should be placed, and then test whether we have a filehandle for that file. If so, we write to that filehandle. If not, we create a new filehandle and store it in the hash.

=cut 

my $fh;
while (<>) {
 next if (/^\s*\#/); # ignore comments
 my @line=split /\t/;
 chomp(@line); # this way if the last column is empty it should still create $line[3] and then the newline will get nixed.
 unless ($#line==3) {print STDERR "Too many columns in $_\n"; next}
 unless ($line[0]) {print STDERR "No feature in $_\n"; next}
 unless ($line[1]) {print STDERR "No key in $_\n"; next}
 if ($_ =~ /\r/) {print STDERR "There are mac new lines in the file. Please correct\n"; next}
 # clean the key
 $line[1] =  $fig->clean_attribute_key($line[1]);
 my $loc=$fig->attribute_location($line[0]);
 unless (-e $loc) {`mkdir -p $loc`} # in the system version of mkdir the -p means make the whole path. Perl mkdir can't do this
 my $filehandle;

# I really like this way of doing it, since each file is only opened once, but it results in too many open files, and an error
# if ($fh->{"$loc/$line[1]"}) {$filehandle=$fh->{"$loc/$line[1]"}} 
# else 
# {
#  open ($filehandle, ">$loc/$line[1]") || die "Can't open ->>$loc/$line[1]<<-. THere are " . scalar(keys %$fh) . " files open";
#  $fh->{"$loc/$line[1]"}=$filehandle;
# }
 
 # GLOBAL ATTRIBUTES:
 # To change the location that global attributes are written to change this line:
 #unless ($loc =~ /Features/) {$line[1] = "genome_attributes"; $fh->{"$loc/$line[1]"}=1} 
 unless ($loc =~ /Features/) {$loc = $FIG_Config::global."/Attributes"}
 
 
 if ($fh->{"$loc/$line[1]"}) {open ($filehandle, ">>$loc/$line[1]") || die "Can't open $loc/$line[1]"}
 else {
  open ($filehandle, ">$loc/$line[1]") || die "Can't open $loc/$line[1]";
  $fh->{"$loc/$line[1]"}=1;
 }
 unless ($filehandle) {die "Couldn't get a filehandle for $loc/$line[1]"}
 print $filehandle join("\t", @line), "\n"; # we need to do this rather than just print $_ so that key changes are enacted.
}

# now close the filehandles
foreach $fh (keys %$fh) {close $fh}


MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3