I have BLAST tabular output with an added second column, such that each line of the data looks like:

[0] queryspecies [1] subjspecies [2] subjID [3] percentidentity ...

The query species column contains multiple species and was blast against a multi-species database; column 2, subject species is non-unique, but the identifier for that subject species sequence in the 3rd col is unique.

For each query species, I want to return the subject identifier with the highest percent identity out of all those with the same subject species--query species pair.

I think this will involve a hash of hashes, using query species as keys for subject species, whose values are subject identifiers, plus some conditional evaluation of the percent identity and somewhere to store the highest percent ID. I'm not sure how to begin writing this, but would prefer to do so without using BioPerl. Any guidance would be of great assistance!

Mock Input:

qspecies1  subjectspecies1  subjsp1.seqA  30
qspecies1  subjectspecies1  subjsp1.seqB  90
qspecies1  subjectspecies1  subjsp1.seqC  100
qspecies1  subjectspecies1  subjsp1.seqD  40
qspecies1  subjectspecies2  subjsp2.seqA  100
qspecies1  subjectspecies2  subjsp2.seqB  12
qspecies2  subjectspecies1  subjsp1.seqD  30
qspecies2  subjectspecies1  subjsp1.seqE  90
qspecies2  subjectspecies2  subjsp2.seqC  10
qspecies2  subjectspecies2  subjsp2.seqD  70
qspecies2  subjectspecies3  subjsp3.seqA  80

Desired Output:

qspecies1  subjectspecies1  subjsp1.seqC  100
qspecies1  subjectspecies2  subjsp2.seqA  100
qspecies2  subjectspecies1  subjsp1.seqE  90
qspecies2  subjectspecies2  subjsp2.seqD  70
qspecies2  subjectspecies3  subjsp3.seqA  80

In reply to Parsing multispecies database BLAST output by Q.and

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.