Genome Alignment Engine with Fortran

Leverage Fortran's high-performance array operations to analyze and compare DNA sequences at record speeds.

✅ F2018 🧬 Parallel Processing 🧬 GPU Optimized
View Alignment Details
🔬

DNA Sequence Analysis

Compare and align genomic DNA sequences using optimized string operations.

🧬

RNA Profiling

Analyze transcriptome data with parallelized nucleotide mapping.

GPU-Accelerated Matching

Achieve near-ideal speed-up of 10x with CUDA-enabled DNA sequence matching.

Alignment Projects

🧬

DNA Read Aligner

Align short-read sequencing data using optimized Smith-Waterman algorithm.

View Details →
🧬

RNA-Seq Analysis

Perform differential gene expression analysis with optimized transcriptome matching.

View Details →

Alignment Implementation


program genome_alignment
    implicit none
    character(len=50000) :: read1, read2
    integer :: i, j
    integer :: score[:], total[:]

    ! Read in DNA sequences
    open(11,file='data/read1.fasta')
    read(11,*) read1  
    close(11)

    open(12,file='data/read2.fasta')
    read(12,*) read2  
    close(12)

    !\$omp parallel do private(i,j) reduction(+:score) reduction(+:total)
    do i=1, len(trim(read1))
        do j=1, len(trim(read2))
            if (read1(i:i) != read2(j:j)) then
                score(this_image()) = score(this_image()) -1
            else
                score(this_image()) = score(this_image()) +1
            end if
            total(this_image()) = i + j
        end do
    end do
    !\$omp end parallel do
    
    print *, 'Alignment score is:', sum(score[1:16])

end program genome_alignment

                    
Build Your Own Aligner

Create high-performance genome aligners