Source code for abpytools.analysis.cdr_length
from matplotlib import pyplot as plt
import seaborn as sns
import os
from abpytools.utils import PythonConfig
from abpytools.features.regions import ChainDomains
from matplotlib.ticker import MaxNLocator
from .analysis_helper_functions import switch_interactive_mode
[docs]class CDRLength(ChainDomains):
def __init__(self, path=None, antibody_objects=None, verbose=True, show_progressbar=True, n_threads=10):
super().__init__(path=path, antibody_objects=antibody_objects, verbose=verbose,
show_progressbar=show_progressbar, n_threads=n_threads)
[docs] def plot_cdr(self, only_cdr3=True, save=False, plot_path='./', plot_name='CDR_length',
plot_title=None, hist=True, ax=None, **kwargs):
switch_interactive_mode(save=save)
if ax is None:
if only_cdr3:
f, ax = plt.subplots(nrows=1, ncols=1)
else:
f, ax = plt.subplots(nrows=1, ncols=3, figsize=(15, 5))
ax = ax.ravel()
if only_cdr3:
if plot_title is None:
ax.set_title('CDR3 Length', size=18)
else:
ax.set_title(plot_title, size=18)
sns.distplot(self.cdr_lengths()[:, 2], hist=hist, ax=ax, **kwargs)
ax.set_ylabel('Density', size=14)
ax.set_xlabel('CDR Length', size=14)
ax.xaxis.set_major_locator(MaxNLocator(integer=True))
else:
if plot_title is None:
plt.suptitle('CDR Length', size=20)
else:
plt.suptitle(plot_title, size=20)
for i, cdr in enumerate(['CDR 1', 'CDR 2', 'CDR 3']):
ax[i].set_title(cdr, size=16)
sns.distplot(self.cdr_lengths()[:, i], hist=hist, ax=ax[i])
if i == 0:
ax[i].set_ylabel('Density', size=16)
if i == 1:
ax[i].set_xlabel('CDR Length', size=16)
ax[i].xaxis.set_major_locator(MaxNLocator(integer=True))
plt.tight_layout()
plt.subplots_adjust(top=0.85)
ipython_config = PythonConfig()
if ipython_config.ipython_info == 'notebook' and save is False:
plt.plot()
else:
plt.savefig(os.path.join(plot_path, plot_name), format='png')
plt.close()