Suppose we are interested in studying a DNA sequence which consists of four bases: A, C, G, and T. For example: TGCGTGCTACCACATCATGCAGTTTTCAAAGAAGAAAGCTCACCACAAA. Write a function of the form setupRandDNASeq(int n, char dna) which creates a random string of length Din. Write a function of the form int getBaseCount (char dina[], char base), where DNAstr is a DNA string and base is a single character The function returns how many times base occurs in the string. For example, in the above string. \"T\" occurs 10 times. Write a function called void getAlIBaseCounts(char dna[], int baseCountArray[]) that computes the statistics of how many fanes each have occurs m DMAstr. Here, baseCountArray[] will be a -dimensional array containing the counts for A, C, G and T. Write a function called printStats (char dna, int baseCountArray []) that takes in the DNA string and the 4-dimensional array of base counts and prints the percentages to the screen in the following format: Write a function of the form void blankOut (char dna[], char base, char dotStr[]) which given a DNA string creates a new string by blanking out (convert to.) (any character other than the specified base. For example, suppose base - \"T\", then the follow tag string will be created. dna: TGCGTGCTACCACATCATOCAGTTTTCAAAGAAGAAACCCTCACCACAAA dot Str: A. .A. A. .A... A...AAA. AA. AAA...A.. A.AAA Write a function called void displayAllBlankOut {char dna[]) which displays all 4 blank out strings. We talked about the follow mg string functions that are available m C (as long as you include string.h); int strlen(char str[]) void strepy {char strl[], char str 2 []) void strcat {char strl [], str2 []) Write your own versions of these functions, for example int paul_strlen(int char strr[]).
Here is the functions for the first 4 functions:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void setupRandDNASeq(int n, char dna[])
{
for(int i = 0; i < n; i++)
{
int x = rand() % 4;
if(x == 0)
dna[i] = \'A\';
else if(x == 1)
dna[i] = \'C\';
else if(x == 2)
dna[i] = \'G\';
else
dna[i] = \'T\';
}
dna[n] = \'\\0\';
}
int getBaseCount(char dna[], char base)
{
int count = 0;
for(int i = 0; i < strlen(dna); i++)
if(dna[i] == base)
count++;
return count;
}
void getAllBaseCounts(char dna[], int baseCountArray[])
{
for(int i = 0; i < 4; i++)
baseCountArray[i] = 0;
for(int i = 0; i < strlen(dna); i++)
if(dna[i] == \'A\')
baseCountArray[0]++;
else if(dna[i] == \'C\')
baseCountArray[1]++;
else if(dna[i] == \'G\')
baseCountArray[2]++;
else
baseCountArray[3]++;
}
void printStats(char dna[], int baseCountArray[])
{
getAllBaseCounts(dna, baseCountArray);
printf(\"Sequence: %s\", dna);
printf(\"Length: %lu\ \ \", strlen(dna));
printf(\"Base Statistics\ A: %.1f\ \", baseCountArray[0] / (float)strlen(dna));
printf(\"C: %.1f\ \", baseCountArray[1] / (float)strlen(dna));
printf(\"G: %.1f\ \", baseCountArray[2] / (float)strlen(dna));
printf(\"T: %.1f\ \", baseCountArray[3] / (float)strlen(dna));
}