Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Write a perl program that has functions defined for the follow: 1. function comp

ID: 3629838 • Letter: W

Question

Write a perl program that has functions defined for the follow:

1. function complement_and_reverse:
Takes a string that consists of any combination of A, G, C, or T and
produces the watson-crick complement. A->C, G->T, and vice versa. The
string is then reversed and that value is returned

invalid strings should throw an error (return to menu with error printed).

2. function create_windows:
Takes a string an integer that defines the window size, and an integer
value that defines a sliding amount. The function will return a list
of strings such that, the initial string is broken into windows defined
by the window size, that shift by the sliding amount.

ex: "ACGCGTGTTA", 4, 2 would return ["ACGC", "GCGT", "GTGT", "GTTA", "TA"]

invalid strings should throw an error (return to menu with error printed).

3. function get_reads:
Takes a string that is a path to a file containing one string per line.
The function will return a list of valid strings contained in the file

(a valid string only contains A, G, C, or T)

invalid file (doesnt exist, no permission) should throw error and return.

4. function write_windows:
Takes a string that is a path to a file and a list of strings (windows).
The function will open a file and write all windows to the file.

invalid file (doesnt exist, no permission) should throw error and return.

5. Finally make a menu that is user driver. it will have an option for each of
these commands.

Explanation / Answer

#!/usr/bin/perl -w

# Calculating the reverse complement of a strand of DNA

# The DNA

$DNA = 'ACGGGAGGACGGGAAAATTACTACGGCATTAGC';

print "Here is the starting DNA: $DNA ";

# Calculate the reverse complement

# XXX Warning: this attempt will fail! XXX

#

# First, copy the DNA into new variable $revcom

# (short for REVerse COMplement)

# Notice that variable names can use lowercase letters like

# "revcom" as well as uppercase like "DNA".

# In fact, lowercase is more common.

#

# It doesn't matter if we first reverse the string and then

# do the complementation; or if we first do the complementation

# and then reverse the string. Same result each time.

# So when we make the copy we'll do the reverse in the same statement.

$revcom = reverse $DNA;

# Next substitute all bases by their complements,

# A->T, T->A, G->C, C->G

$revcom =~ s/A/T/g;

$revcom =~ s/T/A/g;

$revcom =~ s/G/C/g;

$revcom =~ s/C/G/g;

2)a)

# Make a new copy of the DNA (see why we saved the original?)

$revcom = reverse $DNA;

# The Perl translate/transliterate command is just what we need:

$revcom =~ tr/ACGTacgt/TGCAtgca/;

print "Here is the reverse complement DNA: $revcom ";

exit;

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote