84 lines
2.5 KiB
Markdown
84 lines
2.5 KiB
Markdown
# Protein Translation
|
|
|
|
Translate RNA sequences into proteins.
|
|
|
|
RNA can be broken into three nucleotide sequences called codons, and then translated to a polypeptide like so:
|
|
|
|
RNA: `"AUGUUUUCU"` => translates to
|
|
|
|
Codons: `"AUG", "UUU", "UCU"`
|
|
=> which become a polypeptide with the following sequence =>
|
|
|
|
Protein: `"Methionine", "Phenylalanine", "Serine"`
|
|
|
|
There are 64 codons which in turn correspond to 20 amino acids; however, all of the codon sequences and resulting amino acids are not important in this exercise. If it works for one codon, the program should work for all of them.
|
|
However, feel free to expand the list in the test suite to include them all.
|
|
|
|
There are also three terminating codons (also known as 'STOP' codons); if any of these codons are encountered (by the ribosome), all translation ends and the protein is terminated.
|
|
|
|
All subsequent codons after are ignored, like this:
|
|
|
|
RNA: `"AUGUUUUCUUAAAUG"` =>
|
|
|
|
Codons: `"AUG", "UUU", "UCU", "UAG", "AUG"` =>
|
|
|
|
Protein: `"Methionine", "Phenylalanine", "Serine"`
|
|
|
|
Note the stop codon terminates the translation and the final methionine is not translated into the protein sequence.
|
|
|
|
Below are the codons and resulting Amino Acids needed for the exercise.
|
|
|
|
Codon | Protein
|
|
:--- | :---
|
|
AUG | Methionine
|
|
UUU, UUC | Phenylalanine
|
|
UUA, UUG | Leucine
|
|
UCU, UCC, UCA, UCG | Serine
|
|
UAU, UAC | Tyrosine
|
|
UGU, UGC | Cysteine
|
|
UGG | Tryptophan
|
|
UAA, UAG, UGA | STOP
|
|
|
|
Learn more about [protein translation on Wikipedia](http://en.wikipedia.org/wiki/Translation_(biology))
|
|
|
|
## Running tests
|
|
|
|
Execute the tests with:
|
|
|
|
```bash
|
|
$ elixir protein_translation_test.exs
|
|
```
|
|
|
|
### Pending tests
|
|
|
|
In the test suites, all but the first test have been skipped.
|
|
|
|
Once you get a test passing, you can unskip the next one by
|
|
commenting out the relevant `@tag :pending` with a `#` symbol.
|
|
|
|
For example:
|
|
|
|
```elixir
|
|
# @tag :pending
|
|
test "shouting" do
|
|
assert Bob.hey("WATCH OUT!") == "Whoa, chill out!"
|
|
end
|
|
```
|
|
|
|
Or, you can enable all the tests by commenting out the
|
|
`ExUnit.configure` line in the test suite.
|
|
|
|
```elixir
|
|
# ExUnit.configure exclude: :pending, trace: true
|
|
```
|
|
|
|
For more detailed information about the Elixir track, please
|
|
see the [help page](http://exercism.io/languages/elixir).
|
|
|
|
## Source
|
|
|
|
Tyler Long
|
|
|
|
## Submitting Incomplete Solutions
|
|
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|