Package: pysplicer
PySplicer=========A frequency/bias codon optimisation system with early NGG avoidance and optionalIUPAC match avoidance.By Cathal Garvey, released under the GNU Affero General Public License.Installation------------PySplicer is pure python and requires no compilation or building for basic function.For optimal output, you should also install the ViennaRNA package using the downloads[here](http://www.tbi.univie.ac.at/~ronny/RNA/index.html); you can do this beforeor after installing PySplicer, it doesn't matter.The easiest way to install pysplicer is using pip-3.2, if you have it installed.easy-install may also work to install pysplicer without headaches.The next best thing is to download the latest version from the github repository,enter the directory through the terminal, and call "python3 setup.py install"with administrator/sudo/root privileges.Usage-----PySplicer consists of a Python Module and a python script for terminal usage.For usage information on the script, after installing this package with pip-3.2or setup.py, try typing "pysplicer --help" into the terminal.You'll need ViennaRNA installed to make use of the --use-vienna option; if you can,do! This will make PySplicer use RNAfold instead of using its own highly terriblealgorithm for structure analysis, which will certainly generate better results.Do be aware that, even with ViennaRNA installed, structure prediction is certainlythe most computationally intensive part of PySplicer's work, so expect compilationsof large sequences to take a long time.What is PySplicer?------------------PySplicer is a Free Software implementation of a codon optimisation method wherecodons are selected based on a frequency table, usually to match target hostfrequencies but also (where possible) to match empirically determinedhigh-expression tables which usually give better expression results.PySplicer does not (yet) implement all best practices for codon optimisation,but compared to most available Free Software codon optimisation programs, it ispretty good. While most programs still make use of the somewhat-discredited"best pick" method, where the most common codon in "highly expressed" genes ispreferentially selected wherever possible, the frequency-matching approach appearsto deliver better results in general, and a frequency matching approach thatbiases towards codons whose tRNAs remain charged under starvation conditionsappears to give even better results.PySplicer can be directed to avoid DNA/RNA sequences in the final output, whichit attempts to accomplish firstly be generating large numbers of candidates andwalking through them to avoid such sites, and then by attempting to substitutesynonymous codons at each such site. Subsequences to avoid can be given in fullextended IUPAC notation, so that AWGS can refer to AAGG, AAGC, ATGG,or ATGC. It *may* be relevant to note that all sequences are converted to DNAinternally prior to use for the sake of internal consistency,Structure avoidance/removal process can have a significant and positive impact onsuccessful gene expression, particularly when structures in the 5' UTR or thefirst few codons of a CDS are eliminated.PySplicer can outsource structure prediction to ViennaRNA tools if they arepresent and the option is selected. This is *highly recommended*. Detectedstructures are then removed using the same methods as for sequences nominatedfor avoidance, as above.If ViennaRNA is not installed, PySplicer will attempt to map simple hairpinstructures, but this is far slower, less reliable, generally less useful, andwill omit searches for other or more complex structures. It's only an optionwhere ViennaRNA is not present (see above for a ViennaRNA download page).PySplicer makes a special effort to avoid "NGG" codons in the first few codonsof the output sequence, as these are associated with failed transcription, andattempts to bias slightly towards "A" nucleotides to somewhat reduce theodds of a secondary structure forming in the critical 5' leader region.Finally, PySplicer aims for a *lower* codon adaptation index in the initial codonsof the output sequence, in keeping with the "on-ramp" hypothesis for avoidance ofribosomal collision. In some empirical studies a lower CAI in initial codons isassociated with higher expression overall, though PySplicer sadly cannot be comparedempirically against other adaptation solutions due to funding constraints, so fornow this is taken on faith.Using Your Own Tables---------------------If a codon usage table is not available, a JSON-formatted file containing acodon usage table can be specified. The format should be a JSON Object (akin toa python dict with the same syntax) containing single-letter amino keys, whichpoint to dicts containing Codon keys, which each point to float values representingrelative frequencies. Keys are all uppercase DNA, not RNA. For example:{"A": {"GCA": 0.15, "GCC": 0.18, "GCG": 0.51, "GCT": 0.15},"C": {"TGC": 0.65, "TGT": 0.35}...}To simplify this process, a utility script is included, "cud-to-pysplicer", whichwill accept a filename of a Codon Usage Database (CUD) frequency table and willtranslate this table to a pysplicer-format JSON table. It accepts an optional"-t" switch which specifies with codon table to use; it defaults to the "standard"table. Calling cut-to-pysplicer with the "--help" switch will print usageinformation and also a list of possible translation tables to specify.