sundeep has asked for the wisdom of the Perl Monks concerning the following question:

This node falls below the community's minimum standard of quality and will not be displayed.

Replies are listed 'Best First'.
Re: Multiple loops and comparisions
by kcott (Archbishop) on Oct 28, 2010 at 03:35 UTC

    What's your question? What are you having difficulty with? What have you tried?

    It rather looks like you think you can post a specification here and someone will do your work for you.

    -- Ken

Re: Multiple loops and comparisions
by aquarium (Curate) on Oct 28, 2010 at 03:36 UTC
    So what's the point?
    Is this supposed to be some sort of pseudo specification to your homework following up from your last one, that you just want perlmonks to write you a program for?..and you don't even bother to ask.
    or is this just thinking out loud?
    the hardest line to type correctly is: stty erase ^H
    A reply falls below the community's threshold of quality. You may see it by logging in.
Re: Multiple loops and comparisions
by Marshall (Canon) on Oct 28, 2010 at 21:27 UTC
    Actually, I think you would be better off solving this problem with Excel - it is possible to write macros that would do this.

    You are going to be on a very steep learning curve with Perl. But to get you started, I would create a hash table out of file2. This will allow you to translate any TID into the SPNAME. Code below. Note how I limited the number of things coming out of the split(). You will need that technique to parse the first file, except there will be 3 fields instead of 2.
     my ($gid,$tid,$concat) = split(/\s+/,$_,3);

    #!/usr/bin/perl -w use strict; use Data::Dumper; my %tid2spname; foreach (<DATA>) { chomp; my ($tid, $txt) = split(/\s+/,$_,2); $tid2spname{$tid} = $txt; } print Dumper \%tid2spname; __DATA__ 10090 Mus musculus 10116 Rattus norvegicus 148305 Magnaporthe grisea 28985 Kluyveromyces lactis 33169 Eremothecium gossypii 3702 Arabidopsis thaliana 4530 Oryza sativa 4896 Schizosaccharomyces pombe 4932 Saccharomyces cerevisiae 5141 Neurospora crassa 5833 Plasmodium falciparum 6239 Caenorhabditis elegans 7165 Anopheles gambiae 7227 Drosophila melanogaster 7955 Danio rerio 9031 Gallus gallus 9598 Pan troglodytes 9606 Homo sapiens 9615 Canis lupusfamiliaris 9913 Bos taurus
Re: Multiple loops and comparisions
by sundeep (Acolyte) on Oct 28, 2010 at 03:43 UTC

    I have given you the code, that i wrote....

    use strict; use warnings; open (HOMOLOGENE,"<homosample.txt") or die $! ; open (TAXID,"<taxid.txt") or die $! ; open (HOMOOUT,">>homooutput.txt") or die $! ; my @gid; my @homotaxid; my @taxtaxid; my @species; my @gene; my $newgid; my $newgene; my $homolen; # While loop for reading the data from the Homologene. while ( my @homo=<HOMOLOGENE>) # @homo - > @inputs { $homolen = $#homo; #homolen -> arraylen for (my $i=0;$i<=$homolen;$i++) { chomp $homo[$i]; my ($one,$two,$three, $four,$five,$six) = split(/\s/,$homo[$i] +); chomp $one; chomp $two; chomp $four; chomp $six; my $concat1=join(' | ',$four,$six); chomp $concat1; push @gid,$one; push @homotaxid,$two; push @gene,$concat1; } } # print @gene; while ( my @tax=<TAXID>) { my $taxlen = $#tax; # taxlen for tax array length for (my $j=0;$j<=$taxlen;$j++) { chomp $tax[$j]; my ($seven,$eight,$nine) = split(/\s/,$tax[$j]); chomp $seven; chomp $eight; chomp $nine; push @taxtaxid,$seven; #$, = '::::'; # separation character my $concat2=join(' ',$eight,$nine); push @species,$concat2; #$, = '::::'; # separation character } } # print @species; my $specieslen=$#species; # Species length for(my $l=0;$l<=$specieslen;$l++) { print HOMOOUT "\t\t\t\t\t".$species[$l]."\t\t\t\t\t"; } print HOMOOUT "\n"; close HOMOLOGENE; close TAXID; close HOMOOUT;

      Yes, you have given us the code and a specification. What we would like to know is exactly what is the problem you are having with the code you have posted? What is it doing that you think is wrong? We do not know your problem unless you state it.

      I could run your code and see what problems I encounter, but I should not HAVE to do that. You should provide an explanation of your problem. If you do provide a good explanation of the problem you are having you will probably get several good responses.

A reply falls below the community's threshold of quality. You may see it by logging in.