Wednesday 18 February 2015

Program to find the Hamming distance and edit distance b/w two two DNA strings using dynamic programming in C.

#include<stdio.h>
#include<string.h>
int mymin(int,int,int);
int main()
{
char A[50]="ACACATGATAGACCCTATTAAACCCTTTGGGA";
char B[50]="GGGACACCATAATTTTAAACCGGGGCCGGG";
int array[50][50];
int len1,len2,i,j,count=0,a,b,c,v;
len1= strlen(B);
len2=strlen(A);
for(i=0;i<len1;i++)
{
if(A[i]!=B[i])
{
count++;
}
}
printf("Hamming Distance%d",count);
for(j=0;j<=len1;j++)
{
array[0][j]=j;
}
for(i=0;i<=len2;i++)
{
array[i][0]=i;
}
for(i=1;i<=len2;i++)
{
for(j=1;j<=len1;j++)
{
if(A[i-1]==B[j-1])
{
array[i][j]=array[i-1][j-1];
}
else
{
a=array[i-1][j]+1;
b=array[i][j-1]+1;
c=array[i-1][j-1]+1;
v= mymin(a,b,c);
array[i][j]=v;
}
}
}

printf("The edit distance is %d",array[len2][len1]);
return 0;
}

int mymin(int x, int y,int z)
{
if(x<y&&x<z)
return x;
else if(y<x&&y<z)
return y;
else
return z;

}

No comments:

Post a Comment