Unconfigured Ad

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Izal
    Junior Member
    • Jan 2018
    • 5

    #1

    Reciprocal Blast & Parse and Collect best hits

    Hi everyone,

    I'm novice doing reciprocal blast and I have spent a lot of time trying it. I don't know how to do a reciprocal blast and how to parse the best hits and compare & find matches. So, an advice would be a big help to me.

    I need to do a reciprocal Blast in Python (Jupyter) to identify same/ortholougs proteins bewteen two strains.

    - For that, first I make a db with the respective FASTA with the coding sequences.
    Code:
    !makeblastdb -in $fastap_1 -dbtype 'prot'
    !makeblastdb -in $fastap_2 -dbtype 'prot'
    - Then, I run blastp for both files:
    Code:
    blastp_ab = !blastp -query $fastap_1 -db $fastap_2 -out ab.txt
    blastp_ba = !blastp -query $fastap_2 -db $fastap_1 -out ba.txt
    Up to here everything works. **Now, I have to parse the blast results to collect best hits. I have tried it,** **but not even print "hello??"**

    If I pass as argument the file "ab.txt", the function "collect_best_hits" returns me an empty dictionary. And if I pass the handle "blastp_ab" as argument, "collect_best_hits" functions return me and advice of "blastall" and the empty dictionary:

    > no BLAST output. Check that blastall is in your PATH
    >
    > { }


    (Options)
    Code:
    #filename = "ab.txt"
    #filename = blastp_ab
    filename = open("ab.txt", "r")
    
    collect_best_hits(filename)

    The function contains:

    Code:
    import os
    import sys
    import csv
    import blastparser
    
    
    def collect_best_hits(filename):
           d = {}
           try:
                for n, record in enumerate(blastparser.parse_fp(filename)):
                    print "hola"
                    if n % 100 == 0:
                          print >>sys.stderr, 'loading 1 ...', n
                   
                    print "!-", n, record
        
                    best_score = None
                    for hit in record.hits:
                        print "!- ", hit, len(record.hits)
                        for match in hit.matches:
                            print "!- ", match, len(hit.matches)
                            query = record.query_name
                            if query.startswith('gi'):
                                query = query.split('|', 2)[2]
                            subject = hit.subject_name
        
                            score = match.score
                            print "!- ", score
        
                            # only keep the best set of scores for any query
                            if best_score and best_score > score:
                                continue
                            best_score = score
        
                            x = d.get(query, [])
                            x.append((subject, score))
                            d[query] = x
        
                        if best_score and best_score != score:
                            break
            except Exception as e:
                print(e)
            return d

    What I'm doing wrong?

    All help is welcome!

Latest Articles

Collapse

  • SEQadmin2
    Multiomic Liquid Biopsy: What DNA/RNA Panels Reveal That DNA Alone Can’t
    by SEQadmin2



    Tumors contain complex mixtures of cell populations that evolve in response to treatment and host-specific factors. Tissue biopsies provide only static snapshots of a tumor’s state. But what if we could follow that evolution over time using a minimally invasive technique?

    Liquid biopsies can detect tumor-derived material circulating in the bloodstream, providing a way to study treatment response, detect emerging resistance, and discover new biomarkers. Circulating
    ...
    10-14-2026, 09:55 AM
  • SEQadmin2
    New Genomics Technologies Take Aim at Long-Standing Limits
    by SEQadmin2


    Researchers using sequencing and genomics tools often have to make trade-offs. They can choose between speed or scale, short reads or long-range information, or targeted panels or a view of the whole transcriptome. New technologies that have been released this year are built to address those tough choices.

    We asked six companies the same four questions to learn about their latest products. The new technologies bring a lot to the table, including rethinking sequencing
    ...
    09-28-2026, 10:25 AM

ad_right_rmr

Collapse

News

Collapse

Topics Statistics Last Post
Started by SEQadmin2, Yesterday, 10:52 AM
0 responses
8 views
0 reactions
Last Post SEQadmin2  
Started by SEQadmin2, 10-14-2026, 05:39 AM
0 responses
19 views
0 reactions
Last Post SEQadmin2  
Started by SEQadmin2, 10-13-2026, 09:56 AM
0 responses
15 views
0 reactions
Last Post SEQadmin2  
Started by SEQadmin2, 10-09-2026, 11:14 AM
0 responses
27 views
0 reactions
Last Post SEQadmin2  
Working...