This is a test version of Biostars. For the public version, visit https://www.biostars.org.
How To Plot A Dot Matrix When I Have A Matrix Of 0'S And 1'S

Hi All, I m quiet new to R Programming. My question may not be very wise, but would like to have some help as I explore more on R. Thanks in advance!

I have a matrix which was constructed based on comparing two sequences (say A and B) A="ATGCTAC" and B="ATCAGAT" and the matrix will be like M(1,1)=1,M(1,2)=1,M(1,3)=0. i.e., similar base positions with 1 and non-similar ones with 0. How can I construct a Dot Matrix plot?

Also if there is any code for Dot Matrix Alignment that uses window and stringency.

Anish

matrix plot

2 answers

You might have a look at the seqinr package.

This will give you a dot plot, though it uses boxes instead of dots.

library(seqinr)
help(dotPlot)
example(dotPlot)

And with your example:

dotPlot(seq1=strsplit("ATGCTAC","")[[1]],seq2=strsplit("ATCAGAT","")[[1]])

Here's an ascii answer in python for kicks:

import sys

def draw(A, B):
    return " %s\n" % A + "\n".join(b + "".join("\x1B[42m \x1b[0m" \
           if a == b else "\x1B[41m \x1B[0m" for a in A) for b in B)

print draw(sys.argv[1], sys.argv[2])

If you call it like:

python ansidot.py ATGCTAC ATCAGAT

It gives ascii output like:

alt text

Thank you very much for your solutions. Both did serve the purpose

Log in to answer this question.