{ "cells": [ { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def cycleToChromosome(nodes):\n", " \"\"\" Input: A sequence Nodes of integers between 1 and 2n.\n", " Output: The chromosome Chromosome containing n synteny blocks resulting from applying\n", " CycleToChromosome to Nodes.\"\"\"\n", " chromosome = []\n", " for j in range(len(nodes)/2):\n", " if nodes[2*j] < nodes[2*j + 1]:\n", " chromosome.append(nodes[2*j + 1]/2)\n", " else:\n", " chromosome.append(-nodes[2*j]/2)\n", " return chromosome " ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[1, -2, -3, 4]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "nodes = [1, 2, 4, 3, 6, 5, 7, 8]\n", "cycleToChromosome(nodes)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(-1 +2 -3 +4 -5 -6 +7 +8 +9 +10 -11 +12 -13 +14 +15 -16 -17 +18 -19 +20 -21 -22 -23 -24 +25 -26 -27 +28 -29 +30 +31 +32 -33 -34 +35 -36 -37 -38 -39 -40 -41 -42 +43 -44 -45 +46 -47 +48 -49 +50 -51 +52 +53 -54 +55 +56 -57 -58 +59 +60 +61 +62 -63 -64 -65 -66)\n" ] } ], "source": [ "f = open('input/rosalind_ba6g.txt')\n", "nodes = map(int, f.read().strip().lstrip('(').rstrip(')').split())\n", "ans = cycleToChromosome(nodes)\n", "output = '('+' '.join([['', '+'][value > 0] + str(value) for value in ans])+')'\n", "print(output)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.5" } }, "nbformat": 4, "nbformat_minor": 0 }