0

I'm trying to visualize the importance scores of the data with the following codes in Google Colab and the following error keeps occurring. I tried to adjust hte system recurssion limit but the same error keeps on occurring. Can anybody help?

2000


RecursionError Traceback (most recent call last) in <cell line: 1>() ----> 1 outFileName(model, tis_testX, 14, 'Final_sal_tis.txt') # 3rd argument is for layer index 2 normalize('Final_sal_tis.txt', 'Final_sal_tis_norm.txt') 3 4 LogoFile('Final_sal_tis_norm.txt', 'TIS_Final')

8 frames ... last 4 frames repeated, from the frame below ...

/usr/local/lib/python3.10/dist-packages/keras/layers/core/tf_op_layer.py in handle(self, op, args, kwargs) 117 for x in tf.nest.flatten([args, kwargs]) 118 ): --> 119 return TFOpLambda(op)(*args, **kwargs) 120 else: 121 return self.NOT_SUPPORTED

RecursionError: maximum recursion depth exceeded while getting the str of an object

The code below is the functions I've used

import tensorflow as tf
import tensorflow.keras.backend as K
import numpy as np
import matplotlib.pyplot as plt
from deeplift.visualization import viz_sequence
from tensorflow.keras.applications import xception

def generateSaliency(model, out_layer_index):
    import sys
    sys.setrecursionlimit(2000)
    print(sys.getrecursionlimit())
    
    inp = model.layers[0].input
    outp = model.layers[out_layer_index].output

    max_outp = K.max(outp, axis=1)
    saliency = tf.keras.backend.gradients(tf.keras.backend.sum(max_outp), inp)[0]
    max_class = K.argmax(outp, axis=1)
    return K.function([inp], [saliency, max_class])

def outFileName(model, x_test, layer_index,  outFile = None):  # x3 test added
    # import sys
    # sys.setrecursionlimit(1500)
    xt = x_test.reshape(-1, 300, 4)

    # x2t = x2_test.reshape(-1, 300, 4)

    # x3t = x3_test.reshape(-1, 300, 4) # added

    saliency = generateSaliency(model, layer_index)([xt]) #, x2t, x3t]) # x3t added



    A = [1, 0, 0, 0]
    C = [0, 1, 0, 0]
    G = [0, 0, 1, 0]
    T = [0, 0, 0, 1]

    lst_data = []
    lst_sal = []
    lst_norm_sal = []

    outputFile = open(outFile,'w')

    x_test = x_test.tolist()
    # x2_test = x2_test.tolist()
    # x3_test = x3_test.tolist()  # added

    for nuc in (x_test):
        sal = saliency[0][x_test.index(nuc)]
        #import code
        #code.interact(local=dict(globals(), **locals()))
        for i in range(len(nuc)):
            if nuc[i] == A:
                lst_data.append('A')
                lst_sal.append(sal[i][A.index(1)])
            elif nuc[i] == C:
                lst_data.append('C')
                lst_sal.append(sal[i][C.index(1)])
            elif nuc[i] == G:
                lst_data.append('G')
                lst_sal.append(sal[i][G.index(1)])
            else:
                lst_data.append('T')
                lst_sal.append(sal[i][T.index(1)])
        #print(lst_sal)

        print(','.join(lst_data), file=outputFile)
        print(','.join([str(element) for element in lst_sal]), file=outputFile)

        lst_data = []
        lst_sal = []

The code below is the script I've used

outFileName(model, tis_testX, 14, 'Final_sal_tis.txt')

From this code I'm expecting to have a text file with all the importance scores of each character from a string with the original string above and the importance scores below.

0 Answers0