Exemple #1
0
    def test_group_by(self):
        # verify grouping logic
        grouped = iters.group_by(len, ['1', '12', 'a', '123', 'ab'])
        self.assertEqual({1: ['1', 'a'], 2: ['12', 'ab'], 3: ['123']}, grouped)

        # verify it works with any iterable - not only lists
        def gen():
            yield '1'
            yield '12'

        grouped = iters.group_by(len, gen())
        self.assertEqual({1: ['1'], 2: ['12']}, grouped)
Exemple #2
0
    def test_group_by(self):
        # verify grouping logic
        grouped = iters.group_by(len, ["1", "12", "a", "123", "ab"])
        self.assertEqual({1: ["1", "a"], 2: ["12", "ab"], 3: ["123"]}, grouped)

        # verify it works with any iterable - not only lists
        def gen():
            yield "1"
            yield "12"

        grouped = iters.group_by(len, gen())
        self.assertEqual({1: ["1"], 2: ["12"]}, grouped)
Exemple #3
0
    def test_group_by(self):
        # verify grouping logic
        grouped = iters.group_by(len, ['1', '12', 'a', '123', 'ab'])
        self.assertEqual({1: ['1', 'a'], 2: ['12', 'ab'], 3: ['123']}, grouped)

        # verify it works with any iterable - not only lists
        def gen():
            yield '1'
            yield '12'

        grouped = iters.group_by(len, gen())
        self.assertEqual({1: ['1'], 2: ['12']}, grouped)
Exemple #4
0
import json
import operator as op
from typing import NamedTuple, Optional

import requests
from Bio.Data import CodonTable
from fn.iters import group_by

REQUEST = "https://www.ebi.ac.uk/proteins/api/coordinates/location/{prot}:{pos}"

_REVMAP = {'A': 'T', 'C': 'G', 'G': 'C', 'T': 'A'}

_STDTABLE = CodonTable.unambiguous_dna_by_id[1]
STDCODE = {
    acid: [codon for codon, _ in pairs]
    for acid, pairs in group_by(op.itemgetter(1),
                                _STDTABLE.forward_table.items()).items()
}
_MITOTABLE = CodonTable.unambiguous_dna_by_id[2]
MITOCODE = {
    acid: [codon for codon, _ in pairs]
    for acid, pairs in group_by(op.itemgetter(1),
                                _MITOTABLE.forward_table.items()).items()
}

Codon = NamedTuple('Region', [('contig', str), ('transcript', str),
                              ('forward', bool), ('number', int),
                              ('start', int), ('stop', int), ('tstart', int),
                              ('tstop', int)])

_extract_location = op.itemgetter('chromosome', 'ensemblTranslationId',
                                  'geneStart', 'geneEnd')