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
    Beyond CRISPR/Cas9: Understand, Choose, and Use the Right Genome Editing Tool
    by SEQadmin2



    CRISPR/Cas9 sparked the gene editing revolution for both research and therapeutics.1 But this system still showed severe issues that limited its applications. The most prominent were the heavy reliance on PAM sequences, delivery limitations, double-stranded breaks that prompt unintended edits and cell death, and editing inefficiency (both in targeting and in knock-in reliability).

    Despite this, “CRISPR helped turn genome editing from a specialized technique into
    ...
    Yesterday, 11:01 AM
  • SEQadmin2
    Proteomic Platforms: How to Choose the Right Analytical Strategy to Improve Detection and Clinical Applications
    by SEQadmin2


    Proteomics platforms are evolving rapidly, with advances in mass spectrometry and affinity-based approaches expanding what researchers can detect and at what scale. As the field moves toward deeper proteome coverage and clinical applications, scientists face an increasingly complex landscape of tools. This article will explore how researchers are navigating these choices to find the right platform for their work.

    The systematic characterization of the human proteome has
    ...
    07-20-2026, 11:48 AM
  • SEQadmin2
    Advanced Sequencing Platforms Tackle Neuroscience’s Toughest Genomics Problems
    by SEQadmin2



    Genomics studies in neuroscience face a special challenge due to the brain’s complexity and scarcity of samples. Mapping changes in cell type and state using conventional next-generation sequencing methods remains challenging. Advances in technologies like single-cell sequencing, spatial transcriptomics, and long-read sequencing have opened the door to deeper studies of the brain and diseases like Alzheimer’s, amyotrophic lateral sclerosis (ALS), and schizophrenia.
    ...
    07-09-2026, 11:10 AM

ad_right_rmr

Collapse

News

Collapse

Topics Statistics Last Post
Started by SEQadmin2, Yesterday, 02:55 AM
0 responses
8 views
0 reactions
Last Post SEQadmin2  
Started by SEQadmin2, 07-24-2026, 12:17 PM
0 responses
12 views
0 reactions
Last Post SEQadmin2  
Started by SEQadmin2, 07-23-2026, 11:41 AM
0 responses
12 views
0 reactions
Last Post SEQadmin2  
Started by SEQadmin2, 07-20-2026, 11:10 AM
0 responses
24 views
0 reactions
Last Post SEQadmin2  
Working...