<commit_before>'''Common definitions to be used throughout the Django module.'''

from collections import OrderedDict
from decimal import Decimal

AMINO_ACIDS = OrderedDict([
    ('A', 'Ala'),
    ('C', 'Cys'),
    ('D', 'Asp'),
    ('E', 'Glu'),
    ('F', 'Phe'),
    ('G', 'Gly'),
    ('H', 'His'),
    ('I', 'Ile'),
    ('K', 'Lys'),
    ('L', 'Leu'),
    ('M', 'Met'),
    ('N', 'Asn'),
    ('P', 'Pro'),
    ('Q', 'Gln'),
    ('R', 'Arg'),
    ('S', 'Ser'),
    ('T', 'Thr'),
    ('V', 'Val'),
    ('W', 'Trp'),
    ('Y', 'Tyr'),
    ('B', 'Asx'),
    ('Z', 'Glx'),
    ('J', 'Xle'),
    ('-', 'Gap')
])

# Amino Acid Propensities
AA_PROPENSITY = {
    "A":Decimal('0'),
    "R":Decimal('0.21'),
    "N":Decimal('0.65'),
    "D":Decimal('0.69'),
    "C":Decimal('0.68'),
    "E":Decimal('0.40'),
    "Q":Decimal('0.39'),
    "G":Decimal('1.00'),
    "H":Decimal('0.61'),
    "I":Decimal('0.41'),
    "L":Decimal('0.21'),
    "K":Decimal('0.26'),
    "M":Decimal('0.24'),
    "F":Decimal('0.54'),
    "P":Decimal('3.16'),
    "S":Decimal('0.50'),
    "T":Decimal('0.66'),
    "W":Decimal('0.49'),
    "Y":Decimal('0.53'),
    "V":Decimal('0.61')
}

# The Octanol-Interface scale from the Wimley-White scale uis used here.
HYDROPHOBICITY = {
    "I":Decimal('-1.12'),
    "L":Decimal('-1.25'),
    "F":Decimal('-1.71'),
    "V":Decimal('-0.46'),
    "M":Decimal('-0.67'),
    "P":Decimal('0.14'),
    "W":Decimal('-2.09'),
    "H":Decimal('0.11'),
    "T":Decimal('0.25'),
    "E":Decimal('0.11'),
    "Q":Decimal('0.77'),
    "C":Decimal('-0.02'),
    "Y":Decimal('-0.71'),
    "S":Decimal('0.46'),
    "A":Decimal('0.50'),
    "N":Decimal('0.85'),
    "D":Decimal('0.43'),
    "R":Decimal('1.81'),
    "G":Decimal('1.15'),
    "K":Decimal('2.80'),
    "R+":Decimal('1.81'),
    "H+":Decimal('2.33'),
    "E-":Decimal('3.63'),
    "K+":Decimal('2.80'),
    "D-":Decimal('3.64')
    }

AMINO_ACID_GROUPS = OrderedDict([
    ('Hy_-', ('A', 'L', 'M', 'I', 'W', 'Y', 'F', 'V', 'H', 'G', 'P')),
    ('Al_-', ('A', 'L', 'M', 'I', 'V', 'P')),
    ('Al_S', ('A', 'V', 'P')),
    ('Al_M', ('L', 'I', 'V')),
    ('Al_L', ('L', 'M', 'I', 'V')),
    ('Al_XL', ('L', 'M')),
    ('Ar_-', ('W', 'Y', 'F', 'H')),
    ('Ar_M', ('Y', 'F')),
    ('Ar_L', ('W', 'Y', 'F')),
    ('+-_-', ('R', 'K', 'E', 'H', 'D')),
    ('+-_S', ('E', 'H', 'D')),
    ('-_-', ('E', 'D')),
    ('+_-', ('R', 'K', 'H')),
    ('+_S', ('K', 'H')),
    ('+_L', ('R', 'K')),
    ('Hp_XL', ('A')),
    ('Hp_L', ('A', 'L', 'R', 'M', 'K')),
    ('Hp_M', ('Q', 'E', 'I', 'W', 'S', 'Y', 'F')),
    ('Hp_S', ('V', 'H', 'N', 'T', 'C', 'D')),
    ('Hp_XS', ('G', 'P')),
    ('P+-_-', ('R', 'K', 'Q', 'E', 'S', 'H', 'N', 'T', 'D')),
    ('P_-', ('P')),
    ('P_XS', ('S', 'T')),
    ('P_S', ('S', 'N', 'T')),
    ('P_L', ('Q', 'H', 'N')),
    ('P+-_XL', ('K', 'Q', 'E', 'H')),
    ('P-_S', ('S', 'N', 'T', 'D')),
    ('P-_M', ('N', 'D')),
    ('P-_L', ('Q', 'E', 'H', 'N', 'D')),
    ('P-_XL', ('Q', 'E', 'H')),
    ('P+_XL', ('K', 'Q', 'H')),
    ('X_XXS', ('A', 'G')),
    ('X_XS', ('A', 'S', 'C', 'G')),
    ('X_S', ('A', 'S', 'V', 'T', 'C', 'G', 'P')),
    ('X_M', ('L', 'M', 'Q', 'E', 'I', 'H', 'N', 'D', 'P')),
    ('X_L', ('R', 'M', 'K', 'Q', 'E', 'W', 'Y', 'F', 'H')),
    ('X_XL', ('R', 'K', 'W', 'Y', 'F')),
    ('G_-', ('G')),
    ('A_-', ('A')),
    ('C_-', ('C')),
    ('S_-', ('S')),
    ('T_-', ('T')),
    ('V_-', ('V')),
    ('D_-', ('D')),
    ('I_-', ('I')),
    ('L_-', ('L')),
    ('N_-', ('N')),
    ('M_-', ('M')),
    ('E_-', ('E')),
    ('Q_-', ('Q')),
    ('H_-', ('H')),
    ('K_-', ('K')),
    ('F_-', ('F')),
    ('R_-', ('R')),
    ('Y_-', ('Y')),
    ('W_-', ('W')),
    ('_', ('-', '_')),
    ('-G', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'P', '-', '_')),
    ('-A', ('L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-C', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'D', 'G', 'P', '-', '_')),
    ('-S', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-T', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'C', 'D', 'G', 'P', '-', '_')),
    ('-V', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-P', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', '-', '_')),
    ('-D', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'G', 'P', '-', '_')),
    ('-I', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-L', ('A', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-N', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-M', ('A', 'L', 'R', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-E', ('A', 'L', 'R', 'M', 'K', 'Q', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-Q', ('A', 'L', 'R', 'M', 'K', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-H', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-K', ('A', 'L', 'R', 'M', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-F', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-R', ('A', 'L', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-Y', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-W', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('--', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P')),
])

AMINO_ACID_GROUP_NAMES = OrderedDict([
    ('Hy_-', 'Hydrophobic'),
    ('Al_-', 'Aliphatic'),
    ('Al_S', 'Aliphatic small'),
    ('Al_M', 'Aliphatic medium'),
    ('Al_L', 'Aliphatic large'),
    ('Al_XL', 'Aliphatic extra large'),
    ('Ar_-', 'Aromatic'),
    ('Ar_M', 'Aromatic medium'),
    ('Ar_L', 'Aromatic large'),
    ('+-_-', 'Charge'),
    ('+-_S', 'Charge small'),
    ('-_-', 'Charge negative'),
    ('+_-', 'Charge positive'),
    ('+_S', 'Charge positive small'),
    ('+_L', 'Charge positive large'),
    ('Hp_XL', 'Helix propencity extra large'),
    ('Hp_L', 'Helix propencity large'),
    ('Hp_M', 'Helix propencity medium'),
    ('Hp_S', 'Helix propencity small'),
    ('Hp_XS', 'Helix propencity extra small'),
    ('P+-_-', 'Polar or charged'),
    ('P_-', 'Pro (helix kink)'),
    ('P_XS', 'Polar uncharged extra small'),<commit_msg>Reverse lookup table for performance of alignments<commit_after>'''Common definitions to be used throughout the Django module.'''

from collections import OrderedDict
from decimal import Decimal

from django.core.cache import cache

AMINO_ACIDS = OrderedDict([
    ('A', 'Ala'),
    ('C', 'Cys'),
    ('D', 'Asp'),
    ('E', 'Glu'),
    ('F', 'Phe'),
    ('G', 'Gly'),
    ('H', 'His'),
    ('I', 'Ile'),
    ('K', 'Lys'),
    ('L', 'Leu'),
    ('M', 'Met'),
    ('N', 'Asn'),
    ('P', 'Pro'),
    ('Q', 'Gln'),
    ('R', 'Arg'),
    ('S', 'Ser'),
    ('T', 'Thr'),
    ('V', 'Val'),
    ('W', 'Trp'),
    ('Y', 'Tyr'),
    ('B', 'Asx'),
    ('Z', 'Glx'),
    ('J', 'Xle'),
    ('-', 'Gap')
])

# Amino Acid Propensities
AA_PROPENSITY = {
    "A":Decimal('0'),
    "R":Decimal('0.21'),
    "N":Decimal('0.65'),
    "D":Decimal('0.69'),
    "C":Decimal('0.68'),
    "E":Decimal('0.40'),
    "Q":Decimal('0.39'),
    "G":Decimal('1.00'),
    "H":Decimal('0.61'),
    "I":Decimal('0.41'),
    "L":Decimal('0.21'),
    "K":Decimal('0.26'),
    "M":Decimal('0.24'),
    "F":Decimal('0.54'),
    "P":Decimal('3.16'),
    "S":Decimal('0.50'),
    "T":Decimal('0.66'),
    "W":Decimal('0.49'),
    "Y":Decimal('0.53'),
    "V":Decimal('0.61')
}

# The Octanol-Interface scale from the Wimley-White scale uis used here.
HYDROPHOBICITY = {
    "I":Decimal('-1.12'),
    "L":Decimal('-1.25'),
    "F":Decimal('-1.71'),
    "V":Decimal('-0.46'),
    "M":Decimal('-0.67'),
    "P":Decimal('0.14'),
    "W":Decimal('-2.09'),
    "H":Decimal('0.11'),
    "T":Decimal('0.25'),
    "E":Decimal('0.11'),
    "Q":Decimal('0.77'),
    "C":Decimal('-0.02'),
    "Y":Decimal('-0.71'),
    "S":Decimal('0.46'),
    "A":Decimal('0.50'),
    "N":Decimal('0.85'),
    "D":Decimal('0.43'),
    "R":Decimal('1.81'),
    "G":Decimal('1.15'),
    "K":Decimal('2.80'),
    "R+":Decimal('1.81'),
    "H+":Decimal('2.33'),
    "E-":Decimal('3.63'),
    "K+":Decimal('2.80'),
    "D-":Decimal('3.64')
    }

AMINO_ACID_GROUPS = OrderedDict([
    ('Hy_-', ('A', 'L', 'M', 'I', 'W', 'Y', 'F', 'V', 'H', 'G', 'P')),
    ('Al_-', ('A', 'L', 'M', 'I', 'V', 'P')),
    ('Al_S', ('A', 'V', 'P')),
    ('Al_M', ('L', 'I', 'V')),
    ('Al_L', ('L', 'M', 'I', 'V')),
    ('Al_XL', ('L', 'M')),
    ('Ar_-', ('W', 'Y', 'F', 'H')),
    ('Ar_M', ('Y', 'F')),
    ('Ar_L', ('W', 'Y', 'F')),
    ('+-_-', ('R', 'K', 'E', 'H', 'D')),
    ('+-_S', ('E', 'H', 'D')),
    ('-_-', ('E', 'D')),
    ('+_-', ('R', 'K', 'H')),
    ('+_S', ('K', 'H')),
    ('+_L', ('R', 'K')),
    ('Hp_XL', ('A')),
    ('Hp_L', ('A', 'L', 'R', 'M', 'K')),
    ('Hp_M', ('Q', 'E', 'I', 'W', 'S', 'Y', 'F')),
    ('Hp_S', ('V', 'H', 'N', 'T', 'C', 'D')),
    ('Hp_XS', ('G', 'P')),
    ('P+-_-', ('R', 'K', 'Q', 'E', 'S', 'H', 'N', 'T', 'D')),
    ('P_-', ('P')),
    ('P_XS', ('S', 'T')),
    ('P_S', ('S', 'N', 'T')),
    ('P_L', ('Q', 'H', 'N')),
    ('P+-_XL', ('K', 'Q', 'E', 'H')),
    ('P-_S', ('S', 'N', 'T', 'D')),
    ('P-_M', ('N', 'D')),
    ('P-_L', ('Q', 'E', 'H', 'N', 'D')),
    ('P-_XL', ('Q', 'E', 'H')),
    ('P+_XL', ('K', 'Q', 'H')),
    ('X_XXS', ('A', 'G')),
    ('X_XS', ('A', 'S', 'C', 'G')),
    ('X_S', ('A', 'S', 'V', 'T', 'C', 'G', 'P')),
    ('X_M', ('L', 'M', 'Q', 'E', 'I', 'H', 'N', 'D', 'P')),
    ('X_L', ('R', 'M', 'K', 'Q', 'E', 'W', 'Y', 'F', 'H')),
    ('X_XL', ('R', 'K', 'W', 'Y', 'F')),
    ('G_-', ('G')),
    ('A_-', ('A')),
    ('C_-', ('C')),
    ('S_-', ('S')),
    ('T_-', ('T')),
    ('V_-', ('V')),
    ('D_-', ('D')),
    ('I_-', ('I')),
    ('L_-', ('L')),
    ('N_-', ('N')),
    ('M_-', ('M')),
    ('E_-', ('E')),
    ('Q_-', ('Q')),
    ('H_-', ('H')),
    ('K_-', ('K')),
    ('F_-', ('F')),
    ('R_-', ('R')),
    ('Y_-', ('Y')),
    ('W_-', ('W')),
    ('_', ('-', '_')),
    ('-G', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'P', '-', '_')),
    ('-A', ('L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-C', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'D', 'G', 'P', '-', '_')),
    ('-S', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-T', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'C', 'D', 'G', 'P', '-', '_')),
    ('-V', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-P', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', '-', '_')),
    ('-D', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'G', 'P', '-', '_')),
    ('-I', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-L', ('A', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-N', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-M', ('A', 'L', 'R', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-E', ('A', 'L', 'R', 'M', 'K', 'Q', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-Q', ('A', 'L', 'R', 'M', 'K', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-H', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-K', ('A', 'L', 'R', 'M', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-F', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-R', ('A', 'L', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-Y', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('-W', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P', '-', '_')),
    ('--', ('A', 'L', 'R', 'M', 'K', 'Q', 'E', 'I', 'W', 'S', 'Y', 'F', 'V', 'H', 'N', 'T', 'C', 'D', 'G', 'P')),
])

# Save time by creating a reverse lookup table
cache_name = "reverse_aa_groups"
AMINO_ACID_GROUPS_AA = cache.get(cache_name)
if AMINO_ACID_GROUPS_AA == None:
    AMINO_ACID_GROUPS_AA = OrderedDict()
    for amino_acid in AMINO_ACIDS.keys():
        AMINO_ACID_GROUPS_AA[amino_acid] = []
        for feature, members in AMINO_ACID_GROUPS.items():
            if amino_acid in members:
                AMINO_ACID_GROUPS_AA[amino_acid].append(feature)
    cache.get(cache_name, AMINO_ACID_GROUPS_AA, 3600*24*7) # cache a week


AMINO_ACID_GROUP_NAMES = OrderedDict([
    ('Hy_-', 'Hydrophobic'),
    ('Al_-', 'Aliphatic'),
    ('Al_S', 'Aliphatic small'),
    ('Al_M', 'Aliphatic medium'),
    ('Al_L', 'Aliphatic large'),
    ('Al_XL', 'Aliphatic extra large'),
    ('Ar_-', 'Aromatic'),
    ('Ar_M', 'Aromatic medium'),
    ('Ar_L', 'Aromatic large'),
    ('+-_-', 'Charge'),
    ('+-_S', 'Charge small'),
    ('-_-', 'Charge negative'),
    ('+_-', 'Charge positive'),
    ('+_S', 'Charge positive small'),
    ('+_L', 'Charge positive large'),
    ('Hp_XL', 'Helix propencity extra large'),
    ('Hp_L', 'Helix propencity large'),
    ('Hp_M', 'Helix propencity medium'),
    ('Hp_S', 'Helix propencity small'),
    ('Hp_XS', 'Helix propencity extra small'),
    ('P+-_-', 'Polar or charged'),
    ('P_-', 'Pro (helix kink)'),
    ('P_XS', 'Polar uncharged extra small'),
{'fraction_non_alphanumeric': 0.4552091150985877, 'fraction_numerical': 0.01862591253326056, 'mean_word_length': 3.0413564929693964, 'pattern_counts': {'":': 90, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 86, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6573026', 'n_tokens_mistral': 7441, 'n_tokens_neox': 7277, 'n_words': 1745}