This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Finding Protein Sequence Coverage With R Or Python

Hello,

I am trying to find protein sequence coverage after pairwise sequence alignment by using the following formula

sequence coverage = (length of aligned residues/length of longest sequence)*100

How can I use this formula in R or in bio python? Is there any package available to calculate proein sequence coverage ?

protein r alignment biopython

How did you generate those alignments? For some programs (e.g. BLAST but also others) this kind of information is provided in the output.

@philippe Thanks for your comment. I used R to do pairwise sequence alignment using Pairwisealignment function(seqinr package) and calculated sequence identity by using pid function(Biostrings package)

1 answer

This function will give the sequence coverage

   seq.cov <- function(x){
    if(!class(x)=="PairwiseAlignedFixedSubject"){
      message('Only supports objects from class PairwiseAlignedFixedSubject')
      stop()
    }
    length.string1 <- x@subject@unaligned@ranges@width
    length.string2 <- x@pattern@unaligned@ranges@width
    align.length1 <- x@pattern@range@width
    align.length2 <- x@subject@range@width

    if(length.string1 >= length.string2){
      longest.length <- length.string1
    } else {
      longest.length <- length.string2
    }

    if(align.length1 >= align.length2){
      align.length <- align.length2
    } else {
      align.length <- align.length1
    }

    x.seq.cov <- ( align.length / longest.length ) * 100

    return(x.seq.cov)
  }

Test function:

  library(Biostrings )

  s1 <- DNAString("AGTATAGATGATAGAT")
  s2 <- DNAString("AGTAGATAGATGGATGATAGATA")

  palign1 <- pairwiseAlignment(s1, s2)

  palign2 <-
  pairwiseAlignment(s1, s2,
                    substitutionMatrix =
                    nucleotideSubstitutionMatrix(match = 2, mismatch = 10, baseOnly = TRUE))

  s3 <- DNAString("AGTATAGATGATAGATGGTCC")
  s4 <- DNAString("AGTAGATAGATGGATGATAGATA")

  palign3 <- pairwiseAlignment(s3, s4)

  palign4 <-
  pairwiseAlignment(s3, s4,
                    substitutionMatrix =
                    nucleotideSubstitutionMatrix(match = 2, mismatch = 10, baseOnly = TRUE))

  seq.cov(palign1)
  seq.cov(palign2)
  seq.cov(palign3)
  seq.cov(palign4)

This should do it.

@Mischa Thank you so much.

Log in to answer this question.