Header Leaderboard Ad

Collapse

Annotate contigs with BLAST hit names; remove contigs with no hit

Collapse

Announcement

Collapse
No announcement yet.
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Annotate contigs with BLAST hit names; remove contigs with no hit

    Hi. I'm wondering if anyone knows a tool I can use to annotate contigs with BLAST hit names (and remove contigs that don't have BLAST hits).

    I have an input .fa file containing the contigs and an output .xml file from blastx.

    For smaller input files, I've been using the GUI version of BLAST2GO, but it can't really handle more than 20,000 BLAST hits at once and my newest fasta file contains many hundreds of thousands of contigs.

    I could write my own bioperl script, but I wouldn't trust that it would work under all circumstances. Is there anything out there?


    Thanks!

  • #2
    For B2G are you using a local database?

    I run have been doing some annotation with B2G using a local database I setup and it works pretty well. I generate input blast.xml files using Stand Alone Blast first. Then run that through B2Gpipe.

    The BLASTing is the part that takes the longest, the actual annotation goes very quickly (around a day for ~60k sequences).

    Comment


    • #3
      Yes, I have a local database. But I don't want to annotate with GO info yet. I only want to sort out contigs that do and do not have blastx hits.

      Comment


      • #4
        This should be pretty simple to do using a unix script (maybe even a one liner).

        What format are your blast output files in?

        Comment


        • #5
          Originally posted by tboothby View Post
          This should be pretty simple to do using a unix script (maybe even a one liner).

          What format are your blast output files in?
          XML format generated with
          Code:
          >blastx -db caniformia_refseq_protein  -query mergedtrinity.fa -out blast_records.xml -evalue 1e-5 -outfmt 5 -show_gis -num_alignments 1 -num_descriptions 1 -num_threads 32

          Comment


          • #6
            To find blast queries WITHOUT hits, try something like grep? The -A option selects lines above your search term, while -B selects lines after the search term. You will have to look at your xml file and count the number of lines above and below the 'No hits found' line and input them into the command line below.

            grep -A -B 'No hits found' /path/to/your/file > /path/to/output/file

            If you want to get all the blast results that DID have hits try the command below (the -v selects the inverse of your search pattern and options):

            grep -v -A -B 'No hits found' /path/to/your/file > /path/to/output/file

            Comment


            • #7
              Yes, thanks. I can do this quite easily with grep. But as I said, what I wish to do is annotate (i.e., rename contigs) with BLAST hits and put them in one file, then remove contigs that lack BLAST hits (i.e., place them in another file).

              Comment


              • #8
                Bueller_007,

                In addition to tboothby's suggestion, which looks simple enough, a more complex way is to convert your xml file into a tab-based format. Then you can open it in excel and you will see the results right away - the contigs with no hits will only have the first column (contig ID).

                Comment


                • #9
                  Thanks, but as I've explained, this does not at all accomplish what I'm trying to do. (And the number of rows would overwhelm Excel in any case.)

                  I'll just write a bioperl script.

                  Comment


                  • #10
                    Did you manage to write that script Bueller? I'm mid way through doing something similar and would appreciate any perl tips...

                    Comment


                    • #11
                      Originally posted by nr23 View Post
                      Did you manage to write that script Bueller? I'm mid way through doing something similar and would appreciate any perl tips...
                      I don't remember... That effort has been lost to the sands of time. But in the end I think I just switched to the command-line version of Blast2GO and that mostly did what I was looking for.

                      Comment

                      Working...
                      X