# Notebook from wikipathways/pathway-figure-ocr
Path: notebooks/pp_ahocorasick.ipynb

import csv
import json
import re

import ahocorasick
import requests
import requests_cache
import spacy_____no_output_____print(requests_cache.__file__)/nix/store/zdh62hs02jwlywk84ybqw26zqws5rlpi-python3-3.8.8-env/lib/python3.8/site-packages/requests_cache/__init__.py
requests_cache.install_cache("pfocr_cache")_____no_output_____hgnc_data_url = "https://www.genenames.org/cgi-bin/download/custom?col=gd_hgnc_id&col=gd_app_sym&col=gd_app_name&col=gd_status&col=gd_prev_sym&col=gd_aliases&col=gd_pub_acc_ids&col=gd_locus_type&col=gd_date_mod&col=family.id&col=gd_locus_group&col=gd_name_aliases&col=gd_date_sym_change&col=gd_pub_eg_id&col=family.name&col=gd_date_name_change&col=gd_prev_name&col=gd_date2app_or_res&status=Approved&hgnc_dbtag=on&order_by=gd_app_sym_sort&format=text&submit=submit"
hgnc_data = []
r = requests.get(hgnc_data_url, stream=True)
lines = (line.decode("utf-8") for line in r.iter_lines())
for record in csv.DictReader(lines, delimiter="\t"):
    hgnc_data.append(record)_____no_output_____

TODO: has the `with requests.get...:` format stopped working? Did it never work?_____no_output_____

len(hgnc_data)_____no_output_____hgnc_data[10]_____no_output_____protein_hgnc_data = []
for record in hgnc_data:
    if record["Locus group"] == "protein-coding gene":
        protein_hgnc_data.append(record)
len(protein_hgnc_data)_____no_output_____

What kinds of characters connect the base to the integer suffix?_____no_output_____

connector_re = re.compile("(.*?[a-zA-Z])(\W+?)?(\d+)$")
connectors = set()
for record in protein_hgnc_data:
    symbols = set([record["Approved symbol"]])
    for s in record["Previous symbols"].split(", "):
        symbols.add(s)
    for s in record["Alias symbols"].split(", "):
        symbols.add(s)

    for s in symbols:
        m = connector_re.match(s)
        if m:
            connector = m.group(2)
            int_suffix = int(m.group(3))
            connectors.add(connector)
            if not connector in [None, "-", "."]:
                print(s)
print(connectors)MGC:14091
TAF(II)170
IMAGE:4839025
IMAGE:4942737
IMAGE:5164497
G(gamma)13
Mt-GrpE#2
IMAGE:4798971
MGC:4834
ES/130
MGC:39976
TAF(I)41
MGC:8964
TAF(II)43
{'-', None, '/', '.', '#', ')', ':'}
int_suffix_re = re.compile("(.*?[a-zA-Z][\-\/\.#\)\:]?)(\d+)$")
m = int_suffix_re.match("M-12219")

if m:
    print(m.group(1))
    print(m.group(2))M-
12219
gene_terms = set()
gene_term_bases = set()
int_suffixes_by_gene_term_base = dict()
for record in protein_hgnc_data:
    symbols = set([record["Approved symbol"]])
    for s in record["Previous symbols"].split(", "):
        symbols.add(s)
    for s in record["Alias symbols"].split(", "):
        symbols.add(s)

    for s in symbols:
        gene_terms.add(s)
        m = int_suffix_re.match(s)
        if m:
            gene_term_base = m.group(1)
            gene_term_bases.add(gene_term_base)
            int_suffix = int(m.group(2))
            if gene_term_base in int_suffixes_by_gene_term_base:
                int_suffixes_by_gene_term_base[gene_term_base].add(int_suffix)
            else:
                int_suffixes_by_gene_term_base[gene_term_base] = set(
                    [int_suffix]
                )
        else:
            gene_term_bases.add(s)
    approved_name = record["Approved name"]
    gene_term_bases.add(approved_name)
    gene_terms.add(approved_name)
    if "Alias names" in record and record["Alias names"]:
        for name in record["Alias names"].split(', "'):
            gene_terms.add(name)
            gene_term_bases.add(name.strip(' "'))
    if "Previous name" in record and record["Previous name"]:
        for name in record["Previous name"].split(', "'):
            gene_terms.add(name)
            gene_term_bases.add(name.strip(' "'))_____no_output_____len(int_suffixes_by_gene_term_base.keys())_____no_output_____len(gene_term_bases)_____no_output_____len(gene_terms)_____no_output_____

ocr_data = list()
with open(
    "/home/ariutta/Documents/pfocr/data/ocr_pfocr20200224_raw_dollar_tail50.json"
) as f:
    for line in f:
        start = line[:2]
        end = line[-2:]
        if start == "{}":
            print("Detected a line representing an empty object {}")
            continue
        elif start != "${":
            print(line[:10])
            raise Exception(f"Line started with {start}, not a dollar sign.")
        elif end != "$\n":
            print(line[-10:])
            raise Exception(f"Line started with {end}, not a dollar sign.")
        ocr_data.append(json.loads(line.strip("$\n")))
print(ocr_data[0])Detected a line representing an empty object {}
{'textAnnotations': [{'locale': 'en', 'description': 'AmyloidB dleavage\nand degradation\nLysosome\nGoldi body\nEndoplasmic\nreticulum (ER)\nMicroglia\nInflammation\nCeramide synthesis\n', 'boundingPoly': {'vertices': [{'x': 17, 'y': 99}, {'x': 687, 'y': 99}, {'x': 687, 'y': 466}, {'x': 17, 'y': 466}]}}, {'description': 'AmyloidB', 'boundingPoly': {'vertices': [{'x': 119, 'y': 99}, {'x': 207, 'y': 99}, {'x': 207, 'y': 122}, {'x': 119, 'y': 122}]}}, {'description': 'dleavage', 'boundingPoly': {'vertices': [{'x': 211, 'y': 99}, {'x': 303, 'y': 99}, {'x': 303, 'y': 124}, {'x': 211, 'y': 124}]}}, {'description': 'and', 'boundingPoly': {'vertices': [{'x': 129, 'y': 130}, {'x': 162, 'y': 130}, {'x': 162, 'y': 145}, {'x': 129, 'y': 145}]}}, {'description': 'degradation', 'boundingPoly': {'vertices': [{'x': 171, 'y': 127}, {'x': 284, 'y': 127}, {'x': 284, 'y': 150}, {'x': 171, 'y': 150}]}}, {'description': 'Lysosome', 'boundingPoly': {'vertices': [{'x': 539, 'y': 240}, {'x': 630, 'y': 240}, {'x': 630, 'y': 261}, {'x': 539, 'y': 261}]}}, {'description': 'Goldi', 'boundingPoly': {'vertices': [{'x': 518, 'y': 295}, {'x': 576, 'y': 296}, {'x': 576, 'y': 314}, {'x': 518, 'y': 313}]}}, {'description': 'body', 'boundingPoly': {'vertices': [{'x': 580, 'y': 295}, {'x': 625, 'y': 295}, {'x': 625, 'y': 316}, {'x': 580, 'y': 316}]}}, {'description': 'Endoplasmic', 'boundingPoly': {'vertices': [{'x': 293, 'y': 330}, {'x': 410, 'y': 330}, {'x': 410, 'y': 353}, {'x': 293, 'y': 353}]}}, {'description': 'reticulum', 'boundingPoly': {'vertices': [{'x': 281, 'y': 358}, {'x': 373, 'y': 358}, {'x': 373, 'y': 376}, {'x': 281, 'y': 376}]}}, {'description': '(ER)', 'boundingPoly': {'vertices': [{'x': 382, 'y': 360}, {'x': 417, 'y': 360}, {'x': 417, 'y': 380}, {'x': 382, 'y': 380}]}}, {'description': 'Microglia', 'boundingPoly': {'vertices': [{'x': 17, 'y': 341}, {'x': 105, 'y': 342}, {'x': 105, 'y': 366}, {'x': 17, 'y': 365}]}}, {'description': 'Inflammation', 'boundingPoly': {'vertices': [{'x': 23, 'y': 417}, {'x': 148, 'y': 417}, {'x': 148, 'y': 436}, {'x': 23, 'y': 436}]}}, {'description': 'Ceramide', 'boundingPoly': {'vertices': [{'x': 509, 'y': 441}, {'x': 595, 'y': 442}, {'x': 595, 'y': 465}, {'x': 509, 'y': 464}]}}, {'description': 'synthesis', 'boundingPoly': {'vertices': [{'x': 602, 'y': 442}, {'x': 687, 'y': 443}, {'x': 687, 'y': 466}, {'x': 602, 'y': 465}]}}], 'fullTextAnnotation': {'text': 'AmyloidB dleavage\nand degradation\nLysosome\nGoldi body\nEndoplasmic\nreticulum (ER)\nMicroglia\nInflammation\nCeramide synthesis\n', 'pages': [{'width': 731, 'blocks': [{'property': {'detectedLanguages': [{'confidence': 1, 'languageCode': 'en'}]}, 'blockType': 'TEXT', 'paragraphs': [{'words': [{'symbols': [{'text': 'A', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 119, 'y': 104}, {'x': 130, 'y': 104}, {'x': 130, 'y': 118}, {'x': 119, 'y': 118}]}}, {'text': 'm', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 133, 'y': 107}, {'x': 148, 'y': 107}, {'x': 148, 'y': 118}, {'x': 133, 'y': 118}]}}, {'text': 'y', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 151, 'y': 107}, {'x': 160, 'y': 107}, {'x': 160, 'y': 122}, {'x': 151, 'y': 122}]}}, {'text': 'l', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 162, 'y': 103}, {'x': 164, 'y': 103}, {'x': 164, 'y': 118}, {'x': 162, 'y': 118}]}}, {'text': 'o', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 167, 'y': 101}, {'x': 177, 'y': 101}, {'x': 177, 'y': 118}, {'x': 167, 'y': 118}]}}, {'text': 'i', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 180, 'y': 103}, {'x': 182, 'y': 103}, {'x': 182, 'y': 118}, {'x': 180, 'y': 118}]}}, {'text': 'd', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 185, 'y': 103}, {'x': 194, 'y': 103}, {'x': 194, 'y': 118}, {'x': 185, 'y': 118}]}}, {'text': 'B', 'property': {'detectedBreak': {'type': 'SPACE'}, 'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 198, 'y': 99}, {'x': 207, 'y': 99}, {'x': 207, 'y': 122}, {'x': 198, 'y': 122}]}}], 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 119, 'y': 99}, {'x': 207, 'y': 99}, {'x': 207, 'y': 122}, {'x': 119, 'y': 122}]}}, {'symbols': [{'text': 'd', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 211, 'y': 99}, {'x': 229, 'y': 99}, {'x': 229, 'y': 124}, {'x': 211, 'y': 124}]}}, {'text': 'l', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 230, 'y': 99}, {'x': 237, 'y': 99}, {'x': 237, 'y': 124}, {'x': 230, 'y': 124}]}}, {'text': 'e', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 238, 'y': 99}, {'x': 242, 'y': 99}, {'x': 242, 'y': 124}, {'x': 238, 'y': 124}]}}, {'text': 'a', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 243, 'y': 99}, {'x': 259, 'y': 99}, {'x': 259, 'y': 124}, {'x': 243, 'y': 124}]}}, {'text': 'v', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 260, 'y': 99}, {'x': 263, 'y': 99}, {'x': 263, 'y': 124}, {'x': 260, 'y': 124}]}}, {'text': 'a', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 264, 'y': 99}, {'x': 272, 'y': 99}, {'x': 272, 'y': 124}, {'x': 264, 'y': 124}]}}, {'text': 'g', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 273, 'y': 99}, {'x': 285, 'y': 99}, {'x': 285, 'y': 124}, {'x': 273, 'y': 124}]}}, {'text': 'e', 'property': {'detectedBreak': {'type': 'EOL_SURE_SPACE'}, 'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 286, 'y': 99}, {'x': 303, 'y': 99}, {'x': 303, 'y': 124}, {'x': 286, 'y': 124}]}}], 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 211, 'y': 99}, {'x': 303, 'y': 99}, {'x': 303, 'y': 124}, {'x': 211, 'y': 124}]}}, {'symbols': [{'text': 'a', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 129, 'y': 135}, {'x': 138, 'y': 135}, {'x': 138, 'y': 145}, {'x': 129, 'y': 145}]}}, {'text': 'n', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 141, 'y': 135}, {'x': 150, 'y': 135}, {'x': 150, 'y': 145}, {'x': 141, 'y': 145}]}}, {'text': 'd', 'property': {'detectedBreak': {'type': 'SPACE'}, 'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 154, 'y': 130}, {'x': 162, 'y': 130}, {'x': 162, 'y': 145}, {'x': 154, 'y': 145}]}}], 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 129, 'y': 130}, {'x': 162, 'y': 130}, {'x': 162, 'y': 145}, {'x': 129, 'y': 145}]}}, {'symbols': [{'text': 'd', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 171, 'y': 127}, {'x': 187, 'y': 127}, {'x': 187, 'y': 150}, {'x': 171, 'y': 150}]}}, {'text': 'e', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 188, 'y': 127}, {'x': 195, 'y': 127}, {'x': 195, 'y': 150}, {'x': 188, 'y': 150}]}}, {'text': 'g', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 196, 'y': 127}, {'x': 207, 'y': 127}, {'x': 207, 'y': 150}, {'x': 196, 'y': 150}]}}, {'text': 'r', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 208, 'y': 127}, {'x': 215, 'y': 127}, {'x': 215, 'y': 150}, {'x': 208, 'y': 150}]}}, {'text': 'a', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 216, 'y': 127}, {'x': 239, 'y': 127}, {'x': 239, 'y': 150}, {'x': 216, 'y': 150}]}}, {'text': 'd', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 240, 'y': 127}, {'x': 243, 'y': 127}, {'x': 243, 'y': 150}, {'x': 240, 'y': 150}]}}, {'text': 'a', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 244, 'y': 127}, {'x': 251, 'y': 127}, {'x': 251, 'y': 150}, {'x': 244, 'y': 150}]}}, {'text': 't', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 252, 'y': 127}, {'x': 259, 'y': 127}, {'x': 259, 'y': 150}, {'x': 252, 'y': 150}]}}, {'text': 'i', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 260, 'y': 127}, {'x': 263, 'y': 127}, {'x': 263, 'y': 150}, {'x': 260, 'y': 150}]}}, {'text': 'o', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 264, 'y': 127}, {'x': 279, 'y': 127}, {'x': 279, 'y': 150}, {'x': 264, 'y': 150}]}}, {'text': 'n', 'property': {'detectedBreak': {'type': 'EOL_SURE_SPACE'}, 'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 280, 'y': 127}, {'x': 284, 'y': 127}, {'x': 284, 'y': 150}, {'x': 280, 'y': 150}]}}], 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 171, 'y': 127}, {'x': 284, 'y': 127}, {'x': 284, 'y': 150}, {'x': 171, 'y': 150}]}}], 'property': {'detectedLanguages': [{'confidence': 1, 'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 119, 'y': 99}, {'x': 303, 'y': 99}, {'x': 303, 'y': 150}, {'x': 119, 'y': 150}]}}], 'boundingBox': {'vertices': [{'x': 119, 'y': 99}, {'x': 303, 'y': 99}, {'x': 303, 'y': 150}, {'x': 119, 'y': 150}]}}, {'property': {'detectedLanguages': [{'confidence': 1, 'languageCode': 'en'}]}, 'blockType': 'TEXT', 'paragraphs': [{'words': [{'symbols': [{'text': 'L', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 539, 'y': 240}, {'x': 556, 'y': 240}, {'x': 556, 'y': 261}, {'x': 539, 'y': 261}]}}, {'text': 'y', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 557, 'y': 240}, {'x': 567, 'y': 240}, {'x': 567, 'y': 261}, {'x': 557, 'y': 261}]}}, {'text': 's', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 568, 'y': 240}, {'x': 575, 'y': 240}, {'x': 575, 'y': 261}, {'x': 568, 'y': 261}]}}, {'text': 'o', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 576, 'y': 240}, {'x': 589, 'y': 240}, {'x': 589, 'y': 261}, {'x': 576, 'y': 261}]}}, {'text': 's', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 590, 'y': 240}, {'x': 597, 'y': 240}, {'x': 597, 'y': 261}, {'x': 590, 'y': 261}]}}, {'text': 'o', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 598, 'y': 240}, {'x': 604, 'y': 240}, {'x': 604, 'y': 261}, {'x': 598, 'y': 261}]}}, {'text': 'm', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 605, 'y': 240}, {'x': 622, 'y': 240}, {'x': 622, 'y': 261}, {'x': 605, 'y': 261}]}}, {'text': 'e', 'property': {'detectedBreak': {'type': 'EOL_SURE_SPACE'}, 'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 623, 'y': 240}, {'x': 630, 'y': 240}, {'x': 630, 'y': 261}, {'x': 623, 'y': 261}]}}], 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 539, 'y': 240}, {'x': 630, 'y': 240}, {'x': 630, 'y': 261}, {'x': 539, 'y': 261}]}}], 'property': {'detectedLanguages': [{'confidence': 1, 'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 539, 'y': 240}, {'x': 630, 'y': 240}, {'x': 630, 'y': 261}, {'x': 539, 'y': 261}]}}], 'boundingBox': {'vertices': [{'x': 539, 'y': 240}, {'x': 630, 'y': 240}, {'x': 630, 'y': 261}, {'x': 539, 'y': 261}]}}, {'property': {'detectedLanguages': [{'confidence': 1, 'languageCode': 'en'}]}, 'blockType': 'TEXT', 'paragraphs': [{'words': [{'symbols': [{'text': 'G', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 518, 'y': 295}, {'x': 544, 'y': 295}, {'x': 544, 'y': 313}, {'x': 518, 'y': 313}]}}, {'text': 'o', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 545, 'y': 295}, {'x': 551, 'y': 295}, {'x': 551, 'y': 313}, {'x': 545, 'y': 313}]}}, {'text': 'l', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 552, 'y': 295}, {'x': 559, 'y': 295}, {'x': 559, 'y': 313}, {'x': 552, 'y': 313}]}}, {'text': 'd', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 560, 'y': 295}, {'x': 570, 'y': 295}, {'x': 570, 'y': 313}, {'x': 560, 'y': 313}]}}, {'text': 'i', 'property': {'detectedBreak': {'type': 'SPACE'}, 'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 571, 'y': 296}, {'x': 576, 'y': 296}, {'x': 576, 'y': 314}, {'x': 571, 'y': 314}]}}], 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 518, 'y': 295}, {'x': 576, 'y': 296}, {'x': 576, 'y': 314}, {'x': 518, 'y': 313}]}}, {'symbols': [{'text': 'b', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 580, 'y': 297}, {'x': 589, 'y': 297}, {'x': 589, 'y': 312}, {'x': 580, 'y': 312}]}}, {'text': 'o', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 591, 'y': 295}, {'x': 602, 'y': 295}, {'x': 602, 'y': 315}, {'x': 591, 'y': 315}]}}, {'text': 'd', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 604, 'y': 297}, {'x': 613, 'y': 297}, {'x': 613, 'y': 312}, {'x': 604, 'y': 312}]}}, {'text': 'y', 'property': {'detectedBreak': {'type': 'EOL_SURE_SPACE'}, 'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 616, 'y': 301}, {'x': 625, 'y': 301}, {'x': 625, 'y': 316}, {'x': 616, 'y': 316}]}}], 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 580, 'y': 295}, {'x': 625, 'y': 295}, {'x': 625, 'y': 316}, {'x': 580, 'y': 316}]}}], 'property': {'detectedLanguages': [{'confidence': 1, 'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 518, 'y': 294}, {'x': 625, 'y': 295}, {'x': 625, 'y': 316}, {'x': 518, 'y': 315}]}}], 'boundingBox': {'vertices': [{'x': 518, 'y': 294}, {'x': 625, 'y': 295}, {'x': 625, 'y': 316}, {'x': 518, 'y': 315}]}}, {'property': {'detectedLanguages': [{'confidence': 0.54, 'languageCode': 'no'}, {'confidence': 0.46, 'languageCode': 'en'}]}, 'blockType': 'TEXT', 'paragraphs': [{'words': [{'symbols': [{'text': 'E', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 293, 'y': 334}, {'x': 300, 'y': 334}, {'x': 300, 'y': 352}, {'x': 293, 'y': 352}]}}, {'text': 'n', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 304, 'y': 338}, {'x': 312, 'y': 338}, {'x': 312, 'y': 353}, {'x': 304, 'y': 353}]}}, {'text': 'd', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 316, 'y': 333}, {'x': 325, 'y': 333}, {'x': 325, 'y': 348}, {'x': 316, 'y': 348}]}}, {'text': 'o', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 328, 'y': 338}, {'x': 337, 'y': 338}, {'x': 337, 'y': 348}, {'x': 328, 'y': 348}]}}, {'text': 'p', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 341, 'y': 338}, {'x': 350, 'y': 338}, {'x': 350, 'y': 352}, {'x': 341, 'y': 352}]}}, {'text': 'l', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 353, 'y': 333}, {'x': 355, 'y': 333}, {'x': 355, 'y': 348}, {'x': 353, 'y': 348}]}}, {'text': 'a', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 358, 'y': 338}, {'x': 366, 'y': 338}, {'x': 366, 'y': 349}, {'x': 358, 'y': 349}]}}, {'text': 's', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 369, 'y': 338}, {'x': 376, 'y': 338}, {'x': 376, 'y': 349}, {'x': 369, 'y': 349}]}}, {'text': 'm', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 379, 'y': 338}, {'x': 394, 'y': 338}, {'x': 394, 'y': 348}, {'x': 379, 'y': 348}]}}, {'text': 'i', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 398, 'y': 334}, {'x': 399, 'y': 334}, {'x': 399, 'y': 348}, {'x': 398, 'y': 348}]}}, {'text': 'c', 'property': {'detectedBreak': {'type': 'EOL_SURE_SPACE'}, 'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 402, 'y': 330}, {'x': 410, 'y': 330}, {'x': 410, 'y': 348}, {'x': 402, 'y': 348}]}}], 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 293, 'y': 330}, {'x': 410, 'y': 330}, {'x': 410, 'y': 353}, {'x': 293, 'y': 353}]}}, {'symbols': [{'text': 'r', 'property': {'detectedLanguages': [{'languageCode': 'no'}]}, 'boundingBox': {'vertices': [{'x': 281, 'y': 368}, {'x': 281, 'y': 368}, {'x': 281, 'y': 368}, {'x': 281, 'y': 368}]}}, {'text': 'e', 'property': {'detectedLanguages': [{'languageCode': 'no'}]}, 'boundingBox': {'vertices': [{'x': 285, 'y': 365}, {'x': 301, 'y': 365}, {'x': 301, 'y': 376}, {'x': 285, 'y': 376}]}}, {'text': 't', 'property': {'detectedLanguages': [{'languageCode': 'no'}]}, 'boundingBox': {'vertices': [{'x': 304, 'y': 361}, {'x': 314, 'y': 361}, {'x': 314, 'y': 376}, {'x': 304, 'y': 376}]}}, {'text': 'i', 'property': {'detectedLanguages': [{'languageCode': 'no'}]}, 'boundingBox': {'vertices': [{'x': 316, 'y': 359}, {'x': 325, 'y': 359}, {'x': 325, 'y': 376}, {'x': 316, 'y': 376}]}}, {'text': 'c', 'property': {'detectedLanguages': [{'languageCode': 'no'}]}, 'boundingBox': {'vertices': [{'x': 328, 'y': 365}, {'x': 336, 'y': 365}, {'x': 336, 'y': 376}, {'x': 328, 'y': 376}]}}, {'text': 'u', 'property': {'detectedLanguages': [{'languageCode': 'no'}]}, 'boundingBox': {'vertices': [{'x': 338, 'y': 363}, {'x': 338, 'y': 363}, {'x': 338, 'y': 363}, {'x': 338, 'y': 363}]}}, {'text': 'l', 'property': {'detectedLanguages': [{'languageCode': 'no'}]}, 'boundingBox': {'vertices': [{'x': 340, 'y': 360}, {'x': 342, 'y': 360}, {'x': 342, 'y': 376}, {'x': 340, 'y': 376}]}}, {'text': 'u', 'property': {'detectedLanguages': [{'languageCode': 'no'}]}, 'boundingBox': {'vertices': [{'x': 345, 'y': 358}, {'x': 354, 'y': 358}, {'x': 354, 'y': 376}, {'x': 345, 'y': 376}]}}, {'text': 'm', 'property': {'detectedBreak': {'type': 'SPACE'}, 'detectedLanguages': [{'languageCode': 'no'}]}, 'boundingBox': {'vertices': [{'x': 358, 'y': 359}, {'x': 373, 'y': 359}, {'x': 373, 'y': 376}, {'x': 358, 'y': 376}]}}], 'property': {'detectedLanguages': [{'languageCode': 'no'}]}, 'boundingBox': {'vertices': [{'x': 281, 'y': 358}, {'x': 373, 'y': 358}, {'x': 373, 'y': 376}, {'x': 281, 'y': 376}]}}, {'symbols': [{'text': '(', 'property': {'detectedLanguages': [{'languageCode': 'no'}]}, 'boundingBox': {'vertices': [{'x': 382, 'y': 360}, {'x': 385, 'y': 360}, {'x': 385, 'y': 379}, {'x': 382, 'y': 379}]}}, {'text': 'E', 'property': {'detectedLanguages': [{'languageCode': 'no'}]}, 'boundingBox': {'vertices': [{'x': 390, 'y': 361}, {'x': 397, 'y': 361}, {'x': 397, 'y': 375}, {'x': 390, 'y': 375}]}}, {'text': 'R', 'property': {'detectedLanguages': [{'languageCode': 'no'}]}, 'boundingBox': {'vertices': [{'x': 401, 'y': 361}, {'x': 410, 'y': 361}, {'x': 410, 'y': 375}, {'x': 401, 'y': 375}]}}, {'text': ')', 'property': {'detectedBreak': {'type': 'EOL_SURE_SPACE'}, 'detectedLanguages': [{'languageCode': 'no'}]}, 'boundingBox': {'vertices': [{'x': 414, 'y': 361}, {'x': 417, 'y': 361}, {'x': 417, 'y': 380}, {'x': 414, 'y': 380}]}}], 'property': {'detectedLanguages': [{'languageCode': 'no'}]}, 'boundingBox': {'vertices': [{'x': 382, 'y': 360}, {'x': 417, 'y': 360}, {'x': 417, 'y': 380}, {'x': 382, 'y': 380}]}}], 'property': {'detectedLanguages': [{'confidence': 0.54, 'languageCode': 'no'}, {'confidence': 0.46, 'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 281, 'y': 330}, {'x': 417, 'y': 330}, {'x': 417, 'y': 379}, {'x': 281, 'y': 379}]}}], 'boundingBox': {'vertices': [{'x': 281, 'y': 330}, {'x': 417, 'y': 330}, {'x': 417, 'y': 379}, {'x': 281, 'y': 379}]}}, {'property': {'detectedLanguages': [{'confidence': 1, 'languageCode': 'en'}]}, 'blockType': 'TEXT', 'paragraphs': [{'words': [{'symbols': [{'text': 'M', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 17, 'y': 341}, {'x': 38, 'y': 341}, {'x': 38, 'y': 364}, {'x': 17, 'y': 364}]}}, {'text': 'i', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 39, 'y': 341}, {'x': 54, 'y': 341}, {'x': 54, 'y': 364}, {'x': 39, 'y': 364}]}}, {'text': 'c', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 55, 'y': 341}, {'x': 62, 'y': 341}, {'x': 62, 'y': 364}, {'x': 55, 'y': 364}]}}, {'text': 'r', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 63, 'y': 342}, {'x': 66, 'y': 342}, {'x': 66, 'y': 365}, {'x': 63, 'y': 365}]}}, {'text': 'o', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 67, 'y': 342}, {'x': 74, 'y': 342}, {'x': 74, 'y': 365}, {'x': 67, 'y': 365}]}}, {'text': 'g', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 75, 'y': 342}, {'x': 82, 'y': 342}, {'x': 82, 'y': 365}, {'x': 75, 'y': 365}]}}, {'text': 'l', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 83, 'y': 342}, {'x': 90, 'y': 342}, {'x': 90, 'y': 365}, {'x': 83, 'y': 365}]}}, {'text': 'i', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 91, 'y': 342}, {'x': 98, 'y': 342}, {'x': 98, 'y': 365}, {'x': 91, 'y': 365}]}}, {'text': 'a', 'property': {'detectedBreak': {'type': 'EOL_SURE_SPACE'}, 'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 99, 'y': 342}, {'x': 105, 'y': 342}, {'x': 105, 'y': 365}, {'x': 99, 'y': 365}]}}], 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 17, 'y': 341}, {'x': 105, 'y': 342}, {'x': 105, 'y': 366}, {'x': 17, 'y': 365}]}}], 'property': {'detectedLanguages': [{'confidence': 1, 'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 17, 'y': 341}, {'x': 105, 'y': 342}, {'x': 105, 'y': 366}, {'x': 17, 'y': 365}]}}], 'boundingBox': {'vertices': [{'x': 17, 'y': 341}, {'x': 105, 'y': 342}, {'x': 105, 'y': 366}, {'x': 17, 'y': 365}]}}, {'property': {'detectedLanguages': [{'confidence': 1, 'languageCode': 'en'}]}, 'blockType': 'TEXT', 'paragraphs': [{'words': [{'symbols': [{'text': 'I', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 23, 'y': 417}, {'x': 38, 'y': 417}, {'x': 38, 'y': 436}, {'x': 23, 'y': 436}]}}, {'text': 'n', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 39, 'y': 417}, {'x': 42, 'y': 417}, {'x': 42, 'y': 436}, {'x': 39, 'y': 436}]}}, {'text': 'f', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 43, 'y': 417}, {'x': 49, 'y': 417}, {'x': 49, 'y': 436}, {'x': 43, 'y': 436}]}}, {'text': 'l', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 50, 'y': 417}, {'x': 56, 'y': 417}, {'x': 56, 'y': 436}, {'x': 50, 'y': 436}]}}, {'text': 'a', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 57, 'y': 417}, {'x': 70, 'y': 417}, {'x': 70, 'y': 436}, {'x': 57, 'y': 436}]}}, {'text': 'm', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 71, 'y': 417}, {'x': 84, 'y': 417}, {'x': 84, 'y': 436}, {'x': 71, 'y': 436}]}}, {'text': 'm', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 85, 'y': 417}, {'x': 98, 'y': 417}, {'x': 98, 'y': 436}, {'x': 85, 'y': 436}]}}, {'text': 'a', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 99, 'y': 417}, {'x': 112, 'y': 417}, {'x': 112, 'y': 436}, {'x': 99, 'y': 436}]}}, {'text': 't', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 113, 'y': 417}, {'x': 122, 'y': 417}, {'x': 122, 'y': 436}, {'x': 113, 'y': 436}]}}, {'text': 'i', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 123, 'y': 417}, {'x': 129, 'y': 417}, {'x': 129, 'y': 436}, {'x': 123, 'y': 436}]}}, {'text': 'o', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 130, 'y': 417}, {'x': 136, 'y': 417}, {'x': 136, 'y': 436}, {'x': 130, 'y': 436}]}}, {'text': 'n', 'property': {'detectedBreak': {'type': 'EOL_SURE_SPACE'}, 'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 137, 'y': 417}, {'x': 148, 'y': 417}, {'x': 148, 'y': 436}, {'x': 137, 'y': 436}]}}], 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 23, 'y': 417}, {'x': 148, 'y': 417}, {'x': 148, 'y': 436}, {'x': 23, 'y': 436}]}}], 'property': {'detectedLanguages': [{'confidence': 1, 'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 23, 'y': 417}, {'x': 148, 'y': 417}, {'x': 148, 'y': 436}, {'x': 23, 'y': 436}]}}], 'boundingBox': {'vertices': [{'x': 23, 'y': 417}, {'x': 148, 'y': 417}, {'x': 148, 'y': 436}, {'x': 23, 'y': 436}]}}, {'property': {'detectedLanguages': [{'confidence': 1, 'languageCode': 'en'}]}, 'blockType': 'TEXT', 'paragraphs': [{'words': [{'symbols': [{'text': 'C', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 509, 'y': 441}, {'x': 526, 'y': 441}, {'x': 526, 'y': 463}, {'x': 509, 'y': 463}]}}, {'text': 'e', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 527, 'y': 441}, {'x': 530, 'y': 441}, {'x': 530, 'y': 463}, {'x': 527, 'y': 463}]}}, {'text': 'r', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 531, 'y': 441}, {'x': 542, 'y': 441}, {'x': 542, 'y': 463}, {'x': 531, 'y': 463}]}}, {'text': 'a', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 543, 'y': 441}, {'x': 549, 'y': 441}, {'x': 549, 'y': 463}, {'x': 543, 'y': 463}]}}, {'text': 'm', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 550, 'y': 442}, {'x': 565, 'y': 442}, {'x': 565, 'y': 464}, {'x': 550, 'y': 464}]}}, {'text': 'i', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 566, 'y': 442}, {'x': 572, 'y': 442}, {'x': 572, 'y': 464}, {'x': 566, 'y': 464}]}}, {'text': 'd', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 573, 'y': 442}, {'x': 588, 'y': 442}, {'x': 588, 'y': 464}, {'x': 573, 'y': 464}]}}, {'text': 'e', 'property': {'detectedBreak': {'type': 'SPACE'}, 'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 589, 'y': 442}, {'x': 595, 'y': 442}, {'x': 595, 'y': 464}, {'x': 589, 'y': 464}]}}], 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 509, 'y': 441}, {'x': 595, 'y': 442}, {'x': 595, 'y': 465}, {'x': 509, 'y': 464}]}}, {'symbols': [{'text': 's', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 602, 'y': 442}, {'x': 614, 'y': 442}, {'x': 614, 'y': 464}, {'x': 602, 'y': 464}]}}, {'text': 'y', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 615, 'y': 442}, {'x': 618, 'y': 442}, {'x': 618, 'y': 464}, {'x': 615, 'y': 464}]}}, {'text': 'n', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 619, 'y': 442}, {'x': 630, 'y': 442}, {'x': 630, 'y': 464}, {'x': 619, 'y': 464}]}}, {'text': 't', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 631, 'y': 442}, {'x': 641, 'y': 442}, {'x': 641, 'y': 464}, {'x': 631, 'y': 464}]}}, {'text': 'h', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 642, 'y': 443}, {'x': 653, 'y': 443}, {'x': 653, 'y': 465}, {'x': 642, 'y': 465}]}}, {'text': 'e', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 654, 'y': 443}, {'x': 668, 'y': 443}, {'x': 668, 'y': 465}, {'x': 654, 'y': 465}]}}, {'text': 's', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 669, 'y': 443}, {'x': 672, 'y': 443}, {'x': 672, 'y': 465}, {'x': 669, 'y': 465}]}}, {'text': 'i', 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 673, 'y': 443}, {'x': 683, 'y': 443}, {'x': 683, 'y': 465}, {'x': 673, 'y': 465}]}}, {'text': 's', 'property': {'detectedBreak': {'type': 'EOL_SURE_SPACE'}, 'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 684, 'y': 443}, {'x': 687, 'y': 443}, {'x': 687, 'y': 465}, {'x': 684, 'y': 465}]}}], 'property': {'detectedLanguages': [{'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 602, 'y': 442}, {'x': 687, 'y': 443}, {'x': 687, 'y': 466}, {'x': 602, 'y': 465}]}}], 'property': {'detectedLanguages': [{'confidence': 1, 'languageCode': 'en'}]}, 'boundingBox': {'vertices': [{'x': 509, 'y': 441}, {'x': 687, 'y': 443}, {'x': 687, 'y': 466}, {'x': 509, 'y': 464}]}}], 'boundingBox': {'vertices': [{'x': 509, 'y': 441}, {'x': 687, 'y': 443}, {'x': 687, 'y': 466}, {'x': 509, 'y': 464}]}}], 'height': 652, 'property': {'detectedLanguages': [{'confidence': 0.88, 'languageCode': 'en'}, {'confidence': 0.12, 'languageCode': 'no'}]}}]}}
print(ocr_data[1]["fullTextAnnotation"]["text"])Pancreatic beta cells
Insulin
Kir6.2
Insulin
signalling
Adipocytes
Cyclin D1
p300
Cyclin D3
CDK4
E2F
PPARY
Adipogenesis
Ac
Hepatocytes
pRB
Cyclin D1
HNF40
Lipid
metabolism
pRB
Cyclin D
CDK4
GCN5
PGC10
Gluconeo-
genesis
E2F
NRF1
mtTFA
Cyclin D1
VDAC
Cyclin B1
CDK1
VDAC
Hexokinase 2
↑Mitochondrial
respiration
Glucose metabolism

ocr_data[5]["fullTextAnnotation"]["text"]_____no_output_____def normalize_confusable(confusable_set, text):
    first_confusable = list(confusable_set)[0]
    normalized = text
    for confusable in list(confusable_set):
        if confusable in normalized:
            normalized = normalized.replace(confusable, first_confusable)
    return normalized_____no_output_____gene_automaton = ahocorasick.Automaton()
confusable_sets = [set(["I", "l", "|", "1"])]
for idx, gene_term_base in enumerate(gene_term_bases):
    if len(gene_term_base) > 2:
        gene_term_base_cf = gene_term_base.casefold()
        gene_automaton.add_word(
            gene_term_base, (gene_term_base, "none", gene_term_base)
        )
        gene_automaton.add_word(
            gene_term_base_cf, (gene_term_base, "cf", gene_term_base_cf)
        )
        for confusable_set in confusable_sets:
            first_confusable = list(confusable_set)[0]
            normalized = normalize_confusable(confusable_set, gene_term_base)
            if normalized != gene_term_base:
                gene_automaton.add_word(
                    normalized,
                    (
                        gene_term_base,
                        f"{','.join(list(confusable_set))} -> {first_confusable}",
                        normalized,
                    ),
                )
                normalized_cf = normalized.casefold()
                if normalized_cf != normalized:
                    gene_automaton.add_word(
                        normalized_cf,
                        (
                            gene_term_base,
                            f"{','.join(list(confusable_set))} -> {first_confusable},cf",
                            normalized_cf,
                        ),
                    )
gene_automaton.make_automaton()_____no_output_____numeric_suffix_re = re.compile(
    "^[\-\s]?(\d+)(\s?([\-,&\\/]|and|or)\s?(\d+))?([\s\.\|.*]|$)"
)
m = numeric_suffix_re.match("-5,6\nwow")
if m:
    # print(m.group(0))
    print(m.group(1))
    # print(m.group(2))
    print(m.group(3))
    print(m.group(4))5
,
6
test_re = re.compile("^.+?[\-\s]?(\d+)([A-Z]+)$")
for gene_term in list(gene_terms)[:100]:
    if test_re.match(gene_term):
        print(gene_term)semaphorin 3B
KMT3C
NKX2E
MCM3AP
FAM176C
kinesin family member 21A
int_associated_gene_terms = int_suffixes_by_gene_term_base.keys()
alpha_re = re.compile("[a-zA-Z]")
numeric_suffix_re = re.compile(
    "^[\-\s]?(\d+)(\s?([\-,&\\/]|and|or)\s?(\d+))?([\s\.\|.*]|$)"
)
# for data in [{"fullTextAnnotation": {"text": "LRP-5,6\nwow"}}]:
for data in ocr_data[:50]:
    matched = set()
    text = data["fullTextAnnotation"]["text"]
    print(f"-----{str(len(text))}------")
    for (
        end_index,
        (original_word, transforms, transformed_word),
    ) in gene_automaton.iter(text):
        matched.add(f"{str(end_index)},{original_word}")

        start_index = end_index - len(transformed_word) + 1
        if (alpha_re.match(text[start_index - 1])) or (
            alpha_re.match(text[end_index + 1])
        ):
            continue

        print("")
        if original_word in int_associated_gene_terms:
            print((end_index, (original_word, transforms, transformed_word)))
            print(
                (
                    text[max(0, start_index - 10) : start_index],
                    text[start_index : end_index + 1],
                    text[end_index + 1 : end_index + 20],
                )
            )
            start_index = end_index - len(transformed_word) + 1
            m = numeric_suffix_re.match(text[end_index + 1 : end_index + 20])
            if m:
                # print(m.group(0))
                # print(m.group(1))
                # print(m.group(2))
                # print(m.group(3))

                first_int = int(m.group(1))
                connector = m.group(3)
                last_int = m.group(4)
                if last_int:
                    last_int = int(last_int)

                print(first_int)
                print(connector)
                print(last_int)

                int_suffixes = int_suffixes_by_gene_term_base[original_word]
                # print(f"has associated ints: {int_suffixes}")

                if first_int in int_suffixes:
                    if (not connector is None) and last_int in int_suffixes:
                        print(
                            original_word
                            + str(first_int)
                            + connector
                            + str(last_int)
                        )
                        if connector in set(["-"]):
                            for i in range(first_int, last_int + 1):
                                all_matches = []
                                if i in int_suffixes:
                                    all_matches.append(original_word + str(i))
                                else:
                                    print(
                                        "This integer is not found in int_suffixes: "
                                        + str(i)
                                    )
                            print("-> " + ", ".join(all_matches))
                        else:
                            print(
                                "-> "
                                + original_word
                                + str(first_int)
                                + ", "
                                + original_word
                                + str(last_int)
                            )
                    else:
                        print(original_word + str(first_int))
                    continue
                else:
                    print(
                        "This integer is not found in int_suffixes: "
                        + str(first_int)
                    )
                    print(int_suffixes)
        if original_word in gene_terms:
            1 + 1
            # print("good on its own")
    text_cf = text.casefold()
    if text != text_cf:
        for (
            end_index,
            (original_word, transforms, transformed_word),
        ) in gene_automaton.iter(text_cf):
            start_index = end_index - len(transformed_word) + 1
            if (alpha_re.match(text[start_index - 1])) or (
                alpha_re.match(text[end_index + 1])
            ):
                continue

            match_str = f"{str(end_index)},{original_word}"
            if not match_str in matched:
                # print("* text_cf")
                matched.add(match_str)
                # print((end_index, (original_word, transforms, transformed_word)))

    for confusable_set in confusable_sets:
        normalized = normalize_confusable(confusable_set, text)
        if normalized != text:
            for (
                end_index,
                (original_word, transforms, transformed_word),
            ) in gene_automaton.iter(normalized):
                start_index = end_index - len(transformed_word) + 1
                if (alpha_re.match(text[start_index - 1])) or (
                    alpha_re.match(text[end_index + 1])
                ):
                    continue

                match_str = f"{str(end_index)},{original_word}"
                if not match_str in matched:
                    # print("* normalized")
                    matched.add(match_str)
                    # print((end_index, (original_word, transforms, transformed_word)))

            normalized_cf = normalized.casefold()
            if normalized_cf != normalized:
                for (
                    end_index,
                    (original_word, transforms, transformed_word),
                ) in gene_automaton.iter(normalized_cf):
                    start_index = end_index - len(transformed_word) + 1
                    if (alpha_re.match(text[start_index - 1])) or (
                        alpha_re.match(text[end_index + 1])
                    ):
                        continue

                    match_str = f"{str(end_index)},{original_word}"
                    if not match_str in matched:
                        # print("* normalized_cf")
                        matched.add(match_str)
                        # print((end_index, (original_word, transforms, transformed_word)))-----123------
-----328------

(14, ('Beta', 'cf', 'beta'))
('ancreatic ', 'beta', ' cells\nInsulin\nKir6')

(94, ('CDK', 'none', 'CDK'))
('Cyclin D3\n', 'CDK', '4\nE2F\nPPARY\nAdipoge')
4
None
None
CDK4

(99, ('E2F', 'none', 'E2F'))
('n D3\nCDK4\n', 'E2F', '\nPPARY\nAdipogenesis')

(151, ('HNF', 'none', 'HNF'))
('Cyclin D1\n', 'HNF', '40\nLipid\nmetabolism')
40
None
None
This integer is not found in int_suffixes: 40
{1, 4, 6}

(187, ('CDK', 'none', 'CDK'))
('\nCyclin D\n', 'CDK', '4\nGCN5\nPGC10\nGlucon')
4
None
None
CDK4

(192, ('GCN', 'none', 'GCN'))
('in D\nCDK4\n', 'GCN', '5\nPGC10\nGluconeo-\ng')
5
None
None
GCN5

(197, ('PGC', 'none', 'PGC'))
('CDK4\nGCN5\n', 'PGC', '10\nGluconeo-\ngenesi')
10
None
None
This integer is not found in int_suffixes: 10
{1}

(221, ('E2F', 'none', 'E2F'))
('-\ngenesis\n', 'E2F', '\nNRF1\nmtTFA\nCyclin ')

(225, ('NRF', 'none', 'NRF'))
('nesis\nE2F\n', 'NRF', '1\nmtTFA\nCyclin D1\nV')
1
None
None
NRF1

(247, ('VDAC', 'none', 'VDAC'))
('Cyclin D1\n', 'VDAC', '\nCyclin B1\nCDK1\nVDA')

(261, ('CDK', 'none', 'CDK'))
('Cyclin B1\n', 'CDK', '1\nVDAC\nHexokinase 2')
1
None
None
CDK1

(267, ('VDAC', 'none', 'VDAC'))
('n B1\nCDK1\n', 'VDAC', '\nHexokinase 2\n↑Mito')
-----272------

(2, ('LRP', 'none', 'LRP'))
('', 'LRP', '5/6\nLRP5/6\nWnt\nFzd\n')
5
/
6
LRP5/6
-> LRP5, LRP6

(9, ('LRP', 'none', 'LRP'))
('LRP5/6\n', 'LRP', '5/6\nWnt\nFzd\nSFRP\nFz')
5
/
6
LRP5/6
-> LRP5, LRP6

(25, ('SFRP', 'none', 'SFRP'))
('6\nWnt\nFzd\n', 'SFRP', '\nFzd\nLGR4/5/6 Rspo\n')

(33, ('LGR', 'none', 'LGR'))
('\nSFRP\nFzd\n', 'LGR', '4/5/6 Rspo\nCKT GSK\n')

(106, ('ZNRF', 'none', 'ZNRF'))
('B-catenin\n', 'ZNRF', '3/RNF43\nB-catenin\nL')

(111, ('RNF', 'none', 'RNF'))
('nin\nZNRF3/', 'RNF', '43\nB-catenin\nLRP6\na')
43
None
None
RNF43

(127, ('LRP', 'none', 'LRP'))
('B-catenin\n', 'LRP', '6\nand Fzd\nСКУGSA\nCK')
6
None
None
LRP6

(143, ('GSA', 'none', 'GSA'))
('nd Fzd\nСКУ', 'GSA', '\nCKI GSK\nAxin\nAPC\nt')

(160, ('APC', 'none', 'APC'))
(' GSK\nAxin\n', 'APC', '\nturnover\nPB-cateni')

(228, ('TCF', 'none', 'TCF'))
('B-catenin\n', 'TCF', '\nTarget\ngenes\nZNRF3')

(246, ('ZNRF', 'none', 'ZNRF'))
('get\ngenes\n', 'ZNRF', '3/RNF43\nZNRF3/RNF43')

(251, ('RNF', 'none', 'RNF'))
('nes\nZNRF3/', 'RNF', '43\nZNRF3/RNF43\nDkk1')
43
None
None
RNF43

(258, ('ZNRF', 'none', 'ZNRF'))
('RF3/RNF43\n', 'ZNRF', '3/RNF43\nDkk1\n')

(263, ('RNF', 'none', 'RNF'))
('F43\nZNRF3/', 'RNF', '43\nDkk1\n')
43
None
None
RNF43
-----322------

(25, ('Trx', 'none', 'Trx'))
(' H*\nNADP*\n', 'Trx', '-S2\nGrx-(SH)2\nGSSG\n')

(47, ('Trx', 'none', 'Trx'))
('SH)2\nGSSG\n', 'Trx', '-\ndependent\nfunctio')

(105, ('Trx', 'none', 'Trx'))
('ions\nTrxR\n', 'Trx', '-(SH)2\nsubstrate ox')

(141, ('GSH', 'none', 'GSH'))
('ductaed\n2 ', 'GSH', '\nGrx-S2\nGSH-\ndepend')

(152, ('GSH', 'none', 'GSH'))
('SH\nGrx-S2\n', 'GSH', '-\ndependent\nfunctio')

(199, ('Trx', 'none', 'Trx'))
('ADP+\nGSSG\n', 'Trx', '-S2.\nTrx-\ndependent')

(207, ('Trx', 'none', 'Trx'))
('G\nTrx-S2.\n', 'Trx', '-\ndependent\nfunctio')

(232, ('TGR', 'none', 'TGR'))
('functions\n', 'TGR', '\nTrx-(SH)2\n2 GSH\nGS')

(236, ('Trx', 'none', 'Trx'))
('tions\nTGR\n', 'Trx', '-(SH)2\n2 GSH\nGSH-\nd')

(248, ('GSH', 'none', 'GSH'))
('x-(SH)2\n2 ', 'GSH', '\nGSH-\ndependent\ndep')

(252, ('GSH', 'none', 'GSH'))
('H)2\n2 GSH\n', 'GSH', '-\ndependent\ndepende')
-----492------

(15, ('TLR', 'none', 'TLR'))
('57BL/6\n- (', 'TLR', '4)\nOccludin -\nBilay')

(75, ('ZO-', 'none', 'ZO-'))
('\nRecovery\n', 'ZO-', '1\n20-1\nActin\n(NF-KB')
1
None
None
ZO-1

(110, ('ZO-', 'none', 'ZO-'))
('ytokines\n(', 'ZO-', '1\nNuclear\nIDIDI\nCyt')
1
None
None
ZO-1

(150, ('DNA', 'none', 'DNA'))
('roteosome\n', 'DNA', '\nZ-1\nCapillary\nendo')

(196, ('ICR', 'none', 'ICR'))
('RNA\nZ-1\nB ', 'ICR', '\n(TLR4)\nOcludin\nZ0-')

(201, ('TLR', 'none', 'TLR'))
('-1\nB ICR\n(', 'TLR', '4)\nOcludin\nZ0-1\nAct')

(288, ('DNA', 'none', 'DNA'))
('roteosome\n', 'DNA', '\nCytoplasm\nZ-1\nMRNA')

(312, ('ZO-', 'none', 'ZO-'))
('Z-1\nMRNA\n(', 'ZO-', '1\nRecovery\nOccludin')
1
None
None
ZO-1

(383, ('ICR', 'none', 'ICR'))
('ssions at ', 'ICR', ' mice\nZO-1 protein\n')

(392, ('ZO-', 'none', 'ZO-'))
(' ICR mice\n', 'ZO-', '1 protein\nOccludin ')
1
None
None
ZO-1

(460, ('ZO-', 'none', 'ZO-'))
('anslation\n', 'ZO-', '1 MRNA\n24\nTime (h)\n')
1
None
None
ZO-1
-----339------

-----354------

(47, ('FOR', 'cf', 'for'))
('ity table ', 'for', ' node DKK1 with\npar')

(56, ('DKK', 'none', 'DKK'))
(' for node ', 'DKK', '1 with\nparents Samp')
1
None
None
DKK1

(124, ('DKK', 'none', 'DKK'))
('RCMPLX\nPr(', 'DKK', '1=Off)\n(A-a*p + 1)/')

(195, ('DKK', 'none', 'DKK'))
('ormal\nOff\n', 'DKK', '1\nTumor\nOff\n(B-b*p ')
1
None
None
DKK1
-----1329------

(3, ('SMAD', 'none', 'SMAD'))
('', 'SMAD', '1/5\nSULAZ\nCOLSA1\nGe')
1
/
5
SMAD1/5
-> SMAD1, SMAD5

(36, ('FOR', 'cf', 'for'))
('e network\n', 'for', ' COL4A1\nME\nColadan ')

(42, ('COL4A', 'none', 'COL4A'))
('twork\nfor ', 'COL4A', '1\nME\nColadan tyoe l')
1
None
None
COL4A1

(73, ('CGB', 'none', 'CGB'))
('l\nSYKIZAP\n', 'CGB', "3 (includes'others)")
3
None
None
CGB3

(235, ('COL18A', 'none', 'COL18A'))
('ment\nSMMP\n', 'COL18A', '1\nDecreased measure')
1
None
None
COL18A1

(325, ('IMP', 'none', 'IMP'))
('ion\nRECOL\n', 'IMP', '2\nsechefed MMP\nCall')
2
None
None
IMP2

(339, ('MMP', 'none', 'MMP'))
('\nsechefed ', 'MMP', '\nCallagen tude(V- -')

(457, ('PRSS', 'none', 'PRSS'))
('asurement\n', 'PRSS', '2\nCologen type\nPred')
2
None
None
PRSS2

(609, ('STEAP', 'none', 'STEAP'))
('e\nAMMP 10\n', 'STEAP', '1\nÚNG.\nSEZEL2\nCP: B')
1
None
None
STEAP1

(615, ('NG.', 'none', 'NG.'))
('0\nSTEAP1\nÚ', 'NG.', '\nSEZEL2\nCP: Bladder')

(664, ('Not', 'cf', 'not'))
('\n- Effect ', 'not', ' predicted\nNetwork ')

(749, ('FOR', 'cf', 'for'))
('lex/Group\n', 'for', ' COL13A1\nO Enzyme\nO')

(756, ('COL13A', 'none', 'COL13A'))
('Group\nfor ', 'COL13A', '1\nO Enzyme\nO Peptid')
1
None
None
COL13A1

(782, ('GJB', 'none', 'GJB'))
('Peptidase\n', 'GJB', '3\nOther\nDLKI\nA Tran')
3
None
None
GJB3

(814, ('IFITM', 'none', 'IFITM'))
('ansporter\n', 'IFITM', '1\nCFD\nLdh complex)\n')
1
None
None
IFITM1

(819, ('CFD', 'none', 'CFD'))
('er\nIFITM1\n', 'CFD', '\nLdh complex)\nGrowt')

(886, ('COL13A', 'none', 'COL13A'))
('3-VDR-RXR\n', 'COL13A', '1\nB\nCALB\nIRF7\nPro-i')
1
None
None
COL13A1

(894, ('CALB', 'none', 'CALB'))
('COL13A1\nB\n', 'CALB', '\nIRF7\nPro-infiahmat')

(898, ('IRF', 'none', 'IRF'))
('A1\nB\nCALB\n', 'IRF', '7\nPro-infiahmatongC')
7
None
None
IRF7

(946, ('CEPT', 'cf', 'cept'))
('strogen ré', 'cept', 'ór\nDNASE2\nProtein-p')

(954, ('DNASE', 'none', 'DNASE'))
(' réceptór\n', 'DNASE', '2\nProtein-protein i')
2
None
None
DNASE2

(1019, ('SERPINB', 'none', 'SERPINB'))
('eraction)\n', 'SERPINB', '1\nв\nIFN type\nImmuno')
1
None
None
SERPINB1

(1051, ('NFKB', 'none', 'NFKB'))
('oglobulin\n', 'NFKB', ' complex)\nCEBPA\nadh')

(1200, ('S100A', 'none', 'S100A'))
('nding\nBGN\n', 'S100A', '.\nCD6B\nAlpra cateni')

(1231, ('S100A', 'none', 'S100A'))
('enin\nKYNU\n', 'S100A', '9\nInhibition, ubiqu')
9
None
None
S100A9

(1270, ('CPS', 'none', 'CPS'))
('on\nCOROIA\n', 'CPS', '1\nDirect interactio')
1
None
None
CPS1
-----335------

(87, ('PU.', 'none', 'PU.'))
('ntiation)\n', 'PU.', '1\n......GM-CSF •)\nR')
1
None
None
PU.1

(101, ('CSF', 'none', 'CSF'))
('\n......GM-', 'CSF', ' •)\nReplication\nGM-')

(123, ('CSF', 'none', 'CSF'))
('cation\nGM-', 'CSF', '\nSTAT5\nMononuclear\n')

(128, ('STAT', 'none', 'STAT'))
('on\nGM-CSF\n', 'STAT', '5\nMononuclear\nphago')
5
None
None
STAT5

(158, ('CSF', 'none', 'CSF'))
('gocyte\nGM-', 'CSF', '\nautoantibodies\nMol')

(204, ('MIP', 'none', 'MIP'))
('es\n(TNF¤, ', 'MIP', '1, others)\nGM-CSF\nB')

(221, ('CSF', 'none', 'CSF'))
('thers)\nGM-', 'CSF', '\nBiological Respons')

-----359------

(19, ('AAC', 'cf', 'aac'))
('YH2\nfzo14 ', 'aac', '2A cyh2\nacquisition')

(90, ('AAC', 'cf', 'aac'))
('YH2\nfzo14 ', 'aac', '2A cyh2 sfa\nfzo14 a')

(111, ('AAC', 'cf', 'aac'))
('sfa\nfzo14 ', 'aac', '24 cyh2\ncounter-sel')
24
None
None
This integer is not found in int_suffixes: 24
{1, 2, 11}

(185, ('CHX', 'none', 'CHX'))
('e\nFZ01 by ', 'CHX', '\nX--\nfzo14 aac24 cy')

(199, ('AAC', 'cf', 'aac'))
('X--\nfzo14 ', 'aac', '24 cyh2 sfa\nCz cyh2')
24
None
None
This integer is not found in int_suffixes: 24
{1, 2, 11}

(299, ('AAC', 'cf', 'aac'))
('ce of the\n', 'aac', '2A allele\nmtDNA eve')
-----272------

(8, ('HMGB', 'none', 'HMGB'))
('CORT\n', 'HMGB', '1\nСХЗCR1\n2 3CD200R\n')
1
None
None
HMGB1

(26, ('CD200R', 'none', 'CD200R'))
('СХЗCR1\n2 3', 'CD200R', '\nHSP72\nIL-6\nTNF-a\nP')

(30, ('HSP', 'none', 'HSP'))
('2 3CD200R\n', 'HSP', '72\nIL-6\nTNF-a\nPro-I')
72
None
None
This integer is not found in int_suffixes: 72
{73, 10, 75, 78, 60, 47, 22, 27, 28}

(36, ('IL-', 'none', 'IL-'))
('00R\nHSP72\n', 'IL-', '6\nTNF-a\nPro-IL-18\nN')
6
None
None
IL-6

(51, ('IL-', 'none', 'IL-'))
('TNF-a\nPro-', 'IL-', '18\nNE Neuron\nIL-18\n')
18
None
None
IL-18

(67, ('IL-', 'none', 'IL-'))
('NE Neuron\n', 'IL-', '18\nCORT\nCaspase-1\nT')
18
None
None
IL-18

(88, ('TLR', 'none', 'TLR'))
('Caspase-1\n', 'TLR', ' 214\nĮ CD200R\nі СХЗ')
214
None
None
This integer is not found in int_suffixes: 214
{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

(101, ('CD200R', 'none', 'CD200R'))
('TLR 214\nĮ ', 'CD200R', '\nі СХЗCR1\nNE\nNFKB\nB')

(118, ('NFKB', 'none', 'NFKB'))
('СХЗCR1\nNE\n', 'NFKB', '\nB-AR\nNLRP3-\nCORT\nA')

(128, ('NLRP', 'none', 'NLRP'))
('NFKB\nB-AR\n', 'NLRP', '3-\nCORT\nASC\nIL-1RA,')

(139, ('ASC', 'none', 'ASC'))
('RP3-\nCORT\n', 'ASC', '\nIL-1RA, IL-1R2\nPro')

(143, ('IL-', 'none', 'IL-'))
('\nCORT\nASC\n', 'IL-', '1RA, IL-1R2\nPro-cas')

(151, ('IL-', 'none', 'IL-'))
('C\nIL-1RA, ', 'IL-', '1R2\nPro-caspase-1\nC')

(153, ('IL-1R', 'none', 'IL-1R'))
('C\nIL-1RA, ', 'IL-1R', '2\nPro-caspase-1\nCAM')
2
None
None
This integer is not found in int_suffixes: 2
{8, 9}

(177, ('ERK', 'none', 'ERK'))
('se-1\nCAMP/', 'ERK', '\nIL-10, IKBa\nCaspas')

(181, ('IL-', 'none', 'IL-'))
('\nCAMP/ERK\n', 'IL-', '10, IKBa\nCaspase-1\n')

(204, ('NLRP', 'none', 'NLRP'))
('Caspase-1\n', 'NLRP', '3\nIL-18\n1 NLRP3\nNFK')
3
None
None
NLRP3

(209, ('IL-', 'none', 'IL-'))
('e-1\nNLRP3\n', 'IL-', '18\n1 NLRP3\nNFKB\nIL-')
18
None
None
IL-18

(218, ('NLRP', 'none', 'NLRP'))
('3\nIL-18\n1 ', 'NLRP', '3\nNFKB\nIL-1R1\nATP\nP')
3
None
None
NLRP3

(224, ('NFKB', 'none', 'NFKB'))
('8\n1 NLRP3\n', 'NFKB', '\nIL-1R1\nATP\nP2X7R\n↑')

(228, ('IL-', 'none', 'IL-'))
('LRP3\nNFKB\n', 'IL-', '1R1\nATP\nP2X7R\n↑ Glu')

(230, ('IL-1R', 'none', 'IL-1R'))
('LRP3\nNFKB\n', 'IL-1R', '1\nATP\nP2X7R\n↑ Glut\n')
1
None
None
This integer is not found in int_suffixes: 1
{8, 9}

(235, ('ATP', 'none', 'ATP'))
('KB\nIL-1R1\n', 'ATP', '\nP2X7R\n↑ Glut\nGlut ')

(239, ('P2X', 'none', 'P2X'))
('L-1R1\nATP\n', 'P2X', '7R\n↑ Glut\nGlut Neur')

(248, ('Glut', 'none', 'Glut'))
('P\nP2X7R\n↑ ', 'Glut', '\nGlut Neuron\nAstroc')

(253, ('Glut', 'none', 'Glut'))
('7R\n↑ Glut\n', 'Glut', ' Neuron\nAstrocyte\n')
-----104------

(42, ('AKT', 'none', 'AKT'))
('NHIBITION\n', 'AKT', '\n(P\nMTORC1\nINHIBITI')

(67, ('ULK', 'none', 'ULK'))
('NHIBITION\n', 'ULK', '\nACTIVATION\nATG\nFIP')

(82, ('ATG', 'none', 'ATG'))
('CTIVATION\n', 'ATG', '\nFIP200\n13\nAUTOPHAG')

(86, ('FIP', 'none', 'FIP'))
('ATION\nATG\n', 'FIP', '200\n13\nAUTOPHAGY\n')
200
None
None
FIP200
-----286------

(163, ('SREBP', 'none', 'SREBP'))
('atocyte\n1 ', 'SREBP', ' 1c\n1 Formation of ')

(208, ('SREBP', 'none', 'SREBP'))
('dation\n111', 'SREBP', ' 1c\n111 Formation o')

(251, ('FAS', 'none', 'FAS'))
('AR-a)\n111 ', 'FAS', '\n1FAS\n! CPT-1\nNucle')

(256, ('FAS', 'none', 'FAS'))
('\n111 FAS\n1', 'FAS', '\n! CPT-1\nNuclei\nMit')

(262, ('CPT', 'none', 'CPT'))
('AS\n1FAS\n! ', 'CPT', '-1\nNuclei\nMitochond')
1
None
None
CPT1
-----506------

(17, ('PRO', 'cf', 'pro'))
('uction of ', 'pro', '-angiogenic growth ')

(117, ('RALGEF', 'none', 'RALGEF'))
('P\nRAS-GTP\n', 'RALGEF', '\nRAF\nRAC\nRALGEF\nJNK')

(121, ('RAF', 'none', 'RAF'))
('TP\nRALGEF\n', 'RAF', '\nRAC\nRALGEF\nJNK\nRAL')

(125, ('RAC', 'none', 'RAC'))
('ALGEF\nRAF\n', 'RAC', '\nRALGEF\nJNK\nRAL\nJUN')

(132, ('RALGEF', 'none', 'RALGEF'))
('F\nRAF\nRAC\n', 'RALGEF', '\nJNK\nRAL\nJUN\n(VEGFA')

(136, ('JNK', 'none', 'JNK'))
('AC\nRALGEF\n', 'JNK', '\nRAL\nJUN\n(VEGFA\nRAF')

(140, ('RAL', 'none', 'RAL'))
('ALGEF\nJNK\n', 'RAL', '\nJUN\n(VEGFA\nRAF\nRAL')

(155, ('RAF', 'none', 'RAF'))
('UN\n(VEGFA\n', 'RAF', '\nRAL\nMEK\nMEK\nINK\nER')

(159, ('RAL', 'none', 'RAL'))
('VEGFA\nRAF\n', 'RAL', '\nMEK\nMEK\nINK\nERK\nRA')

(163, ('MEK', 'none', 'MEK'))
('A\nRAF\nRAL\n', 'MEK', '\nMEK\nINK\nERK\nRAS-\nt')

(167, ('MEK', 'none', 'MEK'))
('F\nRAL\nMEK\n', 'MEK', '\nINK\nERK\nRAS-\ntrans')

(171, ('INK', 'none', 'INK'))
('L\nMEK\nMEK\n', 'INK', '\nERK\nRAS-\ntransform')

(175, ('ERK', 'none', 'ERK'))
('K\nMEK\nINK\n', 'ERK', '\nRAS-\ntransformed\nt')

(209, ('FGF', 'none', 'FGF'))
('our cells\n', 'FGF', '2\nERK\nSP1\nSP2\nJUN\nA')
2
None
None
FGF2

(214, ('ERK', 'none', 'ERK'))
('ells\nFGF2\n', 'ERK', '\nSP1\nSP2\nJUN\nAP1\nET')

(234, ('ETS', 'none', 'ETS'))
('2\nJUN\nAP1\n', 'ETS', '\nAP2\nETS\nECM\n(MMP9\n')

(242, ('ETS', 'none', 'ETS'))
('1\nETS\nAP2\n', 'ETS', '\nECM\n(MMP9\nMMP2\nCOX')

(246, ('ECM', 'none', 'ECM'))
('S\nAP2\nETS\n', 'ECM', '\n(MMP9\nMMP2\nCOX2\nVE')

(251, ('MMP', 'none', 'MMP'))
('\nETS\nECM\n(', 'MMP', '9\nMMP2\nCOX2\nVEGFA F')
9
None
None
MMP9

(256, ('MMP', 'none', 'MMP'))
('ECM\n(MMP9\n', 'MMP', '2\nCOX2\nVEGFA FGFZ\nu')
2
None
None
MMP2

(261, ('COX', 'none', 'COX'))
('MMP9\nMMP2\n', 'COX', '2\nVEGFA FGFZ\nuPA\nVE')
2
None
None
COX2

(293, ('FGF', 'none', 'FGF'))
('GFA\nVEGFA\n', 'FGF', '2 VEGFA\nFGF2\nVEGFA\n')
2
None
None
FGF2

(304, ('FGF', 'none', 'FGF'))
('GF2 VEGFA\n', 'FGF', '2\nVEGFA\nFGF2\nC Recr')
2
None
None
FGF2

(315, ('FGF', 'none', 'FGF'))
('GF2\nVEGFA\n', 'FGF', '2\nC Recruitment of ')
2
None
None
FGF2

(392, ('AKT', 'none', 'AKT'))
('acrophage\n', 'AKT', '\nNF-KB\nIL-8 IL-6\nNa')

(402, ('IL-', 'none', 'IL-'))
('AKT\nNF-KB\n', 'IL-', '8 IL-6\nNature Revie')
8
None
None
IL-8

(407, ('IL-', 'none', 'IL-'))
('F-KB\nIL-8 ', 'IL-', '6\nNature Reviews | ')
6
None
None
IL-6

(503, ('FGF', 'none', 'FGF'))
('GFA VEGFA ', 'FGF', '2\n')
2
None
None
FGF2
-----266------

(107, ('MASP', 'none', 'MASP'))
('.s\nСЗЬ\nTF\n', 'MASP', '2\nXII\nC4\nVI\nXI\nIX\nC')
2
None
None
MASP2

(163, ('TAFI', 'none', 'TAFI'))
('rombin\nC5\n', 'TAFI', '\nFibrinogen\nFibrin\n')

(193, ('MAC', 'none', 'MAC'))
('n\nC5a\nC5b\n', 'MAC', '\nPlasmin\nThrombosis')
-----123------

(2, ('CTS', 'none', 'CTS'))
('', 'CTS', '\nNKA\nAP\np38\n[Na*]//')
-----188------

(53, ('TSC', 'none', 'TSC'))
('1462\nT172\n', 'TSC', '2\nTSC1\nAutophagy\nS6')
2
None
None
TSC2

(58, ('TSC', 'none', 'TSC'))
('T172\nTSC2\n', 'TSC', '1\nAutophagy\nS65\nm T')
1
None
None
TSC1

(80, ('TORC', 'none', 'TORC'))
('agy\nS65\nm ', 'TORC', '1\n4E-BP1\nAmino acid')
1
None
None
TORC1

(87, ('4E-BP', 'none', '4E-BP'))
('5\nm TORC1\n', '4E-BP', '1\nAmino acid\nreleas')
1
None
None
4E-BP1

(99, ('ACID', 'cf', 'acid'))
('BP1\nAmino ', 'acid', '\nrelease\n4EBP1\nT389')

(112, ('EBP', 'none', 'EBP'))
('\nrelease\n4', 'EBP', '1\nT389\nelF4E\nS6K1\nS')
1
None
None
This integer is not found in int_suffixes: 1
{2, 50}

(128, ('S6K', 'none', 'S6K'))
('389\nelF4E\n', 'S6K', '1\nS240\nS244\nS6\nS366')
1
None
None
S6K1

(151, ('EEF', 'none', 'EEF'))
('4\nS6\nS366\n', 'EEF', '2K\nS422\nelF4B\n↑ Pro')

-----324------

(110, ('AXIN', 'none', 'AXIN'))
('\nElements\n', 'AXIN', '1\nCFH\nFGR\nClorf112\n')
1
None
None
AXIN1

(125, ('C1orf', 'l,1,I,| -> l', 'Clorf'))
('1\nCFH\nFGR\n', 'Clorf', '112\nENG\nTGFB1 Pathw')
112
None
None
C1orf112

(137, ('TGFB', 'none', 'TGFB'))
('rf112\nENG\n', 'TGFB', '1 Pathway Gene List')
1
None
None
TGFB1

(160, ('DPM', 'none', 'DPM'))
('Gene List\n', 'DPM', '10\nONFYA OFUCA2\nTSP')
10
None
None
This integer is not found in int_suffixes: 10
{1, 2, 3}

(181, ('TSPAN', 'none', 'TSPAN'))
('YA OFUCA2\n', 'TSPAN', '6G\nSCYL3\nGCLC\nTNMD\n')

(188, ('SCYL', 'none', 'SCYL'))
('2\nTSPAN6G\n', 'SCYL', '3\nGCLC\nTNMD\nEstabli')
3
None
None
SCYL3

(262, ('FOR', 'cf', 'for'))
('be Subset\n', 'for', ' Association Analys')
-----227------

(41, ('IRS', 'none', 'IRS'))
(', Aa, Ag)\n', 'IRS', ' (Hs)\nChico (Dm, Ag')

(121, ('Raf-', 'none', 'Raf-'))
(' (Dm, Ag)\n', 'Raf-', '1 (Hs)\nPDK1 (Hs)\nPk')
1
None
None
Raf-1

(131, ('PDK', 'none', 'PDK'))
('af-1 (Hs)\n', 'PDK', '1 (Hs)\nPk61C (Dm, A')
1
None
None
PDK1

(156, ('MEK', 'none', 'MEK'))
(' (Dm, Ag)\n', 'MEK', '1 (Hs)\nDSOR1 (Dm, A')
1
None
None
MEK1

(206, ('ERK', 'none', 'ERK'))
(', Aa, Ag)\n', 'ERK', '1,2 (Hs)\nERK-A (Dm)')
1
,
2
ERK1,2
-> ERK1, ERK2

(218, ('ERK', 'none', 'ERK'))
('K1,2 (Hs)\n', 'ERK', '-A (Dm)\n')
-----265------

(84, ('GST', 'none', 'GST'))
('\nCLO\nP450\n', 'GST', '\nP450\nGST\nMetyr\nPYR')

(93, ('GST', 'none', 'GST'))
('\nGST\nP450\n', 'GST', '\nMetyr\nPYR\nSKF-525A')

(116, ('TCA', 'none', 'TCA'))
('\nSKF-525A\n', 'TCA', ', CH\nDCVG\nTCA, CH\nD')

(129, ('TCA', 'none', 'TCA'))
(', CH\nDCVG\n', 'TCA', ', CH\nDCVG\nDITC\nтсон')

(163, ('GSH', 'none', 'GSH'))
('Сон\nPYR\nt ', 'GSH', '\nMet\nt GSH\nGSH\nDITC')

(173, ('GSH', 'none', 'GSH'))
('GSH\nMet\nt ', 'GSH', '\nGSH\nDITC\nTO KIDNEY')

(177, ('GSH', 'none', 'GSH'))
('Met\nt GSH\n', 'GSH', '\nDITC\nTO KIDNEYS\nIG')

(202, ('DEM', 'none', 'DEM'))
('NEYS\nIGSH\n', 'DEM', '\nBSO\nGSH\nDEM\nEXCRET')

(210, ('GSH', 'none', 'GSH'))
('H\nDEM\nBSO\n', 'GSH', '\nDEM\nEXCRETED\nIN UR')

(214, ('DEM', 'none', 'DEM'))
('M\nBSO\nGSH\n', 'DEM', '\nEXCRETED\nIN URINE\n')
-----1270------

(3, ('MAPK', 'none', 'MAPK'))
('', 'MAPK', ' signaling pathway\n')

(165, ('MAP', 'none', 'MAP'))
('Classical ', 'MAP', ' kinase\npathway\nDAG')

(184, ('DAG', 'none', 'DAG'))
('e\npathway\n', 'DAG', '\nPKA\n+p\nCACN\n+P\nTeu')

(196, ('CACN', 'none', 'CACN'))
('AG\nPKA\n+p\n', 'CACN', '\n+P\nTeu\nCa\nSTMN1\nCP')

(211, ('STMN', 'none', 'STMN'))
('+P\nTeu\nCa\n', 'STMN', '1\nCPLA2\nNGF\nRap1\nBD')
1
None
None
STMN1

(222, ('NGF', 'none', 'NGF'))
('MN1\nCPLA2\n', 'NGF', '\nRap1\nBDNF\nNT34\nEGF')

(241, ('EGF', 'none', 'EGF'))
('BDNF\nNT34\n', 'EGF', '\nFGF\nPDGF\nTIKAB,\nRa')

(245, ('FGF', 'none', 'FGF'))
('\nNT34\nEGF\n', 'FGF', '\nPDGF\nTIKAB,\nRasGRE')

(250, ('PDGF', 'none', 'PDGF'))
('4\nEGF\nFGF\n', 'PDGF', '\nTIKAB,\nRasGRE\nPKC\n')

(268, ('PKC', 'none', 'PKC'))
('B,\nRasGRE\n', 'PKC', '\nMNK12\nCREB\nRaB\nSca')

(272, ('MNK', 'none', 'MNK'))
('asGRE\nPKC\n', 'MNK', '12\nCREB\nRaB\nScatfol')
12
None
None
This integer is not found in int_suffixes: 12
{1, 2}

(279, ('CREB', 'none', 'CREB'))
('PKC\nMNK12\n', 'CREB', '\nRaB\nScatfold\nMP1\nM')

(307, ('ERK', 'none', 'ERK'))
('P1\nMEKI p\n', 'ERK', '\nRSK2\nEGFR\nFGFR\nPDG')

(311, ('RSK', 'none', 'RSK'))
('EKI p\nERK\n', 'RSK', '2\nEGFR\nFGFR\nPDGFR\nE')
2
None
None
RSK2

(322, ('FGFR', 'none', 'FGFR'))
('RSK2\nEGFR\n', 'FGFR', '\nPDGFR\nElk-1\nGREZSO')

(328, ('PDGFR', 'none', 'PDGFR'))
('EGFR\nFGFR\n', 'PDGFR', '\nElk-1\nGREZSOS\nProl')

(393, ('SRF', 'none', 'SRF'))
('\nRaft\nMoe\n', 'SRF', '\nC-fos\nMEK2\nSapla\nC')

(403, ('MEK', 'none', 'MEK'))
('SRF\nC-fos\n', 'MEK', '2\nSapla\nCMr\nDNA\nDNA')
2
None
None
MEK2

(418, ('DNA', 'none', 'DNA'))
('Sapla\nCMr\n', 'DNA', '\nDNA\nNFL\nG12\nGapim\n')

(422, ('DNA', 'none', 'DNA'))
('a\nCMr\nDNA\n', 'DNA', '\nNFL\nG12\nGapim\netaG')

(455, ('PPP', 'none', 'PPP'))
('P\nРТР мКР\n', 'PPP', '3C\nGSTR\nHSP72\nEvil\n')

(466, ('HSP', 'none', 'HSP'))
('PP3C\nGSTR\n', 'HSP', '72\nEvil\nJNK and p38')
72
None
None
This integer is not found in int_suffixes: 72
{73, 10, 75, 78, 60, 47, 22, 27, 28}

(477, ('JNK', 'none', 'JNK'))
('SP72\nEvil\n', 'JNK', ' and p38 MAP kinase')

(489, ('MAP', 'none', 'MAP'))
('K and p38 ', 'MAP', ' kinase\npathway\nFLN')

(513, ('JIP', 'none', 'JIP'))
('hway\nFLNA ', 'JIP', '3\nARRB Crkil\nTp1aCo')
3
None
None
JIP3

(519, ('ARRB', 'none', 'ARRB'))
('FLNA JIP3\n', 'ARRB', ' Crkil\nTp1aCot\n+MEK')

(539, ('MEKK', 'none', 'MEKK'))
('\nTp1aCot\n+', 'MEKK', '\nNEAT-2\nGLK\nScaffol')

(577, ('MKK', 'none', 'MKK'))
('EAT-4\nНак\n', 'MKK', '4P\n1OJUN\nJNK\nНРК1\nM')

(589, ('JNK', 'none', 'JNK'))
('K4P\n1OJUN\n', 'JNK', '\nНРК1\nMLK3\nмкк?\nJIP')

(598, ('MLK', 'none', 'MLK'))
('\nJNK\nНРК1\n', 'MLK', '3\nмкк?\nJIP1/2\nJunD\n')
3
None
None
MLK3

(608, ('JIP', 'none', 'JIP'))
('MLK3\nмкк?\n', 'JIP', '1/2\nJunD\nDNA\nSerum ')
1
/
2
JIP1/2
-> JIP1, JIP2

(620, ('DNA', 'none', 'DNA'))
('P1/2\nJunD\n', 'DNA', '\nSerum cytotoxic dr')

(720, ('PAK', 'none', 'PAK'))
('.\nCdo42Fa\n', 'PAK', '1/2\nMEKKZ\nProlifera')
1
/
2
PAK1/2
-> PAK1, PAK2

(764, ('ATF', 'none', 'ATF'))
('entiation\n', 'ATF', '-2\ninflammation\nLZK')
2
None
None
ATF2

(783, ('LZK', 'none', 'LZK'))
('lammation\n', 'LZK', '\nMUK\nMLTK\nPP2CA\nCel')

(857, ('CASP', 'none', 'CASP'))
('g\npathway\n', 'CASP', '\nMST12\nPTP\n*P.\np53\n')

(861, ('MST', 'none', 'MST'))
('hway\nCASP\n', 'MST', '12\nPTP\n*P.\np53\nAKT\n')
12
None
None
This integer is not found in int_suffixes: 12
{1, 2, 3, 4, 107, 16, 17, 80, 81, 149, 87, 119, 120, 25, 93, 158, 95}

(867, ('PTP', 'none', 'PTP'))
('ASP\nMST12\n', 'PTP', '\n*P.\np53\nAKT\nΑρoplo')

(879, ('AKT', 'none', 'AKT'))
('P\n*P.\np53\n', 'AKT', '\nΑρoplosis\nTNF\nTNFR')

(898, ('TNFR', 'none', 'TNFR'))
('losis\nTNF\n', 'TNFR', '\n+p\nTRAF2\nGCK\nIL1\nL')

(906, ('TRAF', 'none', 'TRAF'))
('F\nTNFR\n+p\n', 'TRAF', '2\nGCK\nIL1\nLIR\nSapta')
2
None
None
TRAF2

(919, ('LIR', 'none', 'LIR'))
('2\nGCK\nIL1\n', 'LIR', '\nSapta\nGADDISA\nASK2')

(937, ('ASK', 'none', 'ASK'))
('a\nGADDISA\n', 'ASK', '2\nFAS\nMKK3\n+P.\nFASL')
2
None
None
ASK2

(942, ('FAS', 'none', 'FAS'))
('DISA\nASK2\n', 'FAS', '\nMKK3\n+P.\nFASL\nTGFB')

(946, ('MKK', 'none', 'MKK'))
('\nASK2\nFAS\n', 'MKK', '3\n+P.\nFASL\nTGFB\nDAX')
3
None
None
MKK3

(961, ('TGFB', 'none', 'TGFB'))
('\n+P.\nFASL\n', 'TGFB', '\nDAXX\nASK1\np38\nTGFB')

(970, ('ASK', 'none', 'ASK'))
('TGFB\nDAXX\n', 'ASK', '1\np38\nTGFBR\nMKKE\nMA')
1
None
None
ASK1

(981, ('TGFBR', 'none', 'TGFBR'))
('\nASK1\np38\n', 'TGFBR', '\nMKKE\nMAX\nDNA\nTAB1\n')

(994, ('DNA', 'none', 'DNA'))
('\nMKKE\nMAX\n', 'DNA', '\nTAB1\n| TAB2\nBCSIT\n')

(998, ('TAB', 'none', 'TAB'))
('E\nMAX\nDNA\n', 'TAB', '1\n| TAB2\nBCSIT\nTAK1')
1
None
None
TAB1

(1005, ('TAB', 'none', 'TAB'))
('NA\nTAB1\n| ', 'TAB', '2\nBCSIT\nTAK1\nMEF2C\n')
2
None
None
TAB2

(1016, ('TAK', 'none', 'TAK'))
('AB2\nBCSIT\n', 'TAK', '1\nMEF2C\nCD14\nLPS\nPP')
1
None
None
TAK1

(1057, ('HSP', 'none', 'HSP'))
('AFE\nPP2CB\n', 'HSP', '27\nAPKAK\nMSK2\nDNA d')
27
None
None
HSP27

(1069, ('MSK', 'none', 'MSK'))
('P27\nAPKAK\n', 'MSK', '2\nDNA damage-\nGADD4')
2
None
None
MSK2

(1074, ('DNA', 'none', 'DNA'))
('PKAK\nMSK2\n', 'DNA', ' damage-\nGADD4\nMEKK')

(1087, ('GADD', 'none', 'GADD'))
('A damage-\n', 'GADD', '4\nMEKK\nCREB\nTAO12\nC')
4
None
None
This integer is not found in int_suffixes: 4
{153, 34, 45, 33}

(1093, ('MEKK', 'none', 'MEKK'))
('ge-\nGADD4\n', 'MEKK', '\nCREB\nTAO12\nCdc2e\nE')

(1098, ('CREB', 'none', 'CREB'))
('ADD4\nMEKK\n', 'CREB', '\nTAO12\nCdc2e\nERKS p')

(1102, ('TAO', 'none', 'TAO'))
('MEKK\nCREB\n', 'TAO', '12\nCdc2e\nERKS pathw')
12
None
None
This integer is not found in int_suffixes: 12
{1, 2}

(1108, ('Cdc', 'none', 'Cdc'))
('REB\nTAO12\n', 'Cdc', '2e\nERKS pathway\nWnt')

(1149, ('NLK', 'none', 'NLK'))
('g\npathway\n', 'NLK', '\nSerum, EGF,\nreacti')

(1160, ('EGF', 'none', 'EGF'))
('LK\nSerum, ', 'EGF', ',\nreactive oxygen s')

(1268, ('DNA', 'none', 'DNA'))
('ownstream\n', 'DNA', '\n')
-----209------

(11, ('RIP', 'none', 'RIP'))
('TNF\nMARI\n', 'RIP', '\nRIP\nTRAF2\nTRAF2\nAS')

(15, ('RIP', 'none', 'RIP'))
('\nMARI\nRIP\n', 'RIP', '\nTRAF2\nTRAF2\nASK1\nP')

(20, ('TRAF', 'none', 'TRAF'))
('I\nRIP\nRIP\n', 'TRAF', '2\nTRAF2\nASK1\nProcas')
2
None
None
TRAF2

(26, ('TRAF', 'none', 'TRAF'))
('RIP\nTRAF2\n', 'TRAF', '2\nASK1\nProcaspase 8')
2
None
None
TRAF2

(31, ('ASK', 'none', 'ASK'))
('AF2\nTRAF2\n', 'ASK', '1\nProcaspase 8\nBid\n')
1
None
None
ASK1

(58, ('MEKK', 'none', 'MEKK'))
('8\nBid\nВах\n', 'MEKK', '1\n(αχβ\nIKK\nMEKK7\nCa')
1
None
None
MEKK1

(68, ('IKK', 'none', 'IKK'))
('EKK1\n(αχβ\n', 'IKK', '\nMEKK7\nCaspase 8\nIк')

(73, ('MEKK', 'none', 'MEKK'))
('\n(αχβ\nIKK\n', 'MEKK', '7\nCaspase 8\nIкВа\nJN')
7
None
None
MEKK7

(93, ('JNK', 'none', 'JNK'))
('se 8\nIкВа\n', 'JNK', '\nNF KB\nCaspase 3\nNF')

(173, ('TNF-R', 'none', 'TNF-R'))
('e c\nTRADD\n', 'TNF-R', '\nTRADD\nTNF-R\nTRADD\n')

(185, ('TNF-R', 'none', 'TNF-R'))
('F-R\nTRADD\n', 'TNF-R', '\nTRADD\nTNF-R\nFADD\nC')

(197, ('TNF-R', 'none', 'TNF-R'))
('F-R\nTRADD\n', 'TNF-R', '\nFADD\nCD40\n')

-----392------

(33, ('HIF', 'none', 'HIF'))
('mor cells\n', 'HIF', '\nVEGFRI\nHIF\nMMP\nNOS')

(44, ('HIF', 'none', 'HIF'))
('IF\nVEGFRI\n', 'HIF', '\nMMP\nNOS 2\nSDFI\nVEG')

(48, ('MMP', 'none', 'MMP'))
('EGFRI\nHIF\n', 'MMP', '\nNOS 2\nSDFI\nVEGF\nEC')

(52, ('NOS', 'none', 'NOS'))
('I\nHIF\nMMP\n', 'NOS', ' 2\nSDFI\nVEGF\nECM\nde')
2
None
None
NOS2

(68, ('ECM', 'none', 'ECM'))
('SDFI\nVEGF\n', 'ECM', '\ndegradation\n| EphB')

(93, ('FGF', 'none', 'FGF'))
('\n| EphB4\nБ', 'FGF', '\nVEGFR2\nTie2 Ang\nVE')

(99, ('VEGFR', 'none', 'VEGFR'))
('phB4\nБFGF\n', 'VEGFR', '2\nTie2 Ang\nVEGFRI\nM')
2
None
None
VEGFR2

(109, ('Ang', 'none', 'Ang'))
('GFR2\nTie2 ', 'Ang', '\nVEGFRI\nMMI\nPericyt')

(172, ('MMP', 'none', 'MMP'))
('cell\nTie2\n', 'MMP', '\nTAM\nFibroblast\nO2\n')

(212, ('FGF', 'none', 'FGF'))
('ts\nVEGF, Þ', 'FGF', '\nSDF-1\nGM-CSF\nROS, ')

(216, ('SDF', 'none', 'SDF'))
('EGF, ÞFGF\n', 'SDF', '-1\nGM-CSF\nROS, NO\nV')
1
None
None
SDF1

(217, ('SDF-', 'none', 'SDF-'))
('EGF, ÞFGF\n', 'SDF-', '1\nGM-CSF\nROS, NO\nVE')
1
None
None
This integer is not found in int_suffixes: 1
{5}

(225, ('CSF', 'none', 'CSF'))
('\nSDF-1\nGM-', 'CSF', '\nROS, NO\nVEGF\nCell\n')

(229, ('ROS', 'none', 'ROS'))
('-1\nGM-CSF\n', 'ROS', ', NO\nVEGF\nCell\nHIFT')

(261, ('ECM', 'none', 'ECM'))
('\nguidance\n', 'ECM', '\ndeposition\nTephrin')

(304, ('PDGFR', 'none', 'PDGFR'))
('etastasis\n', 'PDGFR', '\nAngl\nStalk\nPDGFB\nH')

-----538------

(206, ('TEM', 'none', 'TEM'))
('sspriming\n', 'TEM', ' cell\nINOS\nIrradiat')

(234, ('GAP', 'none', 'GAP'))
('diated\nor ', 'GAP', '\nsporozoites\nIFN-\nS')

(256, ('STAT', 'none', 'STAT'))
('ites\nIFN-\n', 'STAT', '\nFasL\nFas\nApoptosis')

(343, ('IL-', 'none', 'IL-'))
('-\nNK cell\n', 'IL-', '12-\nCSP-based\nCD4+\n')
-----525------

(187, ('PC-', 'none', 'PC-'))
('reduction\n', 'PC-', '1\nPC-1\nRead Length\n')
1
None
None
PC-1

(192, ('PC-', 'none', 'PC-'))
('tion\nPC-1\n', 'PC-', '1\nRead Length\nSampl')
1
None
None
PC-1

(217, ('PC-', 'none', 'PC-'))
('h\nSamples\n', 'PC-', '1\nPC-1\nDifferential')
1
None
None
PC-1

(222, ('PC-', 'none', 'PC-'))
('ples\nPC-1\n', 'PC-', '1\nDifferentially ex')
1
None
None
PC-1

(306, ('DEGS', 'none', 'DEGS'))
('mal\nTumor\n', 'DEGS', '\nFunctional Analysi')

(397, ('PER', 'cf', 'per'))
('tion\nData ', 'per', '-processing\nData ac')

(507, ('PC-', 'none', 'PC-'))
('xpression\n', 'PC-', '2\nPC-2\nPC-3\nPC-3\n')
2
None
None
This integer is not found in int_suffixes: 2
{1, 3}

(512, ('PC-', 'none', 'PC-'))
('sion\nPC-2\n', 'PC-', '2\nPC-3\nPC-3\n')
2
None
None
This integer is not found in int_suffixes: 2
{1, 3}

(517, ('PC-', 'none', 'PC-'))
('PC-2\nPC-2\n', 'PC-', '3\nPC-3\n')
3
None
None
PC-3

(522, ('PC-', 'none', 'PC-'))
('PC-2\nPC-3\n', 'PC-', '3\n')
3
None
None
PC-3
-----168------

-----268------

(2, ('DVL', 'none', 'DVL'))
('', 'DVL', '\nS/T-P\nWNT\nUb Ub\nΥΑ')

(12, ('WNT', 'none', 'WNT'))
('DVL\nS/T-P\n', 'WNT', '\nUb Ub\nΥΑP 1/ΤΑΖ\nUb')

(42, ('APC', 'none', 'APC'))
('Ub\nUb\nCK1\n', 'APC', ' deficiency\nGSK\nB-C')

(99, ('APC', 'none', 'APC'))
('C.\nB-TRCP\n', 'APC', '\nB-CATENIN\nS/T-P\nYA')

(119, ('YAP', 'none', 'YAP'))
('NIN\nS/T-P\n', 'YAP', '1/TAZ YAP1/TAZ\nYAP1')

(124, ('TAZ', 'none', 'TAZ'))
('/T-P\nYAP1/', 'TAZ', ' YAP1/TAZ\nYAP1, B-c')

(128, ('YAP', 'none', 'YAP'))
('\nYAP1/TAZ ', 'YAP', '1/TAZ\nYAP1, B-caten')

(133, ('TAZ', 'none', 'TAZ'))
('/TAZ YAP1/', 'TAZ', '\nYAP1, B-catenin\nde')

(137, ('YAP', 'none', 'YAP'))
(' YAP1/TAZ\n', 'YAP', '1, B-catenin\ndegrad')

(194, ('YAP', 'none', 'YAP'))
('retention\n', 'YAP', '1/TAZ\nB-CATENIN\nTCF')

(199, ('TAZ', 'none', 'TAZ'))
('tion\nYAP1/', 'TAZ', '\nB-CATENIN\nTCF/LEF\n')

(213, ('TCF', 'none', 'TCF'))
('B-CATENIN\n', 'TCF', '/LEF\nY -P\nYES\nYAP1\n')

(217, ('LEF', 'none', 'LEF'))
('TENIN\nTCF/', 'LEF', '\nY -P\nYES\nYAP1\nYAP1')

(226, ('YES', 'none', 'YES'))
('/LEF\nY -P\n', 'YES', '\nYAP1\nYAP1/TAZ)\nB-C')

(230, ('YAP', 'none', 'YAP'))
('\nY -P\nYES\n', 'YAP', '1\nYAP1/TAZ)\nB-CATEN')
1
None
None
YAP1

(235, ('YAP', 'none', 'YAP'))
('\nYES\nYAP1\n', 'YAP', '1/TAZ)\nB-CATENIN\nTE')

(240, ('TAZ', 'none', 'TAZ'))
('YAP1\nYAP1/', 'TAZ', ')\nB-CATENIN\nTEAD\nTB')

(256, ('TEAD', 'none', 'TEAD'))
('B-CATENIN\n', 'TEAD', '\nTBX5\nNIXV\n')

(260, ('TBX', 'none', 'TBX'))
('ENIN\nTEAD\n', 'TBX', '5\nNIXV\n')
5
None
None
TBX5
-----247------

(27, ('COAS', 'none', 'COAS'))
('cids\nAcyl ', 'COAS', '\nfC4-OH camitine\nc2')

(103, ('COAS', 'none', 'COAS'))
(' CoA\nAcyl ', 'COAS', '\nAcac CoA\nTCA Cycle')

(116, ('TCA', 'none', 'TCA'))
('\nAcac CoA\n', 'TCA', ' Cycle\n1Succinate\nI')

(158, ('COA', 'none', 'COA'))
('\nSuccinyl\n', 'COA', '\nДронв -\nAcetoaceta')
-----288------

(18, ('RET', 'none', 'RET'))
('F\nB.\nGDNF\n', 'RET', '\nGFRA1\nGFRA1\nP140NC')

(23, ('GFRA', 'none', 'GFRA'))
('\nGDNF\nRET\n', 'GFRA', '1\nGFRA1\nP140NCAM\n88')
1
None
None
GFRA1

(29, ('GFRA', 'none', 'GFRA'))
('RET\nGFRA1\n', 'GFRA', '1\nP140NCAM\n8888889E')
1
None
None
GFRA1

(39, ('NCAM', 'none', 'NCAM'))
('GFRA1\nP140', 'NCAM', '\n8888889E8\nFyn\nSHC\n')

(57, ('SHC', 'none', 'SHC'))
('889E8\nFyn\n', 'SHC', '\n(PLCY\nFAK\nMAP K\nRa')

(67, ('FAK', 'none', 'FAK'))
('SHC\n(PLCY\n', 'FAK', '\nMAP K\nRas\nPKC\nРІЗК')

(71, ('MAP', 'none', 'MAP'))
('(PLCY\nFAK\n', 'MAP', ' K\nRas\nPKC\nРІЗК\nCa+')

(81, ('PKC', 'none', 'PKC'))
('MAP K\nRas\n', 'PKC', '\nРІЗК\nCa++\nfos\nNeur')

-----337------
-----238------

(30, ('SPT', 'none', 'SPT'))
('(4 weeks)\n', 'SPT', '\n(n = 6)\nM (n = 18)')

(174, ('BIOT', 'l,1,I,| -> l,cf', 'blot'))
(')\nWestern ', 'blot', '\n(n = 6)\nF2w (n = 1')
-----145------

(48, ('MAPK', 'none', 'MAPK'))
('Lum\nNF-KB\n', 'MAPK', '\nActivation of\nRac\n')

(142, ('IL-', 'none', 'IL-'))
(' response\n', 'IL-', '8\n')
8
None
None
IL-8
-----83------

(2, ('IL-', 'none', 'IL-'))
('', 'IL-', '15\nWortmannin\nJAK1\n')
15
None
None
IL-15

(19, ('JAK', 'none', 'JAK'))
('ortmannin\n', 'JAK', '1\nPI3K\nWP1066\nSTAT3')
1
None
None
JAK1

(37, ('STAT', 'none', 'STAT'))
('3K\nWP1066\n', 'STAT', '3\nERK1/2\nCell Survi')
3
None
None
STAT3

(42, ('ERK', 'none', 'ERK'))
('066\nSTAT3\n', 'ERK', '1/2\nCell Survival\nI')
1
/
2
ERK1/2
-> ERK1, ERK2

(63, ('IL-', 'none', 'IL-'))
(' Survival\n', 'IL-', '15RA\nIL-2RB\nIL-2Ry\n')

(71, ('IL-', 'none', 'IL-'))
('l\nIL-15RA\n', 'IL-', '2RB\nIL-2Ry\n')

(78, ('IL-', 'none', 'IL-'))
('RA\nIL-2RB\n', 'IL-', '2Ry\n')
-----187------

(32, ('ROS', 'none', 'ROS'))
('s\nHypoxia ', 'ROS', '\nChemoresistance\nAl')
-----58------

-----153------

(48, ('JAK', 'none', 'JAK'))
('ular\nРІЗК\n', 'JAK', '2\nP.\nJAK2\nIRS-1/2\n(')
2
None
None
JAK2

(56, ('JAK', 'none', 'JAK'))
('К\nJAK2\nP.\n', 'JAK', '2\nIRS-1/2\n(P\nРІЗК Т')
2
None
None
JAK2

(61, ('IRS', 'none', 'IRS'))
('2\nP.\nJAK2\n', 'IRS', '-1/2\n(P\nРІЗК Т\nSTAT')
1
/
2
IRS1/2
-> IRS1, IRS2

(62, ('IRS-', 'none', 'IRS-'))
('2\nP.\nJAK2\n', 'IRS-', '1/2\n(P\nРІЗК Т\nSTAT3')
1
/
2
This integer is not found in int_suffixes: 1
{4}

(80, ('STAT', 'none', 'STAT'))
('(P\nРІЗК Т\n', 'STAT', '3\nSTAT3 P\nSTAT3 P\nS')
3
None
None
STAT3

(86, ('STAT', 'none', 'STAT'))
('К Т\nSTAT3\n', 'STAT', '3 P\nSTAT3 P\nSTAT3 P')
3
None
None
STAT3

(94, ('STAT', 'none', 'STAT'))
('3\nSTAT3 P\n', 'STAT', '3 P\nSTAT3 P\nSTAT3\nP')
3
None
None
STAT3

(102, ('STAT', 'none', 'STAT'))
('P\nSTAT3 P\n', 'STAT', '3 P\nSTAT3\nPDE3B\nCAM')
3
None
None
STAT3

(110, ('STAT', 'none', 'STAT'))
('P\nSTAT3 P\n', 'STAT', '3\nPDE3B\nCAMP I\nSTAT')
3
None
None
STAT3

(115, ('PDE', 'none', 'PDE'))
('3 P\nSTAT3\n', 'PDE', '3B\nCAMP I\nSTAT3 P\nS')

(129, ('STAT', 'none', 'STAT'))
('3B\nCAMP I\n', 'STAT', '3 P\nSTAT3 P\nPOMC, N')
3
None
None
STAT3

(137, ('STAT', 'none', 'STAT'))
('I\nSTAT3 P\n', 'STAT', '3 P\nPOMC, NT T\n')
3
None
None
STAT3

-----331------

(9, ('gene', 'cf', 'gene'))
('miRNA ', 'gene', '\nRNAPII\nTranscribin')

(104, ('DGCR', 'none', 'DGCR'))
('ng\nDrosha\n', 'DGCR', '8\npre-miRNA\nExporti')
8
None
None
DGCR8

(152, ('AGO', 'none', 'AGO'))
('er\nDicing\n', 'AGO', '1-4\nAGO2\nMİRNA/MİRN')
1
-
4
AGO1-4
-> AGO4

(159, ('AGO', 'none', 'AGO'))
('ng\nAGO1-4\n', 'AGO', '2\nMİRNA/MİRNA*\ndupl')
2
None
None
AGO2
-----318------

(187, ('DNA', 'none', 'DNA'))
('Ca2+ flux\n', 'DNA', ' damage\nMitochondri')

(235, ('PARP', 'none', 'PARP'))
('hrome-c ↑\n', 'PARP', ' ↑\nAIF ↑\nCaspase\nPA')

(241, ('AIF', 'none', 'AIF'))
(' ↑\nPARP ↑\n', 'AIF', ' ↑\nCaspase\nPARP\nCas')

(256, ('PARP', 'none', 'PARP'))
('↑\nCaspase\n', 'PARP', '\nCaspases\nenergy de')
-----382------

(6, ('PHOSPHO', 'cf', 'phospho'))
('', 'phospho', ' Nacyl othanolamine')

(34, ('PHOSPHO', 'cf', 'phospho'))
('nolamine\n(', 'phospho', "-NAE)\nN'(CHb\nA\nCa d")

(38, ('NAE', 'none', 'NAE'))
('\n(phospho-', 'NAE', ")\nN'(CHb\nA\nCa depen")

(135, ('ACID', 'cf', 'acid'))
('sphatidic\n', 'acid', '\nyso PC\nN-acyl phos')

(206, ('NAE', 'none', 'NAE'))
('nolamine\n(', 'NAE', ')\n`NH,"\nglycerol-\n3')

(276, ('HO-', 'none', 'HO-'))
('E)\nR,COOH\n', 'HO-', '\nно-\nно\nR,COCH\nN-ac')

(379, ('NAE', 'none', 'NAE'))
('amine\n(GP ', 'NAE', ')\n')
-----848------

(179, ('MBL', 'none', 'MBL'))
(' surfaces\n', 'MBL', ' Ficolins\nC1q]\nci\nC')

(279, ('MASP', 'none', 'MASP'))
('i\ncomplex\n', 'MASP', '\ncomplexes\nAmplific')

-----145------

(34, ('GSH', 'none', 'GSH'))
('rotein-SH\n', 'GSH', '\nGSH\nGS-SH\nProtein-')

(38, ('GSH', 'none', 'GSH'))
('in-SH\nGSH\n', 'GSH', '\nGS-SH\nProtein-SSH\n')

(56, ('SSH', 'none', 'SSH'))
('H\nProtein-', 'SSH', '\nGSH\nCBS/CSE\nCys-S-')

(60, ('GSH', 'none', 'GSH'))
('otein-SSH\n', 'GSH', '\nCBS/CSE\nCys-S-S-Cy')

(64, ('CBS', 'none', 'CBS'))
('n-SSH\nGSH\n', 'CBS', '/CSE\nCys-S-S-Cys\nCy')

(68, ('CSE', 'none', 'CSE'))
('H\nGSH\nCBS/', 'CSE', '\nCys-S-S-Cys\nCys-SS')

(88, ('SSH', 'none', 'SSH'))
('S-Cys\nCys-', 'SSH', '-\nCys-SH\nCBS/CSE/3M')

(100, ('CBS', 'none', 'CBS'))
('H-\nCys-SH\n', 'CBS', '/CSE/3MST\nCys-SH-\nH')

(104, ('CSE', 'none', 'CSE'))
('ys-SH\nCBS/', 'CSE', '/3MST\nCys-SH-\nH,S\nT')

(109, ('MST', 'none', 'MST'))
('\nCBS/CSE/3', 'MST', '\nCys-SH-\nH,S\nThiosu')
-----329------

(2, ('FZD', 'none', 'FZD'))
('', 'FZD', '\nRNF43/ZNRF3\nLRP5/6')

(6, ('RNF', 'none', 'RNF'))
('FZD\n', 'RNF', '43/ZNRF3\nLRP5/6\n(Ub')

(13, ('ZNRF', 'none', 'ZNRF'))
('FZD\nRNF43/', 'ZNRF', '3\nLRP5/6\n(Ub)\nCytop')
3
None
None
ZNRF3

(18, ('LRP', 'none', 'LRP'))
('F43/ZNRF3\n', 'LRP', '5/6\n(Ub)\nCytoplasm\n')
5
/
6
LRP5/6
-> LRP5, LRP6

(40, ('DVL', 'none', 'DVL'))
('Cytoplasm\n', 'DVL', '\n(Ub)\nDVL\nAPC Axin\n')

(49, ('DVL', 'none', 'DVL'))
('\nDVL\n(Ub)\n', 'DVL', '\nAPC Axin\nSCF\nB-cat')

(53, ('APC', 'none', 'APC'))
('\n(Ub)\nDVL\n', 'APC', ' Axin\nSCF\nB-catenin')

(116, ('TRAF', 'none', 'TRAF'))
('-TRCP\n(Ub\n', 'TRAF', '6\nUb\nLUb)\nUb)\n(Ub I')
6
None
None
TRAF6

(168, ('FBW', 'none', 'FBW'))
('N\nSCF\n(Ub\n', 'FBW', '7\nGSK-3B\nSCF\n(κΚα Ι')
7
None
None
FBW7

(237, ('TLE', 'none', 'TLE'))
('s\nUb\nXIAP ', 'TLE', ' B-catenin\nWnt targ')

(291, ('NF-kB', 'none', 'NF-kB'))
(',cyclinD1\n', 'NF-kB', ' pathway\nTNF,IL-6,I')

(307, ('IL-', 'none', 'IL-'))
('thway\nTNF,', 'IL-', '6,IL-1\nC-JUN P65 P5')

(312, ('IL-', 'none', 'IL-'))
('\nTNF,IL-6,', 'IL-', '1\nC-JUN P65 P50\n')
1
None
None
This integer is not found in int_suffixes: 1
{2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 29, 31, 34}

-----293------

(60, ('ERK', 'none', 'ERK'))
('orylation ', 'ERK', '1/2\nJNK\nChalcones\nK')
1
/
2
ERK1/2
-> ERK1, ERK2

(67, ('JNK', 'none', 'JNK'))
('on ERK1/2\n', 'JNK', '\nChalcones\nKeap1\nNr')

(87, ('Nrf', 'none', 'Nrf'))
('nes\nKeap1\n', 'Nrf', '2\np38\nNF-KB\nE Keap1')
2
None
None
This integer is not found in int_suffixes: 2
{3}

(110, ('IKK', 'none', 'IKK'))
('B\nE Keap1\n', 'IKK', '\nIкBa\nDissociation\n')

(145, ('Nrf', 'none', 'Nrf'))
('sociation\n', 'Nrf', '2\nIкBa\nNF-KB\nNuclea')
2
None
None
This integer is not found in int_suffixes: 2
{3}

(233, ('Nrf', 'none', 'Nrf'))
('s\nNucleus\n', 'Nrf', '2\nNF-KB\nARE\nPro-inf')
2
None
None
This integer is not found in int_suffixes: 2
{3}

(244, ('ARE', 'none', 'ARE'))
('rf2\nNF-KB\n', 'ARE', '\nPro-inflammatory g')
-----273------

-----486------

-----305------

(77, ('Bcl-', 'none', 'Bcl-'))
(' proteins\n', 'Bcl-', '2/xL\n| XIAP\nXIAP\nBa')

-----176------

(10, ('LIN', 'none', 'LIN'))
('A LPR-1\n', 'LIN', '-3/EGF\nLIN-3/EGF\nLE')

(11, ('LIN-', 'none', 'LIN-'))
('A LPR-1\n', 'LIN-', '3/EGF\nLIN-3/EGF\nLET')

(16, ('EGF', 'none', 'EGF'))
('R-1\nLIN-3/', 'EGF', '\nLIN-3/EGF\nLET-60/R')

(20, ('LIN', 'none', 'LIN'))
('LIN-3/EGF\n', 'LIN', '-3/EGF\nLET-60/Ras\nL')

(21, ('LIN-', 'none', 'LIN-'))
('LIN-3/EGF\n', 'LIN-', '3/EGF\nLET-60/Ras\nLE')

(26, ('EGF', 'none', 'EGF'))
('EGF\nLIN-3/', 'EGF', '\nLET-60/Ras\nLET-60/')

(58, ('ERK', 'none', 'ERK'))
('Ras\nMPK-1/', 'ERK', '\nMPK-1/ERK\nLPR-1\nLI')

(68, ('ERK', 'none', 'ERK'))
('ERK\nMPK-1/', 'ERK', '\nLPR-1\nLIN-1/Ets\nLI')

(78, ('LIN', 'none', 'LIN'))
('ERK\nLPR-1\n', 'LIN', '-1/Ets\nLIN-1/Ets\nta')

(79, ('LIN-', 'none', 'LIN-'))
('ERK\nLPR-1\n', 'LIN-', '1/Ets\nLIN-1/Ets\ntar')

(88, ('LIN', 'none', 'LIN'))
('LIN-1/Ets\n', 'LIN', '-1/Ets\ntarget genes')

(89, ('LIN-', 'none', 'LIN-'))
('LIN-1/Ets\n', 'LIN-', '1/Ets\ntarget genes\n')

(130, ('FATE', 'cf', 'fate'))
('enes\nduct ', 'fate', ' &\nlumen\nduct fate\n')

(148, ('FATE', 'cf', 'fate'))
('umen\nduct ', 'fate', '\nlumen integrity\nin')
-----612------

(7, ('MPR', 'none', 'MPR'))
('Orn,\n', 'MPR', '\nGlc\nModule 2\nAXTS\n')

(46, ('MTH', 'none', 'MTH'))
('GLT1\nargD\n', 'MTH', '1-AT\nGlc\nADP\nOrn\nar')

(156, ('EMP', 'none', 'EMP'))
('argBE\nAKG\n', 'EMP', '\nமeே எரே\nACTGIU-P\nG')

(188, ('ODC', 'none', 'ODC'))
('DH2\nDAGC1\n', 'ODC', '1\nATP I NAD*\nALDI\nP')
1
None
None
ODC1

(193, ('ATP', 'none', 'ATP'))
('AGC1\nODC1\n', 'ATP', ' I NAD*\nALDI\nPYR\nPY')

(199, ('NAD', 'none', 'NAD'))
('DC1\nATP I ', 'NAD', '*\nALDI\nPYR\nPYR\nModu')

(232, ('ARG', 'none', 'ARG'))
('e 1\n- Cit\n', 'ARG', '3\n! Urea cycle\nOrn\n')
3
None
None
This integer is not found in int_suffixes: 3
{1, 2, 99, 134, 147}

(254, ('ARG', 'none', 'ARG'))
('cycle\nOrn\n', 'ARG', '5,6 or\nMLS-argBca\nA')
5
,
6
This integer is not found in int_suffixes: 5
{1, 2, 99, 134, 147}

(284, ('ARG', 'none', 'ARG'))
('\nACTGIU-P\n', 'ARG', '5,6\nAKG\nI! IDP1 kgd')
5
,
6
This integer is not found in int_suffixes: 5
{1, 2, 99, 134, 147}

(303, ('KGD', 'cf', 'kgd'))
('G\nI! IDP1 ', 'kgd', '2A\nIlici\nSUcc PDA1|')

(320, ('PDA', 'none', 'PDA'))
('lici\nSUcc ', 'PDA', '1|S313A||\nor PDA1\nP')
1
None
None
This integer is not found in int_suffixes: 1
{2}

(336, ('PDA', 'none', 'PDA'))
('313A||\nor ', 'PDA', '1\nPYC2\nACTGIU-SA\nAC')
1
None
None
This integer is not found in int_suffixes: 1
{2}

(356, ('ACO', 'none', 'ACO'))
('ACTGIU-SA\n', 'ACO', '2 TCA\nTACO\nARG2\nACT')
2
None
None
ACO2

(361, ('TCA', 'none', 'TCA'))
('U-SA\nACO2 ', 'TCA', '\nTACO\nARG2\nACTGIU\nG')

(366, ('TACO', 'none', 'TACO'))
('\nACO2 TCA\n', 'TACO', '\nARG2\nACTGIU\nGlu\nAr')

(370, ('ARG', 'none', 'ARG'))
(' TCA\nTACO\n', 'ARG', '2\nACTGIU\nGlu\nArg\nCA')
2
None
None
ARG2

(390, ('CAR', 'none', 'CAR'))
('U\nGlu\nArg\n', 'CAR', '1\nARG8\nOAA\npar2a\n*U')
1
None
None
CAR1

(395, ('ARG', 'none', 'ARG'))
('\nArg\nCAR1\n', 'ARG', '8\nOAA\npar2a\n*Urea P')
8
None
None
This integer is not found in int_suffixes: 8
{1, 2, 99, 134, 147}

(404, ('PAR', 'cf', 'par'))
('\nARG8\nOAA\n', 'par', '2a\n*Urea Pro\nARG7 o')

(420, ('ARG', 'none', 'ARG'))
('*Urea Pro\n', 'ARG', '7 or\nACO2 CIT1\nCIT\n')
7
None
None
This integer is not found in int_suffixes: 7
{1, 2, 99, 134, 147}

(428, ('ACO', 'none', 'ACO'))
('o\nARG7 or\n', 'ACO', '2 CIT1\nCIT\nOAA\nORTI')
2
None
None
ACO2

(459, ('ARG', 'cf', 'arg'))
('I\nOrn MLS-', 'arg', "\nACTOrn\nACCOA\nNAD'+")

(476, ('NAD', 'none', 'NAD'))
('Orn\nACCOA\n', 'NAD', "'+ H* NADH\nAOX\nH,0\n")

(490, ('AOX', 'none', 'AOX'))
('+ H* NADH\n', 'AOX', '\nH,0\ne-\nН,о\nATP\nADP')

(505, ('ATP', 'none', 'ATP'))
(',0\ne-\nН,о\n', 'ATP', '\nADP\nRepression\nOve')

-----319------

(57, ('gene', 'cf', 'gene'))
('s\nMirtron ', 'gene', '\nmiRNA gene\nTranscr')

(68, ('gene', 'cf', 'gene'))
('ene\nmiRNA ', 'gene', '\nTranscriptions\nTra')

(265, ('AGO', 'none', 'AGO'))
('BP\nDicing\n', 'AGO', '\nAAAA\nTranslation i')

(317, ('AGO', 'none', 'AGO'))
('gradation\n', 'AGO', '\n')
# gene_term_base_re = re.compile("(" + ")|(".join(["wt", "boo", "fus", "ss"]) + ")")

munged_gene_term_bases = set()
for gene_term_base in gene_term_bases:
    munged_gene_term_bases.add(gene_term_base.casefold())

escaped_munged_gene_term_bases = list()
for gene_term_base in sorted(munged_gene_term_bases, key=len, reverse=True):
    if len(gene_term_base) > 2:
        escaped_munged_gene_term_bases.append(re.escape(gene_term_base))

gene_term_base_re = re.compile(
    "(" + ")|(".join(list(escaped_munged_gene_term_bases)) + ")"
)_____no_output_____escaped_munged_gene_term_bases[-1]_____no_output_____for m in re.finditer(
    gene_term_base_re, ocr_data[0]["fullTextAnnotation"]["text"].casefold()
):
    if m.group(0):
        print(m.start(), m.end(), m.group(0))
        # print("")0 3 amy
10 13 lea
23 27 egra
27 30 dat
34 37 lys
38 41 som
44 47 old
49 52 bod
54 58 endo
58 61 pla
62 65 mic
66 69 ret
70 73 cul
81 84 mic
84 87 rog
91 94 inf
94 98 lamm
104 107 cer
107 111 amid
113 116 syn
116 120 thes

The cells below were previously trying to use `re2`, not `re`. I think this was an experiment with using a fast regular expression library. But if I'm using the Aho-Corasick algo, I may not need to use the code below at all._____no_output_____

gene_term_base_re = re.compile(
    "(" + ")|(".join(list(escaped_munged_gene_term_bases[:5])) + ")"
)
len(escaped_munged_gene_term_bases)_____no_output_____for i in range(0, 74231, 10000):
    print(i)0
10000
20000
30000
40000
50000
60000
70000
prev = 0
for i in range(0, 90000, 10000):
    for m in re.finditer(
        "(" + ")|(".join(list(escaped_munged_gene_term_bases[prev:i])) + ")",
        ocr_data[0]["fullTextAnnotation"]["text"].casefold(),
    ):
        if m.group(0):
            print(m.start(), m.end(), m.group(0))
            # print("")
    prev = i
print("hello")26 30 adat
54 58 endo
94 98 lamm
107 111 amid
116 120 thes
0 3 amy
10 13 lea
23 27 egra
27 30 dat
34 37 lys
38 41 som
44 47 old
49 52 bod
54 57 end
58 61 pla
62 65 mic
66 69 ret
70 73 cul
81 84 mic
84 87 rog
91 94 inf
94 97 lam
97 100 mat
104 107 cer
108 111 mid
113 116 syn
117 120 hes
hello
gene_term_base_res = []
prev = 0
for i in range(0, 90000, 10000):
    gene_term_base_re = re.compile(
        "(" + ")|(".join(list(escaped_munged_gene_term_bases[prev:i])) + ")"
    )
    gene_term_base_res.append(gene_term_base_re)
    prev = i

for gene_term_base_re in gene_term_base_res:
    for data in ocr_data[2:4]:
        text = data["fullTextAnnotation"]["text"]
        # print(text)
        print(f"-----{str(len(text))}------")
        for m in gene_term_base_re.finditer(text.casefold()):
            if m.group(0):
                print(m.start(), m.end(), m.group(0))
                # print("")
print("hello")-----272------
-----322------
-----272------
-----322------
-----272------
-----322------
-----272------
-----322------
-----272------
-----322------
-----272------
-----322------
-----272------
-----322------
-----272------
22 26 sfrp
40 44 rspo
53 57 axin
103 107 znrf
153 157 axin
230 234 targ
237 241 gene
243 247 znrf
255 259 znrf
-----322------
53 57 ende
81 85 ende
98 102 trxr
116 120 stra
150 154 gsh-
158 162 ende
213 217 ende
250 254 gsh-
258 262 ende
268 272 ende
288 292 stra
-----272------
0 3 lrp
7 10 lrp
14 17 wnt
18 21 fzd
22 25 sfr
27 30 fzd
31 34 lgr
40 43 rsp
54 57 xin
58 61 dis
62 65 eve
66 69 led
75 78 cat
79 82 nin
85 88 cat
89 92 nin
95 98 cat
99 102 nin
104 107 nrf
109 112 rnf
117 120 cat
121 124 nin
125 128 lrp
134 137 fzd
141 144 gsa
145 148 cki
154 157 xin
158 161 apc
163 166 urn
174 177 cat
178 181 nin
185 188 trc
193 197 prot
199 202 som
208 211 urn
218 221 cat
222 225 nin
226 229 tcf
230 233 tar
233 236 get
237 240 gen
244 247 nrf
249 252 rnf
256 259 nrf
261 264 rnf
267 270 dkk
-----322------
0 3 nad
6 9 nad
17 20 nad
23 26 trx
30 33 grx
40 43 gss
45 48 trx
50 53 dep
53 56 end
56 59 ent
60 63 fun
73 76 grx
78 81 dep
81 84 end
84 87 ent
88 91 fun
98 101 trx
103 106 trx
113 116 sub
116 119 str
119 122 ate
126 129 pro
139 142 gsh
143 146 grx
150 153 gsh
155 158 dep
158 161 end
161 164 ent
165 168 fun
175 178 nad
186 189 nad
192 195 gss
197 200 trx
205 208 trx
210 213 dep
213 216 end
216 219 ent
220 223 fun
230 233 tgr
234 237 trx
246 249 gsh
250 253 gsh
255 258 dep
258 261 end
261 264 ent
265 268 dep
268 271 end
271 274 ent
275 278 fun
285 288 sub
288 291 str
291 294 ate
296 299 grx
301 304 pro
306 309 ctr
312 315 fun
hello
gene_term_base_res = []
prev = 0
for i in range(0, 90000, 10000):
    gene_term_base_re = re.compile(
        "(" + ")|(".join(list(escaped_munged_gene_term_bases[prev:i])) + ")"
    )
    gene_term_base_res.append(gene_term_base_re)
    prev = i
for data in ocr_data[2:4]:
    text = data["fullTextAnnotation"]["text"]
    # print(text)
    print(f"-----{str(len(text))}------")
    for gene_term_base_re in gene_term_base_res:
        for m in gene_term_base_re.finditer(text.casefold()):
            if m.group(0):
                print(m.start(), m.end(), m.group(0))
                # print("")
print("hello")-----272------
22 26 sfrp
40 44 rspo
53 57 axin
103 107 znrf
153 157 axin
230 234 targ
237 241 gene
243 247 znrf
255 259 znrf
0 3 lrp
7 10 lrp
14 17 wnt
18 21 fzd
22 25 sfr
27 30 fzd
31 34 lgr
40 43 rsp
54 57 xin
58 61 dis
62 65 eve
66 69 led
75 78 cat
79 82 nin
85 88 cat
89 92 nin
95 98 cat
99 102 nin
104 107 nrf
109 112 rnf
117 120 cat
121 124 nin
125 128 lrp
134 137 fzd
141 144 gsa
145 148 cki
154 157 xin
158 161 apc
163 166 urn
174 177 cat
178 181 nin
185 188 trc
193 197 prot
199 202 som
208 211 urn
218 221 cat
222 225 nin
226 229 tcf
230 233 tar
233 236 get
237 240 gen
244 247 nrf
249 252 rnf
256 259 nrf
261 264 rnf
267 270 dkk
-----322------
53 57 ende
81 85 ende
98 102 trxr
116 120 stra
150 154 gsh-
158 162 ende
213 217 ende
250 254 gsh-
258 262 ende
268 272 ende
288 292 stra
0 3 nad
6 9 nad
17 20 nad
23 26 trx
30 33 grx
40 43 gss
45 48 trx
50 53 dep
53 56 end
56 59 ent
60 63 fun
73 76 grx
78 81 dep
81 84 end
84 87 ent
88 91 fun
98 101 trx
103 106 trx
113 116 sub
116 119 str
119 122 ate
126 129 pro
139 142 gsh
143 146 grx
150 153 gsh
155 158 dep
158 161 end
161 164 ent
165 168 fun
175 178 nad
186 189 nad
192 195 gss
197 200 trx
205 208 trx
210 213 dep
213 216 end
216 219 ent
220 223 fun
230 233 tgr
234 237 trx
246 249 gsh
250 253 gsh
255 258 dep
258 261 end
261 264 ent
265 268 dep
268 271 end
271 274 ent
275 278 fun
285 288 sub
288 291 str
291 294 ate
296 299 grx
301 304 pro
306 309 ctr
312 315 fun
hello
gene_term_base_re = re.compile(
    "(" + ")|(".join(list(escaped_munged_gene_term_bases)) + ")"
)
for data in ocr_data[2:4]:
    text = data["fullTextAnnotation"]["text"]
    # print(text)
    print("")
    for m in gene_term_base_re.finditer(text.casefold()):
        if m.group(0):
            print(m.start(), m.end(), m.group(0))
            # print("")
0 3 lrp
7 10 lrp
14 17 wnt
18 21 fzd
22 26 sfrp
27 30 fzd
31 34 lgr
40 44 rspo
53 57 axin
58 61 dis
62 65 eve
66 69 led
75 78 cat
79 82 nin
85 88 cat
89 92 nin
95 98 cat
99 102 nin
103 107 znrf
109 112 rnf
117 120 cat
121 124 nin
125 128 lrp
134 137 fzd
141 144 gsa
145 148 cki
153 157 axin
158 161 apc
163 166 urn
174 177 cat
178 181 nin
185 188 trc
193 197 prot
199 202 som
208 211 urn
218 221 cat
222 225 nin
226 229 tcf
230 234 targ
237 241 gene
243 247 znrf
249 252 rnf
255 259 znrf
261 264 rnf
267 270 dkk

0 3 nad
6 9 nad
17 20 nad
23 26 trx
30 33 grx
40 43 gss
45 48 trx
50 53 dep
53 57 ende
60 63 fun
73 76 grx
78 81 dep
81 85 ende
88 91 fun
98 102 trxr
103 106 trx
113 116 sub
116 120 stra
126 129 pro
139 142 gsh
143 146 grx
150 154 gsh-
155 158 dep
158 162 ende
165 168 fun
175 178 nad
186 189 nad
192 195 gss
197 200 trx
205 208 trx
210 213 dep
213 217 ende
220 223 fun
230 233 tgr
234 237 trx
246 249 gsh
250 254 gsh-
255 258 dep
258 262 ende
265 268 dep
268 272 ende
275 278 fun
285 288 sub
288 292 stra
296 299 grx
301 304 pro
306 309 ctr
312 315 fun
data.keys()_____no_output_____data["fullTextAnnotation"]["text"]_____no_output_____for item in data["fullTextAnnotation"]["pages"]:
    print(item.keys())dict_keys(['width', 'blocks', 'height', 'property'])
for item in data["fullTextAnnotation"]["pages"][0]["blocks"]:
    print(item.keys())_____no_output_____for item in data["fullTextAnnotation"]["pages"][0]["blocks"][0]["paragraphs"]:
    print(item.keys())_____no_output_____for item in data["fullTextAnnotation"]["pages"][0]["blocks"][0]["paragraphs"][
    0
]["words"]:
    print(item.keys())_____no_output_____for page in data["fullTextAnnotation"]["pages"]:
    for block in page["blocks"]:
        for paragraph in block["paragraphs"]:
            for word in paragraph["words"]:
                for symbol in word["symbols"]:
                    print(symbol.keys())
                    print(symbol["text"])_____no_output_____for boo in data["textAnnotations"]:
    print(boo.keys())_____no_output_____data["textAnnotations"][0]["description"]_____no_output_____data["textAnnotations"][1]_____no_output_____data["textAnnotations"][1]["description"]_____no_output_____