Unconfigured Ad

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • HenrivdGeest
    Member
    • Feb 2012
    • 16

    #1

    fastest way to 'parse' fasta or fastq?

    I am looking for a real (High performace computing / HPC) fast fasta or fastq parsing program. I just want the most simple statistics imaginable:
    - number of reads
    - total nr of bases.
    Other stuff like average length/ATCG composition is nice, but not required.

    I searched the software page, tried some packages, wrote my own parsers but they are all slow.
    I am looking for something in C code, which can be super fast I hope.
    I also tried this simple bash code:
    " time grep -v '^>' ./test.fa | wc -m -l"

    which is 'fast' ( 30 seconds to scan 1 GB fasta (file in memory)
    My simple python script takes over a minute to scan this file. But I hope this can be done faster, or all in one script.


    If you want to scan gigabytes of files, it would be nice to have a very fast parser.

    Anyone who is aware of such program? Or, what do you think is the fastest program you know?
  • aggp11
    Member
    • Jun 2011
    • 87

    #2
    Hi,

    You could try the FASTQC package if you haven't already. It can take fastq/bam/sam files and gives most of the important statistics for a NGS run.

    Comment

    • husamia
      Member
      • Apr 2010
      • 66

      #3
      I suggest using native linux tools such as grep, sed, awk in multithreaded environment also 64 bit may be useful in some applications where it is supported. There is option of using CUDA with GPU to do super fast calculations.

      Comment

      • JackieBadger
        Senior Member
        • Mar 2009
        • 385

        #4
        PRINSEQ and FASTQC

        Comment

        • Richard Finney
          Senior Member
          • Feb 2009
          • 701

          #5
          If you're up for moding a couple of lines of code for your needs
          this should do the trick ...
          Code:
          #include <stdio.h>
          #include <string.h>
          #include <ctype.h>
          unsigned long int sum[5];
          unsigned long int basecount;
          unsigned long int readcount = 0;
          char s[512];
          int main()
          {
              register int i,j;
              char ch;
              basecount = 0;
              memset(sum,0,sizeof(sum));
              while (gets(s))
              {
                  if (s[0] == '>') continue; // skip fasta entry header
                  readcount++;
                  for (i=0;i<s[i];i++)
                  {
                      ch = toupper(s[i]);
                      if (ch == 'A') { sum[0]++; basecount++; }
                      else if (ch == 'C') { sum[1]++; basecount++; }
                      else if (ch == 'G') { sum[2]++; basecount++; }
                      else if (ch == 'T') { sum[3]++; basecount++; }
                      else if (ch == 'N') { sum[4]++; basecount++; }
                  }
                  memset(s,0,sizeof(s));
              }
              for (j=0;j<5;j++)
              {
                  if (j == 0) printf("A ");
                  else if (j == 1) printf("C ");
                  else if (j == 2) printf("G ");
                  else if (j == 3) printf("T ");
                  else if (j == 4) printf("N ");
                  printf("%ld ",sum[j]);
                  printf("\n");
              }
              printf("bases = %ld \n",basecount);
              printf("reads = %ld \n",readcount);
              return 0;
          }

          Comment

          • maubp
            Peter (Biopython etc)
            • Jul 2009
            • 1544

            #6
            If you don't want error checking Heng Li has a very fast FASTA/FASTQ parser in C which could easily be used for the basic information you requested (read count and total bases):

            Comment

            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, 10-15-2026, 10:52 AM
            0 responses
            16 views
            0 reactions
            Last Post SEQadmin2  
            Started by SEQadmin2, 10-14-2026, 05:39 AM
            0 responses
            21 views
            0 reactions
            Last Post SEQadmin2  
            Started by SEQadmin2, 10-13-2026, 09:56 AM
            0 responses
            22 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...