Write a Python program that computes the global and local alignment score with the BLOSUM_62 subsitution matrix of a given DNA sequence in query.txt to several other ones in a file called database.txt. In both files the sequences are in non-interleaved FASTA format. You are free to choose your own design but I recommend the design below. First make a copy of main_database_search.py and alignment_function2.py and call them main_database_search2.py and alignment_functions2.py. Modify these with the steps below. 1. Read in the BLOSUM_62 matrix into a dictionary from the file called BLOSUM_62.txt posted on the course website. In your dictionary the keys would be pairs of amino acids and the value would be their substitution cost as given by the BLOSUM_62 matrix. For example let blosum62 be the name of the dictionary. Then blosum62['AA'] would have the value 4 and blosum62['AR'] would have the value -1. 2. Modify the function computeVandT to use the dictionary instead of match and mismatch costs. To do this you would have to change def computeVandT(seq1, seq2, V, T, m, mm, gap): to def computeVandT(seq1, seq2, V, T, blosum62, gap): where blosum62 is the dictionary created in step 1 above. Then modify the code if(seq2[i-1] == seq1[j-1]): D = V[i-1][j-1] + m else: D = V[i-1][j-1] + mm to use the dictionary instead of m and mm which are the match and mismatch costs respectively. 3. Do the same for computelocalVandT. 4. Modify optimal_alignment_score and optimal_local_alignment_score functions to use the dictionary instead of match and mismatch costs. In your main_database_search2.py program you would call these functions as score = alignment_functions.optimal_alignment_score(query, sequences[i], blosum62, g) instead of score = alignment_functions.optimal_alignment_score(query, sequences[i], m, mm, g) 5. Test your program on the two datasets provided on the course website. The answer with the BLOSUM_62 matrix for the first dataset (haemoglobin) is provided on the website. Your numbers should match them or be very close. HOW TO SUBMIT YOUR ASSIGNMENT: Submit your assignment main_database_search2.py and alignment_functions2.py files by copying them to the directory /afs/cad/courses/ccs/s12/bnfo/136/002/ where stands for your NJIT UCID. We will test your program by running it on a different dataset. DUE DATE: Submit your assignment before 11:30am Monday March 18th. Any file with a timestamp greater than 11:30am will not be considered for grading. EXTRA CREDIT: You have the opportunity to add 5 points to your grade of the first mid-term. So if your program is fully correct, which means it runs and produces correct output, then your score in the first exam will be increased by 5. Good luck!