This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Matplotlib plot stops responding when trying to close it

I am using a library called ProDy for protein analysis. One of the commands in this library creates a plot using matplotlib but when I try closing the plot it freezes and I need to force quit python.

The weird part is that the issue only happens when I try to do a loop to create multiple plots. If I just do one plot I can close it with no issues.

Singe plot code (works):

anm1 = ANM('f2000')
anm1.buildHessian(f2000)
anm1.calcModes()
anm2 = ANM('f1000')
anm2.buildHessian(f1000)
anm2.calcModes()
showOverlapTable(anm1[:], anm2[:]);
plt.show()

Loop code (produces first plot but freezes when trying to close that plot)

pdbs = [f2000, f1000, f1307, f1335]
pdbs_str = ['f2000', 'f1000', 'f1307', 'f1335']

pairs = [(a, b) for idx, a in enumerate(pdbs) for b in pdbs[idx + 1:]]
pairs_str = [(a, b) for idx, a in enumerate(pdbs_str) for b in pdbs_str[idx + 1:]]

# Visualize overlap tables for each pdb pair
for pair, pair_str in zip(pairs, pairs_str):
    anm1 = ANM(pair_str[0])
    anm1.buildHessian(pair[0])
    anm1.calcModes()
    anm2 = ANM(pair_str[1])
    anm2.buildHessian(pair[1])
    anm2.calcModes()
    showOverlapTable(anm1[:], anm2[:]);
    plt.show()
python python3 prody matplotlib

Not a perfect fix but using savefig() instead of showing the plot then saving it allows the loop to work.

0 answers

No answers yet.

Log in to answer this question.