Seqanswers Leaderboard Ad

Collapse

Announcement

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

  • filter sequence by length

    Hi,

    To filter sequencesby length from a fasta file, I'm using now a bioperl script. But is there an another method (faster) ?

    here's my little script


    Code:
    #!/usr/bin/perl
    
    use warnings;
    use strict;
    use Bio::SeqIO;
    
    
    my $file = $ARGV[0]; 
    my $min = $ARGV[1];
    my $max = $ARGV[2];
    my $out = $ARGV[3];
    
    open (FILE, ">>$out") or die ("Error : Cannot open file $out for writing..!\n");
    
    my $seq_in  = Bio::SeqIO->new( -format => 'fasta',-file => $file);
    
    while( my $seq1 = $seq_in->next_seq() ) {	
    	
    	my $id  = $seq1->primary_id;
    	chomp $id;
    	my $seq = $seq1->seq;
    	chomp $seq;
    	my $lseq = length($seq);
    	if($lseq>=$min && $lseq <=$max){
    		print FILE ">",$id,"\n",$seq,"\n";	
    	}
    }

  • #2
    You could try Galaxy:

    Galaxy is a community-driven web-based analysis platform for life science research.


    It's very fast and you can do different type of analysis.

    Comment


    • #3
      Thanks,

      is it possible to have this tool in command line ?

      Comment


      • #4
        From Galaxy i don't think is possible. But probably if you search you may find a similar script.

        Comment


        • #5
          With Biopieces (www.biopieces.org) you can do:

          Code:
          read_fasta -i test.fna | grab -e 'SEQ_LEN > 10' | grab -e 'SEQ_LEN <= 100' | write_fasta -x
          Cheers,


          Martin

          Comment


          • #6
            Originally posted by Giorgio C View Post
            From Galaxy i don't think is possible. But probably if you search you may find a similar script.
            This is a command line tool that is included in the Galaxy distribution. I've included the code below.

            To get any tool that is included with Galaxy, follow the instructions at http://getgalaxy.org/. Tools are defined in the tools directory. Many will have dependencies (although the one below does not).

            Code:
            #!/usr/bin/env python
            """
            Input: fasta, minimal length, maximal length
            Output: fasta
            Return sequences whose lengths are within the range.
            """
            
            import sys, os
            
            assert sys.version_info[:2] >= ( 2, 4 )
            
            def stop_err( msg ):
                sys.stderr.write( msg )
                sys.exit()
            
            def __main__():
                input_filename = sys.argv[1]
                try:
                    min_length = int( sys.argv[2] )
                except:
                    stop_err( "Minimal length of the return sequence requires a numerical value." )
                try:
                    max_length = int( sys.argv[3] )
                except:
                    stop_err( "Maximum length of the return sequence requires a numerical value." )
                output_filename = sys.argv[4]
                output_handle = open( output_filename, 'w' )
                tmp_size = 0 #-1
                tmp_buf = ''
                at_least_one = 0
                for line in file(input_filename):
                    if not line or line.startswith('#'):
                        continue
                    if line[0] == '>':
                        if min_length <= tmp_size <= max_length or (min_length <= tmp_size and max_length == 0):
                            output_handle.write(tmp_buf)
                            at_least_one = 1
                        tmp_buf = line
                        tmp_size = 0                                                       
                    else:
                        if max_length == 0 or tmp_size < max_length:
                            tmp_size += len(line.rstrip('\r\n'))
                            tmp_buf += line
                # final flush of buffer
                if min_length <= tmp_size <= max_length or (min_length <= tmp_size and max_length == 0):
                    output_handle.write(tmp_buf.rstrip('\r\n'))
                    at_least_one = 1
                output_handle.close()
                if at_least_one == 0:
                    print "There is no sequence that falls within your range."
            
            if __name__ == "__main__" : __main__()

            Comment


            • #7
              Very useful. Thanks

              Comment

              Latest Articles

              Collapse

              • seqadmin
                Current Approaches to Protein Sequencing
                by seqadmin


                Proteins are often described as the workhorses of the cell, and identifying their sequences is key to understanding their role in biological processes and disease. Currently, the most common technique used to determine protein sequences is mass spectrometry. While still a valuable tool, mass spectrometry faces several limitations and requires a highly experienced scientist familiar with the equipment to operate it. Additionally, other proteomic methods, like affinity assays, are constrained...
                04-04-2024, 04:25 PM
              • seqadmin
                Strategies for Sequencing Challenging Samples
                by seqadmin


                Despite advancements in sequencing platforms and related sample preparation technologies, certain sample types continue to present significant challenges that can compromise sequencing results. Pedro Echave, Senior Manager of the Global Business Segment at Revvity, explained that the success of a sequencing experiment ultimately depends on the amount and integrity of the nucleic acid template (RNA or DNA) obtained from a sample. “The better the quality of the nucleic acid isolated...
                03-22-2024, 06:39 AM

              ad_right_rmr

              Collapse

              News

              Collapse

              Topics Statistics Last Post
              Started by seqadmin, 04-11-2024, 12:08 PM
              0 responses
              23 views
              0 likes
              Last Post seqadmin  
              Started by seqadmin, 04-10-2024, 10:19 PM
              0 responses
              24 views
              0 likes
              Last Post seqadmin  
              Started by seqadmin, 04-10-2024, 09:21 AM
              0 responses
              21 views
              0 likes
              Last Post seqadmin  
              Started by seqadmin, 04-04-2024, 09:00 AM
              0 responses
              52 views
              0 likes
              Last Post seqadmin  
              Working...
              X