Chapter 12. Inferring mRNA from Protein: Products and Reductions of Lists
As described in the Rosalind mRNA challenge, the goal of this program is to find the number of mRNA strings that could produce a given protein sequence. You’ll see that this number can become exceedingly large, so the final answer will be the remainder after dividing by a given value. I hope to show that I can turn the tables on regular expressions by trying to generate all the strings that could be matched by a particular pattern. I’ll also show how to create the products of numbers and lists as well as how to reduce any list of values to a single value, and along the way I’ll talk about some memory issues that can cause problems.
You will learn:
-
How to use the
functools.reduce()function to create a mathematicalproduct()function for multiplying numbers -
How to use Python’s modulo (
%) operator -
About buffer overflow problems
-
What monoids are
-
How to reverse a dictionary by flipping the keys and values
Getting Started
You should work in the 12_mrna directory of the repository.
Begin by copying the first solution to the program mrna.py:
$ cd 12_mrna/ $ cp solution1_dict.py mrna.py
As usual, inspect the usage first:
$ ./mrna.py -h usage: mrna.py [-h] [-m int] protein Inferring mRNA from Protein positional arguments: protein Input protein or fileoptional arguments: -h, --help show this help message ...