In [ ]:
# !pip install sklearn-crfsuite
Requirement already satisfied: sklearn-crfsuite in /usr/local/lib/python3.7/dist-packages (0.3.6)
Requirement already satisfied: six in /usr/local/lib/python3.7/dist-packages (from sklearn-crfsuite) (1.15.0)
Requirement already satisfied: python-crfsuite>=0.8.3 in /usr/local/lib/python3.7/dist-packages (from sklearn-crfsuite) (0.9.7)
Requirement already satisfied: tabulate in /usr/local/lib/python3.7/dist-packages (from sklearn-crfsuite) (0.8.9)
Requirement already satisfied: tqdm>=2.0 in /usr/local/lib/python3.7/dist-packages (from sklearn-crfsuite) (4.41.1)
In [ ]:
# !pip install 
In [ ]:
# from Bio import SeqIO
from random import randrange
import numpy as np
import sklearn_crfsuite
from sklearn.metrics import accuracy_score
In [ ]:
# sequences = SeqIO.parse('./kvasac.fasta', 'fasta')
# for sequence in sequences:
#     print(sequence)
#     break
In [ ]:
file = open('./kvasac.fasta')
# [x[:-1] for x in file.read()[1:]]
all_cds = [''.join(x.split('\n')[1:]) for x in file.read().split('>')[1:]]
n = len(all_cds)

train_cds = all_cds[:int(n*0.7)]
test_cds = all_cds[int(n*0.7):]
In [ ]:
def f(flag, i):
  if flag:
    return f'C{i%3}'
  else:
    return f'I{i%3}' 
In [ ]:
seqq = 'ATGTCGTAGTGCAacacacacaGTGTGTG'
mapa = list(map(lambda x: x.isupper(), seqq))
n = len(mapa)
encoded = [f(mapa[i], i) for i in range(n)]
print(encoded)
['C0', 'C1', 'C2', 'C0', 'C1', 'C2', 'C0', 'C1', 'C2', 'C0', 'C1', 'C2', 'C0', 'I1', 'I2', 'I0', 'I1', 'I2', 'I0', 'I1', 'I2', 'I0', 'C1', 'C2', 'C0', 'C1', 'C2', 'C0', 'C1']
In [ ]:
def pad(sequence, k):
    n = len(sequence)
    mapping = ['A','T','C','G']

    prefix = ''
    suffix = ''

    for _ in range(k):
        j = randrange(0, 4)
        prefix += mapping[j]

        j = randrange(0, 4)
        suffix += mapping[j]
        
    mapa = list(map(lambda x: x.isupper(), sequence[3:-2]))

    X = list(prefix + sequence + suffix)
    y = ['N' for _ in range(k)] + ['start0','start1','start2'] + [f(mapa[i], i) for i in range(n - 6)] + ['end0','end1','end2'] + ['N' for _ in range(k)]
        
    return X, y
In [ ]:
k = 100

X_train = []
y_train = []

for cds in train_cds:
    X, y = pad(cds, k)
    X_train.append(X)
    y_train.append(y)
In [ ]:
k = 100

X_test = []
y_test = []

for cds in test_cds:
    X, y = pad(cds, k)
    X_test.append(X)
    y_test.append(y)
In [ ]:
def extract_features(X):
    all_features = []
    stop_codons = ['taa','tga','tag']
    
    for seq in X:
        features = []
        for i in range(len(seq)):
            feature = {
                'label': seq[i].lower()
            }

            if i >= 1:
              feature.update({
                  '-1:label': seq[i - 1].lower(),
                  'last_gt': ''.join([seq[i - 1].lower(), seq[i].lower()]) == 'gt',
                  'last_ag': ''.join([seq[i - 1].lower(), seq[i].lower()]) == 'ag',
              })

            if i >= 2:
              feature.update({
                  '-2:label': seq[i - 2].lower(),
                  'start': ''.join([seq[i - 2].lower(), seq[i - 1].lower(), seq[i].lower()]) == 'atg',
                  'stop': ''.join([seq[i - 2].lower(), seq[i - 1].lower(), seq[i].lower()]) in stop_codons
              })


            features.append(feature)
            
        all_features.append(features)
        
    return all_features
In [ ]:
X_train_features = extract_features(X_train[:100])
y_train_classes = y_train[:100]
In [ ]:
X_train[0]
Out[ ]:
['G',
 'G',
 'A',
 'A',
 'T',
 'G',
 'C',
 'A',
 'A',
 'C',
 'G',
 'C',
 'A',
 'T',
 'T',
 'C',
 'G',
 'G',
 'G',
 'A',
 'C',
 'T',
 'A',
 'C',
 'A',
 'A',
 'G',
 'G',
 'A',
 'G',
 'T',
 'G',
 'T',
 'A',
 'G',
 'A',
 'C',
 'G',
 'G',
 'T',
 'G',
 'A',
 'A',
 'G',
 'G',
 'A',
 'G',
 'T',
 'C',
 'C',
 'G',
 'A',
 'T',
 'T',
 'T',
 'A',
 'G',
 'T',
 'A',
 'A',
 'C',
 'C',
 'T',
 'C',
 'A',
 'C',
 'T',
 'T',
 'G',
 'G',
 'C',
 'A',
 'T',
 'C',
 'A',
 'T',
 'G',
 'G',
 'G',
 'A',
 'T',
 'C',
 'A',
 'C',
 'G',
 'G',
 'T',
 'A',
 'A',
 'A',
 'C',
 'G',
 'T',
 'G',
 'A',
 'G',
 'A',
 'G',
 'G',
 'C',
 'A',
 'T',
 'G',
 'A',
 'C',
 'T',
 'C',
 'T',
 'A',
 'C',
 'A',
 'A',
 'G',
 'A',
 'A',
 'T',
 'C',
 'T',
 'G',
 'A',
 'T',
 'A',
 'A',
 'A',
 'T',
 'T',
 'T',
 'G',
 'C',
 'T',
 'A',
 'C',
 'C',
 'A',
 'A',
 'G',
 'G',
 'C',
 'C',
 'A',
 'T',
 'T',
 'C',
 'A',
 'T',
 'G',
 'C',
 'C',
 'G',
 'G',
 'T',
 'G',
 'A',
 'A',
 'C',
 'A',
 'T',
 'G',
 'T',
 'G',
 'G',
 'A',
 'C',
 'G',
 'T',
 'T',
 'C',
 'A',
 'C',
 'G',
 'G',
 'T',
 'T',
 'C',
 'C',
 'G',
 'T',
 'G',
 'A',
 'T',
 'C',
 'G',
 'A',
 'A',
 'C',
 'C',
 'C',
 'A',
 'T',
 'T',
 'T',
 'C',
 'T',
 'T',
 'T',
 'G',
 'T',
 'C',
 'C',
 'A',
 'C',
 'C',
 'A',
 'C',
 'T',
 'T',
 'T',
 'C',
 'A',
 'A',
 'A',
 'C',
 'A',
 'A',
 'T',
 'C',
 'T',
 'T',
 'C',
 'T',
 'C',
 'C',
 'A',
 'G',
 'C',
 'T',
 'A',
 'A',
 'C',
 'C',
 'C',
 'T',
 'A',
 'T',
 'C',
 'G',
 'G',
 'T',
 'A',
 'C',
 'T',
 'T',
 'A',
 'C',
 'G',
 'A',
 'A',
 'T',
 'A',
 'C',
 'T',
 'C',
 'C',
 'A',
 'G',
 'A',
 'T',
 'C',
 'T',
 'C',
 'A',
 'A',
 'A',
 'A',
 'T',
 'C',
 'C',
 'T',
 'A',
 'A',
 'C',
 'A',
 'G',
 'A',
 'G',
 'A',
 'G',
 'A',
 'A',
 'C',
 'T',
 'T',
 'G',
 'G',
 'A',
 'A',
 'A',
 'G',
 'A',
 'G',
 'C',
 'A',
 'G',
 'T',
 'T',
 'G',
 'C',
 'C',
 'G',
 'C',
 'T',
 'T',
 'T',
 'A',
 'G',
 'A',
 'G',
 'A',
 'A',
 'C',
 'G',
 'C',
 'T',
 'C',
 'A',
 'A',
 'T',
 'A',
 'C',
 'G',
 'G',
 'G',
 'T',
 'T',
 'G',
 'G',
 'C',
 'T',
 'T',
 'T',
 'C',
 'T',
 'C',
 'C',
 'T',
 'C',
 'T',
 'G',
 'G',
 'T',
 'T',
 'C',
 'T',
 'G',
 'C',
 'C',
 'A',
 'C',
 'C',
 'A',
 'C',
 'C',
 'G',
 'C',
 'C',
 'A',
 'C',
 'A',
 'A',
 'T',
 'C',
 'T',
 'T',
 'G',
 'C',
 'A',
 'A',
 'T',
 'C',
 'G',
 'C',
 'T',
 'T',
 'C',
 'C',
 'T',
 'C',
 'A',
 'G',
 'G',
 'G',
 'C',
 'T',
 'C',
 'C',
 'C',
 'A',
 'T',
 'G',
 'C',
 'G',
 'G',
 'T',
 'C',
 'T',
 'C',
 'T',
 'A',
 'T',
 'C',
 'G',
 'G',
 'T',
 'G',
 'A',
 'T',
 'G',
 'T',
 'G',
 'T',
 'A',
 'C',
 'G',
 'G',
 'T',
 'G',
 'G',
 'T',
 'A',
 'C',
 'C',
 'C',
 'A',
 'C',
 'A',
 'G',
 'A',
 'T',
 'A',
 'C',
 'T',
 'T',
 'C',
 'A',
 'C',
 'C',
 'A',
 'A',
 'A',
 'G',
 'T',
 'C',
 'G',
 'C',
 'C',
 'A',
 'A',
 'C',
 'G',
 'C',
 'T',
 'C',
 'A',
 'C',
 'G',
 'G',
 'T',
 'G',
 'T',
 'G',
 'G',
 'A',
 'A',
 'A',
 'C',
 'C',
 'T',
 'C',
 'C',
 'T',
 'T',
 'C',
 'A',
 'C',
 'T',
 'A',
 'A',
 'C',
 'G',
 'A',
 'T',
 'T',
 'T',
 'G',
 'T',
 'T',
 'G',
 'A',
 'A',
 'C',
 'G',
 'A',
 'T',
 'C',
 'T',
 'A',
 'C',
 'C',
 'T',
 'C',
 'A',
 'A',
 'T',
 'T',
 'G',
 'A',
 'T',
 'A',
 'A',
 'A',
 'G',
 'G',
 'A',
 'A',
 'A',
 'A',
 'C',
 'A',
 'C',
 'C',
 'A',
 'A',
 'A',
 'T',
 'T',
 'G',
 'G',
 'T',
 'C',
 'T',
 'G',
 'G',
 'A',
 'T',
 'C',
 'G',
 'A',
 'A',
 'A',
 'C',
 'C',
 'C',
 'C',
 'A',
 'A',
 'C',
 'C',
 'A',
 'A',
 'C',
 'C',
 'C',
 'A',
 'A',
 'C',
 'T',
 'T',
 'T',
 'G',
 'A',
 'A',
 'G',
 'G',
 'T',
 'C',
 'A',
 'C',
 'C',
 'G',
 'A',
 'C',
 'A',
 'T',
 'C',
 'C',
 'A',
 'A',
 'A',
 'A',
 'G',
 'G',
 'T',
 'G',
 'G',
 'C',
 'A',
 'G',
 'A',
 'C',
 'C',
 'T',
 'T',
 'A',
 'T',
 'C',
 'A',
 'A',
 'G',
 'A',
 'A',
 'G',
 'C',
 'A',
 'C',
 'G',
 'C',
 'T',
 'G',
 'C',
 'C',
 'G',
 'G',
 'C',
 'C',
 'A',
 'A',
 'G',
 'A',
 'C',
 'G',
 'T',
 'G',
 'A',
 'T',
 'C',
 'T',
 'T',
 'G',
 'G',
 'T',
 'T',
 'G',
 'T',
 'C',
 'G',
 'A',
 'C',
 'A',
 'A',
 'C',
 'A',
 'C',
 'C',
 'T',
 'T',
 'C',
 'T',
 'T',
 'G',
 'T',
 'C',
 'C',
 'C',
 'C',
 'A',
 'T',
 'A',
 'T',
 'A',
 'T',
 'C',
 'T',
 'C',
 'C',
 'A',
 'A',
 'T',
 'C',
 'C',
 'A',
 'T',
 'T',
 'G',
 'A',
 'A',
 'C',
 'T',
 'T',
 'C',
 'G',
 'G',
 'T',
 'G',
 'C',
 'A',
 'G',
 'A',
 'C',
 'A',
 'T',
 'C',
 'G',
 'T',
 'T',
 'G',
 'T',
 'C',
 'C',
 'A',
 'C',
 'T',
 'C',
 'C',
 'G',
 'C',
 'T',
 'A',
 'C',
 'A',
 'A',
 'A',
 'G',
 'T',
 'A',
 'C',
 'A',
 'T',
 'C',
 'A',
 'A',
 'C',
 'G',
 'G',
 'T',
 'C',
 'A',
 'C',
 'T',
 'C',
 'A',
 'G',
 'A',
 'C',
 'G',
 'T',
 'T',
 'G',
 'T',
 'G',
 'C',
 'T',
 'C',
 'G',
 'G',
 'T',
 'G',
 'T',
 'C',
 'C',
 'T',
 'G',
 'G',
 'C',
 'C',
 'A',
 'C',
 'T',
 'A',
 'A',
 'T',
 'A',
 'A',
 'C',
 'A',
 'A',
 'G',
 'C',
 'C',
 'A',
 'T',
 'T',
 'G',
 'T',
 'A',
 'C',
 'G',
 'A',
 'G',
 'C',
 'G',
 'T',
 'C',
 'T',
 'G',
 'C',
 'A',
 'G',
 'T',
 'T',
 'C',
 'T',
 'T',
 'A',
 'C',
 'A',
 'A',
 'A',
 'A',
 'C',
 'G',
 'C',
 'C',
 'A',
 'T',
 'T',
 'G',
 'G',
 'T',
 'G',
 'C',
 'T',
 'A',
 'T',
 'C',
 'C',
 'C',
 'A',
 'T',
 'C',
 'T',
 'C',
 'C',
 'T',
 'T',
 'T',
 'C',
 'G',
 'A',
 'T',
 'G',
 'C',
 'T',
 'T',
 'G',
 'G',
 'T',
 'T',
 'G',
 'A',
 'C',
 'C',
 'C',
 'A',
 'C',
 'A',
 'G',
 'A',
 'G',
 'G',
 'T',
 'T',
 'T',
 'G',
 'A',
 'A',
 'G',
 'A',
 'C',
 'T',
 'T',
 'T',
 'G',
 'C',
 'A',
 'T',
 'C',
 'T',
 'A',
 'C',
 'G',
 'T',
 'G',
 'T',
 'C',
 'A',
 'G',
 'A',
 'C',
 'A',
 'A',
 'G',
 'C',
 'T',
 'G',
 'C',
 'C',
 'C',
 'T',
 'C',
 'A',
 'G',
 'C',
 'G',
 'C',
 'C',
 'A',
 'A',
 'C',
 'A',
 'A',
 'A',
 'A',
 'T',
 'C',
 'G',
 'C',
 'T',
 'G',
 'A',
 'A',
 'T',
 'T',
 'C',
 'T',
 'T',
 'G',
 'G',
 'C',
 'A',
 'G',
 'C',
 'A',
 'G',
 'A',
 'C',
 'A',
 'A',
 'G',
 'G',
 'A',
 'A',
 'A',
 'A',
 'C',
 'G',
 'T',
 'T',
 'G',
 'T',
 'C',
 'G',
 'C',
 'A',
 'G',
 'T',
 'C',
 'A',
 'A',
 'C',
 'T',
 'A',
 'C',
 'C',
 'C',
 'A',
 'G',
 'G',
 'T',
 'T',
 'T',
 'G',
 'A',
 'A',
 'G',
 'A',
 'C',
 'A',
 'C',
 'A',
 'C',
 'C',
 'C',
 'T',
 'A',
 'A',
 'C',
 'T',
 'A',
 'C',
 'G',
 'A',
 'C',
 'G',
 'T',
 'A',
 'G',
 'T',
 'G',
 'T',
 'T',
 'A',
 'A',
 'A',
 'G',
 'C',
 'A',
 'A',
 'C',
 'A',
 'C',
 ...]
In [ ]:
crf = sklearn_crfsuite.CRF(
    algorithm='lbfgs',
    c1=0.1,
    c2=0.1,
    max_iterations=100,
    all_possible_transitions=False
)
crf.fit(X_train_features, y_train_classes)
/usr/local/lib/python3.7/dist-packages/sklearn/base.py:197: FutureWarning: From version 0.24, get_params will raise an AttributeError if a parameter cannot be retrieved as an instance attribute. Previously it would return None.
  FutureWarning)
Out[ ]:
CRF(algorithm='lbfgs', all_possible_states=None, all_possible_transitions=False,
    averaging=None, c=None, c1=0.1, c2=0.1, calibration_candidates=None,
    calibration_eta=None, calibration_max_trials=None, calibration_rate=None,
    calibration_samples=None, delta=None, epsilon=None, error_sensitive=None,
    gamma=None, keep_tempfiles=None, linesearch=None, max_iterations=100,
    max_linesearch=None, min_freq=None, model_filename=None, num_memories=None,
    pa_type=None, period=None, trainer_cls=None, variance=None, verbose=False)
In [ ]:
X_test_features = extract_features(X_test[:100])
y_test_classes = y_test[:100]
In [ ]:
# X_test_features = extract_features(X_test)
# crf.predict([X_test_features[0]])[0]

y_pred = crf.predict(X_train)
In [ ]:
crf.score(X_train_features, y_train_classes)
Out[ ]:
0.7500655906560038
In [ ]:
crf.score(X_test_features, y_test_classes)
Out[ ]:
0.8803769717331845
In [ ]:
crf.state_features_
Out[ ]:
{('-1:label:a', 'C0'): 0.021887,
 ('-1:label:a', 'C1'): -0.041637,
 ('-1:label:a', 'C2'): 0.124894,
 ('-1:label:a', 'I0'): 0.492561,
 ('-1:label:a', 'I1'): 0.358263,
 ('-1:label:a', 'I2'): -0.052745,
 ('-1:label:a', 'N'): 0.267346,
 ('-1:label:a', 'end0'): -0.076681,
 ('-1:label:a', 'end2'): -0.231454,
 ('-1:label:a', 'start0'): -0.652239,
 ('-1:label:a', 'start1'): 0.289456,
 ('-1:label:c', 'C0'): 0.213721,
 ('-1:label:c', 'C1'): 0.16011,
 ('-1:label:c', 'C2'): 0.302011,
 ('-1:label:c', 'I0'): 0.583185,
 ('-1:label:c', 'I1'): 0.486105,
 ('-1:label:c', 'I2'): 0.158923,
 ('-1:label:c', 'N'): 0.574064,
 ('-1:label:c', 'end0'): -0.160485,
 ('-1:label:c', 'start0'): -0.24738,
 ('-1:label:g', 'C0'): 0.133503,
 ('-1:label:g', 'C1'): 0.132004,
 ('-1:label:g', 'C2'): 0.104177,
 ('-1:label:g', 'I0'): 0.886636,
 ('-1:label:g', 'I1'): 0.471061,
 ('-1:label:g', 'I2'): 0.060261,
 ('-1:label:g', 'N'): 0.467573,
 ('-1:label:g', 'end0'): -0.243318,
 ('-1:label:g', 'end2'): -0.30699,
 ('-1:label:g', 'start0'): -0.489503,
 ('-1:label:t', 'C0'): 0.119116,
 ('-1:label:t', 'C1'): 0.114843,
 ('-1:label:t', 'C2'): 0.194108,
 ('-1:label:t', 'I0'): 0.647121,
 ('-1:label:t', 'I1'): 0.579597,
 ('-1:label:t', 'I2'): 0.221314,
 ('-1:label:t', 'N'): 0.40256,
 ('-1:label:t', 'end0'): -0.466109,
 ('-1:label:t', 'end1'): 1.178975,
 ('-1:label:t', 'start0'): -0.465242,
 ('-1:label:t', 'start2'): 0.193269,
 ('-2:label:a', 'C0'): 0.131669,
 ('-2:label:a', 'C1'): 0.007512,
 ('-2:label:a', 'C2'): -0.003429,
 ('-2:label:a', 'I0'): 0.181033,
 ('-2:label:a', 'I1'): 0.551044,
 ('-2:label:a', 'I2'): 0.239053,
 ('-2:label:a', 'N'): 0.256104,
 ('-2:label:a', 'end0'): -0.39054,
 ('-2:label:a', 'end1'): -0.79531,
 ('-2:label:a', 'start0'): -0.912412,
 ('-2:label:a', 'start1'): -1.296421,
 ('-2:label:a', 'start2'): 0.050507,
 ('-2:label:c', 'C0'): 0.286841,
 ('-2:label:c', 'C1'): 0.23954,
 ('-2:label:c', 'C2'): 0.131392,
 ('-2:label:c', 'I0'): 0.204207,
 ('-2:label:c', 'I1'): 0.435524,
 ('-2:label:c', 'I2'): 0.287319,
 ('-2:label:c', 'N'): 0.566255,
 ('-2:label:c', 'end0'): -0.316274,
 ('-2:label:c', 'end1'): -0.447818,
 ('-2:label:c', 'start0'): -0.440391,
 ('-2:label:c', 'start1'): -0.637331,
 ('-2:label:g', 'C0'): 0.050961,
 ('-2:label:g', 'C1'): 0.129538,
 ('-2:label:g', 'C2'): 0.233915,
 ('-2:label:g', 'I0'): 0.147365,
 ('-2:label:g', 'I1'): 0.172516,
 ('-2:label:g', 'I2'): 0.452989,
 ('-2:label:g', 'N'): 0.467676,
 ('-2:label:g', 'end0'): -0.34103,
 ('-2:label:g', 'end1'): -1.095051,
 ('-2:label:g', 'start0'): -0.483582,
 ('-2:label:g', 'start1'): -0.838647,
 ('-2:label:t', 'C0'): 0.20546,
 ('-2:label:t', 'C1'): 0.126784,
 ('-2:label:t', 'C2'): 0.109387,
 ('-2:label:t', 'I0'): 0.228239,
 ('-2:label:t', 'I1'): 0.658125,
 ('-2:label:t', 'I2'): 0.351378,
 ('-2:label:t', 'N'): 0.34757,
 ('-2:label:t', 'end0'): -0.210073,
 ('-2:label:t', 'end1'): -0.336199,
 ('-2:label:t', 'end2'): -0.652646,
 ('-2:label:t', 'start0'): -0.135352,
 ('-2:label:t', 'start1'): -0.82906,
 ('label:a', 'C0'): -0.029359,
 ('label:a', 'C1'): 0.120504,
 ('label:a', 'C2'): 0.003761,
 ('label:a', 'I0'): 0.379407,
 ('label:a', 'I1'): 0.176052,
 ('label:a', 'I2'): 0.282477,
 ('label:a', 'N'): 0.173677,
 ('label:a', 'end1'): 0.421729,
 ('label:a', 'end2'): 0.001253,
 ('label:a', 'start0'): 0.987329,
 ('label:c', 'C0'): 0.146389,
 ('label:c', 'C1'): 0.313779,
 ('label:c', 'C2'): 0.227503,
 ('label:c', 'I0'): 0.341892,
 ('label:c', 'I1'): 0.255161,
 ('label:c', 'I2'): 0.402646,
 ('label:c', 'N'): 0.59475,
 ('label:g', 'C0'): 0.243706,
 ('label:g', 'C1'): 0.042626,
 ('label:g', 'C2'): 0.117353,
 ('label:g', 'I0'): 0.459008,
 ('label:g', 'I1'): 0.100071,
 ('label:g', 'I2'): 0.160953,
 ('label:g', 'N'): 0.476096,
 ('label:g', 'end1'): 0.365938,
 ('label:g', 'end2'): -0.468155,
 ('label:g', 'start2'): 0.547968,
 ('label:t', 'C0'): 0.068537,
 ('label:t', 'C1'): 0.213291,
 ('label:t', 'C2'): 0.127326,
 ('label:t', 'I0'): 0.362379,
 ('label:t', 'I1'): 0.243285,
 ('label:t', 'I2'): 0.450496,
 ('label:t', 'N'): 0.421715,
 ('label:t', 'end0'): 0.048126,
 ('label:t', 'start1'): 0.533138,
 ('last_ag', 'C0'): -0.045783,
 ('last_ag', 'C1'): 0.294139,
 ('last_ag', 'C2'): 0.004936,
 ('last_ag', 'I0'): -0.057131,
 ('last_ag', 'I1'): 0.194248,
 ('last_ag', 'I2'): 0.046827,
 ('last_ag', 'N'): 0.146564,
 ('last_ag', 'end0'): -1.773187,
 ('last_ag', 'end1'): -1.449687,
 ('last_ag', 'end2'): 0.19426,
 ('last_ag', 'start0'): -0.968693,
 ('last_ag', 'start1'): -2.427671,
 ('last_ag', 'start2'): -2.096358,
 ('last_gt', 'C0'): 0.180026,
 ('last_gt', 'C1'): -0.019666,
 ('last_gt', 'C2'): 0.314349,
 ('last_gt', 'I0'): 0.173217,
 ('last_gt', 'I1'): -0.023718,
 ('last_gt', 'I2'): 0.07422,
 ('last_gt', 'N'): 0.13615,
 ('last_gt', 'end0'): 0.05107,
 ('last_gt', 'end1'): -0.912427,
 ('last_gt', 'end2'): -1.141334,
 ('last_gt', 'start0'): -1.326271,
 ('last_gt', 'start1'): -2.009662,
 ('last_gt', 'start2'): -1.324616,
 ('start', 'C0'): -0.020915,
 ('start', 'C1'): 0.15884,
 ('start', 'C2'): -0.016193,
 ('start', 'I0'): -0.159581,
 ('start', 'I1'): 0.034748,
 ('start', 'I2'): 0.141029,
 ('start', 'N'): 0.025626,
 ('start', 'end0'): -0.961817,
 ('start', 'end1'): 0.481501,
 ('start', 'end2'): -1.468197,
 ('start', 'start0'): -0.366838,
 ('start', 'start1'): -0.385388,
 ('start', 'start2'): 2.486266,
 ('stop', 'C0'): 0.186128,
 ('stop', 'C1'): 0.108213,
 ('stop', 'C2'): -1.722325,
 ('stop', 'I0'): 0.363195,
 ('stop', 'I1'): 0.17774,
 ('stop', 'I2'): -0.126046,
 ('stop', 'N'): 0.404135,
 ('stop', 'end0'): -1.803947,
 ('stop', 'end1'): -2.038625,
 ('stop', 'end2'): 1.15257,
 ('stop', 'start0'): -0.410297,
 ('stop', 'start1'): -1.168023,
 ('stop', 'start2'): -2.088092}
In [ ]:
text_seq = 'CCCACACACCCCACACACCACACACACCACACCCACACCCACACACACCACACCACACCCACACCCACACCACACCCACACACCCACACCACACCCACACCCACACCACACCCACACCCACACCACACCCACACACCACACCCACACACCACACACCACACCCACACACCACACCACACCCACCACACCCACACACCCACACACCACACCACACACCACACCACACCCACACACACACATCCTAACACTACCCTAACACAGCCCTAATCTAACCCTGGCCAACCTGTCTCTCAACTTACCCTCCATTACCCTGCCTCCACTCGTTACCCTGTCCCATTCAACCATACCACTCCGAACCACCATCCATCCCTCTACTTACTACCACTCACCCACCGTTACCCTCCAATTACCCATATCCAACCCACTGCCACTTACCCTACCATTACCCTACCATCCACCATGACCTACTCACCATACTGTTCTTCTACCCACCATATTGAAACGCTAACAAATGATCGTAAATAACACACACGTGCTTACCCTACCACTTTATACCACCACCACATGCCATACTCACCCTCACTTGTATACTGATTTTACGTACGCACACGGATGCTACAGTATATACCATCTCAAACTTACCCTACTCTCAGATTCCACTTCACTCCATGGCCCATCTCTCACTGAATCAGTACCAAATGCACTCACATCATTATGCACGGCACTTGCCTCAGCGGTCTATACCCTGTGCCATTTACCCATAACGCCCATCATTATCCACATTTTGATATCTATATCTCATTCGGCGGTCCCAAATATTGTATAACTGCCCTTAATACATACGTTATACCACTTTTGCACCATATACTTACCACTCCATTTATATACACTTATGTCAATATTACAGAAAAATCCCCACAAAAATCACCTAAACATAAAAATATTCTACTTTTCAACAATAATACATAAACATATTGGCTTGTGGTAGCAACACTATCATGGTATCACTAACGTAAAAGTTCCTCAATATTGCAATTTGCTTGAACGGATGCTATTTCAGAATATTTCGTACTTACACAGGCCATACATTAGAATAATATGTCACATCACTGTCGTAACACTCTTTATTCACCGAGCAATAATACGGTAGTGGCTCAAACTCATGCGGGTGCTATGATACAATTATATCTTATTTCCATTCCCATATGCTAACCGCAATATCCTAAAAGCATAACTGATGCATCTTTAATCTTGTATGTGACACTACTCATACGAAGGGACTATATCTAGTCAAGACGATACTGTGATAGGTACGTTATTTAATAGGATCTATAACGAAATGTCAAATAATTTTACGGTAATATAACTTATCAGCGGCGTATACTAAAACGGACGTTACGATATTGTCTCACTTCATCTTACCACCCTCTATCTTATTGCTGATAGAACACTAACCCCTCAGCTTTATTTCTAGTTACAGTTACACAAAAAACTATGCCAACCCAGAAATCTTGATATTTTACGTGTCAAAAAATGAGGGTCTCTAAATGAGAGTTTGGTACCATGACTTGTAACTCGCACTGCCCTGATCTGCAATCTTGTTCTTAGAAGTGACGCATATTCTATACGGCCCGACGCGACGCGCCAAAAAATGAAAAACGAAGCAGCGACTCATTTTTATTTAAGGACAAAGGTTGCGAAGCCGCACATTTCCAATTTCATTGTTGTTTATTGGACATACACTGTTAGCTTTATTACCGTCCACGTTTTTTCTACAATAGTGTAGAAGTTTCTTTCTTATGTTCATCGTATTCATAAAATGCTTCACGAACACCGTCATTGATCAAATAGGTCTATAATATTAATATACATTTATATAATCTACGGTATTTATATCATCAAAAAAAAGTAGTTTTTTTATTTTATTTTGTTCGTTAATTTTCAATTTCTATGGAAACCCGTTCGTAAAATTGGCGTTTGTCTCTAGTTTGCGATAGTGTAGATACCGTCCTTGGATAGAGCACTGGAGATGGCTGGCTTTAATCTGCTGGAGTACCATGGAACACCGGTGATCATTCTGGTCACTTGGTCTGGAGCAATACCGGTCAACATGGTGGTGAAGTCACCGTAGTTGAAAACGGCTTCAGCAACTTCGACTGGGTAGGTTTCAGTTGGGTGGGCGGCTTGGAACATGTAGTATTGGGCTAAGTGAGCTCTGATATCAGAGACGTAGACACCCAATTCCACCAAGTTGACTCTTTCGTCAGATTGAGCTAGAGTGGTGGTTGCAGAAGCAGTAGCAGCGATGGCAGCGACACCAGCGGCGATTGAAGTTAATTTGACCATTGTATTTGTTTTGTTTGTTAGTGCTGATATAAGCTTAACAGGAAAGGAAAGAATAAAGACATATTCTCAAAGGCATATAGTTGAAGCAGCTCTATTTATACCCATTCCCTCATGGGTTGTTGCTATTTAAACGATCGCTGACTGGCACCAGTTCCTCATCAAATATTCTCTATATCTCATCTTTCACACAATCTCATTATCTCTATGGAGATGCTCTTGTTTCTGAACGAATCATAAATCTTTCATAGGTTTCGTATGTGGAGTACTGTTTTATGGCGCTTATGTGTATTCGTATGCGCAGAATGTGGGAATGCCAATTATAGGGGTGCCGAGGTGCCTTATAAAACCCTTTTCTGTGCCTGTGACATTTCCTTTTTCGGTCAAAAAGAATATCCGAATTTTAGATTTGGACCCTCGTACAGAAGCTTATTGTCTAAGCCTGAATTCAGTCTGCTTTAAACGGCTTCCGCGGAGGAAATATTTCCATCTCTTGAATTCGTACAACATTAAACGTGTGTTGGGAGTCGTATACTGTTAGGGTCTGTAAACTTGTGAACTCTCGGCAAATGCCTTGGTGCAATTACGTAATTTTAGCCGCTGAGAAGCGGATGGTAATGAGACAAGTTGATATCAAACAGATACATATTTAAAAGAGGGTACCGCTAATTTAGCAGGGCAGTATTATTGTAGTTTGATATGTACGGCTAACTGAACCTAAGTAGGGATATGAGAGTAAGAACGTTCGGCTACTCTTCTTTCTAAGTGGGATTTTTCTTAATCCTTGGATTCTTAAAAGGTTATTAAAGTTCCGCACAAAGAACGCTTGGAAATCGCATTCATCAAAGAACAACTCTTCGTTTTCCAAACAATCTTCCCGAAAAAGTAGCCGTTCATTTCCCTTCCGATTTCATTCCTAGACTGCCAAATTTTTCTTGCTCATTTATAATGATTGATAAGAATTGTATTTGTGTCCCATTCTCGTAGATAAAATTCTTGGATGTTAAAAAATTATTATTTTCTTCATAAAGAAGCTTTCAAGATATAAGATACGAAATAGGGGTTGATAATTGCATGACAGTAGCTTTAGATCAAAAAGGAAAGCATGGAGGGAAACAGTAAACAGTGAAAATTCTCTTGAGAACCAAAGTAAACCTTCATTGAAGAGCTTCCTTAAAAAATTTAGAATCTCCCATGTCAACGGGTTTCCATACCTCCCCAGCATCATACATCTTTTTTCAAAGAAACTTCAAATGCCTCTTTTATGCAAGGGGCAAAATCCTGAAATGACTTAAACTTAGCAGTTTCGTCTTTTTTCAAAGAGAATGGTTGAAGAAGAATTGTTTTGGACGCTTATTGACAATCTGTTGCATTGATAAAGTACCTACTATCCCAGACTATATTTGTATACAAGTACAAAATTAGGTTTGTTGAAACAACTTTCCGATCATTGGTGCCCGTATCTGATGTTTTTTTAGTAATTTCTTTGTAAATACAGGGAGTTGTTTCGAAAGCTTATGAGAAAAATACATGAATGACAGGTAAAAATATTGGCTCGAAAAAGAGGACAAAAAGAGAAATCATAAATGAGTAAACCCACTTGCTGGACATTATCCAGTAAAGGCTTGGTAGTAACCATAATATTACCCAGGTACGAAACGCTAAGAACTTGAAAGACTCATAAAACTTCCAGGTTAAGCTATTTTTGAAAATATTCTGAGGTAAAAGCCATTAAGGTCCAGATAACCAAGGGACAATAAACCTATGCTTTTCTTGTCTTCAATTTCAGTATCTTTCCATTTTGATAATGAGCTAGTGATCCGGAAAGCTACTTTATGATGTTTCAAGGCCTGAAGTTTGAATATTTATGTAGTTCAACATCAAATGTGTCTATTTTGTGATGAGGCAACCGTCGACAACCTTATTATCGAAAAAGAACAACAAGTTCACATGCTTGTTACTCTCTATAACTAGAGAGTACTTTTTTTGGAAGCAAGTAAGAATAAGTCAATTTCTACTTACCTCATTAGGGAAAAATTTAATAGCAGTTGTTATAACGACAAATACAGGCCCTAAAAAATTCACTGTATTCAATGGTCTACGAATCGTCAATCGCTTGCGGTTATGGCACGAAGAACAATGCAATAGCTCTTACAAGCCACTACATGACAAGCAACTCATAATTTAAGTGGATAGCTTGTGATAAATTGAATTTTCTCTGTTTAGTACTTGCCGAATAGTTACTTGTTAGTTGCAGATGCTTTTTGATGACAAAGTTATCAATCTCAATATTAAACTTTTTAGGCTTTCAGGTTTAATCTTTCTTTGAGGGTGTATTAATTTTCATACAAATATTTGATTCATTATTCGTTTTACTGTTACATTAGACCTGCTCATTACATGGAGTAACTTAAGTTTTCTCAAACGCTTGATAGCATGATTTGATGTAGTAAAAAAAAAGGCAGAGTTTCCAAAAAAAATTGTTAATCGACAAAGTTAATATTATGGTGGTAGTATCTCAAATATCTGGATAACCAGATCGTACATCTCTGATAAACAATCTTTGCCACTGCTTTATCCTTTTAAATTGTATTGAGTGCTTCAGTCATTGCAAAATTTTACGAGATTTAAAATTTGTGAACCCGACCTTACCGAGAAATGATGAGCTAATTTTTATAGGTCGACCCTTCTGTCGCTTACTGGGTTGATTATCTTGTGCTTTCTTAGTATCTATCACAAAGGAGACAAAATCGTTGATAAAAAGTGCATCAACATTCCCAGCCAGAAAATGCACATCATAAAGACATGTTATTCAAGAGCCACGACCGTCTTCAATTTATCTTTTATAAAAAACCCTTGTTCTACTGACAGGATGGAATAGATATTAAATATACATTTTGCATTTTTTTTTTTTTCTGTATTGAAGATTTGTATATGAAAGATGTTTATACATCAAATGCTTTGAATAAAGCCATCTTAATTTCAATTTCATGCCCTCCTTCACCGTTTTCTGTTGGTCTAGAGGTAGCTTGTTGTGGTCACTAATGAGAACTTAAATAGTTTTCAACTGCTGGTGATAAATCAATAATTTATGTTCTTAACCTAACATTTGATGACCTTTGATGCGTTGGTTATGTTGAAGACAAATTGCCTCTAATCAGTTCCATTAAGAAATCTTCTTAACTCCTCCAAATATTCTGCCCATACGATACCTATTTGTTTACTTTGTCATTTTGCCATAAGATTGGTATCCACTTCTTGTCTGTAAAATAATTAGAAAGTAGCACAATTTTTACAGTAATGTAGCACGCGTAACTCCTAAACTTTGTCATAATGGTTGAAATGAATGTATGATATAAAAACTCGGACCCTGTTTTACTTCTTTTATAGAACCTTATTTTTGACGCAGGGAGGCGACATTTATCCAAATTAAGTTTTGACATGGCGCATCAGGGAATAAAAAAAACTTTATTATGTGGCCGAATCAACATTAATCAAATGCACTAATATTGTAACGTTCTTACAAAGGGCAGACAACTTGAGAACTTTCATGCGTGCAACAGTATTAATATTTTACTGTCTTGATATCGTTATCCTCATCGTAACGTGAATTTTTTTGTCTCATACGTTAAGGTAAATTTTGATGACCCCCGTTGTCCTTGTTTGCCTTACTGTATAAAGCACCCTTTTATTGTTTAGAATACTAGAATGATAACTGCATTCGGACTATGAAAGAAAAAATGGTAGTAGCAAAGGATAGGCATCGCCGTATTTACTACTTTGTAAACCAGTGGATTTTTGCTCAACATATAAAAAACTAAAGACCTTTTTTTCATCAATATACTTCTGAGACGTGCAGATGTGATATTCGGGTTTGAGCTTGTAGTCAACGAAGCGGGTTCATGGGCAAATTTTCTTTTTTTTCCCTTTTTTTTTGTCTAGATTATTTCGAATATGAGTTAATCATACGTTGATTAGTACTGTTGGTCTCTCATTGAAATTTTACGTGACACCATCATTTTACTTCCACATAAGTTCTAATGTTACGTAGTTCAATTTTAGTCGACCTAGCTTCATATTTATTTTAGAAGCAATTCGTAATTATCATTTTGCTTTCGAAGAAAATTAAGACTTCATTTACTATTCTCGTGATATTTTAGTAGGCGCTTCTTTTGTATCGAACCATTTTATTGCAATGGCCCTTAAGTTACCGTTATTCATACCAATTTGACGTTAATTTTAAATGCGTTCTGAAGTTTCTTAAATAACCCGGATTGGTTAGGTTCAGCCATGCCTGGCGCGTACATTGAGGCATTAGAAGATCCGCAGATAAATAATAAGCTTAGTAAATCCTAAAGATAACAACTAAAATTATATTTCCATCAGCTCAATACCGCAGTACTTTGAAACCTGATTTATATATTGCAGAACTTAATTAAAAGTACATTGTAGTTCAAAAAATAAATATCAAACTTTTGGACCCTCTCTTATTGCCTCCCAATTAATTAAAACATCTTTTCTTCCAATCTACAGGTTTGAAAAGGTAATAAGTAATATAAACTTGAGAACCAAAAAAAAAAAAAAAAAAAATACTGATCCTTACAGGTTTTAAGGTTGCAAAGGGAACATTTATTGAAAGGAGCTAACAATAGTGGGTATGAGTAAAGATATATAGATCGATATTTTGAATTCTAAATGATGAACTAGGGAAGTAATTTAGGTGAAACATTGCAACCAATCATTTTACACTTTTGGTTGCACGTAATGTACCTTTTTATGATATTTTTTTTTTATAGTAGTAGTGTGAAAATTTCTTCAGGACTTGCAAAAAGAATCTAACTGATCTTCGGATGAGCCTTTATCGATTATTTTTTTCCTAAATATAATACTTTACAAGCGAATGTTTTGTTAGGAGAAAGATATAAAAATTATGCGGCATAGGCATATTATCCAATAAAAAGGAAATTTATATATAAACTTCATTTACGTCATAAGAAAATGTTAAGTTCTCTTAACGAAAACTGTGCGAATTTTGTGTTAAAGCTGGATGATGAGAAATTATTCTCGTATTATTTTTCATCAGATACTGATAAGGTTTCAACGTCTTTTGACGTTGGCTTTTCCACACCATGTTTAGAGTTATAAAGCACAATACCGTTCTTCTTGGCATTGTTCCTTTCATCACGTTTATAGAAGTAGAGTACAACAAAAGTCCAAATGGAGAGACAAAAAGCAGAACATGCAGTGAAAGTAAACCCCTTTAAATACCTGGGAGCTTCTTCTGTTTTCCAAACCAAAACACTTATCCATGCGGTAGATGATTGAGCCATAATATTCATTGTAACTAAAGTAATAGCTCTAGTTTGAGCATCTCGGCGACAAATATCGTTTTGCCAAGAGTATAAAACAGGAGCCATAGCCCAACCAAAACATTGCAGCATAAATGCAAACCATTTGGCTCCTTCTGCGACGTCCCAAGCGGCTAATATGGAGTTACCAATGATATTGAAAACCTGAGTAAAAATAATCGCAAACCAACGAGAGTGTAATTTATCTGCAATAATACCAGTAAGCATCAAATAAACCATACCTAAACCCGGAGTAATCATGGATAACTGATTGAGCTTAGGAATAGAGTATCTTTTCAAAGATTTCAACCATAGTAGGTATGCCCCAGATGAAACATTACTGTCATTCCAACAGAAAATATTCCATAAAGTTAAAATGTATATTTTCCAATCACTGAAAATTGTTTTCCACAGTTTAATATCGAATACTTTTGTTTCAAAATCACTTTTACCTGTTTGGTTTTCTTTTAATCTTTTCCTCGCCAACCTAATTTCATCATCAGTTAAGAAAATAGAATAACAGTTGTATGGGTCACCTGGCAGGGAGTAAAATCCAATAAGGCCCACTACGACAGACACAATAGCGTCAATAATAAAGTTCCATCTCCATCCCTCTAAACCATTTACACCATTTAACGATGAATATACGGCTGACTGGATCCCACCAGCGGATAGAATACCGATATACTGGCCCAAATAGTAAAAAGCAGAACGACGCACCATTTCATCATGTTTGTAAAAGGAACCAAACAAATATTGGTATGCCAAATAACTTGGCGCTTCAAAAGCCCCAATGAAAAACCTAATTGCTTTCAAGTGTGGTACAGAATTGACATATGCAGCACCAACGGTTAAAAGCGACCAACATAAGTCGAGGCTTGGTAAAACATAGTTTAATGGGAGCTTGTTCAGGTAAATCAAAAATGGCAATTGAAATATAATATTACCAACTGTGTACATTACTTGAGTATGCACCAAATCATTACCTTGAAAGCCTAAATCTTCCTTCATTCCCGAAACGTAAGCGTTGTTTATATTAACCGTATCCAGATATTTCACCCAATAAGCAATACAAGAATAAAAGGCTAAAAGGACATCCAATTTAATTAATAATTTTTTTTCTTTGAAAGAGGTACCCTGTTTGAACCAACTATACCATTTATTGTGAGATCTTTCCTTTTCATTGATCCGATACTCTTGTTCATCGAAAAATCTCCACCATGGCCTATCGGCTTCATCTCTATATTCATAACTTCTAGTAACGTTCACATTGTCTTTATGTTCACTATAGCTACTAGTCTCAAAATGTAGTTGATCTTTTTCACTTGTAGTCGTGATGAAATTTTCAGCTGTTTCATGACTCTGGATACTGTTGGAGATAGTGACAATTTCTGTTGAATTTAAGTCATCTGGCAGGTCTTCCACCTGCCGCTTTACTGGAATAAAACCCCATTTTAGTCTTTTGTAAGGATCTACAATAATCTCTTTAACAATTGAATACATGTATGTTATTTATATATGCAGTAGTTCTCTTTGTAATTTTTTTTAACAAATAGAGAGTAAGATATGTAGCGAATGTCCATTCATCATAACAGGTAAACTAGATGCTCTTTTATATAGTCTGGTTGTATAAATAATTTATATCCTCATCTAAACGCATGTCTCCGCTTGGTTTCTTATCTATTTGTGGAGGCACCCGTAGTACTGTGCTTTCGTATTTTTTTATTTATTTATTATTTGTAGCAGTTTTTTTCCAGTGACACAATCTTTACCATTACACAGTTTTTACTATTTCTAATGATTACATTGGACCATCGGAAAACTGCGCTAACTTTGGATAACGCCACAGAACGTGATCTGACTATTGTAAAGGTGTCATTCGGTAAGGTAAACCTTCAAGGCGTCCACACCTTTAACCATATAACAGCGTAAACTCTTGTTAAAATACAGGGGTAAGACATTGGTGGATATTCAACAAGATCCGATACCTCCAATTCCGATTTCTACAAATTGTGCTCTACATATTACTGCGATGCAATTATCCACACATAAAATCGATGCCTTTAGAAAAAGACATAAAGCAGACGGCATTGTAGATATTTGACCAATTAGAATTGAATGAGATGAATATCTCACCAAGCTATTCGATATTATAGATAAAGTTTGTATCTTAGTTATGCATTGTGAGTTGGTTGCTCTACTCGCGGTTACCAGTCTCTTCTAAAAAATCTAAGGCCAATGGTATCCATGACATTTCTGCACTTTTTGTAATTGGTTTAGTTATGAAAGGAACGTCAAACCAAATGGTTTTTCAGATAAGAAATTGACAGTATCTGAGAATTTGCTATCAAAGCTCAGAGGATTTACATATTTTAACGTAATTAAAACATTTTTATGTTCGATATATTAGCAAATAGCGTATTAATATACAGCTGTTGCGCTCATGGTAAAATTTAGCGATATACTTTGCATCTTGGCTGCAAAGAAGAATGAATCGGATATACTATTTTTGATCATAATGACGGACATCATGATATAATAACGTTATACGGATAACTTTATTTCAAAAGCACCATCATGTTATCTCTTGTAAAAAGAAGTATTCTTCATTCAATACCAATTACTCGTCACATTCTTCCAATCCAATTAATATTGGTTAAAATGAACCATGTGCAAATCAGAAACATAAAATTATATCACTTTATTTCATATGGTTTCATGCTTACAAAGCTTACTGTCTTTCTCTTTAACTTATTTTTCTACAGGCTACGAATTCTTTGCAGGCTTACTTTACTCATATTATCATTACCTGTACAAATATATATTAAAGAAATCCAAACAAAAATGCTTGAAAAGCATACAGCTTCCGATACATCATGTATATAGAAAATCACAGTACAAAAATTTTGAATTTATGTATAACCGTTTCGCCTGATATATGTAAGAGCTCTTGATTGTCGGAATAGTTCGGGAATTCTGGGTGGAACTAGTAGCTGGAGATGCGTTCTAAAGGATCTAAAATCAGACTCACCCCAAAAACCAAAATTTTGATATTCAACTTTAGTATTAGCCAGTCTTAAAATGATTTTTTGCCAAGAAAGCCGAAGTTTAACGAGCGTTTTAAAATATGCACAAGTCCATTAATTAAATTTGATCACAGTGATTACCAATTTTGTTGAAAGCAGTAATTTGTGACGTCCGTTTTTGGCACAAGTAAAAAATATTTGTTTTGAAGTCTAGTTACAAGAAGCTACTGAAAACACAGGGCTGGATATAGATGTTTATAAGCTCCTCCCATG'
In [ ]:
seq_feats = extract_features([text_seq])
In [ ]:
res = crf.predict(seq_feats)[0]
In [ ]:
res.index('start0')
Out[ ]:
511