Process Coding Sequences of Transcripts

advertisement
Process Coding Sequences of Transcripts
Robert Glen Martin
School for the Talented and Gifted
Based on a project by
Dr. Jing Hu, PhD
Franklin & Marshall College
The Domain – Genetics
The domain for this lab assignment is genetics. You will be working with actual data from the
human chromosome 21. Specifically you will be working with a gene on chromosome 21 that is
known as ENSG00000160294.
Every cell in the human body has 46 chromosomes, two sets of 23 (one set from each biological
parent). Each of these chromosomes contains two long strands of deoxyribonucleic acid (DNA)
which are joined together in a double helix by hydrogen bonding. Each of these strands of DNA
contains information that a human organism needs to develop and function. This information
is encoded using four different nucleobases (bases) which are known as A, C, G, and T.
The 23 different human chromosomes contain over three billion total bases. These bases are
divided among approximately 32 thousand genes. A given gene can be used to produce several
different proteins which are necessary for various life functions. The basic process for the
creation of these proteins is as follows:
1. An enzyme splits the two DNA strands apart to “expose” the gene.
2. Portions of the gene on one strand are used to create messenger ribonucleic acid (mRNA).
RNA is made up of four different nucleobases (bases) which are known as A, C, G, and U.
The process to create these mRNA sequences is called transcription, and the resulting
mRNA sequence is called a transcript. The DNA that is used to produce a transcript is called
a DNA coding sequence. A single gene can be transcribed into several different transcripts.
3. Each of these transcripts is then used in a process called translation to produce a protein.
The bases on the mRNA transcript are used in groups of three called codons. Since there
are four possibilities for each of the three bases in a codon, there are 64 (43) possible
codons. 61 of these codons translate to 20 different amino acids (The code is redundant.
More than one codon translates to the same amino acid.). The remaining three codons act
Robert Glen Martin
-1-
7/4/2011
as stop codes. The codons are translated sequentially into amino acids until a stop code is
encountered. These amino acids are chained together into a protein.
NOTE: For various reasons, not all transcripts can be translated into a protein. The
problematic ones are called incomplete. To be complete, all of the following must be true
of a transcript:




It has to have at least two codons (six bases). This is because it needs to contain both a
start codon (see below) and a stop codon.
The number of bases in the transcript must be a multiple of three, so that it contains an
integral number of codons.
It must begin with the start codon AUG. And since AUG translates to amino acid "M"
(Methionine), all proteins created from this process begin with Methionine.
It must end with one of the three stop codons (UAG, UAA, or UGA). A stop codon
terminates the translation process. No amino acid is produced for a stop codon.
The Data Structures
This assignment provides plenty of opportunity to work with several standard different data
structures that you have already learned about in AP Computer Science A. These are Strings,
arrays, Lists, and ArrayLists. You will also be creating and using a new data structure, a
Dictionary.
Our Dictionary data structure is similar to a real dictionary. A real dictionary has multiple
entries, each of which consists of a word and a corresponding definition. Three operations we
might do with a real dictionary are
1. Use a word to lookup its corresponding definition.
2. Get all the words from the dictionary.
3. Get the whole dictionary (all the entries) in a printed form.
Our Dictionary data structure also has multiple entries, each of which has a key and a
corresponding value. It also has three similar operations to the ones listed above:
1. Use a key to lookup its corresponding value.
2. Get all the keys from the dictionary.
3. Get the whole dictionary (all the entries) in a String form which could then be printed.
Robert Glen Martin
-2-
7/4/2011
The Assignment
This assignment utilizes eight classes, four of which are related to the Dictionary data
structure. You will implement most of the code for six of these classes.




DictionaryEntry – represents a single key->value dictionary entry.
Dictionary – represents a dictionary. As you will see, we will only make objects of
subclasses of Dictionary. Therefore Dictionary is abstract.
DNA2RNADictionary – a Dictionary subclass that is used in the transcription
process. Each entry (key->value) is a DNA base->RNA base.
RNA2AminoAcidDictionary – a Dictionary subclass that is used in the
translation process. Each entry (key->value) is an mRNA Codon->Amino Acid.
You will also implement most of these two classes:


Transcript – represents a single transcript. In addition to the transcript mRNA
sequence, it also contains the corresponding DNA coding sequence and protein.
Gene – represents a gene from human chromosome 21. It contains one or more
transcripts.
The remaining two classes have been written for you:


Chromosome21 – this class represents the genes in human chromosome 21. You will
use this class to get a dictionary containing the transcript information of a given gene in
chromosome 21. Each of the returned dictionary entries will be a transcript ID->DNA
coding sequence pair.
ProcessCodingSequences – the application class that you will use to test your
code.
Important note: You will be writing most of the code for six different classes. These classes
have been started for you and contain all of the import statements, instance and class
variables, and the constructor and method headings. DO NOT ADD, REMOVE, or MODIFY any
of these items. YOU WILL ONLY WRITE THE BODIES OF THE CONSTRUCTORS and METHODS of
these classes.
Complete the bodies of the constructors and methods of the six classes. Use the provided
Javadocs, comments in the code, and the following instructions.
Robert Glen Martin
-3-
7/4/2011
1. Complete the DictionaryEntry class:
a. Complete the constructor. It needs to use the two parameters to initialize the two
instance variables. Note that you need to do something special since the names of the
parameters are identical to the names of the instance variables. Do not change the
names of either the parameters or the instance variables!
b. Replace the stubs for the two "getter" methods with appropriate method bodies.
2. Complete the Dictionary class:
a. Complete the constructor. Note that the List of DictionaryEntry objects will
actually be provided by a Dictionary subclass. It will use super to invoke this
constructor.
b. Replace the getValue stub with an appropriate method body. It should search
through the dictionary list until it finds a DictionaryEntry with a key that equals
the parameter key. It should then return that entry’s value. If no matching key can
be found, it should return null.
c. Replace the getKeys stub with an appropriate method body. It should create an array
to hold the keys in all of the entries of the dictionary list. Then it should traverse
dictionary to copy all of the keys to the new array. Then it should return the new
array.
d. Replace the toString stub with an appropriate method body. Make sure that your
returned String exactly follows the format described in the toString method
comments and Javadocs.
3. Complete the DNA2RNADictionary class as follows. Note that DNA2RNADictionary
is a subclass of Dictionary.
a. Replace the constructor stub with an appropriate body. The only thing we need to do is
create an ArrayList of four DictionaryEntry objects, and then use super to
pass that List to the Dictionary constructor. It might seem like we can do all of
this in the constructor, but the super statement must be the first statement of a
constructor, so there is no "room" in our constructor to create and initialize our List.
We solve this problem by making the parameter to super be a call to the private
helper method getDictionary. getDictionary will instantiate, initialize, and
Robert Glen Martin
-4-
7/4/2011
return the list.
b. Replace the getDictionary stub with an appropriate method body. Note that
getDictionary is static. This is necessary because the super call to the
Dictionary constructor takes place before the DNA2RNADictionary constructor
is actually running. As a result, the this reference required to call a non-static method
does not yet exist! The getDictionary method needs to create the ArrayList,
add the four appropriate DictionaryEntry objects to it, and then return it.
The four entries need to have DNA keys and corresponding RNA values. If you don’t
remember these complementary pairs, you can Google "DNA to RNA complementary
base pair". Remember that T is replaced by U in RNA.
c. You are now ready to run your first test by executing the
ProcessCodingSequences application. You can do this by executing your JCreator
project. Look at the “Step 1” code in ProcessCodingSequences. It creates a
DNA2RNADictionary object and then prints the result of an implicit toString call.
The first two lines of the output must exactly match the first two lines of sample output
beginning on page 8 of this assignment. Ignore the output for the later steps for now.
4. Complete the RNA2AminoAcidDictionary class as follows:
a. Replace the constructor stub with an appropriate body.
b. Replace the getDictionary stub with an appropriate method body. This dictionary
will have three-base codon keys and single-letter amino acid values. You will have 64
entries, one for each of the 43 different codons. You can find the codon to amino acid
correspondence by Goggling "RNA codon table". Be sure to find a table with one-letter
symbols for the amino acids. For example, the codon UUU translates to F
(Phenylalanine). Use "*" for each of the values for the three stop codons.
c. Execute the ProcessCodingSequences application again. Now the output for the
first two steps should be correct. This completes all your Dictionary related classes.
5. Complete the Transcript class. One of the two constructors and the toString
method have already been completed for you.
a. First look at the two parameter constructor that has been completed for you. In this
constructor, two of the instance variables are initialized with values from the
Robert Glen Martin
-5-
7/4/2011
parameters. The other two instance variables are initialized with calls to two private
helper methods.
b. Now complete the one parameter constructor that inputs the transcript identification
and DNA coding sequence from a file named filename. You can look at a sample
input file by viewing "DNA4Transcript284971.txt". You will use the
nextLine method of the Scanner object that has already been created for you.
Input the first line from the file. It contains the transcript identification starting in the
second column. The remaining lines contain the DNA coding sequence. You need to
input the remaining lines (until in.hasNext returns false), concatenate them
together, and store them into codingSequence. Finally call the two helper methods.
c. Replace the getTranscriptID, getCodingSequence, and getTranscript
"getter" method stubs with appropriate bodies. They are straight-forward.
d. Replace the getProtein "getter" method stub with an appropriate body.
getProtein should first determine if the transcript is incomplete by calling the
isIncompleteTranscript method. If the transcript is incomplete, then
"INCOMPLETE TRANSCRIPT" should be returned. Otherwise protein should be
returned.
e. Replace the isIncompleteTranscript stub with an appropriate method body.
Use the Javadocs or the method heading to figure out what must be done in this
method.
f. Complete the transcribe method. This method uses a DNA2RNADictionary
object to transcribe the DNA coding sequence into a transcript. The transcribe
method needs to traverse the codingSequence String to create the
transcript String.
g. Complete the translate method. This method uses an
RNA2AminoAcidDictionary object to translate the transcript into
protein. First, translate must use the isIncompleteTranscript method to
determine if the transcript is incomplete. If so, then protein should be set to null
and translate should return. Otherwise, the translate method needs to
traverse the transcript String to create the protein String. Each codon
(group of three contiguous bases) should be translated to an amino acid that is then
appended to the protein String. This continues until a stop codon is encountered
(the amino acid is "*"). When a stop codon is encountered, translate should
Robert Glen Martin
-6-
7/4/2011
return. This should happen even if the transcript String has not been
completely traversed.
h. The toString method has been completed for you, but you should review its code to
see what will be printed in the ProcessCodingSequences application.
i.
Execute the ProcessCodingSequences application again. Now the output for the
first four steps should be correct.
6. Finally, complete the Gene class.
a. Complete the constructor. It should use the parameter to initialize geneID. Then it
should call createTranscripts to initialize transcripts.
b. Complete the createTranscripts method. Use the Chromosome21 class’s
static getGeneTranscriptInformation method to retrieve the transcript
information for gene with identification geneID. Information about the
Chromosome21 class can be found in the Javadocs.
The getGeneTranscriptInformation method returns a Dictionary object.
This dictionary contains one entry for each transcript. They key is the transcript
identification, and the value is the DNA coding sequence.
Get the keys from the dictionary and traverse them to process each entry. Create a
Transcript object for each dictionary entry and add it to transcripts.
c. The toString method has been completed for you, but you should review its code to
see what will be printed in the ProcessCodingSequences application.
d. Execute the ProcessCodingSequences application one last time... Now the
output for all steps should be correct. Make sure that your output exactly matches the
output which starts on page 8.
Robert Glen Martin
-7-
7/4/2011
Required Output
1. Test DNA to RNA Dictionary:
[A -> U, C -> G, G -> C, T -> A]
2. Test
[UUU ->
AUU ->
UCU ->
ACU ->
UAU ->
AAU ->
UGU ->
AGU ->
RNA to
F, UUC
I, AUC
S, UCC
T, ACC
Y, UAC
N, AAC
C, UGC
S, AGC
Amino
-> F,
-> I,
-> S,
-> T,
-> Y,
-> N,
-> C,
-> S,
Acid Dictionary:
UUA -> L, UUG ->
AUA -> I, AUG ->
UCA -> S, UCG ->
ACA -> T, ACG ->
UAA -> *, UAG ->
AAA -> K, AAG ->
UGA -> *, UGG ->
AGA -> R, AGG ->
L,
M,
S,
T,
*,
K,
W,
R,
CUU
GUU
CCU
GCU
CAU
GAU
CGU
GGU
->
->
->
->
->
->
->
->
L,
V,
P,
A,
H,
D,
R,
G,
CUC
GUC
CCC
GCC
CAC
GAC
CGC
GGC
->
->
->
->
->
->
->
->
L,
V,
P,
A,
H,
D,
R,
G,
CUA
GUA
CCA
GCA
CAA
GAA
CGA
GGA
->
->
->
->
->
->
->
->
L,
V,
P,
A,
Q,
E,
R,
G,
CUG
GUG
CCG
GCG
CAG
GAG
CGG
GGG
->
->
->
->
->
->
->
->
L,
V,
P,
A,
Q,
E,
R,
G]
3. Test Transcript using two parameter constructor:
Transcript ID: Sample
DNA coding sequence:
TACTTTCCCTACACT
mRNA Transcript:
AUGAAAGGGAUGUGA
Protein:
MKGM
4. Test Transcript using one parameter constructor:
Transcript ID: ENST00000284971
DNA coding sequence:
TACTAAGAAGTCTCCGAGAAGTCCAAGAGGAGACAGTAAGCCAGTCGGCAGAGTCAGGTAAACGCCTCCTTGTAACCACA
ATGTCGTCACCGTAAATTATTCCTTGAACTAGGATATGTCTTTGAGAAACACCTGTTCTAATCTCTTATGTTTAGATTCG
CTGTCTGTAGACCTCCTGGACAACTACGATCAAGTCTCATAGTCGTTCTCGACCTCTCCCTCGAAAAATTCGAGTTCGTT
TACAAACCATTACGTCTGTACTTATGTAAAGGGTGGAAGTTTAAACTTCTAGGGTTTAAACTTCAGTAGCTTTTTGGGGT
CCGGACT
mRNA Transcript:
AUGAUUCUUCAGAGGCUCUUCAGGUUCUCCUCUGUCAUUCGGUCAGCCGUCUCAGUCCAUUUGCGGAGGAACAUUGGUGU
UACAGCAGUGGCAUUUAAUAAGGAACUUGAUCCUAUACAGAAACUCUUUGUGGACAAGAUUAGAGAAUACAAAUCUAAGC
GACAGACAUCUGGAGGACCUGUUGAUGCUAGUUCAGAGUAUCAGCAAGAGCUGGAGAGGGAGCUUUUUAAGCUCAAGCAA
AUGUUUGGUAAUGCAGACAUGAAUACAUUUCCCACCUUCAAAUUUGAAGAUCCCAAAUUUGAAGUCAUCGAAAAACCCCA
GGCCUGA
Protein:
MILQRLFRFSSVIRSAVSVHLRRNIGVTAVAFNKELDPIQKLFVDKIREYKSKRQTSGGPVDASSEYQQELERELFKLKQ
MFGNADMNTFPTFKFEDPKFEVIEKPQA
5. Test Gene:
Gene ID: ENSG00000160294
Number of transcripts: 4
Number of valid transcripts: 3
Number of incomplete transcripts: 1
Robert Glen Martin
-8-
7/4/2011
>Transcript 1:
Transcript ID: ENST00000291688
Protein: MNPTNPFSGQQPSAFSASSSNVGTLPSKPPFRFGQPSLFGQNSTLSGKSSGFSQVSSFPASSGVSHSSSVQ
TLGFTQTSSVGPFSGLEHTSTFVATSGPSSSSVLGNTGFSFKSPTSVGAFPSTSAFGQEAGEIVNSGFGKTEFSFKPLEN
AVFKPILGAESEPEKTQSQIASGFFTFSHPISSAPGGLAPFSFPQVTSSSATTSNFTFSKPVSSNNSLSAFTPALSNQNV
EEEKRGPKSIFGSSNNSFSSFPVSSAVLGEPFQASKAGVRQGCEEAVSQVEPLPSLMKGLKRKEDQDRSPRRHGHEPAED
SDPLSRGDHPPDKRPVRLNRPRGGTLFGRTIQDVFKSNKEVGRLGNKEAKKETGFVESAESDHMAIPGGNQSVLAPSRIP
GVNKEEETESREKKEDSLRGTPARQSNRSESTDSLGGLSPSEVTAIQCKNIPDYLNDRTILENHFGKIAKVQRIFTRRSK
KLAVVHFFDHASAALARKKGKSLHKDMAIFWHRKKISPNKKPFSLKEKKPGDGEVSPSTEDAPFQHSPLGKAAGRTGASS
LLNKSSPVKKPSLLKAHQFEGDSFDSASEGSEGLGPCVLSLSTLIGTVAETSKEKYRLLDQRDRIMRQARVKRTDLDKAR
TFVGTCLDMCPEKERYMRETRSQLSVFEVVPGTDQVDHAAAVKEYSRSSADQEEPLPHELRPLPVLSRTMDYLVTQIMDQ
KEGSLRDWYDFVWNRTRGIRKDITQQHLCDPLTVSLIEKCTRFHIHCAHFMCEEPMSSFDAKINNENMTKCLQSLKEMYQ
DLRNKGVFCASEAEFQGYNVLLSLNKGDILREVQQFHPAVRNSSEVKFAVQAFAALNSNNFVRFFKLVQSASYLNACLLH
CYFSQIRKDALRALNFAYTVSTQRSTIFPLDGVVRMLLFRDCEEATDFLTCHGLTVSDGCVELNRSAFLEPEGLSKTRKS
VFITRKLTVSVGEIVNGGPLPPVPRHTPVCSFNSQNKYIGESLAAELPVSTQRPGSDTVGGGRGEECGVEPDAPLSSLPQ
SLPAPAPSPVPLPPVLALTPSVAPSLFQLSVQPEPPPPEPVPMYSDEDLAQVVDELIQEALQRDCEEVGSAGAAYAAAAL
GVSNAAMEDLLTAATTGILRHIAAEEVSKERERREQERQRAEEERLKQERELVLSELSQGLAVELMERVMMEFVRETCSQ
ELKNAVETDQRVRVARCCEDVCAHLVDLFLVEEIFQTAKETLQELQCFCKYLQRWREAVTARKKLRRQMRAFPAAPCCVD
VSDRLRALAPSAECPIAEENLARGLLDLGHAGRLGISCTRLRRLRNKTAHQMKVQHFYQQLLSDVAWASLDLPSLVAEHL
PGRQEHVFWKLVLVLPDVEEQSPESCGRILANWLKVKFMGDEGSVDDTSSDAGGIQTLSLFNSLSSKGDQMISVNVCIKV
AHGALSDGAIDAVETQKDLLGASGLMLLLPPKMKSEDMAEEDVYWLSALLQLKQLLQAKPFQPALPLVVLVPSPGGDAVE
KEVEDGLMLQDLVSAKLISDYTVTEIPDTINDLQGSTKVLQAVQWLVSHCPHSLDLCCQTLIQYVEDGIGHEFSGRFFHD
RRERRLGGLASQEPGAIIELFNSVLQFLASVVSSEQLCDLSWPVTEFAEAGGSRLLPHLHWNAPEHLAWLKQAVLGFQLP
QMDLPPLGAPWLPVCSMVVQYASQIPSSRQTQPVLQSQVENLLHRTYCRWKSKSPSPVHGAGPSVMEIPWDDLIALCINH
KLRDWTPPRLPVTSEALSEDGQICVYFFKNDLKKYDVPLSWEQARLQTQKELQLREGRLAIKPFHPSANNFPIPLLHMHR
NWKRSTECAQEGRIPSTEDLMRGASAEELLAQCLSSSLLLEKEENKRFEDQLQQWLSEDSGAFTDLTSLPLYLPQTLVSL
SHTIEPVMKTSVTTSPQSDMMREQLQLSEATGTCLGERLKHLERLIRSSREEEVASELHLSALLDMVDI
>Transcript 2:
Transcript ID: ENST00000397708
Protein: MNPTNPFSGQQPSAFSASSSNVGTLPSKPPFRFGQPSLFGQNSTLSGKSSGFSQVSSFPASSGVSHSSSVQ
TLGFTQTSSVGPFSGLEHTSTFVATSGPSSSSVLGNTGFSFKSPTSVGAFPSTSAFGQEAGEIVNSGFGKTEFSFKPLEN
AVFKPILGAESEPEKTQSQIASGFFTFSHPISSAPGGLAPFSFPQVTSSSATTSNFTFSKPVSSNNSLSAFTPALSNQNV
EEEKRGPKSIFGSSNNSFSSFPVSSAVLGEPFQASKAGVRQGCEEAVSQVEPLPSLMKGLKRKEDQDRSPRRHGHEPAED
SDPLSRGDHPPDKRPVRLNRPRGGTLFGRTIQDVFKSNKEVGRLGNKEAKKETGFVESAESDHMAIPGGNQSVLAPSRIP
GVNKEEETESREKKEDSLRGTPARQSNRSESTDSLGGLSPSEVTAIQCKNIPDYLNDRTILENHFGKIAKVQRIFTRRSK
KLAVVHFFDHASAALARKKGKSLHKDMAIFWHRKKISPNKKPFSLKEKKPGDGEVSPSTEDAPFQHSPLGKAAGRTGASS
LLNKSSPVKKPSLLKAHQFEGDSFDSASEGSEGLGPCVLSLSTLIGTVAETSKEKYRLLDQRDRIMRQARVKRTDLDKAR
TFVGTCLDMCPEKERYMRETRSQLSVFEVVPGTDQVDHAAAVKEYSRSSADQEEPLPHELRPLPVLSRTMDYLVTQIMDQ
KEGSLRDWYDFVWNRTRGIRKDITQQHLCDPLTVSLIEKCTRFHIHCAHFMCEEPMSSFDAKINNENMTKCLQSLKEMYQ
DLRNKGVFCASEAEFQGYNVLLSLNKGDILREVQQFHPAVRNSSEVKFAVQAFAALNSNNFVRFFKLVQSASYLNACLLH
CYFSQIRKDALRALNFAYTVSTQRSTIFPLDGVVRMLLFRDCEEATDFLTCHGLTVSDGCVELNRSAFLEPEGLSKTRKS
VFITRKLTVSVGEIVNGGPLPPVPRHTPVCSFNSQNKYIGESLAAELPVSTQRPGSDTVGGGRGEECGVEPDAPLSSLPQ
SLPAPAPSPVPLPPVLALTPSVAPSLFQLSVQPEPPPPEPVPMYSDEDLAQVVDELIQEALQRDCEEVGSAGAAYAAAAL
GVSNAAMEDLLTAATTGILRHIAAEEVSKERERREQERQRAEEERLKQERELVLSELSQGLAVELMERVMMEFVRETCSQ
ELKNAVETDQRVRVARCCEDVCAHLVDLFLVEEIFQTAKETLQELQCFCKYLQRWREAVTARKKLRRQMRAFPAAPCCVD
VSDRLRALAPSAECPIAEENLARGLLDLGHAGRLGISCTRLRRLRNKTAHQMKVQHFYQQLLSDVAWASLDLPSLVAEHL
PGRQEHVFWKLVLVLPDVEEQSPESCGRILANWLKVKFMGDEGSVDDTSSDAGGIQTLSLFNSLSSKGDQMISVNVCIKV
AHGALSDGAIDAVETQKDLLGASGLMLLLPPKMKSEDMAEEDVYWLSALLQLKQLLQAKPFQPALPLVVLVPSPGGDAVE
KEVEDGLMLQDLVSAKLISDYTVTEIPDTINDLQGSTKVLQAVQWLVSHCPHSLDLCCQTLIQYVEDGIGHEFSGRFFHD
RRERRLGGLASQEPGAIIELFNSVLQFLASVVSSEQLCDLSWPVTEFAEAGGSRLLPHLHWNAPEHLAWLKQAVLGFQLP
QMDLPPLGAPWLPVCSMVVQYASQIPSSRQTQPVLQSQVENLLHRTYCRWKSKSPSPVHGAGPSVMEIPWDDLIALCINH
KLRDWTPPRLPVTSEALSEDGQICVYFFKNDLKKYDVPLSWEQARLQTQKELQLREGRLAIKPFHPSANNFPIPLLHMHR
NWKRSTECAQEGRIPSTEDLMRGASAEELLAQCLSSSLLLEKEENKRFEDQLQQWLSEDSGAFTDLTSLPLYLPQTLVSL
SHTIEPVMKTSVTTSPQSDMMREQLQLSEATGTCLGERLKHLERLIRSSREEEVASELHLSALLDMVDI
>Transcript 3:
Robert Glen Martin
-9-
7/4/2011
Transcript ID: ENST00000426537
Protein: INCOMPLETE TRANSCRIPT
>Transcript 4:
Transcript ID: ENST00000539647
Protein: MQVTFIYVCLKGLMLQDLVSAKLISDYTVTEIPDTINDLQGSTKVLQAVQWLVSHCPHSLDLCCQTLIQYV
EDGIGHEFSGRFFHDRRERRLGGLASQEPGAIIELFNSVLQFLASVVSSEQLCDLSWPVTEFAEAGGSRLLPHLHWNAPE
HLAWLKQAVLGFQLPQMDLPPLGAPWLPVCSMVVQYASQIPSSRQTQPVLQSQVENLLHRTYCRWKSKSPSPVHGAGPSV
MEIPWDDLIALCINHKLRDWTPPRLPVTSEALSEDGQICVYFFKNDLKKYDVPLSWEQARLQTQKELQLREGRLAIKPFH
PSANNFPIPLLHMHRNWKRSTECAQEGRIPSTEDLMRGASAEELLAQCLSSSLLLEKEENKRFEDQLQQWLSEDSGAFTD
LTSLPLYLPQTLVSLSHTIEPVMKTSVTTSPQSDMMREQLQLSEATGTCLGERLKHLERLIRSSREEEVASELHLSALLD
MVDI
Press any key to continue...
Robert Glen Martin
- 10 -
7/4/2011
Download