diff --git a/.gitignore b/.gitignore index 988b9c61..c9ce5eb0 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ /dev_scripts/ /recipe/ /tutorials/.ipynb_checkpoints/ +/aaanalysis/_archive/ diff --git a/aaanalysis/__pycache__/utils.cpython-39.pyc b/aaanalysis/__pycache__/utils.cpython-39.pyc index 8e27d44b..c101441e 100644 Binary files a/aaanalysis/__pycache__/utils.cpython-39.pyc and b/aaanalysis/__pycache__/utils.cpython-39.pyc differ diff --git a/aaanalysis/_utils/__pycache__/_check_type.cpython-39.pyc b/aaanalysis/_utils/__pycache__/_check_type.cpython-39.pyc index 71841fa1..eeabce26 100644 Binary files a/aaanalysis/_utils/__pycache__/_check_type.cpython-39.pyc and b/aaanalysis/_utils/__pycache__/_check_type.cpython-39.pyc differ diff --git a/aaanalysis/_utils/_check_type.py b/aaanalysis/_utils/_check_type.py index 5cd73ff0..6ff80bbc 100644 --- a/aaanalysis/_utils/_check_type.py +++ b/aaanalysis/_utils/_check_type.py @@ -70,7 +70,7 @@ def check_tuple(name=None, val=None, n=None, check_n=True, accept_none=False): raise ValueError(f"'{name}' ({val}) should be a tuple with {n} elements.") -def check_list(name=None, val=None, accept_none=False, convert=True): +def check_list_like(name=None, val=None, accept_none=False, convert=True): """""" if accept_none and val is None: return None diff --git a/aaanalysis/aaclust/__pycache__/aaclust.cpython-39.pyc b/aaanalysis/aaclust/__pycache__/aaclust.cpython-39.pyc index c0a20c47..1b275e4a 100644 Binary files a/aaanalysis/aaclust/__pycache__/aaclust.cpython-39.pyc and b/aaanalysis/aaclust/__pycache__/aaclust.cpython-39.pyc differ diff --git a/aaanalysis/aaclust/aaclust.py b/aaanalysis/aaclust/aaclust.py index d40b1933..dfb550cf 100644 --- a/aaanalysis/aaclust/aaclust.py +++ b/aaanalysis/aaclust/aaclust.py @@ -248,7 +248,7 @@ def fit(self, # Check input X = ut.check_X(X=X) ut.check_X_unique_samples(X=X) - names = ut.check_list(name="names", val=names, accept_none=True) + names = ut.check_list_like(name="names", val=names, accept_none=True) ut.check_number_range(name="mint_th", val=min_th, min_val=0, max_val=1, just_int=False, accept_none=False) ut.check_number_range(name="n_clusters", val=n_clusters, min_val=1, just_int=True, accept_none=True) check_merge_metric(merge_metric=merge_metric) @@ -391,7 +391,7 @@ def name_clusters(X: ut.ArrayLike2D, X = ut.check_X(X=X) ut.check_X_unique_samples(X=X) labels = ut.check_labels(labels=labels) - names = ut.check_list(name="names", val=names, accept_none=False) + names = ut.check_list_like(name="names", val=names, accept_none=False) ut.check_bool(name="shorten_names", val=shorten_names) ut.check_match_X_labels(X=X, labels=labels) check_match_X_names(X=X, names=names, accept_none=False) @@ -487,7 +487,7 @@ def comp_correlation(X: ut.ArrayLike2D, Returns ------- - df_corr + df_corr : pd.DataFrame DataFrame with correlation either for each pair in ``X`` of shape (n_samples, n_samples) or for each pair between ``X`` and ``X_ref`` of shape (n_samples, n_samples_ref). @@ -535,15 +535,15 @@ def comp_coverage(names : [List[str]] =None, names List of sample names. Should be subset of ``names_ref``. names_ref - List of reference sample names. Should superset of ``names``. + List of reference sample names. Should be superset of ``names``. Returns ------- - coverage + coverage : float Percentage of unique names from ``names`` that are found in ``names_ref``. """ - names = ut.check_list(name="names", val=names, accept_none=False) - names_ref = ut.check_list(name="names_ref", val=names_ref, accept_none=False) + names = ut.check_list_like(name="names", val=names, accept_none=False) + names_ref = ut.check_list_like(name="names_ref", val=names_ref, accept_none=False) ut.check_superset_subset(subset=names, name_subset="names", superset=names_ref, name_superset="names_ref") # Compute coverage diff --git a/aaanalysis/cpp/__pycache__/cpp.cpython-39.pyc b/aaanalysis/cpp/__pycache__/cpp.cpython-39.pyc index 25752c1e..2d02ee5c 100644 Binary files a/aaanalysis/cpp/__pycache__/cpp.cpython-39.pyc and b/aaanalysis/cpp/__pycache__/cpp.cpython-39.pyc differ diff --git a/aaanalysis/cpp/__pycache__/cpp_plot.cpython-39.pyc b/aaanalysis/cpp/__pycache__/cpp_plot.cpython-39.pyc index 2239c8b6..77973308 100644 Binary files a/aaanalysis/cpp/__pycache__/cpp_plot.cpython-39.pyc and b/aaanalysis/cpp/__pycache__/cpp_plot.cpython-39.pyc differ diff --git a/aaanalysis/cpp/__pycache__/feature.cpython-39.pyc b/aaanalysis/cpp/__pycache__/feature.cpython-39.pyc index 80662d8d..ce10b1ba 100644 Binary files a/aaanalysis/cpp/__pycache__/feature.cpython-39.pyc and b/aaanalysis/cpp/__pycache__/feature.cpython-39.pyc differ diff --git a/aaanalysis/cpp/cpp.py b/aaanalysis/cpp/cpp.py index 747d11dd..6635d302 100644 --- a/aaanalysis/cpp/cpp.py +++ b/aaanalysis/cpp/cpp.py @@ -3,7 +3,6 @@ """ import pandas as pd -import aaanalysis.data_handling.load_scales_ from aaanalysis.cpp.feature import SequenceFeature from aaanalysis.cpp._feature_stat import SequenceFeatureStatistics @@ -60,9 +59,9 @@ def __init__(self, df_scales=None, df_cat=None, df_parts=None, split_kws=None, # Load default scales if not specified sf = SequenceFeature() if df_cat is None: - df_cat = aaanalysis.data_loader.load_scales_.load_scales(name=ut.STR_SCALE_CAT) + df_cat = aa.load_scales(name=ut.STR_SCALE_CAT) if df_scales is None: - df_scales = aaanalysis.data_loader.load_scales_.load_scales() + df_scales = aa.load_scales() if split_kws is None: split_kws = sf.get_split_kws() ut.check_bool(name="verbose", val=verbose) diff --git a/aaanalysis/cpp/cpp_plot.py b/aaanalysis/cpp/cpp_plot.py index cbc9ffdc..e3e2f288 100644 --- a/aaanalysis/cpp/cpp_plot.py +++ b/aaanalysis/cpp/cpp_plot.py @@ -6,9 +6,8 @@ import seaborn as sns import inspect -import aaanalysis -import aaanalysis.data_handling.load_scales_ from aaanalysis.cpp._cpp import CPPPlots, get_optimal_fontsize +import aaanalysis as aa import aaanalysis.utils as ut @@ -230,7 +229,7 @@ def __init__(self, df_cat=None, accept_gaps=False, jmd_n_len=10, jmd_c_len=10, e ut.check_bool(name="verbose", val=verbose) if df_cat is None: - df_cat = aaanalysis.data_loader.load_scales_.load_scales(name=ut.COL_SCALE_ID) + df_cat = aa.load_scales(name=ut.COL_SCALE_ID) self.df_cat = df_cat self._verbose = verbose self._accept_gaps = accept_gaps diff --git a/aaanalysis/cpp/feature.py b/aaanalysis/cpp/feature.py index 07ab5e8b..fbd41a50 100644 --- a/aaanalysis/cpp/feature.py +++ b/aaanalysis/cpp/feature.py @@ -10,7 +10,6 @@ import multiprocessing as mp import warnings -import aaanalysis.data_handling.load_scales_ from aaanalysis.cpp._feature_pos import SequenceFeaturePositions from aaanalysis.cpp._split import Split, SplitRange from aaanalysis.cpp._part import Parts @@ -343,7 +342,7 @@ def get_features(self, list_parts=None, split_kws=None, df_scales=None, all_part ut.check_split_kws(split_kws=split_kws) ut.check_df_scales(df_scales=df_scales, accept_none=True) if df_scales is None: - df_scales = aaanalysis.data_loader.load_scales_.load_scales() + df_scales = aa.load_scales() if split_kws is None: split_kws = self.get_split_kws() scales = list(df_scales) @@ -387,7 +386,7 @@ def feat_matrix(features=None, df_parts=None, df_scales=None, accept_gaps=False, """ ut.check_number_range(name="j_jobs", val=n_jobs, accept_none=True, min_val=1, just_int=True) if df_scales is None: - df_scales = aaanalysis.data_loader.load_scales_.load_scales() + df_scales = aa.load_scales() ut.check_df_scales(df_scales=df_scales) ut.check_df_parts(df_parts=df_parts) features = ut.check_features(features=features, parts=df_parts, df_scales=df_scales) @@ -459,7 +458,7 @@ def feat_names(features=None, df_cat=None, tmd_len=20, jmd_c_len=10, jmd_n_len=1 features = ut.check_features(features=features) ut.check_df_cat(df_cat=df_cat) if df_cat is None: - df_cat = aaanalysis.data_loader.load_scales_.load_scales(name=ut.STR_SCALE_CAT) + df_cat = aa.load_scales(name=ut.STR_SCALE_CAT) # Get feature names sfp = SequenceFeaturePositions() dict_part_pos = sfp.get_dict_part_pos(tmd_len=tmd_len, jmd_n_len=jmd_n_len, jmd_c_len=jmd_c_len, diff --git a/aaanalysis/utils.py b/aaanalysis/utils.py index f458a729..4b9e886e 100644 --- a/aaanalysis/utils.py +++ b/aaanalysis/utils.py @@ -11,7 +11,7 @@ # Import utility functions explicitly from aaanalysis._utils._check_type import (check_number_range, check_number_val, check_str, check_bool, - check_dict, check_tuple, check_list, + check_dict, check_tuple, check_list_like, check_ax) from aaanalysis._utils._check_data import (check_X, check_X_unique_samples, check_labels, check_match_X_labels, check_superset_subset, diff --git a/docs/build/doctrees/environment.pickle b/docs/build/doctrees/environment.pickle index e8c9925f..b2a85a51 100644 Binary files a/docs/build/doctrees/environment.pickle and b/docs/build/doctrees/environment.pickle differ diff --git a/docs/build/doctrees/generated/aaanalysis.AAclust.doctree b/docs/build/doctrees/generated/aaanalysis.AAclust.doctree index a00769c9..1a0be0de 100644 Binary files a/docs/build/doctrees/generated/aaanalysis.AAclust.doctree and b/docs/build/doctrees/generated/aaanalysis.AAclust.doctree differ diff --git a/docs/build/doctrees/generated/aaanalysis.CPP.doctree b/docs/build/doctrees/generated/aaanalysis.CPP.doctree index fa5c083d..6997db1f 100644 Binary files a/docs/build/doctrees/generated/aaanalysis.CPP.doctree and b/docs/build/doctrees/generated/aaanalysis.CPP.doctree differ diff --git a/docs/build/doctrees/generated/aaanalysis.CPPPlot.doctree b/docs/build/doctrees/generated/aaanalysis.CPPPlot.doctree index b6a6f4f6..b3bca136 100644 Binary files a/docs/build/doctrees/generated/aaanalysis.CPPPlot.doctree and b/docs/build/doctrees/generated/aaanalysis.CPPPlot.doctree differ diff --git a/docs/build/doctrees/generated/aaanalysis.SequenceFeature.doctree b/docs/build/doctrees/generated/aaanalysis.SequenceFeature.doctree index 8333577d..2936b72e 100644 Binary files a/docs/build/doctrees/generated/aaanalysis.SequenceFeature.doctree and b/docs/build/doctrees/generated/aaanalysis.SequenceFeature.doctree differ diff --git a/docs/build/doctrees/generated/tutorial1_quick_start.doctree b/docs/build/doctrees/generated/tutorial1_quick_start.doctree index 4611be63..65af52ea 100644 Binary files a/docs/build/doctrees/generated/tutorial1_quick_start.doctree and b/docs/build/doctrees/generated/tutorial1_quick_start.doctree differ diff --git a/docs/build/html/_downloads/004048c0cbb6684bdb9047282ab71735/aaanalysis-plot_settings-2.pdf b/docs/build/html/_downloads/004048c0cbb6684bdb9047282ab71735/aaanalysis-plot_settings-2.pdf index b5ebd506..034540bd 100644 Binary files a/docs/build/html/_downloads/004048c0cbb6684bdb9047282ab71735/aaanalysis-plot_settings-2.pdf and b/docs/build/html/_downloads/004048c0cbb6684bdb9047282ab71735/aaanalysis-plot_settings-2.pdf differ diff --git a/docs/build/html/_downloads/163aacac4bd235c9af7a62d7b4d0c89f/aaanalysis-plot_get_cdict-1.pdf b/docs/build/html/_downloads/163aacac4bd235c9af7a62d7b4d0c89f/aaanalysis-plot_get_cdict-1.pdf index 52458eb0..1771af1b 100644 Binary files a/docs/build/html/_downloads/163aacac4bd235c9af7a62d7b4d0c89f/aaanalysis-plot_get_cdict-1.pdf and b/docs/build/html/_downloads/163aacac4bd235c9af7a62d7b4d0c89f/aaanalysis-plot_get_cdict-1.pdf differ diff --git a/docs/build/html/_downloads/1f3abea1675a65bb341756c52c9927f4/aaanalysis-plot_gcfs-1.pdf b/docs/build/html/_downloads/1f3abea1675a65bb341756c52c9927f4/aaanalysis-plot_gcfs-1.pdf index 29fca4d7..af43810e 100644 Binary files a/docs/build/html/_downloads/1f3abea1675a65bb341756c52c9927f4/aaanalysis-plot_gcfs-1.pdf and b/docs/build/html/_downloads/1f3abea1675a65bb341756c52c9927f4/aaanalysis-plot_gcfs-1.pdf differ diff --git a/docs/build/html/_downloads/72c2e4be500ecf10c85a4e6f81c365fc/aaanalysis-plot_legend-1.pdf b/docs/build/html/_downloads/72c2e4be500ecf10c85a4e6f81c365fc/aaanalysis-plot_legend-1.pdf index 63459a8c..7064ab06 100644 Binary files a/docs/build/html/_downloads/72c2e4be500ecf10c85a4e6f81c365fc/aaanalysis-plot_legend-1.pdf and b/docs/build/html/_downloads/72c2e4be500ecf10c85a4e6f81c365fc/aaanalysis-plot_legend-1.pdf differ diff --git a/docs/build/html/_downloads/795a736e5af756908120c8bda412fd28/aaanalysis-plot_get_cmap-1.pdf b/docs/build/html/_downloads/795a736e5af756908120c8bda412fd28/aaanalysis-plot_get_cmap-1.pdf index e38c7d65..bb323fe1 100644 Binary files a/docs/build/html/_downloads/795a736e5af756908120c8bda412fd28/aaanalysis-plot_get_cmap-1.pdf and b/docs/build/html/_downloads/795a736e5af756908120c8bda412fd28/aaanalysis-plot_get_cmap-1.pdf differ diff --git a/docs/build/html/_downloads/88d7f3f7cb5a284c0bfaa377fb4ce1d8/aaanalysis-plot_get_clist-1.pdf b/docs/build/html/_downloads/88d7f3f7cb5a284c0bfaa377fb4ce1d8/aaanalysis-plot_get_clist-1.pdf index 50bf2f30..f0b11b7a 100644 Binary files a/docs/build/html/_downloads/88d7f3f7cb5a284c0bfaa377fb4ce1d8/aaanalysis-plot_get_clist-1.pdf and b/docs/build/html/_downloads/88d7f3f7cb5a284c0bfaa377fb4ce1d8/aaanalysis-plot_get_clist-1.pdf differ diff --git a/docs/build/html/_downloads/fb29bffb69140db4f68c4eb913c6f7d3/aaanalysis-plot_settings-1.pdf b/docs/build/html/_downloads/fb29bffb69140db4f68c4eb913c6f7d3/aaanalysis-plot_settings-1.pdf index e6ddea7f..c2c1a032 100644 Binary files a/docs/build/html/_downloads/fb29bffb69140db4f68c4eb913c6f7d3/aaanalysis-plot_settings-1.pdf and b/docs/build/html/_downloads/fb29bffb69140db4f68c4eb913c6f7d3/aaanalysis-plot_settings-1.pdf differ diff --git a/docs/build/html/_images/output_13_1.png b/docs/build/html/_images/output_13_1.png index 815e3a39..6e2513d5 100644 Binary files a/docs/build/html/_images/output_13_1.png and b/docs/build/html/_images/output_13_1.png differ diff --git a/docs/build/html/_sources/generated/tutorial1_quick_start.rst.txt b/docs/build/html/_sources/generated/tutorial1_quick_start.rst.txt index 75442ba7..c9cc5aa9 100644 --- a/docs/build/html/_sources/generated/tutorial1_quick_start.rst.txt +++ b/docs/build/html/_sources/generated/tutorial1_quick_start.rst.txt @@ -69,9 +69,9 @@ set of 100 scales, as defined by the ``n_clusters`` parameters: from sklearn.cluster import AgglomerativeClustering - aac = aa.AAclust(model=AgglomerativeClustering) - X = np.array(df_scales) - scales = aac.fit(X, names=list(df_scales), n_clusters=100) + aac = aa.AAclust(model_class=AgglomerativeClustering) + X = np.array(df_scales).T + scales = aac.fit(X, names=list(df_scales), n_clusters=100).medoid_names_ df_scales = df_scales[scales] Comparative Physicochemical Profiling (CPP) @@ -131,10 +131,10 @@ A feature matrix from a given set of CPP features can be created using .. parsed-literal:: - Mean accuracy of 0.6 + Mean accuracy of 0.58 -Creating more features with CPP will take some more time, but improve +Creating more features with CPP will take a little time, but improve prediction performance: .. code:: ipython3 @@ -153,7 +153,7 @@ prediction performance: sns.barplot(pd.DataFrame({"Baseline": cv_base, "CPP": cv}), palette=["tab:blue", "tab:red"]) plt.ylabel("Mean accuracy", size=aa.plot_gcfs()+1) plt.ylim(0, 1) - plt.title("Comparison of Feature Engineering Methods") + plt.title("Comparison of Feature Engineering Methods", size=aa.plot_gcfs()-1) sns.despine() plt.show() diff --git a/docs/build/html/generated/aaanalysis.AAclust.html b/docs/build/html/generated/aaanalysis.AAclust.html index 48d50661..3e1e9520 100644 --- a/docs/build/html/generated/aaanalysis.AAclust.html +++ b/docs/build/html/generated/aaanalysis.AAclust.html @@ -498,11 +498,11 @@

aaanalysis.AAclustReturns: -

DataFrame with correlation either for each pair in X of shape (n_samples, n_samples) or +

df_corr – DataFrame with correlation either for each pair in X of shape (n_samples, n_samples) or for each pair between X and X_ref of shape (n_samples, n_samples_ref).

Return type:
-

df_corr

+

pd.DataFrame

@@ -532,14 +532,14 @@

aaanalysis.AAclustParameters:
  • names – List of sample names. Should be subset of names_ref.

  • -
  • names_ref – List of reference sample names. Should superset of names.

  • +
  • names_ref – List of reference sample names. Should be superset of names.

Returns:
-

Percentage of unique names from names that are found in names_ref.

+

coverage – Percentage of unique names from names that are found in names_ref.

Return type:
-

coverage

+

float

diff --git a/docs/build/html/generated/aaanalysis.CPP.html b/docs/build/html/generated/aaanalysis.CPP.html index 4d24b4f1..62c7e260 100644 --- a/docs/build/html/generated/aaanalysis.CPP.html +++ b/docs/build/html/generated/aaanalysis.CPP.html @@ -128,7 +128,7 @@

aaanalysis.CPP

-class aaanalysis.CPP(df_scales=None, df_cat=None, df_parts=None, split_kws=None, accept_gaps=False, verbose=True)[source]
+class aaanalysis.CPP(df_scales=None, df_cat=None, df_parts=None, split_kws=None, accept_gaps=False, verbose=True)[source]

Bases: Tool

Create and filter features that are most discriminant between two sets of sequences.

@@ -149,7 +149,7 @@

aaanalysis.CPP
-__init__(df_scales=None, df_cat=None, df_parts=None, split_kws=None, accept_gaps=False, verbose=True)[source]
+__init__(df_scales=None, df_cat=None, df_parts=None, split_kws=None, accept_gaps=False, verbose=True)[source]

Methods

@@ -168,7 +168,7 @@

aaanalysis.CPP
-run(labels=None, parametric=False, n_filter=100, tmd_len=20, jmd_n_len=10, jmd_c_len=10, ext_len=4, start=1, check_cat=True, n_pre_filter=None, pct_pre_filter=5, max_std_test=0.2, max_overlap=0.5, max_cor=0.5, n_processes=None)[source]
+run(labels=None, parametric=False, n_filter=100, tmd_len=20, jmd_n_len=10, jmd_c_len=10, ext_len=4, start=1, check_cat=True, n_pre_filter=None, pct_pre_filter=5, max_std_test=0.2, max_overlap=0.5, max_cor=0.5, n_processes=None)[source]

Perform CPP pipeline by creation and two-step filtering of features. CPP aims to identify a collection of non-redundant features that are most discriminant between a test and a reference group of sequences.

@@ -223,7 +223,7 @@

aaanalysis.CPP
-eval()[source]
+eval()[source]

Evaluate the output generated by the tool.

diff --git a/docs/build/html/generated/aaanalysis.CPPPlot.html b/docs/build/html/generated/aaanalysis.CPPPlot.html index 1ce88964..0faf6742 100644 --- a/docs/build/html/generated/aaanalysis.CPPPlot.html +++ b/docs/build/html/generated/aaanalysis.CPPPlot.html @@ -128,7 +128,7 @@

aaanalysis.CPPPlot

-class aaanalysis.CPPPlot(df_cat=None, accept_gaps=False, jmd_n_len=10, jmd_c_len=10, ext_len=4, verbose=True)[source]
+class aaanalysis.CPPPlot(df_cat=None, accept_gaps=False, jmd_n_len=10, jmd_c_len=10, ext_len=4, verbose=True)[source]

Bases: object

Create and filter features that are most discriminant between two sets of sequences.

@@ -145,7 +145,7 @@

aaanalysis.CPPPlot
-__init__(df_cat=None, accept_gaps=False, jmd_n_len=10, jmd_c_len=10, ext_len=4, verbose=True)[source]
+__init__(df_cat=None, accept_gaps=False, jmd_n_len=10, jmd_c_len=10, ext_len=4, verbose=True)[source]

Methods

@@ -167,7 +167,7 @@

aaanalysis.CPPPlot
-profile(df_feat=None, y='category', val_col='mean_dif', val_type='count', normalize=False, figsize=(7, 5), title=None, title_kws=None, dict_color=None, edge_color='none', bar_width=0.75, add_jmd_tmd=True, tmd_len=20, start=1, jmd_n_seq=None, tmd_seq=None, jmd_c_seq=None, tmd_color='mediumspringgreen', jmd_color='blue', tmd_seq_color='black', jmd_seq_color='white', seq_size=None, tmd_jmd_fontsize=None, xtick_size=11.0, xtick_width=2.0, xtick_length=5.0, xticks_pos=False, ytick_size=None, ytick_width=2.0, ytick_length=5.0, ylim=None, highlight_tmd_area=True, highlight_alpha=0.15, grid=False, grid_axis='both', add_legend_cat=True, legend_kws=None, shap_plot=False, **kwargs)[source]
+profile(df_feat=None, y='category', val_col='mean_dif', val_type='count', normalize=False, figsize=(7, 5), title=None, title_kws=None, dict_color=None, edge_color='none', bar_width=0.75, add_jmd_tmd=True, tmd_len=20, start=1, jmd_n_seq=None, tmd_seq=None, jmd_c_seq=None, tmd_color='mediumspringgreen', jmd_color='blue', tmd_seq_color='black', jmd_seq_color='white', seq_size=None, tmd_jmd_fontsize=None, xtick_size=11.0, xtick_width=2.0, xtick_length=5.0, xticks_pos=False, ytick_size=None, ytick_width=2.0, ytick_length=5.0, ylim=None, highlight_tmd_area=True, highlight_alpha=0.15, grid=False, grid_axis='both', add_legend_cat=True, legend_kws=None, shap_plot=False, **kwargs)[source]

Plot feature profile for given features from ‘df_feat’.

Parameters:
@@ -224,7 +224,7 @@

aaanalysis.CPPPlot
-heatmap(df_feat=None, y='subcategory', val_col='mean_dif', val_type='mean', normalize=False, figsize=(8, 5), title=None, title_kws=None, vmin=None, vmax=None, grid_on=True, cmap='RdBu_r', cmap_n_colors=None, dict_color=None, cbar_kws=None, facecolor_dark=False, add_jmd_tmd=True, tmd_len=20, start=1, jmd_n_seq=None, tmd_seq=None, jmd_c_seq=None, tmd_color='mediumspringgreen', jmd_color='blue', tmd_seq_color='black', jmd_seq_color='white', seq_size=None, tmd_jmd_fontsize=None, xticks_pos=False, xtick_size=11.0, xtick_width=2.0, xtick_length=5.0, ytick_size=None, add_legend_cat=True, legend_kws=None, add_importance_map=False, cbar_pct=False, **kwargs)[source]
+heatmap(df_feat=None, y='subcategory', val_col='mean_dif', val_type='mean', normalize=False, figsize=(8, 5), title=None, title_kws=None, vmin=None, vmax=None, grid_on=True, cmap='RdBu_r', cmap_n_colors=None, dict_color=None, cbar_kws=None, facecolor_dark=False, add_jmd_tmd=True, tmd_len=20, start=1, jmd_n_seq=None, tmd_seq=None, jmd_c_seq=None, tmd_color='mediumspringgreen', jmd_color='blue', tmd_seq_color='black', jmd_seq_color='white', seq_size=None, tmd_jmd_fontsize=None, xticks_pos=False, xtick_size=11.0, xtick_width=2.0, xtick_length=5.0, ytick_size=None, add_legend_cat=True, legend_kws=None, add_importance_map=False, cbar_pct=False, **kwargs)[source]

Plot a featuremap of the selected value column with scale information (y-axis) versus sequence position (x-axis).

This is a wrapper function for seaborn.heatmap(), designed to highlight differences between two sets of sequences at the positional level (e.g., amino acid level for protein sequences).

@@ -309,7 +309,7 @@

aaanalysis.CPPPlot
-update_seq_size()[source]
+update_seq_size()[source]

diff --git a/docs/build/html/generated/aaanalysis.SequenceFeature.html b/docs/build/html/generated/aaanalysis.SequenceFeature.html index fe01f963..e3c2ed08 100644 --- a/docs/build/html/generated/aaanalysis.SequenceFeature.html +++ b/docs/build/html/generated/aaanalysis.SequenceFeature.html @@ -128,7 +128,7 @@

aaanalysis.SequenceFeature

-class aaanalysis.SequenceFeature[source]
+class aaanalysis.SequenceFeature[source]

Bases: object

Retrieve and create sequence feature components (Part, Split, and Scale).

@@ -191,7 +191,7 @@

aaanalysis.SequenceFeature
-static get_df_parts(df_seq=None, list_parts=None, jmd_n_len=None, jmd_c_len=None, ext_len=None, all_parts=False)[source]
+static get_df_parts(df_seq=None, list_parts=None, jmd_n_len=None, jmd_c_len=None, ext_len=None, all_parts=False)[source]

Create DataFrane with sequence parts.

Parameters:
@@ -230,7 +230,7 @@

aaanalysis.SequenceFeature
-static get_split_kws(n_split_min=1, n_split_max=15, steps_pattern=None, n_min=2, n_max=4, len_max=15, steps_periodicpattern=None, split_types=None)[source]
+static get_split_kws(n_split_min=1, n_split_max=15, steps_pattern=None, n_min=2, n_max=4, len_max=15, steps_periodicpattern=None, split_types=None)[source]

Create dictionary with kwargs for three split types: Segment, Pattern, PeriodicPattern

Parameters:
@@ -277,7 +277,7 @@

aaanalysis.SequenceFeature
-get_features(list_parts=None, split_kws=None, df_scales=None, all_parts=False)[source]
+get_features(list_parts=None, split_kws=None, df_scales=None, all_parts=False)[source]

Create list of all feature ids for given Parts, Splits, and Scales

Parameters:
@@ -299,7 +299,7 @@

aaanalysis.SequenceFeature
-static feat_matrix(features=None, df_parts=None, df_scales=None, accept_gaps=False, n_jobs=None, verbose=False, return_labels=False)[source]
+static feat_matrix(features=None, df_parts=None, df_scales=None, accept_gaps=False, n_jobs=None, verbose=False, return_labels=False)[source]

Create feature matrix for given feature ids and sequence parts.

Parameters:
@@ -324,7 +324,7 @@

aaanalysis.SequenceFeature
-static feat_names(features=None, df_cat=None, tmd_len=20, jmd_c_len=10, jmd_n_len=10, ext_len=0, start=1)[source]
+static feat_names(features=None, df_cat=None, tmd_len=20, jmd_c_len=10, jmd_n_len=10, ext_len=0, start=1)[source]

Convert feature ids (PART-SPLIT-SCALE) into feature names (scale name [positions]).

Parameters:
@@ -361,7 +361,7 @@

aaanalysis.SequenceFeature
-static add_feat_value(df_parts=None, split=None, dict_scale=None, accept_gaps=False)[source]
+static add_feat_value(df_parts=None, split=None, dict_scale=None, accept_gaps=False)[source]

Create feature values for all sequence parts by combining Part, Split, and Scale.

Parameters:
@@ -410,7 +410,7 @@

aaanalysis.SequenceFeature
-static add_dif(df_feat=None, df_seq=None, labels=None, sample_name=<class 'str'>, ref_group=0, accept_gaps=False, jmd_n_len=10, jmd_c_len=10, df_parts=None, df_scales=None)[source]
+static add_dif(df_feat=None, df_seq=None, labels=None, sample_name=<class 'str'>, ref_group=0, accept_gaps=False, jmd_n_len=10, jmd_c_len=10, df_parts=None, df_scales=None)[source]

Add feature value difference between sample and reference group to DataFrame.

Parameters:
@@ -434,7 +434,7 @@

aaanalysis.SequenceFeature
-static add_position(df_feat=None, features=None, start=1, tmd_len=20, jmd_n_len=10, jmd_c_len=10, ext_len=4, part_split=False)[source]
+static add_position(df_feat=None, features=None, start=1, tmd_len=20, jmd_n_len=10, jmd_c_len=10, ext_len=4, part_split=False)[source]

Create list with positions for given feature names

Parameters:
diff --git a/docs/build/html/generated/tutorial1_quick_start.html b/docs/build/html/generated/tutorial1_quick_start.html index 017b0e88..6c23346f 100644 --- a/docs/build/html/generated/tutorial1_quick_start.html +++ b/docs/build/html/generated/tutorial1_quick_start.html @@ -180,9 +180,9 @@

AAclustn_clusters parameters:

from sklearn.cluster import AgglomerativeClustering
 
-aac = aa.AAclust(model=AgglomerativeClustering)
-X = np.array(df_scales)
-scales = aac.fit(X, names=list(df_scales), n_clusters=100)
+aac = aa.AAclust(model_class=AgglomerativeClustering)
+X = np.array(df_scales).T
+scales = aac.fit(X, names=list(df_scales), n_clusters=100).medoid_names_
 df_scales = df_scales[scales]
 
@@ -235,10 +235,10 @@

3. Protein Predictionprint(f"Mean accuracy of {round(np.mean(cv_base), 2)}")

-
Mean accuracy of 0.6
+
Mean accuracy of 0.58
 
-

Creating more features with CPP will take some more time, but improve +

Creating more features with CPP will take a little time, but improve prediction performance:

diff --git a/docs/build/html/searchindex.js b/docs/build/html/searchindex.js index 94d0e30a..168405de 100644 --- a/docs/build/html/searchindex.js +++ b/docs/build/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["api", "generated/aaanalysis.AAclust", "generated/aaanalysis.CPP", "generated/aaanalysis.CPPPlot", "generated/aaanalysis.SequenceFeature", "generated/aaanalysis.dPULearn", "generated/aaanalysis.load_dataset", "generated/aaanalysis.load_scales", "generated/aaanalysis.plot_gcfs", "generated/aaanalysis.plot_get_cdict", "generated/aaanalysis.plot_get_clist", "generated/aaanalysis.plot_get_cmap", "generated/aaanalysis.plot_legend", "generated/aaanalysis.plot_settings", "generated/plotting_prelude", "generated/tutorial1_quick_start", "generated/tutorial2a_data_loader", "generated/tutorial2b_scales_loader", "index", "index/CONTRIBUTING_COPY", "index/badges", "index/citations", "index/introduction", "index/overview", "index/references", "index/tables", "index/usage_principles", "index/usage_principles/aaontology", "index/usage_principles/data_flow_entry_points", "index/usage_principles/feature_identification", "index/usage_principles/pu_learning", "index/usage_principles/xai", "tutorials"], "filenames": ["api.rst", "generated/aaanalysis.AAclust.rst", "generated/aaanalysis.CPP.rst", "generated/aaanalysis.CPPPlot.rst", "generated/aaanalysis.SequenceFeature.rst", "generated/aaanalysis.dPULearn.rst", "generated/aaanalysis.load_dataset.rst", "generated/aaanalysis.load_scales.rst", "generated/aaanalysis.plot_gcfs.rst", "generated/aaanalysis.plot_get_cdict.rst", "generated/aaanalysis.plot_get_clist.rst", "generated/aaanalysis.plot_get_cmap.rst", "generated/aaanalysis.plot_legend.rst", "generated/aaanalysis.plot_settings.rst", "generated/plotting_prelude.rst", "generated/tutorial1_quick_start.rst", "generated/tutorial2a_data_loader.rst", "generated/tutorial2b_scales_loader.rst", "index.rst", "index/CONTRIBUTING_COPY.rst", "index/badges.rst", "index/citations.rst", "index/introduction.rst", "index/overview.rst", "index/references.rst", "index/tables.rst", "index/usage_principles.rst", "index/usage_principles/aaontology.rst", "index/usage_principles/data_flow_entry_points.rst", "index/usage_principles/feature_identification.rst", "index/usage_principles/pu_learning.rst", "index/usage_principles/xai.rst", "tutorials.rst"], "titles": ["API", "aaanalysis.AAclust", "aaanalysis.CPP", "aaanalysis.CPPPlot", "aaanalysis.SequenceFeature", "aaanalysis.dPULearn", "aaanalysis.load_dataset", "aaanalysis.load_scales", "aaanalysis.plot_gcfs", "aaanalysis.plot_get_cdict", "aaanalysis.plot_get_clist", "aaanalysis.plot_get_cmap", "aaanalysis.plot_legend", "aaanalysis.plot_settings", "Plotting Prelude", "Quick Start with AAanalysis", "Data Loading Tutorial", "Scale Loading Tutorial", "Welcome to the AAanalysis documentation!", "Contributing", "<no title>", "<no title>", "Introduction", "<no title>", "References", "Tables", "Usage Principles", "AAontology: Classification of amino acid scales", "Data Flow and Enry Points", "Identifying Physicochemical Signatures using CPP", "Learning from unbalanced and small data", "Explainable AI at Sequence Level", "Tutorials"], "terms": {"thi": [0, 1, 3, 7, 8, 10, 12, 13, 14, 15, 16, 17, 19, 28], "applic": [0, 3, 12], "program": [0, 19], "interfac": [0, 19, 25], "i": [0, 1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 15, 16, 17, 18, 19, 22, 23, 25, 27, 29], "public": [0, 14, 16, 18, 19, 21], "object": [0, 1, 3, 4, 5, 12, 15], "function": [0, 1, 3, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 23], "our": [0, 8, 9, 11, 14, 15, 17, 19, 22], "aaanalysi": [0, 14, 16, 17, 19, 21, 22, 23, 25, 26, 29, 32], "python": [0, 15, 18, 19, 22, 23], "toolkit": [0, 19, 28], "which": [0, 3, 4, 12, 13, 15, 16, 17, 19, 22, 25, 28, 30], "can": [0, 1, 4, 5, 8, 12, 14, 15, 16, 17, 18, 19, 22, 25, 28, 30], "import": [0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 26], "aa": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 25, 26], "you": [0, 14, 17, 18, 19, 21], "access": [0, 1, 6, 15, 17, 25], "all": [0, 1, 2, 3, 4, 6, 7, 13, 14, 15, 17, 19, 25], "method": [0, 1, 2, 3, 4, 5, 15, 24], "via": [0, 14, 19, 24], "alia": [0, 4], "load_dataset": [0, 4, 15, 16, 17, 25], "class": [1, 2, 3, 4, 5, 6, 8, 10, 11, 12, 13, 14, 16, 30], "model_class": 1, "sklearn": [1, 15], "cluster": [1, 15, 18, 22, 23, 24, 25], "_kmean": 1, "kmean": 1, "model_kwarg": 1, "none": [1, 2, 3, 4, 5, 6, 7, 12, 16], "verbos": [1, 2, 3, 4, 5, 15], "fals": [1, 2, 3, 4, 5, 6, 7, 9, 11, 12, 13, 15, 17], "sourc": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 19], "base": [1, 2, 3, 4, 5, 6, 12, 15, 18, 19, 22, 23, 24, 25, 29, 30], "wrapper": [1, 3, 15, 18, 19, 22, 23], "A": [1, 4, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 24], "k": [1, 17, 18, 22, 23, 24], "optim": [1, 2, 3, 10, 14, 18, 19, 22, 23, 24], "select": [1, 2, 3, 6, 7, 15, 16, 17, 18, 19, 22, 23, 24], "redund": [1, 2, 7, 15, 18, 19, 22, 23, 24], "reduc": [1, 5, 7, 18, 22, 23, 24, 25], "set": [1, 2, 3, 4, 5, 7, 8, 12, 13, 14, 15, 16, 18, 19, 22, 23, 24, 25, 28], "numer": [1, 3, 4, 15, 18, 22, 23], "scale": [1, 2, 3, 4, 7, 9, 13, 18, 21, 22, 23, 24, 26, 28, 32], "us": [1, 2, 3, 5, 6, 7, 8, 12, 14, 15, 16, 17, 18, 19, 21, 22, 25, 26, 28, 30], "model": [1, 5, 15, 19, 30], "requir": [1, 19], "pre": [1, 2, 15, 16, 19], "defin": [1, 4, 7, 15, 16, 19, 25, 28], "number": [1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 16, 17, 25], "n_cluster": [1, 15], "mean": [1, 2, 3, 15, 17, 25], "other": [1, 3, 7, 13, 14, 17, 19, 25], "scikit": [1, 19], "learn": [1, 5, 16, 18, 19, 21, 22, 23, 24, 25, 26], "valu": [1, 2, 3, 4, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 22, 25], "util": [1, 13, 14, 16, 18, 19], "pearson": [1, 2], "correl": [1, 2, 25], "repres": [1, 3, 15, 16, 22, 25], "sampl": [1, 2, 3, 4, 5, 16, 25, 30], "medoid": 1, "each": [1, 2, 3, 4, 5, 15, 16, 17, 19], "closest": 1, "center": [1, 15, 25], "result": [1, 2, 19], "see": [1, 3, 19, 22, 25, 28], "breimann23a": [1, 6, 7, 24, 25], "paramet": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 15, 16, 17, 19, 25], "type": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 16, 19, 25], "clustermixin": 1, "instanti": 1, "dure": [1, 5], "fit": [1, 5, 15, 19], "option": [1, 2, 3, 4, 5, 6, 7, 12, 13], "dict": [1, 2, 3, 4, 5, 9, 12], "keyword": [1, 3, 5], "argument": [1, 3, 4, 5, 12], "pass": [1, 3, 5, 19], "bool": [1, 2, 3, 4, 5, 6, 7, 11, 12, 13], "If": [1, 2, 3, 4, 5, 6, 7, 12, 13, 17, 18, 19, 21, 30], "true": [1, 2, 3, 4, 6, 7, 11, 12, 13, 14, 16, 17], "output": [1, 2, 4, 5, 14, 19], "ar": [1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 17, 19, 25, 28, 30, 31], "enabl": [1, 2, 3, 4, 5, 18, 19, 22, 23, 29], "The": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 14, 15, 16, 17, 19, 25, 28, 29], "after": [1, 2, 25], "call": [1, 7, 14, 25], "obtain": [1, 4, 7, 15, 25], "int": [1, 2, 3, 4, 5, 6, 7, 10, 11, 12], "labels_": [1, 5], "label": [1, 2, 3, 4, 5, 6, 12, 14, 15, 16, 19, 25, 30], "order": [1, 19, 25], "x": [1, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15], "arrai": [1, 2, 4, 5, 15], "like": [1, 2, 4, 5, 13, 14, 19, 25], "shape": [1, 2, 3, 4, 5, 12, 25], "n_sampl": [1, 2, 4, 5], "centers_": 1, "averag": [1, 4, 15, 17, 25], "correspond": [1, 12, 16, 19, 25], "n_featur": [1, 2, 3, 4, 5], "center_labels_": 1, "medoids_": 1, "one": [1, 3, 10, 12, 19], "medoid_labels_": 1, "is_medoid_": 1, "indic": [1, 3, 4, 5, 16, 17, 19, 25], "being": [1, 16, 19, 25], "1": [1, 2, 3, 4, 5, 6, 7, 9, 12, 13, 14, 16, 17, 19, 25, 30], "0": [1, 2, 3, 4, 5, 6, 12, 14, 15, 16, 17, 25, 30], "same": [1, 7, 17], "medoid_names_": 1, "name": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 15, 16, 17, 25], "provid": [1, 3, 5, 6, 7, 12, 15, 16, 17, 18, 19, 23, 25, 30], "list": [1, 3, 4, 9, 10, 11, 12, 15, 25], "attribut": 1, "directli": [1, 19], "design": [1, 3, 19, 25, 29], "primarili": [1, 5, 19], "amino": [1, 2, 3, 4, 6, 7, 15, 18, 21, 22, 23, 24, 26, 28, 30], "acid": [1, 2, 3, 4, 6, 7, 15, 18, 21, 22, 23, 24, 26, 28, 30], "ani": [1, 17, 19, 22, 25], "__init__": [1, 2, 3, 4, 5], "on_cent": 1, "min_th": 1, "merge_metr": 1, "euclidean": [1, 5], "appli": [1, 5, 12, 13, 16], "algorithm": [1, 2, 3, 15, 18, 19, 22, 23, 28, 29], "featur": [1, 2, 3, 4, 5, 18, 19, 22, 23, 28, 29, 30], "matrix": [1, 4, 5, 15, 25], "determin": [1, 7], "without": [1, 3, 19, 25], "specif": [1, 16, 19, 25], "It": [1, 13, 15, 16, 22, 25, 28], "partit": [1, 17, 25], "data": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 25, 26, 32], "maxim": 1, "within": [1, 2, 4, 19, 25, 28], "beyond": 1, "threshold": [1, 2], "qualiti": 1, "either": [1, 4, 6, 7, 17, 18], "minimum": [1, 4, 6], "member": 1, "between": [1, 2, 3, 4, 7, 10, 12, 15, 16, 19, 25], "its": [1, 16, 19, 25], "min_cor_al": 1, "min_cor_cent": 1, "respect": [1, 6, 15, 18, 19, 21, 25], "describ": [1, 25], "row": [1, 16, 17], "column": [1, 2, 3, 4, 5, 6, 7, 12, 16, 17, 19], "must": [1, 4, 10, 11, 19], "float": [1, 2, 3, 5, 12, 13], "otherwis": [1, 3, 4, 5, 25], "str": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13], "metric": [1, 5, 19], "similar": [1, 19, 25, 30], "measur": [1, 19, 25], "merg": 1, "No": 1, "perform": [1, 2, 5, 7, 15, 17, 25], "distanc": [1, 5, 25], "manhattan": [1, 5], "cosin": [1, 5], "return": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 16], "instanc": [1, 3, 12], "allow": 1, "direct": [1, 19], "aanalysi": [1, 19], "consist": [1, 13, 19, 22, 25], "three": [1, 4, 16, 25], "main": [1, 25], "step": [1, 2, 3, 4, 6, 7, 19, 22], "estim": 1, "lower": [1, 25], "bound": 1, "refin": [1, 19], "recurs": [1, 24], "chosen": [1, 2, 4, 6, 7, 16], "smaller": [1, 14], "reduct": 1, "pairwise_dist": 1, "were": [1, 7, 17, 25], "runtimewarn": 1, "caught": 1, "bundl": 1, "static": [1, 4], "eval": [1, 2, 5, 19], "evalu": [1, 2, 7, 17, 19, 25], "establish": [1, 19], "quantifi": 1, "bic": 1, "bayesian": 1, "inform": [1, 2, 3, 4, 5, 17, 28], "criterion": 1, "reflect": [1, 19, 25], "good": [1, 19], "while": [1, 16], "account": [1, 19, 25], "rang": 1, "from": [1, 2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 25, 26], "neg": [1, 4, 5, 6, 12, 16, 19, 25, 30], "infin": 1, "posit": [1, 2, 3, 4, 5, 6, 18, 19, 22, 23, 25, 30], "higher": [1, 25], "superior": 1, "ch": [1, 17, 25], "calinski": 1, "harabasz": 1, "index": [1, 6, 17, 18, 19, 24], "ratio": 1, "dispers": 1, "score": [1, 15], "suggest": [1, 19], "better": 1, "sc": 1, "silhouett": 1, "coeffici": 1, "proxim": 1, "point": [1, 3, 8, 12, 25, 26], "neighbor": [1, 25], "li": 1, "closer": 1, "impli": 1, "wa": [1, 22], "modifi": [1, 5, 13], "align": [1, 3, 12, 15, 17, 19], "so": 1, "signifi": 1, "contrari": 1, "convent": [1, 4, 7], "implement": [1, 19], "favor": 1, "calinski_harabasz_scor": 1, "silhouette_scor": 1, "name_clust": 1, "shorten_nam": 1, "assign": [1, 3, 4, 5, 17, 25], "frequenc": [1, 25], "priorit": 1, "alreadi": [1, 30], "contain": [1, 2, 3, 5, 6, 7, 17, 19, 25, 28, 30], "unclassifi": [1, 7, 17, 25], "shorten": 1, "version": [1, 17, 25], "cluster_nam": 1, "renam": 1, "comp_cent": 1, "comput": [1, 2, 3, 4, 15, 19, 24, 25], "given": [1, 3, 4, 6, 10, 11, 12, 15, 17, 19, 25], "center_label": 1, "associ": [1, 25], "comp_medoid": 1, "medoid_label": 1, "comp_correl": 1, "x_ref": 1, "labels_ref": 1, "names_ref": 1, "refer": [1, 2, 4, 6, 15, 19, 25], "compar": [1, 16, 18, 22, 23, 25, 28, 29], "n_samples_ref": 1, "datafram": [1, 2, 3, 4, 5, 6, 7, 15, 19, 28], "pair": 1, "df_corr": 1, "sort": 1, "ascend": 1, "replac": [1, 6], "panda": [1, 2, 3, 4, 5, 6, 7, 15, 19], "corr": 1, "comp_coverag": 1, "percentag": [1, 2, 5, 17], "uniqu": [1, 2, 3, 17, 19], "present": [1, 4, 6], "help": 1, "understand": 1, "coverag": [1, 19], "particular": 1, "subset": [1, 4, 7, 25], "univers": 1, "both": [1, 3, 13, 16], "consid": [1, 7, 19], "onli": [1, 3, 6, 7, 12, 13, 16, 19, 25, 30], "onc": [1, 19], "regardless": 1, "repetit": 1, "should": [1, 2, 3, 4, 5, 19, 30], "superset": 1, "found": [1, 4, 19], "df_scale": [2, 4, 7, 15, 17, 28], "df_cat": [2, 3, 4, 7, 17, 28], "df_part": [2, 4, 15, 28], "split_kw": [2, 4, 15, 28], "accept_gap": [2, 3, 4], "tool": [2, 19, 24], "creat": [2, 3, 4, 5, 13, 14, 15, 19, 28], "filter": [2, 3, 6, 15, 16], "most": [2, 3, 5, 12, 15, 18, 22, 23], "discrimin": [2, 3, 15], "two": [2, 3, 7, 8, 15, 17, 18, 19, 22, 23, 24, 25, 27, 28], "sequenc": [2, 3, 4, 5, 6, 16, 18, 19, 22, 23, 24, 25, 26, 28, 29, 30], "default": [2, 3, 4, 5, 6, 8, 9, 12, 13, 14, 15, 16, 17], "load_categori": [2, 4], "categori": [2, 3, 4, 7, 9, 10, 12, 16, 17], "physicochem": [2, 4, 18, 22, 23, 24, 25, 26, 28], "part": [2, 3, 4, 15, 19, 28], "sequencefeatur": [2, 15], "get_split_kw": [2, 4, 15], "nest": [2, 4], "dictionari": [2, 3, 4, 9, 12], "split_typ": [2, 4, 15], "whether": [2, 3, 4, 11, 12], "accept": [2, 3, 4], "miss": [2, 3, 4], "omit": [2, 3, 4], "print": [2, 3, 4, 15], "progress": [2, 3, 24], "about": [2, 3], "run": [2, 4, 15], "parametr": 2, "n_filter": 2, "100": [2, 6, 15, 16], "tmd_len": [2, 3, 4], "20": [2, 3, 4, 7, 16, 17, 19, 25], "jmd_n_len": [2, 3, 4], "10": [2, 3, 4, 10, 12, 16, 17, 19, 25], "jmd_c_len": [2, 3, 4], "ext_len": [2, 3, 4], "4": [2, 3, 4, 16, 17, 25], "start": [2, 3, 4, 6, 19, 25, 26, 28], "check_cat": 2, "n_pre_filt": 2, "pct_pre_filt": 2, "5": [2, 3, 4, 5, 14, 15, 16, 17, 19, 25], "max_std_test": 2, "2": [2, 3, 4, 5, 8, 10, 12, 14, 16, 17, 19, 25, 30], "max_overlap": 2, "max_cor": 2, "n_process": 2, "pipelin": [2, 19], "creation": 2, "aim": [2, 3, 15, 19], "identifi": [2, 3, 5, 6, 15, 16, 18, 22, 23, 24, 26, 30], "collect": [2, 7], "non": [2, 4, 6, 15, 25], "test": [2, 15, 17], "group": [2, 3, 4, 12, 14, 25], "t": [2, 6, 17, 25], "u": [2, 14, 18, 19], "p": [2, 17, 24], "length": [2, 3, 4, 6, 12, 16, 25], "tmd": [2, 3, 4, 6, 15, 16], "todo": [2, 19], "add": [2, 3, 4, 19], "link": [2, 18, 19, 21, 24], "explan": [2, 3, 19], "first": [2, 3, 4, 7, 14, 19], "n": [2, 3, 4, 6, 7, 15, 16, 17, 19, 24, 25], "terminu": [2, 3, 4, 25], "jmd": [2, 3, 4, 15], "c": [2, 3, 4, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 24, 25], "extend": [2, 3, 4, 19, 25, 30], "termin": [2, 3, 4, 15, 16, 25], "longer": 2, "than": [2, 25], "check": [2, 19], "remain": [2, 17, 19], "maximum": [2, 4, 5, 6, 15], "standard": [2, 30], "deviat": 2, "overlap": 2, "cpu": 2, "multiprocess": 2, "automat": [2, 3, 5, 12, 19], "df_feat": [2, 3, 4, 15, 28], "statist": [2, 3], "n_feature_inform": [2, 3], "follow": [2, 4, 5, 7, 18, 19, 21, 22, 23, 26], "eleven": 2, "includ": [2, 4, 6, 7, 12, 19], "id": [2, 4, 6, 7, 17], "rank": [2, 17], "11": [2, 3, 16, 25], "split": [2, 4, 15, 28], "subcategori": [2, 3, 7, 17], "sub": 2, "scale_nam": [2, 3, 7, 17], "abs_auc": [2, 3], "absolut": [2, 19], "adjust": [2, 3, 12, 13, 14], "auc": 2, "abs_mean_dif": 2, "differ": [2, 3, 4, 10, 16, 17, 28], "std_test": [2, 3], "std_ref": 2, "p_val": 2, "mann_whitnei": 2, "ttest_indep": 2, "p_val_fdr_bh": 2, "benjamini": 2, "hochberg": 2, "fdr": 2, "correct": 2, "gener": [2, 3, 4, 6, 10, 11, 13, 19, 22, 24, 25, 30], "condit": [3, 4], "jmd_m_len": [3, 4], "profil": [3, 18, 22, 23, 29], "y": [3, 8, 9, 10, 11, 12, 13, 14, 15, 17], "val_col": 3, "mean_dif": 3, "val_typ": 3, "count": [3, 16], "normal": [3, 7, 12, 17, 19, 25], "figsiz": 3, "7": [3, 4, 5, 14, 16, 17, 25], "titl": [3, 8, 12, 13, 14, 15], "title_kw": 3, "dict_color": [3, 9, 12, 14], "edge_color": 3, "bar_width": 3, "75": 3, "add_jmd_tmd": 3, "jmd_n_seq": 3, "tmd_seq": 3, "jmd_c_seq": 3, "tmd_color": 3, "mediumspringgreen": 3, "jmd_color": 3, "blue": [3, 15], "tmd_seq_color": 3, "black": [3, 11, 12, 14, 19], "jmd_seq_color": 3, "white": [3, 11, 12], "seq_siz": 3, "tmd_jmd_fontsiz": 3, "xtick_siz": 3, "xtick_width": 3, "xtick_length": 3, "xticks_po": 3, "ytick_siz": 3, "ytick_width": 3, "ytick_length": 3, "ylim": [3, 15], "highlight_tmd_area": 3, "highlight_alpha": 3, "15": [3, 4, 16, 25], "grid": [3, 13, 14], "grid_axi": [3, 13, 14], "add_legend_cat": 3, "legend_kw": 3, "shap_plot": 3, "kwarg": [3, 4, 12], "plot": [3, 8, 9, 10, 11, 12, 13, 16, 18, 19, 25, 32], "avail": [3, 7, 12, 15, 17, 18, 21, 24], "specifi": [3, 4, 5, 9, 11, 15, 19], "check_value_typ": 3, "tupl": [3, 11], "size": [3, 4, 8, 12, 13, 14, 15, 25], "custom": [3, 7, 14, 19], "appear": [3, 25], "map": [3, 4, 11, 12], "color": [3, 8, 9, 10, 11, 12, 13, 14], "edg": [3, 12, 19, 25], "bar": 3, "width": [3, 12], "line": [3, 12, 13, 14, 19], "annot": 3, "font": [3, 8, 12, 13], "tick": [3, 13, 14], "axi": [3, 13, 17], "limit": [3, 19], "highlight": 3, "area": [3, 17, 25], "alpha": 3, "ad": 3, "drawn": 3, "legend": [3, 12, 13, 14], "shap": [3, 8, 11, 15, 19], "shaplei": 3, "addit": [3, 4, 5, 7, 13, 17, 19, 25], "intern": [3, 19, 25], "librari": [3, 13, 19], "ax": [3, 9, 12, 13], "matplotlib": [3, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19], "heatmap": 3, "8": [3, 4, 5, 12, 16, 17, 19, 25], "vmin": 3, "vmax": 3, "grid_on": 3, "cmap": 3, "rdbu_r": 3, "cmap_n_color": 3, "cbar_kw": 3, "facecolor_dark": [3, 11], "add_importance_map": 3, "cbar_pct": 3, "featuremap": 3, "versu": 3, "seaborn": [3, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19], "level": [3, 6, 7, 16, 17, 18, 19, 23, 25, 26, 27], "e": [3, 4, 14, 15, 17, 18, 19, 22, 23, 25, 30], "g": [3, 4, 17, 18, 19, 22, 23, 25, 30], "protein": [3, 4, 6, 17, 18, 19, 22, 23, 24, 28, 29, 30], "shown": 3, "feat_impact": 3, "displai": [3, 13], "sum": [3, 17, 25], "std": 3, "aggreg": 3, "positions_onli": 3, "further": [3, 17, 19, 25], "across": [3, 13, 17, 19], "recommend": [3, 5, 7, 19], "when": [3, 5, 12, 19, 25], "emphas": [3, 19], "fewer": 3, "value_typ": 3, "height": 3, "figur": 3, "inch": 3, "pyplot": [3, 8, 9, 10, 11, 12, 13, 14, 15, 16], "anchor": [3, 12, 25], "colormap": 3, "infer": [3, 19], "seismic": 3, "space": [3, 5, 12, 19], "impact": 3, "discret": 3, "diverg": 3, "sequenti": 3, "classifi": 3, "kei": [3, 9, 12, 19, 25], "colorbar": 3, "under": [3, 7, 19], "depicet": 3, "depict": 3, "jmd_n": [3, 4, 6, 16], "jmd_c": [3, 4, 6, 16], "set_xticklabel": 3, "widht": 3, "tick_param": 3, "classif": [3, 6, 7, 15, 16, 17, 18, 23, 25, 26, 30], "pcolormesh": 3, "effect": [3, 19, 25, 30], "document": [3, 25], "more": [3, 12, 13, 15, 19], "detail": [3, 6, 7, 17, 18, 19, 21], "cpp": [3, 4, 8, 11, 18, 21, 22, 23, 26, 28], "code": [3, 8, 9, 10, 11, 12, 13, 14], "update_seq_s": 3, "retriev": [4, 15], "compon": [4, 5, 7, 17, 25], "continu": [4, 11, 15, 19], "domain": [4, 6, 15, 16, 25], "transmembran": [4, 25], "membran": [4, 25], "principl": [4, 18], "distinct": [4, 18, 19, 22, 23, 25], "segment": [4, 15, 28], "pattern": [4, 12, 15], "properti": [4, 12, 19, 25], "express": 4, "realiz": 4, "For": [4, 6, 16, 19, 30], "over": [4, 15], "valid": [4, 19], "tmd_e": 4, "tmd_n": 4, "tmd_c": 4, "ext_c": 4, "ext_n": 4, "tmd_jmd": [4, 15], "jmd_n_tmd_n": 4, "tmd_c_jmd_c": 4, "ext_n_tmd_n": 4, "tmd_c_ext_c": 4, "get_df_part": [4, 15], "df_seq": [4, 5, 6, 15, 16, 28], "list_part": [4, 15], "all_part": 4, "datafran": 4, "compris": [4, 12, 17], "tmd_start": [4, 6, 16], "tmd_stop": [4, 6, 16], "string": 4, "len": [4, 9, 16], "lenght": 4, "resp": [4, 25], "extra": [4, 14, 25], "possibl": [4, 16, 25, 30], "get": [4, 8, 12, 14, 26], "sf": [4, 15], "dom_gsec": [4, 15, 16, 25], "n_split_min": 4, "n_split_max": [4, 15], "steps_pattern": 4, "n_min": 4, "n_max": 4, "len_max": 4, "steps_periodicpattern": 4, "periodicpattern": 4, "greater": 4, "greatest": 4, "whole": [4, 6, 17], "specfii": 4, "smallest": [4, 25], "integ": 4, "3": [4, 5, 10, 11, 12, 16, 17, 19, 25], "6": [4, 15, 16, 17, 25], "vari": [4, 16], "paramt": 4, "argumetn": 4, "get_featur": 4, "load_scal": [4, 15, 17, 18, 23, 25], "combin": [4, 15, 19, 25], "form": [4, 25], "feat_matrix": [4, 15], "n_job": [4, 15], "return_label": 4, "pd": [4, 5, 15, 19], "seri": 4, "job": 4, "parallel": [4, 25], "spars": 4, "feat_nam": 4, "convert": 4, "depend": [4, 25], "last": 4, "step1": 4, "step2": 4, "add_feat_valu": 4, "dict_scal": 4, "letter": 4, "feature_valu": 4, "n_part": 4, "ha": [4, 19, 25], "where": [4, 5, 13, 25], "structur": [4, 24, 25], "th": [4, 7, 17], "n_split": 4, "p1": 4, "p2": 4, "pn": 4, "end": [4, 19, 25], "odd": [4, 16], "even": 4, "give": 4, "add_dif": 4, "sample_nam": 4, "ref_group": 4, "add_posit": 4, "part_split": 4, "feat_posit": 4, "total": [4, 5, 17, 19, 25], "n_compon": 5, "pca_kwarg": 5, "determinist": [5, 18, 22, 23], "unlabel": [5, 18, 22, 23, 25, 30], "offer": [5, 16, 19], "approach": [5, 15, 16, 19, 30], "pu": [5, 18, 22, 23, 25], "emploi": 5, "princip": [5, 7, 17, 25], "analysi": [5, 7, 15, 17, 18, 19, 22, 23, 25], "pca": [5, 17], "dimension": [5, 24], "pc": [5, 7, 25], "iter": 5, "reliabl": [5, 16, 19], "These": [5, 7, 14, 15, 17, 19, 30], "those": [5, 25], "distant": 5, "altern": [5, 30], "also": [5, 16, 17, 19, 25], "80": 5, "cover": 5, "varianc": 5, "identif": [5, 24], "datapoint": 5, "inspir": [5, 19], "techniqu": [5, 30], "an": [5, 6, 7, 12, 14, 15, 16, 17, 18, 19, 21, 24, 25], "theoret": [5, 25], "high": [5, 24, 25], "n_neg": 5, "label_po": 5, "name_neg": 5, "rel_neg": 5, "col_class": 5, "newli": 5, "updat": [5, 19], "new": [5, 19], "store": 5, "Will": 5, "initi": [5, 25], "small": [5, 15, 16, 18, 19, 22, 23, 26, 31], "datafor": 5, "conta": 5, "po": 5, "unl": 5, "numpi": [5, 15, 19], "np": [5, 15], "atgc": 5, "gcta": 5, "actg": 5, "tacg": 5, "mode": 5, "dpul": 5, "info": 6, "random": [6, 16, 25], "non_canonical_aa": 6, "remov": [6, 13, 14], "min_len": [6, 16], "max_len": [6, 16], "aa_window_s": [6, 16], "9": [6, 10, 14, 15, 16, 17, 19, 25], "load": [6, 7, 18, 19, 23, 32], "benchmark": [6, 15, 17, 18, 23], "dataset": [6, 7, 15, 17, 18, 19, 22, 23, 30, 31], "categor": [6, 14, 16], "dom": [6, 16, 25], "seq": [6, 16, 25], "By": 6, "overview": [6, 7, 16, 19], "tabl": [6, 7, 16, 19], "depth": [6, 7, 17, 18, 23], "per": [6, 16, 25], "randomli": [6, 16], "liter": 6, "keep": 6, "gap": 6, "handl": [6, 12], "canon": [6, 17], "don": 6, "symbol": 6, "disabl": [6, 17], "window": [6, 25], "aa_": 6, "df_info": [6, 16], "entri": [6, 16, 17], "uniprot": 6, "binari": [6, 15, 16, 30], "stop": 6, "seq_amylo": [6, 16, 17, 25], "guid": [6, 7], "tutori": [6, 7, 15, 18, 19, 22], "just_aaindex": [7, 17], "unclassified_out": 7, "top60_n": [7, 17], "aaontologi": [7, 15, 18, 21, 23, 24, 26], "scales_raw": [7, 17, 25], "encompass": [7, 25], "aaindex": [7, 15, 17, 24], "kawashima08": [7, 24, 25], "along": [7, 15], "min": [7, 17, 25], "max": [7, 17, 25], "organ": [7, 19], "scales_cat": [7, 17, 25], "breimann23b": [7, 18, 21, 24, 25], "compress": [7, 17, 25], "scales_pc": [7, 17, 25], "aaclust": [7, 17, 18, 21, 22, 23, 24, 25], "top": [7, 14, 25], "60": [7, 17, 25], "top60": [7, 17, 25], "individu": [7, 19], "accompani": 7, "top60_ev": [7, 17, 25], "normliz": 7, "raw": [7, 17, 25], "best": [7, 17], "Or": [7, 16], "relev": 7, "exclus": 7, "suffix": [7, 16, 19], "scale_id": [7, 17], "deriv": 7, "descript": [7, 17, 19, 25], "scale_descript": [7, 17], "current": [8, 12], "plot_set": [8, 9, 10, 11, 12, 14, 15, 16], "here": [8, 16, 19, 25], "plt": [8, 9, 10, 11, 12, 13, 14, 15, 16], "sn": [8, 9, 10, 11, 12, 13, 14, 15, 16], "b": [8, 10, 11, 12, 13, 14, 25], "23": [8, 10, 11, 12, 13, 14, 25], "27": [8, 12, 13, 14], "43": [8, 12, 13, 14], "plot_get_clist": [8, 12, 13, 14], "barplot": [8, 9, 10, 11, 12, 13, 14, 15], "palett": [8, 9, 10, 11, 12, 13, 14, 15], "despin": [8, 9, 12, 13, 14, 15, 16], "bigger": 8, "tight_layout": [8, 9, 12, 13, 14], "show": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17], "png": [8, 9, 10, 11, 12, 13], "hire": [8, 9, 10, 11, 12, 13], "pdf": [8, 9, 10, 11, 12, 13], "prelud": [8, 9, 10, 11, 12, 13, 32], "dict_cat": 9, "weight_bold": [9, 13], "xaxi": 9, "set_vis": 9, "n_color": [10, 11, 14], "fuction": 10, "eight": 10, "colorl": 10, "appeal": [10, 14], "visual": [10, 13, 14, 19], "33": [10, 11], "notebook": 10, "color_palett": [10, 11], "101": 11, "shp": 11, "least": [11, 12, 19], "central": [11, 29], "rgb": 11, "14": [11, 14, 25], "light_palett": 11, "lighter": 11, "packag": [11, 19], "list_cat": 12, "loc": [12, 17], "upper": 12, "left": [12, 25], "loc_out": 12, "ncol": [12, 14], "labelspac": 12, "columnspac": 12, "handletextpad": 12, "handlelength": 12, "fontsiz": [12, 14], "fontsize_titl": 12, "weight": [12, 24, 25], "fontsize_weight": 12, "marker": 12, "marker_s": 12, "lw": 12, "linestyl": 12, "edgecolor": 12, "hatch": [12, 14], "hatchcolor": 12, "title_align_left": 12, "independntli": 12, "customiz": 12, "flexbili": 12, "convini": 12, "func": 12, "attach": 12, "item": 12, "locat": [12, 25], "25": 12, "thei": [12, 15, 16, 19], "union": 12, "coordin": 12, "": [12, 16, 17, 19, 24, 25], "vertic": 12, "horizont": 12, "bewtween": 12, "text": [12, 13], "visiabl": 12, "corner": 12, "round": [12, 15], "style": [12, 13], "Not": 12, "fill": [12, 19], "furhter": 12, "word": 12, "line2d": 12, "core": 12, "gca": 12, "font_scal": [13, 16], "arial": 13, "adjust_only_font": 13, "adjust_further_el": 13, "no_tick": 13, "short_tick": 13, "no_ticks_x": [13, 14], "short_ticks_x": 13, "no_ticks_i": 13, "short_ticks_i": [13, 14], "show_opt": 13, "configur": 13, "global": 13, "embed": 13, "vector": [13, 25], "format": [13, 25], "svg": 13, "ensur": [13, 16, 19], "compat": 13, "edit": 13, "variou": [13, 15, 19, 25, 28], "viewer": 13, "softwar": [13, 19], "factor": [13, 25], "element": [13, 14], "set_context": 13, "common": [13, 19], "verdana": 13, "helvetica": 13, "dejavu": 13, "san": 13, "bold": 13, "leav": [13, 19], "unchang": 13, "make": [13, 14, 15, 16, 19], "layout": 13, "errorbar": 13, "choos": 13, "mark": 13, "short": 13, "ignor": [13, 16, 19], "runtim": 13, "polt": 13, "rcparam": 13, "manag": 13, "some": [14, 15, 25], "readi": [14, 16], "view": [14, 19, 30], "let": 14, "right": [14, 25], "spine": 14, "look": 14, "just": 14, "easili": [14, 15, 16, 19], "comparison": [14, 15], "d": [14, 17], "increas": [14, 25], "match": [14, 24], "independ": 14, "plot_gcf": [14, 15], "plot_set_legend": 14, "dive": 15, "power": 15, "capabl": [15, 25], "framework": [15, 18, 22, 23], "dedic": 15, "free": [15, 17, 25], "In": [15, 16, 19, 30], "gamma": [15, 25], "secretas": [15, 24, 25], "substrat": [15, 24, 25], "exampl": [15, 16, 19, 22, 30], "we": [15, 16, 19], "ll": 15, "focu": [15, 19], "extract": 15, "interpret": [15, 18, 19, 21, 22, 23, 24, 25, 29], "how": 15, "har": 15, "task": [15, 19, 30], "essenti": [15, 16, 19], "randomforest": 15, "With": 15, "have": [15, 16, 17, 19, 25, 30], "\u03b3": [15, 24], "hand": [15, 25], "effortlessli": 15, "furthermor": 15, "predominantli": 15, "hierarch": 15, "known": 15, "your": [15, 18, 19, 21], "fingertip": 15, "now": 15, "50": [15, 16], "centerpiec": 15, "support": [15, 19, 25], "sinc": 15, "problem": 15, "machin": [15, 18, 19, 21, 24, 30], "lightweight": 15, "agglom": 15, "close": [15, 19], "agglomerativeclust": 15, "aac": 15, "integr": [15, 19, 24], "target": [15, 19], "middl": [15, 25], "adjac": [15, 25], "region": [15, 24, 25], "discontinu": 15, "togeth": [15, 28], "input": [15, 19, 28], "characterist": [15, 25], "As": 15, "baselin": 15, "entir": [15, 19], "ensembl": 15, "randomforestclassifi": 15, "model_select": 15, "cross_val_scor": 15, "rf": 15, "cv_base": 15, "accuraci": [15, 17, 24], "f": [15, 17], "take": 15, "time": 15, "improv": [15, 19, 24], "around": 15, "000": [15, 17], "cv": 15, "tab": 15, "red": 15, "ylabel": 15, "iloc": 16, "head": [16, 17], "13": [16, 25], "predictor": [16, 25], "aa_caspase3": [16, 25], "233": [16, 17, 25], "185605": [16, 25], "705": [16, 17, 25], "184900": [16, 25], "prosper": [16, 24, 25], "aa_furin": [16, 25], "71": [16, 25], "59003": [16, 25], "163": [16, 17, 25], "58840": [16, 25], "aa_ldr": [16, 25], "342": [16, 25], "118248": [16, 25], "35469": [16, 25], "82779": [16, 25], "idp": [16, 24, 25], "seq2seq": [16, 24, 25], "aa_mmp2": [16, 25], "573": [16, 25], "312976": [16, 25], "2416": [16, 25], "310560": [16, 25], "aa_rnabind": [16, 25], "221": [16, 17, 25], "55001": [16, 25], "6492": [16, 25], "48509": [16, 25], "gmksvm": [16, 25], "ru": [16, 25], "aa_sa": [16, 25], "101082": [16, 25], "84523": [16, 25], "1414": [16, 25], "8484": [16, 25], "511": [16, 25], "903": [16, 17, 25], "rerf": [16, 24, 25], "pred": [16, 24, 25], "seq_capsid": [16, 17, 25], "7935": [16, 25], "3364680": [16, 25], "3864": [16, 25], "4071": [16, 25], "viralpro": [16, 24, 25], "seq_disulfid": [16, 17, 25], "2547": [16, 25], "614470": [16, 25], "897": [16, 25], "1650": [16, 25], "dipro": [16, 25], "seq_loc": [16, 17, 25], "1835": [16, 25], "732398": [16, 25], "1045": [16, 25], "790": [16, 17, 25], "nan": [16, 25], "seq_solubl": [16, 17, 25], "17408": [16, 25], "4432269": [16, 25], "8704": [16, 25], "solpro": [16, 24, 25], "seq_tail": [16, 17, 25], "6668": [16, 25], "2671690": [16, 25], "2574": [16, 25], "4094": [16, 25], "12": [16, 25], "126": [16, 25], "92964": [16, 25], "63": [16, 25], "prefix": 16, "exemplifi": 16, "df_seq1": 16, "df_seq2": 16, "df_seq3": 16, "capsid_1": 16, "mvthnvkinkhvtrrsyssakevleippltevqtasykwfmdkgik": 16, "capsid_2": 16, "mkkrqkkmtlsnftdtsfqdfvsaeqvddksamalinraedfkagq": 16, "balanc": 16, "200": [16, 17], "value_count": 16, "dtype": 16, "int64": 16, "distribut": 16, "warn": 16, "simplefilt": 16, "action": 16, "futurewarn": 16, "list_seq_len": 16, "histplot": 16, "binwidth": 16, "xlim": 16, "1500": 16, "800": [16, 17], "residu": [16, 17, 24, 25], "seen": 16, "caspase3_1": 16, "mslfdlfrgffgfpgprshrdpffggmtrdedddeeeeeeggswgr": 16, "caspase3_2": 16, "mevtgdagvpesgeirtlkpcllrrnysreqhgvaascledlrska": 16, "caspase3_3": 16, "mrarsgargalllalllcwdptpslagidsggqalpdsfpsapaeq": 16, "caspase3_4": 16, "mdakarncllqhrealekdiktsyimdhmisdgfltiseeekvrn": 16, "conveni": 16, "flank": 16, "side": [16, 17, 25], "equal": 16, "popular": [16, 30], "caspase3_1_pos4": 16, "mslfdlfrg": 16, "caspase3_1_pos5": 16, "slfdlfrgf": 16, "caspase3_1_pos6": 16, "lfdlfrgff": 16, "caspase3_1_pos7": 16, "fdlfrgffg": 16, "21": [16, 25], "caspase3_55_pos170": 16, "kkrkleeeedgklkkpknkdk": 16, "caspase3_29_pos185": 16, "cphhercsdsdglappqhlir": 16, "caspase3_64_pos431": 16, "dnplnwpdekdssfyrnfgst": 16, "caspase3_93_pos455": 16, "fvknmnrdstfivnktitaev": 16, "caspase3_38_pos129": 16, "ssfdldydfqrdyydrmysyp": 16, "caspase3_8_pos33": 16, "rppqlrpgaptslqtepqgnp": 16, "typic": [16, 22, 25], "But": 16, "mani": 16, "face": 16, "challeng": [16, 19], "might": [16, 25], "unbalanc": [16, 18, 19, 22, 23, 26, 31], "lack": 16, "clear": [16, 19], "scenario": 16, "denot": [16, 25], "_pu": [16, 25], "dom_gsec_pu": [16, 25], "p05067": 16, "mlpglallllaawtaralevptdgnagllaepqiamfcgrlnmhmn": 16, "701": [16, 17], "723": [16, 17], "faedvgsnkg": 16, "aiiglmvggvviatvivitlvml": 16, "kkkqytsihh": 16, "p14925": 16, "magrarsgllllllgllalqssclafrsplsvfkrfkettrsfsn": 16, "868": [16, 17], "890": 16, "klstepgsgv": 16, "svvlittllvipvlvllaivmfi": 16, "rwkksrafgd": 16, "p70180": 16, "mrslllftfsacvllarvllaggassgagdtrpgsrrrarealaaq": 16, "477": 16, "499": 16, "pckssgglee": 16, "savtgivvgallgagllmafyff": 16, "rkkyriti": 16, "q03157": 16, "mgptspaargqgrrwrppplplllplsllllraqlavgnlavgsp": 16, "585": [16, 17], "607": [16, 17], "apsgtgvsr": 16, "alsgllimgagggslivlslll": 16, "rkkkpygti": 16, "q06481": 16, "maatgtaaaaatgrllllllvgltapalalagyiealaanagtgfa": 16, "694": [16, 17, 25], "716": [16, 17], "lredfslsss": 16, "aligllviavaiatvivislvml": 16, "rkrqygtish": 16, "121": 16, "p36941": 16, "mllpwatsapglawgplvlglfgllaasqpqavppyasenqtcrdq": 16, "226": [16, 17], "248": [16, 17], "plppemsgtm": 16, "lmlavllplafflllatvfsciw": 16, "kshpslcrkl": 16, "122": 16, "p25446": 16, "mlwiwavlplvlagsqlrvhtqgtnsiseslklrrrvretdkncs": 16, "170": [16, 17], "187": 16, "ncrkqsprnr": 16, "lwlltilvlliplvfiyr": 16, "kyrkrkcwkr": 16, "123": 16, "q9p2j2": 16, "mvwclglavlslvisqgadgrgkpevvsvvgragesvvlgcdllpp": 16, "738": [16, 17], "760": [16, 17], "pgllpqpvla": 16, "gvvggvcflgvavlvsilagcl": 16, "nrrraarrrr": 16, "124": 16, "q96j42": 16, "mvpaagrrpprvmrllgwwqvllwvlglpvrgvevaeesgrlwse": 16, "324": [16, 17], "lpstliksvd": 16, "wllvfslfflisfimyati": 16, "rtesirwlip": 16, "125": 16, "p0dpa2": 16, "mrvggafhlllvclspallsavringdgqevlylaegdnvrlgcpi": 16, "265": 16, "287": 16, "kvsdsrrigv": 16, "iigivlgsllalgclavgiwglv": 16, "ccccggsgag": 16, "df_seq_pu": 16, "689": [16, 17], "p60852": 16, "maggsattwgypvallllvatlglgrwlqpdpglpglrhsydcgik": 16, "602": [16, 17], "624": [16, 17], "dsngnsslrp": 16, "llwavlllpavalvlgfgvfvgl": 16, "sqtwaqklw": 16, "690": [16, 17], "p20239": 16, "marwqrkasvsspcgrsiyrflsllftlvtsvnsvslpqsenpafp": 16, "684": [16, 17], "703": [16, 17], "iiakdiaskt": 16, "lgavaalvgsavilgficyl": 16, "ykkrtirfnh": 16, "691": [16, 17], "p21754": 16, "melsyrlficlllwgstelcypqplwllqggashpetsvqpvlvec": 16, "387": [16, 17], "409": 16, "eqwalpsdt": 16, "vvllgvglavvvsltltavilvl": 16, "trrcrtashp": 16, "692": [16, 17], "q12836": 16, "mwllrcvllcvslslavsgqhkpeapdyssvlhcgpwsfqfavnln": 16, "506": [16, 17], "528": 16, "eklrvpvdsk": 16, "vlwvaglsgtlilgallvsylav": 16, "kkqkscpdqm": 16, "693": [16, 17], "q8tcw7": 16, "meqiwllllltirvlpgsaqfngyncdanlhsrfpaerdisvycgv": 16, "374": 16, "396": [16, 17], "pfqlnaitsa": 16, "lisgmvilgvtsfslllcslal": 16, "hrkgptslvl": 16, "six": 17, "origin": 17, "df_raw": 17, "df_pc": 17, "andn920101": 17, "argp820101": 17, "argp820102": 17, "argp820103": 17, "begf750101": 17, "begf750102": 17, "begf750103": 17, "bhar880101": 17, "bigc670101": 17, "biov880101": 17, "koeh090103": 17, "koeh090104": 17, "koeh090105": 17, "koeh090106": 17, "koeh090107": 17, "koeh090108": 17, "koeh090109": 17, "koeh090110": 17, "koeh090111": 17, "koeh090112": 17, "494": 17, "230": 17, "355": 17, "504": 17, "512": 17, "249": 17, "164": 17, "476": 17, "194": 17, "300": 17, "551": 17, "222": 17, "308": 17, "273": 17, "140": 17, "522": 17, "345": 17, "864": 17, "404": 17, "579": 17, "783": 17, "205": 17, "323": 17, "936": 17, "279": 17, "174": 17, "449": 17, "346": 17, "285": 17, "416": 17, "867": 17, "191": 17, "583": 17, "889": 17, "720": 17, "556": 17, "875": 17, "919": 17, "796": 17, "440": 17, "420": 17, "177": 17, "019": 17, "032": 17, "713": 17, "267": 17, "811": 17, "488": 17, "106": 17, "542": 17, "732": 17, "593": 17, "718": 17, "857": 17, "853": 17, "913": 17, "681": 17, "877": 17, "762": 17, "601": 17, "670": 17, "574": 17, "076": 17, "049": 17, "189": 17, "148": 17, "182": 17, "029": 17, "186": 17, "017": 17, "025": 17, "026": 17, "138": 17, "309": 17, "388": 17, "544": 17, "608": 17, "538": 17, "571": 17, "481": 17, "112": 17, "h": 17, "840": 17, "082": 17, "053": 17, "651": 17, "633": 17, "561": 17, "455": 17, "856": 17, "402": 17, "370": 17, "500": 17, "545": 17, "618": 17, "726": 17, "838": 17, "543": 17, "671": 17, "663": 17, "885": 17, "246": 17, "074": 17, "167": 17, "091": 17, "051": 17, "398": 17, "276": 17, "434": 17, "003": 17, "004": 17, "687": 17, "737": 17, "933": 17, "873": 17, "779": 17, "734": 17, "405": 17, "l": 17, "272": 17, "577": 17, "989": 17, "281": 17, "078": 17, "118": 17, "333": 17, "259": 17, "m": 17, "704": 17, "445": 17, "824": 17, "450": 17, "620": 17, "803": 17, "289": 17, "132": 17, "185": 17, "192": 17, "180": [17, 25], "419": 17, "224": [17, 25], "988": 17, "023": 17, "057": 17, "046": 17, "675": 17, "203": 17, "552": 17, "645": 17, "519": 17, "756": 17, "753": 17, "706": 17, "599": 17, "587": 17, "293": 17, "605": 17, "736": 17, "223": 17, "220": 17, "859": 17, "376": 17, "367": 17, "322": 17, "678": 17, "707": 17, "444": 17, "662": 17, "570": 17, "594": 17, "q": 17, "211": 17, "131": 17, "395": 17, "795": 17, "539": 17, "206": 17, "676": 17, "733": 17, "628": 17, "483": 17, "r": [17, 25], "531": 17, "047": 17, "110": 17, "489": 17, "940": 17, "735": 17, "215": 17, "852": 17, "883": 17, "743": 17, "362": 17, "679": 17, "238": 17, "851": 17, "188": 17, "399": 17, "589": 17, "655": 17, "590": 17, "382": 17, "384": 17, "379": 17, "598": 17, "352": 17, "312": 17, "366": 17, "578": 17, "407": 17, "364": 17, "331": 17, "250": 17, "514": 17, "v": [17, 25], "498": 17, "809": 17, "365": 17, "492": 17, "077": 17, "033": 17, "111": [17, 25], "156": 17, "154": 17, "496": 17, "w": 17, "926": 17, "040": 17, "146": 17, "600": 17, "400": 17, "104": 17, "316": 17, "244": 17, "802": 17, "709": 17, "107": 17, "502": 17, "806": 17, "588": 17, "286": 17, "644": 17, "474": 17, "410": 17, "429": 17, "413": 17, "235": 17, "336": 17, "586": [17, 25], "term": [17, 25], "lins030110": 17, "asa": [17, 25], "volum": [17, 25], "surfac": [17, 25], "fold": [17, 25], "coil": [17, 25], "turn": [17, 25], "median": 17, "resi": 17, "lins030113": 17, "janj780101": 17, "janin": [17, 25], "et": [17, 24, 25], "al": [17, 24, 25], "janj780103": 17, "expos": [17, 19, 25], "lins030104": 17, "lins030107": 17, "win3": 17, "choc760102": 17, "prot": 17, "lins030116": 17, "\u03b2": [17, 25], "strand": [17, 25], "lins030119": 17, "lins030103": 17, "hydrophil": [17, 25], "resid": 17, "stem": 17, "top60_id": 17, "acc": 17, "presenc": [17, 25], "absenc": [17, 25], "df_top60": 17, "aac01": 17, "aac02": 17, "aac03": 17, "aac04": 17, "aac05": 17, "aac06": 17, "aac07": 17, "aac08": 17, "aac09": 17, "aac10": 17, "df_eval": 17, "overal": 17, "aa5_caspase3": 17, "aa5_furin": 17, "aa5_ldr": 17, "aa5_mmp2": 17, "aa9_ldr": 17, "aa9_mmp2": 17, "aa9_rnabind": 17, "aa9_sa": 17, "aa13_caspase3": 17, "aa13_furin": 17, "aa13_ldr": 17, "aa13_mmp2": 17, "aa13_rnabind": 17, "aa13_sa": 17, "761": 17, "827": 17, "746": 17, "646": 17, "884": 17, "862": 17, "901": 17, "612": 17, "680": 17, "659": 17, "664": 17, "918": 17, "652": 17, "615": 17, "747": 17, "830": 17, "742": 17, "653": 17, "886": 17, "855": 17, "907": 17, "688": 17, "642": 17, "657": 17, "792": 17, "916": 17, "656": 17, "741": 17, "829": 17, "648": 17, "904": 17, "685": 17, "636": 17, "710": 17, "791": 17, "914": 17, "695": 17, "613": 17, "828": 17, "731": 17, "654": 17, "906": 17, "686": 17, "640": 17, "714": 17, "915": 17, "610": 17, "739": 17, "752": 17, "888": 17, "658": 17, "682": 17, "649": 17, "665": 17, "789": 17, "611": 17, "833": 17, "650": 17, "882": 17, "858": 17, "606": 17, "638": 17, "711": 17, "661": 17, "831": 17, "603": 17, "669": 17, "787": 17, "826": 17, "647": 17, "905": 17, "614": 17, "750": 17, "748": 17, "860": 17, "908": 17, "632": 17, "aac11": 17, "749": 17, "832": 17, "751": 17, "781": 17, "683": 17, "aac12": 17, "708": 17, "666": 17, "785": 17, "917": 17, "aac13": 17, "744": 17, "634": 17, "aac14": 17, "902": 17, "673": 17, "794": 17, "604": 17, "aac15": 17, "617": 17, "660": 17, "aac16": 17, "755": 17, "635": 17, "702": 17, "aac17": 17, "740": 17, "835": 17, "793": 17, "609": 17, "aac18": 17, "757": 17, "730": 17, "643": 17, "881": 17, "899": 17, "912": 17, "aac19": 17, "764": 17, "745": 17, "887": 17, "909": 17, "aac20": 17, "677": 17, "aac21": 17, "637": 17, "aac22": 17, "823": 17, "880": 17, "700": 17, "788": 17, "aac23": 17, "629": 17, "aac24": 17, "641": 17, "aac25": 17, "639": 17, "879": 17, "aac26": 17, "698": 17, "aac27": 17, "854": 17, "aac28": 17, "821": 17, "898": 17, "aac29": 17, "763": 17, "900": 17, "aac30": 17, "911": 17, "616": 17, "aac31": 17, "727": 17, "631": 17, "784": 17, "aac32": 17, "aac33": 17, "817": 17, "922": 17, "aac34": 17, "729": 17, "aac35": 17, "758": 17, "822": 17, "aac36": 17, "759": 17, "874": 17, "aac37": 17, "596": 17, "aac38": 17, "766": 17, "921": 17, "aac39": 17, "786": 17, "aac40": 17, "819": 17, "870": 17, "775": 17, "910": 17, "aac41": 17, "896": 17, "aac42": 17, "861": 17, "895": 17, "799": 17, "674": 17, "aac43": 17, "767": 17, "815": 17, "871": 17, "848": 17, "782": 17, "625": 17, "aac44": 17, "825": 17, "621": 17, "696": 17, "780": 17, "923": 17, "aac45": 17, "844": 17, "893": 17, "672": 17, "774": 17, "aac46": 17, "812": 17, "626": 17, "872": 17, "843": 17, "667": 17, "623": 17, "aac47": 17, "717": 17, "aac48": 17, "771": 17, "891": 17, "776": 17, "619": 17, "aac49": 17, "807": 17, "630": 17, "850": 17, "892": 17, "aac50": 17, "728": 17, "773": 17, "aac51": 17, "768": 17, "865": 17, "836": 17, "894": 17, "668": 17, "697": 17, "aac52": 17, "814": 17, "aac53": 17, "765": 17, "798": 17, "aac54": 17, "699": 17, "770": 17, "aac55": 17, "769": 17, "580": 17, "595": 17, "aac56": 17, "aac57": 17, "aac58": 17, "715": 17, "568": 17, "aac59": 17, "725": 17, "797": 17, "592": 17, "562": 17, "aac60": 17, "563": 17, "772": 17, "529": 17, "813": 17, "546": 17, "24": [17, 25], "df_cat_1": 17, "df_raw_1": 17, "df_scales_1": 17, "selected_scal": 17, "tolist": 17, "df_aac1": 17, "buna790103": 17, "bura740102": 17, "cham820102": 17, "cham830102": 17, "cham830103": 17, "cham830105": 17, "chop780101": 17, "chop780204": 17, "chop780206": 17, "kars160110": 17, "kars160112": 17, "kars160118": 17, "kars160119": 17, "kars160120": 17, "kars160122": 17, "lins030105": 17, "lins030109": 17, "264": 17, "262": 17, "425": 17, "298": 17, "863": 17, "952": 17, "149": 17, "947": 17, "442": 17, "256": 17, "557": 17, "213": 17, "397": 17, "473": 17, "566": 17, "247": 17, "311": 17, "152": 17, "354": 17, "462": 17, "119": 17, "085": 17, "208": 17, "139": 17, "169": 17, "133": 17, "240": 17, "470": 17, "160": 17, "393": 17, "313": 17, "145": 17, "134": 17, "424": 17, "115": 17, "044": 17, "195": 17, "495": 17, "554": 17, "433": 17, "458": 17, "114": 17, "463": 17, "070": 17, "421": 17, "218": 17, "553": 17, "067": 17, "021": 17, "526": 17, "135": 17, "480": 17, "043": 17, "087": 17, "532": 17, "335": 17, "963": 17, "317": 17, "319": 17, "381": 17, "198": 17, "468": 17, "390": 17, "339": 17, "282": 17, "515": 17, "486": 17, "275": 17, "257": [17, 19], "350": 17, "150": [17, 19], "534": 17, "178": 17, "565": 17, "550": 17, "320": 17, "327": 17, "326": 17, "369": 17, "028": 17, "093": 17, "537": 17, "540": 17, "231": 17, "002": 17, "372": 17, "457": 17, "120": 17, "209": 17, "081": 17, "467": 17, "183": 17, "exclud": 17, "well": [17, 19], "subordin": 17, "want": 17, "unclassified_in": 17, "guyh850104": 17, "energi": [17, 25], "appar": 17, "calcul": 17, "ja": 17, "guyh850105": 17, "racs770103": 17, "chain": [17, 25], "orient": 17, "prefer": [17, 25], "rackovski": [17, 25], "vheg790101": 17, "tfe": 17, "lipophil": 17, "phase": 17, "transfer": [17, 25], "von": 17, "buri": [17, 25], "buriabl": 17, "biov880102": 17, "werd780101": 17, "propens": [17, 25], "insid": [17, 25], "wertz": 17, "scheraga": [17, 25], "predict": [18, 19, 22, 23, 24, 25, 29, 30], "engin": [18, 19, 22, 23, 29], "dpulearn": [18, 21, 22, 23], "train": [18, 19, 22, 23, 30], "moreov": [18, 23], "load_data": [18, 23], "pypi": 18, "conda": [18, 19], "forg": 18, "pip": [18, 19], "introduct": 18, "usag": [18, 19, 22], "contribut": [18, 25], "api": [18, 19], "explain": [18, 19, 24, 26], "ai": [18, 19, 24, 26], "perturb": [18, 30], "modul": 18, "search": 18, "page": 18, "work": [18, 21], "pleas": [18, 19, 21], "cite": [18, 21], "_": [18, 21], "breimann": [18, 21, 24], "kamp": [18, 21], "steiner": [18, 21], "frishman": [18, 21], "2023": [18, 21], "ontologi": [18, 21, 24], "biorxiv": [18, 21, 24], "welcom": 19, "thank": 19, "open": 19, "project": [19, 25], "focus": 19, "involv": 19, "invalu": 19, "made": 19, "wai": 19, "file": 19, "github": 19, "issu": 19, "tracker": 19, "submit": 19, "particip": [19, 25], "discuss": 19, "newcom": 19, "tackl": 19, "email": 19, "stephanbreimann": 19, "gmail": 19, "com": 19, "question": 19, "comprehens": 19, "robust": 19, "life": [19, 30, 31], "scienc": [19, 30, 31], "seamlessli": 19, "flexibl": [19, 25], "interoper": 19, "biopython": 19, "reimplement": 19, "exist": [19, 30], "solut": 19, "biolog": [19, 22, 25, 30], "context": 19, "relianc": 19, "opaqu": 19, "box": 19, "empir": 19, "insight": 19, "cut": 19, "fair": 19, "transpar": 19, "re": [19, 24], "commit": 19, "divers": 19, "aspect": 19, "causal": 19, "minim": 19, "reproduc": 19, "mre": 19, "amount": 19, "demonstr": 19, "self": 19, "necessari": 19, "confirm": 19, "replic": 19, "guidelin": 19, "To": [19, 26], "git": 19, "http": 19, "breimanntool": 19, "master": 19, "repositori": 19, "your_usernam": 19, "navig": 19, "folder": 19, "up": 19, "cd": 19, "isol": 19, "activ": [19, 25], "poetri": 19, "pytest": 19, "hypothesi": 19, "execut": 19, "case": 19, "directori": 19, "out": [19, 25], "readm": 19, "command": 19, "cheat": 19, "sheet": [19, 25], "substanti": 19, "minor": 19, "typo": 19, "concis": 19, "branch": [19, 25], "fix": 19, "date": 19, "readthedoc": 19, "org": 19, "crucial": 19, "modif": 19, "render": 19, "correctli": 19, "strive": 19, "codebas": 19, "standalon": 19, "special": 19, "carri": 19, "complet": 19, "process": 19, "fulfil": 19, "purpos": 19, "inherit": 19, "supplementari": 19, "accordingli": 19, "cppplot": 19, "semi": 19, "strictli": 19, "adher": 19, "aforement": 19, "primari": [19, 28], "_util": 19, "_utils_const": 19, "py": 19, "modular": 19, "therefor": 19, "flat": 19, "hierarchi": 19, "outlin": 19, "user": 19, "friendli": 19, "hint": 19, "enhanc": [19, 25], "propos": 19, "pep": 19, "484": 19, "book": 19, "error": 19, "messag": 19, "docstr": 19, "markup": 19, "languag": 19, "restructuredtext": 19, "rst": 19, "primer": 19, "restructuretext": 19, "cheatsheet": 19, "sphinx": 19, "autodoc": 19, "inclus": 19, "napoleon": 19, "extens": 19, "conf": 19, "four": 19, "bird": 19, "ey": 19, "background": 19, "medium": [19, 25], "tabular": 19, "critic": 19, "except": 19, "rule": 19, "showcas": 19, "scientif": 19, "mai": 19, "mention": 19, "section": 19, "extern": 19, "note": 19, "go": 19, "html": 19, "_build": 19, "browser": 19, "below": 19, "blank": 19, "OF": 19, "ONE": 19, "complex": 19, "At": 19, "intric": 19, "do": 19, "placehold": 19, "incomplet": 19, "potenti": [19, 25], "expect": 19, "30": 19, "remind": 19, "token": 19, "truncat": 19, "respons": 19, "simpli": 19, "ask": 19, "someth": 19, "repeat": 19, "compil": 19, "done": 19, "script": 19, "leverag": 19, "struggl": 19, "produc": 19, "erron": 19, "often": [19, 30], "ambigu": 19, "logic": 19, "address": 19, "intuit": 19, "through": 19, "signatur": [19, 26], "behavior": 19, "deeper": 19, "intricaci": 19, "citat": 21, "develop": 22, "practic": 22, "2023a": 24, "2023b": 24, "breimann23c": [24, 25], "2023c": 24, "chart": 24, "cheng06": [24, 25], "cheng": 24, "2006": 24, "larg": 24, "disulphid": 24, "bridg": [24, 25], "kernel": 24, "neural": 24, "network": 24, "graph": [24, 25], "struct": 24, "funct": 24, "kawashima": 24, "2008": 24, "aid": 24, "databas": 24, "report": 24, "nucleic": 24, "magnan09": [24, 25], "magnan": 24, "randal": 24, "baldi": 24, "2009": [24, 25], "accur": 24, "solubl": [24, 25], "bioinformat": 24, "galiez16": [24, 25], "galiez": 24, "2016": [24, 25], "viral": 24, "capsid": [24, 25], "tail": [24, 25], "song18": [24, 25], "song": 24, "2018": 24, "throughput": 24, "cleavag": [24, 25], "site": [24, 25], "90": 24, "proteas": 24, "shen19": [24, 25], "shen": 24, "2019": 24, "subcellular": [24, 25], "local": [24, 25], "evolutionari": 24, "chou": [24, 25], "pseaac": 24, "j": 24, "theor": 24, "biol": 24, "tang20": [24, 25], "tang": 24, "2020": 24, "intrins": [24, 25], "disord": [24, 25], "teng21": [24, 25], "teng": 24, "2021": 24, "amyloidogen": [24, 25], "pseudo": 24, "composit": [24, 25], "tripeptid": 24, "bmc": 24, "yang21": [24, 25], "yang": 24, "granular": 24, "multipl": 24, "rna": [24, 25], "bind": [24, 25], "appl": 24, "chronolog": 25, "histori": 25, "t1_overview_benchmark": 25, "t2_overview_scal": 25, "t3a_aaontology_categori": 25, "t3b_aaontology_subcategori": 25, "begin": 25, "append": 25, "caspas": 25, "furin": 25, "long": 25, "ldr": 25, "metallopeptidas": 25, "mmp2": 25, "rbp60": 25, "solvent": 25, "sa": 25, "amyloidognen": 25, "capdsid": 25, "disulfid": 25, "ss": 25, "bond": 25, "cytoplasm": 25, "plasma": 25, "insolubl": 25, "494524": 25, "unknown": 25, "statu": 25, "tier": 25, "system": 25, "systemat": 25, "arrang": 25, "67": 25, "everi": 25, "clearli": 25, "assess": 25, "couldn": 25, "alloc": 25, "regard": 25, "chothia": 25, "1976": 25, "lin": 25, "2003": 25, "64": 25, "occurr": 25, "cellular": 25, "mitochondria": 25, "nakashima": 25, "1990": 25, "nishikawa": 25, "1992": 25, "58": 25, "conform": 25, "\u03b1": 25, "helix": 25, "ranodm": 25, "tanaka": 25, "1977": 25, "fasman": 25, "1978b": 25, "richardson": 25, "1988": 25, "qian": 25, "sejnowski": 25, "aurora": 25, "rose": 25, "1998": 25, "19": 25, "charg": 25, "entropi": 25, "charton": 25, "1983": 25, "gui": 25, "1985": 25, "radzicka": 25, "wolfenden": 25, "36": 25, "could": 25, "mutabl": 25, "sneath": 25, "1966": 25, "17": 25, "polar": 25, "hydrophob": 25, "amphiphil": 25, "kyte": 25, "doolittl": 25, "1982": 25, "mitaku": 25, "2002": 25, "koehler": 25, "steric": 25, "angl": 25, "symmetri": 25, "represent": 25, "eccentr": 25, "prabhakaran": 25, "ponnuswami": 25, "karkbara": 25, "knislei": 25, "45": 25, "stabil": 25, "backbon": 25, "dynam": 25, "vihinen": 25, "1994": 25, "bastolla": 25, "2005": 25, "31": 25, "water": 25, "tendenc": 25, "oppos": 25, "1978": 25, "partial": 25, "physic": 25, "displac": 25, "caus": 25, "interact": 25, "mainli": 25, "ones": 25, "bull": 25, "brees": 25, "1974": 25, "bigelow": 25, "1967": 25, "jone": 25, "dayhoff": 25, "interior": 25, "unpolar": 25, "fukuchi": 25, "2001": 25, "mp": 25, "cedano": 25, "1997": 25, "mitochondri": 25, "less": 25, "val": 25, "cf": 25, "cap": 25, "asp": 25, "glu": 25, "ly": 25, "arg": 25, "observ": 25, "character": 25, "punta": 25, "maritan": 25, "robson": 25, "suzuki": 25, "linker": 25, "georg": 25, "heringa": 25, "2004": 25, "helic": 25, "half": 25, "finkelstein": 25, "1991": 25, "outsid": 25, "befor": 25, "geisow": 25, "robert": 25, "1980": 25, "ramachandran": 25, "state": 25, "quadrant": 25, "bottom": 25, "paul": 25, "1951": 25, "antiparallel": 25, "lifson": 25, "sander": 25, "1979": 25, "bend": 25, "revers": 25, "tight": 25, "consecut": 25, "back": 25, "hydrogen": 25, "3rd": 25, "4th": 25, "1st": 25, "2nd": 25, "tm": 25, "place": 25, "monn\u00e9": 25, "1999": 25, "\u03c0": 25, "ala": 25, "gln": 25, "fodj": 25, "karadaghi": 25, "net": 25, "donor": 25, "klein": 25, "1984": 25, "acceptor": 25, "faucher": 25, "hi": 25, "electron": 25, "ion": 25, "pot": 25, "valenc": 25, "chemic": 25, "cosic": 25, "low": 25, "due": 25, "strong": 25, "hutchen": 25, "1970": 25, "unfold": 25, "gibb": 25, "denatur": 25, "yutani": 25, "1987": 25, "instabl": 25, "highest": 25, "break": 25, "pro": 25, "munoz": 25, "serrano": 25, "isoelectr": 25, "ph": 25, "electr": 25, "neutral": 25, "zimmerman": 25, "1968": 25, "16": 25, "crystal": 25, "pairwis": 25, "constitu": 25, "atom": 25, "lennard": 25, "oobatak": 25, "ooi": 25, "rel": 25, "chang": 25, "divid": 25, "aliphat": 25, "linear": 25, "aromat": 25, "carbon": 25, "approxim": 25, "invers": 25, "reactiv": 25, "hydroxythiol": 25, "wold": 25, "occur": 25, "esp": 25, "amphipath": 25, "highli": 25, "signal": 25, "argo": 25, "cornett": 25, "38": 25, "environ": 25, "eisenberg": 25, "mclachlan": 25, "1986": 25, "surround": 25, "angstrom": 25, "radiu": 25, "pack": 25, "globular": 25, "1981": 25, "28": 25, "eigenvalu": 25, "laplacian": 25, "undirect": 25, "node": 25, "mass": 25, "molecular": 25, "second": 25, "actual": 25, "root": 25, "squar": 25, "gyrat": 25, "farther": 25, "awai": 25, "relationship": 25, "rate": 25, "shift": 25, "bundi": 25, "wuthrich": 25, "nh": 25, "temperatur": 25, "rigid": 25, "gly": 25, "ser": 25, "particularli": 25, "ptitsyn": 25, "zhou": 25, "equilibrium": 25, "sueki": 25, "flow": 26, "enri": 26, "introduc": 27, "diagram": 28, "platform": 29, "novel": 29, "everywher": [30, 31], "setup": 30, "augment": 30, "smote": 30, "artifici": 30, "Such": 30, "veri": 30, "deep": 30, "imag": 30, "recognit": 30, "feasibl": 30, "becaus": 30, "slight": 30, "mutat": 30, "alter": 30, "dramat": 30, "great": 30, "quantiti": 30, "besid": 30, "distinguish": 30, "subfield": 30}, "objects": {"aaanalysis": [[1, 0, 1, "", "AAclust"], [2, 0, 1, "", "CPP"], [3, 0, 1, "", "CPPPlot"], [4, 0, 1, "", "SequenceFeature"], [5, 0, 1, "", "dPULearn"], [6, 3, 1, "", "load_dataset"], [7, 3, 1, "", "load_scales"], [8, 3, 1, "", "plot_gcfs"], [9, 3, 1, "", "plot_get_cdict"], [10, 3, 1, "", "plot_get_clist"], [11, 3, 1, "", "plot_get_cmap"], [12, 3, 1, "", "plot_legend"], [13, 3, 1, "", "plot_settings"]], "aaanalysis.AAclust": [[1, 1, 1, "", "__init__"], [1, 2, 1, "", "center_labels_"], [1, 2, 1, "", "centers_"], [1, 1, 1, "", "comp_centers"], [1, 1, 1, "", "comp_correlation"], [1, 1, 1, "", "comp_coverage"], [1, 1, 1, "", "comp_medoids"], [1, 1, 1, "", "eval"], [1, 1, 1, "", "fit"], [1, 2, 1, "", "is_medoid_"], [1, 2, 1, "", "labels_"], [1, 2, 1, "", "medoid_labels_"], [1, 2, 1, "", "medoid_names_"], [1, 2, 1, "", "medoids_"], [1, 2, 1, "", "model"], [1, 2, 1, "", "n_clusters"], [1, 1, 1, "", "name_clusters"]], "aaanalysis.CPP": [[2, 1, 1, "", "__init__"], [2, 1, 1, "", "eval"], [2, 1, 1, "", "run"]], "aaanalysis.CPPPlot": [[3, 1, 1, "", "__init__"], [3, 1, 1, "", "heatmap"], [3, 1, 1, "", "profile"], [3, 1, 1, "", "update_seq_size"]], "aaanalysis.SequenceFeature": [[4, 1, 1, "", "__init__"], [4, 1, 1, "", "add_dif"], [4, 1, 1, "", "add_feat_value"], [4, 1, 1, "", "add_position"], [4, 1, 1, "", "feat_matrix"], [4, 1, 1, "", "feat_names"], [4, 1, 1, "", "get_df_parts"], [4, 1, 1, "", "get_features"], [4, 1, 1, "", "get_split_kws"]], "aaanalysis.dPULearn": [[5, 1, 1, "", "__init__"], [5, 1, 1, "", "eval"], [5, 1, 1, "", "fit"], [5, 2, 1, "", "labels_"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:attribute", "3": "py:function"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "function", "Python function"]}, "titleterms": {"api": 0, "data": [0, 16, 28, 30], "featur": [0, 15], "engin": [0, 15], "pu": [0, 16, 30], "learn": [0, 15, 30], "explain": [0, 15, 31], "ai": [0, 15, 31], "perturb": 0, "plot": [0, 14], "util": 0, "aaanalysi": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 28], "aaclust": [1, 15], "note": [1, 2, 4, 5, 6, 7, 12], "cpp": [2, 15, 29], "cppplot": 3, "exampl": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 18], "sequencefeatur": 4, "dpulearn": 5, "load_dataset": 6, "load_scal": 7, "plot_gcf": 8, "plot_get_cdict": 9, "plot_get_clist": 10, "plot_get_cmap": 11, "plot_legend": 12, "plot_set": 13, "prelud": 14, "quick": [15, 32], "start": [15, 32], "what": [15, 30, 31], "you": 15, "Will": 15, "1": 15, "load": [15, 16, 17], "sequenc": [15, 31], "scale": [15, 17, 25, 27], "2": 15, "compar": 15, "physicochem": [15, 29], "profil": 15, "3": 15, "protein": [15, 16, 25], "predict": 15, "4": 15, "group": 15, "level": [15, 31], "individu": 15, "tutori": [16, 17, 32], "benchmark": [16, 24, 25], "amino": [16, 17, 25, 27], "acid": [16, 17, 25, 27], "window": 16, "size": 16, "posit": 16, "unlabel": 16, "dataset": [16, 24, 25], "three": 17, "set": 17, "numer": 17, "aaontologi": [17, 25, 27], "redund": 17, "reduc": 17, "subset": 17, "filter": 17, "welcom": 18, "document": [18, 19, 22], "instal": [18, 19], "overview": [18, 22, 25], "refer": [18, 24], "indic": 18, "tabl": [18, 25], "citat": 18, "contribut": 19, "introduct": [19, 22], "vision": 19, "object": 19, "non": 19, "goal": 19, "principl": [19, 26], "bug": 19, "report": 19, "latest": 19, "version": 19, "local": 19, "develop": 19, "environ": 19, "fork": 19, "clone": 19, "depend": 19, "run": 19, "unit": 19, "test": 19, "pull": 19, "request": 19, "preview": 19, "chang": 19, "name": 19, "convent": 19, "class": 19, "templat": 19, "function": 19, "method": 19, "code": 19, "philosophi": 19, "style": 19, "layer": 19, "build": 19, "doc": 19, "chatgpt": 19, "guid": 19, "tgd": 19, "workflow": 22, "algorithm": 24, "us": [24, 29], "case": 24, "further": [24, 32], "inform": 24, "categori": 25, "subcategori": 25, "usag": 26, "classif": 27, "flow": 28, "enri": 28, "point": 28, "compon": 28, "entri": 28, "bridg": 28, "extern": 28, "librari": 28, "identifi": 29, "signatur": 29, "from": 30, "unbalanc": 30, "small": 30, "i": [30, 31]}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "nbsphinx": 4, "sphinx": 57}, "alltitles": {"API": [[0, "api"]], "Data": [[0, "data"]], "Feature Engineering": [[0, "feature-engineering"]], "PU Learning": [[0, "pu-learning"]], "Explainable AI": [[0, "explainable-ai"]], "Perturbation": [[0, "perturbation"]], "Plot Utilities": [[0, "plot-utilities"]], "aaanalysis.AAclust": [[1, "aaanalysis-aaclust"]], "Notes": [[1, null], [1, null], [1, null], [1, null], [2, null], [2, null], [4, null], [4, null], [4, null], [4, null], [4, null], [5, null], [5, null], [6, null], [7, null], [12, null]], "aaanalysis.CPP": [[2, "aaanalysis-cpp"]], "aaanalysis.CPPPlot": [[3, "aaanalysis-cppplot"]], "Examples": [[3, null], [4, null], [4, null], [5, null], [6, null], [7, null], [8, null], [9, null], [10, null], [11, null], [12, null], [13, null]], "aaanalysis.SequenceFeature": [[4, "aaanalysis-sequencefeature"]], "aaanalysis.dPULearn": [[5, "aaanalysis-dpulearn"]], "aaanalysis.load_dataset": [[6, "aaanalysis-load-dataset"]], "aaanalysis.load_scales": [[7, "aaanalysis-load-scales"]], "aaanalysis.plot_gcfs": [[8, "aaanalysis-plot-gcfs"]], "aaanalysis.plot_get_cdict": [[9, "aaanalysis-plot-get-cdict"]], "aaanalysis.plot_get_clist": [[10, "aaanalysis-plot-get-clist"]], "aaanalysis.plot_get_cmap": [[11, "aaanalysis-plot-get-cmap"]], "aaanalysis.plot_legend": [[12, "aaanalysis-plot-legend"]], "aaanalysis.plot_settings": [[13, "aaanalysis-plot-settings"]], "Plotting Prelude": [[14, "plotting-prelude"]], "Quick Start with AAanalysis": [[15, "quick-start-with-aaanalysis"]], "What You Will Learn:": [[15, "what-you-will-learn"]], "1. Loading Sequences and Scales": [[15, "loading-sequences-and-scales"]], "2. Feature Engineering": [[15, "feature-engineering"]], "AAclust": [[15, "aaclust"]], "Comparative Physicochemical Profiling (CPP)": [[15, "comparative-physicochemical-profiling-cpp"]], "3. Protein Prediction": [[15, "protein-prediction"]], "4. Explainable AI": [[15, "explainable-ai"]], "Explainable AI on group level": [[15, "explainable-ai-on-group-level"]], "Explainable AI on individual level": [[15, "explainable-ai-on-individual-level"]], "Data Loading Tutorial": [[16, "data-loading-tutorial"]], "Loading of protein benchmarks": [[16, "loading-of-protein-benchmarks"]], "Loading of protein benchmarks: Amino acid window size": [[16, "loading-of-protein-benchmarks-amino-acid-window-size"]], "Loading of protein benchmarks: Positive-Unlabeled (PU) datasets": [[16, "loading-of-protein-benchmarks-positive-unlabeled-pu-datasets"]], "Scale Loading Tutorial": [[17, "scale-loading-tutorial"]], "Three sets of numerical amino acid scales": [[17, "three-sets-of-numerical-amino-acid-scales"]], "AAontology": [[17, "aaontology"], [25, "aaontology"]], "Redundancy-reduce scale subsets": [[17, "redundancy-reduce-scale-subsets"]], "Filtering of scales": [[17, "filtering-of-scales"]], "Welcome to the AAanalysis documentation!": [[18, "welcome-to-the-aaanalysis-documentation"]], "Install": [[18, "install"]], "OVERVIEW": [[18, null]], "EXAMPLES": [[18, null]], "REFERENCES": [[18, null]], "Indices and tables": [[18, "indices-and-tables"]], "Citation": [[18, "citation"]], "Contributing": [[19, "contributing"]], "Introduction": [[19, "introduction"], [22, "introduction"]], "Vision": [[19, "vision"]], "Objectives": [[19, "objectives"]], "Non-goals": [[19, "non-goals"]], "Principles": [[19, "principles"]], "Bug Reports": [[19, "bug-reports"]], "Installation": [[19, "installation"]], "Latest Version": [[19, "latest-version"]], "Local Development Environment": [[19, "local-development-environment"]], "Fork and Clone": [[19, "fork-and-clone"]], "Install Dependencies": [[19, "install-dependencies"]], "Run Unit Tests": [[19, "run-unit-tests"]], "Pull Requests": [[19, "pull-requests"]], "Preview Changes": [[19, "preview-changes"]], "Documentation": [[19, "documentation"]], "Naming Conventions": [[19, "naming-conventions"]], "Class Templates": [[19, "class-templates"]], "Function and Method Naming": [[19, "function-and-method-naming"]], "Code Philosophy": [[19, "code-philosophy"]], "Documentation Style": [[19, "documentation-style"]], "Documentation Layers": [[19, "documentation-layers"]], "Building the Docs": [[19, "building-the-docs"]], "Test with ChatGPT": [[19, "test-with-chatgpt"]], "Test Guided Development (TGD)": [[19, "test-guided-development-tgd"]], "Workflow": [[22, "workflow"]], "Overview of documentation": [[22, "overview-of-documentation"]], "References": [[24, "references"]], "Algorithms": [[24, "algorithms"]], "Datasets and Benchmarks": [[24, "datasets-and-benchmarks"]], "Use Cases": [[24, "use-cases"]], "Further Information": [[24, "further-information"]], "Tables": [[25, "tables"]], "Overview Table": [[25, "overview-table"]], "Protein Benchmark Datasets": [[25, "protein-benchmark-datasets"]], "Amino Acid Scale Datasets": [[25, "amino-acid-scale-datasets"]], "Categories": [[25, "categories"]], "Subcategories": [[25, "subcategories"]], "Usage Principles": [[26, "usage-principles"]], "AAontology: Classification of amino acid scales": [[27, "aaontology-classification-of-amino-acid-scales"]], "Data Flow and Enry Points": [[28, "data-flow-and-enry-points"]], "Data Flow: Components of AAanalysis": [[28, "data-flow-components-of-aaanalysis"]], "Entry Points: Bridges to External Libraries": [[28, "entry-points-bridges-to-external-libraries"]], "Identifying Physicochemical Signatures using CPP": [[29, "identifying-physicochemical-signatures-using-cpp"]], "Learning from unbalanced and small data": [[30, "learning-from-unbalanced-and-small-data"]], "What is PU learning?": [[30, "what-is-pu-learning"]], "Explainable AI at Sequence Level": [[31, "explainable-ai-at-sequence-level"]], "What is explainable AI?": [[31, "what-is-explainable-ai"]], "Tutorials": [[32, "tutorials"]], "Quick start": [[32, "quick-start"]], "Further Tutorials": [[32, "further-tutorials"]]}, "indexentries": {"aaclust (class in aaanalysis)": [[1, "aaanalysis.AAclust"]], "__init__() (aaanalysis.aaclust method)": [[1, "aaanalysis.AAclust.__init__"]], "center_labels_ (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.center_labels_"]], "centers_ (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.centers_"]], "comp_centers() (aaanalysis.aaclust static method)": [[1, "aaanalysis.AAclust.comp_centers"]], "comp_correlation() (aaanalysis.aaclust static method)": [[1, "aaanalysis.AAclust.comp_correlation"]], "comp_coverage() (aaanalysis.aaclust static method)": [[1, "aaanalysis.AAclust.comp_coverage"]], "comp_medoids() (aaanalysis.aaclust static method)": [[1, "aaanalysis.AAclust.comp_medoids"]], "eval() (aaanalysis.aaclust static method)": [[1, "aaanalysis.AAclust.eval"]], "fit() (aaanalysis.aaclust method)": [[1, "aaanalysis.AAclust.fit"]], "is_medoid_ (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.is_medoid_"]], "labels_ (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.labels_"]], "medoid_labels_ (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.medoid_labels_"]], "medoid_names_ (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.medoid_names_"]], "medoids_ (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.medoids_"]], "model (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.model"]], "n_clusters (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.n_clusters"]], "name_clusters() (aaanalysis.aaclust static method)": [[1, "aaanalysis.AAclust.name_clusters"]], "cpp (class in aaanalysis)": [[2, "aaanalysis.CPP"]], "__init__() (aaanalysis.cpp method)": [[2, "aaanalysis.CPP.__init__"]], "eval() (aaanalysis.cpp method)": [[2, "aaanalysis.CPP.eval"]], "run() (aaanalysis.cpp method)": [[2, "aaanalysis.CPP.run"]], "cppplot (class in aaanalysis)": [[3, "aaanalysis.CPPPlot"]], "__init__() (aaanalysis.cppplot method)": [[3, "aaanalysis.CPPPlot.__init__"]], "heatmap() (aaanalysis.cppplot method)": [[3, "aaanalysis.CPPPlot.heatmap"]], "profile() (aaanalysis.cppplot method)": [[3, "aaanalysis.CPPPlot.profile"]], "update_seq_size() (aaanalysis.cppplot method)": [[3, "aaanalysis.CPPPlot.update_seq_size"]], "sequencefeature (class in aaanalysis)": [[4, "aaanalysis.SequenceFeature"]], "__init__() (aaanalysis.sequencefeature method)": [[4, "aaanalysis.SequenceFeature.__init__"]], "add_dif() (aaanalysis.sequencefeature static method)": [[4, "aaanalysis.SequenceFeature.add_dif"]], "add_feat_value() (aaanalysis.sequencefeature static method)": [[4, "aaanalysis.SequenceFeature.add_feat_value"]], "add_position() (aaanalysis.sequencefeature static method)": [[4, "aaanalysis.SequenceFeature.add_position"]], "feat_matrix() (aaanalysis.sequencefeature static method)": [[4, "aaanalysis.SequenceFeature.feat_matrix"]], "feat_names() (aaanalysis.sequencefeature static method)": [[4, "aaanalysis.SequenceFeature.feat_names"]], "get_df_parts() (aaanalysis.sequencefeature static method)": [[4, "aaanalysis.SequenceFeature.get_df_parts"]], "get_features() (aaanalysis.sequencefeature method)": [[4, "aaanalysis.SequenceFeature.get_features"]], "get_split_kws() (aaanalysis.sequencefeature static method)": [[4, "aaanalysis.SequenceFeature.get_split_kws"]], "__init__() (aaanalysis.dpulearn method)": [[5, "aaanalysis.dPULearn.__init__"]], "dpulearn (class in aaanalysis)": [[5, "aaanalysis.dPULearn"]], "eval() (aaanalysis.dpulearn method)": [[5, "aaanalysis.dPULearn.eval"]], "fit() (aaanalysis.dpulearn method)": [[5, "aaanalysis.dPULearn.fit"]], "labels_ (aaanalysis.dpulearn attribute)": [[5, "aaanalysis.dPULearn.labels_"]], "load_dataset() (in module aaanalysis)": [[6, "aaanalysis.load_dataset"]], "load_scales() (in module aaanalysis)": [[7, "aaanalysis.load_scales"]], "plot_gcfs() (in module aaanalysis)": [[8, "aaanalysis.plot_gcfs"]], "plot_get_cdict() (in module aaanalysis)": [[9, "aaanalysis.plot_get_cdict"]], "plot_get_clist() (in module aaanalysis)": [[10, "aaanalysis.plot_get_clist"]], "plot_get_cmap() (in module aaanalysis)": [[11, "aaanalysis.plot_get_cmap"]], "plot_legend() (in module aaanalysis)": [[12, "aaanalysis.plot_legend"]], "plot_settings() (in module aaanalysis)": [[13, "aaanalysis.plot_settings"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["api", "generated/aaanalysis.AAclust", "generated/aaanalysis.CPP", "generated/aaanalysis.CPPPlot", "generated/aaanalysis.SequenceFeature", "generated/aaanalysis.dPULearn", "generated/aaanalysis.load_dataset", "generated/aaanalysis.load_scales", "generated/aaanalysis.plot_gcfs", "generated/aaanalysis.plot_get_cdict", "generated/aaanalysis.plot_get_clist", "generated/aaanalysis.plot_get_cmap", "generated/aaanalysis.plot_legend", "generated/aaanalysis.plot_settings", "generated/plotting_prelude", "generated/tutorial1_quick_start", "generated/tutorial2a_data_loader", "generated/tutorial2b_scales_loader", "index", "index/CONTRIBUTING_COPY", "index/badges", "index/citations", "index/introduction", "index/overview", "index/references", "index/tables", "index/usage_principles", "index/usage_principles/aaontology", "index/usage_principles/data_flow_entry_points", "index/usage_principles/feature_identification", "index/usage_principles/pu_learning", "index/usage_principles/xai", "tutorials"], "filenames": ["api.rst", "generated/aaanalysis.AAclust.rst", "generated/aaanalysis.CPP.rst", "generated/aaanalysis.CPPPlot.rst", "generated/aaanalysis.SequenceFeature.rst", "generated/aaanalysis.dPULearn.rst", "generated/aaanalysis.load_dataset.rst", "generated/aaanalysis.load_scales.rst", "generated/aaanalysis.plot_gcfs.rst", "generated/aaanalysis.plot_get_cdict.rst", "generated/aaanalysis.plot_get_clist.rst", "generated/aaanalysis.plot_get_cmap.rst", "generated/aaanalysis.plot_legend.rst", "generated/aaanalysis.plot_settings.rst", "generated/plotting_prelude.rst", "generated/tutorial1_quick_start.rst", "generated/tutorial2a_data_loader.rst", "generated/tutorial2b_scales_loader.rst", "index.rst", "index/CONTRIBUTING_COPY.rst", "index/badges.rst", "index/citations.rst", "index/introduction.rst", "index/overview.rst", "index/references.rst", "index/tables.rst", "index/usage_principles.rst", "index/usage_principles/aaontology.rst", "index/usage_principles/data_flow_entry_points.rst", "index/usage_principles/feature_identification.rst", "index/usage_principles/pu_learning.rst", "index/usage_principles/xai.rst", "tutorials.rst"], "titles": ["API", "aaanalysis.AAclust", "aaanalysis.CPP", "aaanalysis.CPPPlot", "aaanalysis.SequenceFeature", "aaanalysis.dPULearn", "aaanalysis.load_dataset", "aaanalysis.load_scales", "aaanalysis.plot_gcfs", "aaanalysis.plot_get_cdict", "aaanalysis.plot_get_clist", "aaanalysis.plot_get_cmap", "aaanalysis.plot_legend", "aaanalysis.plot_settings", "Plotting Prelude", "Quick Start with AAanalysis", "Data Loading Tutorial", "Scale Loading Tutorial", "Welcome to the AAanalysis documentation!", "Contributing", "<no title>", "<no title>", "Introduction", "<no title>", "References", "Tables", "Usage Principles", "AAontology: Classification of amino acid scales", "Data Flow and Enry Points", "Identifying Physicochemical Signatures using CPP", "Learning from unbalanced and small data", "Explainable AI at Sequence Level", "Tutorials"], "terms": {"thi": [0, 1, 3, 7, 8, 10, 12, 13, 14, 15, 16, 17, 19, 28], "applic": [0, 3, 12], "program": [0, 19], "interfac": [0, 19, 25], "i": [0, 1, 2, 3, 4, 5, 6, 7, 11, 12, 13, 15, 16, 17, 18, 19, 22, 23, 25, 27, 29], "public": [0, 14, 16, 18, 19, 21], "object": [0, 1, 3, 4, 5, 12, 15], "function": [0, 1, 3, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 23], "our": [0, 8, 9, 11, 14, 15, 17, 19, 22], "aaanalysi": [0, 14, 16, 17, 19, 21, 22, 23, 25, 26, 29, 32], "python": [0, 15, 18, 19, 22, 23], "toolkit": [0, 19, 28], "which": [0, 3, 4, 12, 13, 15, 16, 17, 19, 22, 25, 28, 30], "can": [0, 1, 4, 5, 8, 12, 14, 15, 16, 17, 18, 19, 22, 25, 28, 30], "import": [0, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 19, 26], "aa": [0, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 25, 26], "you": [0, 14, 17, 18, 19, 21], "access": [0, 1, 6, 15, 17, 25], "all": [0, 1, 2, 3, 4, 6, 7, 13, 14, 15, 17, 19, 25], "method": [0, 1, 2, 3, 4, 5, 15, 24], "via": [0, 14, 19, 24], "alia": [0, 4], "load_dataset": [0, 4, 15, 16, 17, 25], "class": [1, 2, 3, 4, 5, 6, 8, 10, 11, 12, 13, 14, 16, 30], "model_class": [1, 15], "sklearn": [1, 15], "cluster": [1, 15, 18, 22, 23, 24, 25], "_kmean": 1, "kmean": 1, "model_kwarg": 1, "none": [1, 2, 3, 4, 5, 6, 7, 12, 16], "verbos": [1, 2, 3, 4, 5, 15], "fals": [1, 2, 3, 4, 5, 6, 7, 9, 11, 12, 13, 15, 17], "sourc": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 17, 19], "base": [1, 2, 3, 4, 5, 6, 12, 15, 18, 19, 22, 23, 24, 25, 29, 30], "wrapper": [1, 3, 15, 18, 19, 22, 23], "A": [1, 4, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17, 19, 22, 24], "k": [1, 17, 18, 22, 23, 24], "optim": [1, 2, 3, 10, 14, 18, 19, 22, 23, 24], "select": [1, 2, 3, 6, 7, 15, 16, 17, 18, 19, 22, 23, 24], "redund": [1, 2, 7, 15, 18, 19, 22, 23, 24], "reduc": [1, 5, 7, 18, 22, 23, 24, 25], "set": [1, 2, 3, 4, 5, 7, 8, 12, 13, 14, 15, 16, 18, 19, 22, 23, 24, 25, 28], "numer": [1, 3, 4, 15, 18, 22, 23], "scale": [1, 2, 3, 4, 7, 9, 13, 18, 21, 22, 23, 24, 26, 28, 32], "us": [1, 2, 3, 5, 6, 7, 8, 12, 14, 15, 16, 17, 18, 19, 21, 22, 25, 26, 28, 30], "model": [1, 5, 15, 19, 30], "requir": [1, 19], "pre": [1, 2, 15, 16, 19], "defin": [1, 4, 7, 15, 16, 19, 25, 28], "number": [1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 16, 17, 25], "n_cluster": [1, 15], "mean": [1, 2, 3, 15, 17, 25], "other": [1, 3, 7, 13, 14, 17, 19, 25], "scikit": [1, 19], "learn": [1, 5, 16, 18, 19, 21, 22, 23, 24, 25, 26], "valu": [1, 2, 3, 4, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 22, 25], "util": [1, 13, 14, 16, 18, 19], "pearson": [1, 2], "correl": [1, 2, 25], "repres": [1, 3, 15, 16, 22, 25], "sampl": [1, 2, 3, 4, 5, 16, 25, 30], "medoid": 1, "each": [1, 2, 3, 4, 5, 15, 16, 17, 19], "closest": 1, "center": [1, 15, 25], "result": [1, 2, 19], "see": [1, 3, 19, 22, 25, 28], "breimann23a": [1, 6, 7, 24, 25], "paramet": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 15, 16, 17, 19, 25], "type": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 16, 19, 25], "clustermixin": 1, "instanti": 1, "dure": [1, 5], "fit": [1, 5, 15, 19], "option": [1, 2, 3, 4, 5, 6, 7, 12, 13], "dict": [1, 2, 3, 4, 5, 9, 12], "keyword": [1, 3, 5], "argument": [1, 3, 4, 5, 12], "pass": [1, 3, 5, 19], "bool": [1, 2, 3, 4, 5, 6, 7, 11, 12, 13], "If": [1, 2, 3, 4, 5, 6, 7, 12, 13, 17, 18, 19, 21, 30], "true": [1, 2, 3, 4, 6, 7, 11, 12, 13, 14, 16, 17], "output": [1, 2, 4, 5, 14, 19], "ar": [1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 15, 16, 17, 19, 25, 28, 30, 31], "enabl": [1, 2, 3, 4, 5, 18, 19, 22, 23, 29], "The": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 14, 15, 16, 17, 19, 25, 28, 29], "after": [1, 2, 25], "call": [1, 7, 14, 25], "obtain": [1, 4, 7, 15, 25], "int": [1, 2, 3, 4, 5, 6, 7, 10, 11, 12], "labels_": [1, 5], "label": [1, 2, 3, 4, 5, 6, 12, 14, 15, 16, 19, 25, 30], "order": [1, 19, 25], "x": [1, 3, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15], "arrai": [1, 2, 4, 5, 15], "like": [1, 2, 4, 5, 13, 14, 19, 25], "shape": [1, 2, 3, 4, 5, 12, 25], "n_sampl": [1, 2, 4, 5], "centers_": 1, "averag": [1, 4, 15, 17, 25], "correspond": [1, 12, 16, 19, 25], "n_featur": [1, 2, 3, 4, 5], "center_labels_": 1, "medoids_": 1, "one": [1, 3, 10, 12, 19], "medoid_labels_": 1, "is_medoid_": 1, "indic": [1, 3, 4, 5, 16, 17, 19, 25], "being": [1, 16, 19, 25], "1": [1, 2, 3, 4, 5, 6, 7, 9, 12, 13, 14, 16, 17, 19, 25, 30], "0": [1, 2, 3, 4, 5, 6, 12, 14, 15, 16, 17, 25, 30], "same": [1, 7, 17], "medoid_names_": [1, 15], "name": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 13, 15, 16, 17, 25], "provid": [1, 3, 5, 6, 7, 12, 15, 16, 17, 18, 19, 23, 25, 30], "list": [1, 3, 4, 9, 10, 11, 12, 15, 25], "attribut": 1, "directli": [1, 19], "design": [1, 3, 19, 25, 29], "primarili": [1, 5, 19], "amino": [1, 2, 3, 4, 6, 7, 15, 18, 21, 22, 23, 24, 26, 28, 30], "acid": [1, 2, 3, 4, 6, 7, 15, 18, 21, 22, 23, 24, 26, 28, 30], "ani": [1, 17, 19, 22, 25], "__init__": [1, 2, 3, 4, 5], "on_cent": 1, "min_th": 1, "merge_metr": 1, "euclidean": [1, 5], "appli": [1, 5, 12, 13, 16], "algorithm": [1, 2, 3, 15, 18, 19, 22, 23, 28, 29], "featur": [1, 2, 3, 4, 5, 18, 19, 22, 23, 28, 29, 30], "matrix": [1, 4, 5, 15, 25], "determin": [1, 7], "without": [1, 3, 19, 25], "specif": [1, 16, 19, 25], "It": [1, 13, 15, 16, 22, 25, 28], "partit": [1, 17, 25], "data": [1, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 19, 25, 26, 32], "maxim": 1, "within": [1, 2, 4, 19, 25, 28], "beyond": 1, "threshold": [1, 2], "qualiti": 1, "either": [1, 4, 6, 7, 17, 18], "minimum": [1, 4, 6], "member": 1, "between": [1, 2, 3, 4, 7, 10, 12, 15, 16, 19, 25], "its": [1, 16, 19, 25], "min_cor_al": 1, "min_cor_cent": 1, "respect": [1, 6, 15, 18, 19, 21, 25], "describ": [1, 25], "row": [1, 16, 17], "column": [1, 2, 3, 4, 5, 6, 7, 12, 16, 17, 19], "must": [1, 4, 10, 11, 19], "float": [1, 2, 3, 5, 12, 13], "otherwis": [1, 3, 4, 5, 25], "str": [1, 3, 4, 5, 6, 7, 9, 11, 12, 13], "metric": [1, 5, 19], "similar": [1, 19, 25, 30], "measur": [1, 19, 25], "merg": 1, "No": 1, "perform": [1, 2, 5, 7, 15, 17, 25], "distanc": [1, 5, 25], "manhattan": [1, 5], "cosin": [1, 5], "return": [1, 2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 16], "instanc": [1, 3, 12], "allow": 1, "direct": [1, 19], "aanalysi": [1, 19], "consist": [1, 13, 19, 22, 25], "three": [1, 4, 16, 25], "main": [1, 25], "step": [1, 2, 3, 4, 6, 7, 19, 22], "estim": 1, "lower": [1, 25], "bound": 1, "refin": [1, 19], "recurs": [1, 24], "chosen": [1, 2, 4, 6, 7, 16], "smaller": [1, 14], "reduct": 1, "pairwise_dist": 1, "were": [1, 7, 17, 25], "runtimewarn": 1, "caught": 1, "bundl": 1, "static": [1, 4], "eval": [1, 2, 5, 19], "evalu": [1, 2, 7, 17, 19, 25], "establish": [1, 19], "quantifi": 1, "bic": 1, "bayesian": 1, "inform": [1, 2, 3, 4, 5, 17, 28], "criterion": 1, "reflect": [1, 19, 25], "good": [1, 19], "while": [1, 16], "account": [1, 19, 25], "rang": 1, "from": [1, 2, 3, 4, 5, 6, 7, 15, 16, 17, 18, 19, 25, 26], "neg": [1, 4, 5, 6, 12, 16, 19, 25, 30], "infin": 1, "posit": [1, 2, 3, 4, 5, 6, 18, 19, 22, 23, 25, 30], "higher": [1, 25], "superior": 1, "ch": [1, 17, 25], "calinski": 1, "harabasz": 1, "index": [1, 6, 17, 18, 19, 24], "ratio": 1, "dispers": 1, "score": [1, 15], "suggest": [1, 19], "better": 1, "sc": 1, "silhouett": 1, "coeffici": 1, "proxim": 1, "point": [1, 3, 8, 12, 25, 26], "neighbor": [1, 25], "li": 1, "closer": 1, "impli": 1, "wa": [1, 22], "modifi": [1, 5, 13], "align": [1, 3, 12, 15, 17, 19], "so": 1, "signifi": 1, "contrari": 1, "convent": [1, 4, 7], "implement": [1, 19], "favor": 1, "calinski_harabasz_scor": 1, "silhouette_scor": 1, "name_clust": 1, "shorten_nam": 1, "assign": [1, 3, 4, 5, 17, 25], "frequenc": [1, 25], "priorit": 1, "alreadi": [1, 30], "contain": [1, 2, 3, 5, 6, 7, 17, 19, 25, 28, 30], "unclassifi": [1, 7, 17, 25], "shorten": 1, "version": [1, 17, 25], "cluster_nam": 1, "renam": 1, "comp_cent": 1, "comput": [1, 2, 3, 4, 15, 19, 24, 25], "given": [1, 3, 4, 6, 10, 11, 12, 15, 17, 19, 25], "center_label": 1, "associ": [1, 25], "comp_medoid": 1, "medoid_label": 1, "comp_correl": 1, "x_ref": 1, "labels_ref": 1, "names_ref": 1, "refer": [1, 2, 4, 6, 15, 19, 25], "compar": [1, 16, 18, 22, 23, 25, 28, 29], "n_samples_ref": 1, "df_corr": 1, "datafram": [1, 2, 3, 4, 5, 6, 7, 15, 19, 28], "pair": 1, "pd": [1, 4, 5, 15, 19], "sort": 1, "ascend": 1, "replac": [1, 6], "panda": [1, 2, 3, 4, 5, 6, 7, 15, 19], "corr": 1, "comp_coverag": 1, "percentag": [1, 2, 5, 17], "uniqu": [1, 2, 3, 17, 19], "present": [1, 4, 6], "help": 1, "understand": 1, "coverag": [1, 19], "particular": 1, "subset": [1, 4, 7, 25], "univers": 1, "both": [1, 3, 13, 16], "consid": [1, 7, 19], "onli": [1, 3, 6, 7, 12, 13, 16, 19, 25, 30], "onc": [1, 19], "regardless": 1, "repetit": 1, "should": [1, 2, 3, 4, 5, 19, 30], "superset": 1, "found": [1, 4, 19], "df_scale": [2, 4, 7, 15, 17, 28], "df_cat": [2, 3, 4, 7, 17, 28], "df_part": [2, 4, 15, 28], "split_kw": [2, 4, 15, 28], "accept_gap": [2, 3, 4], "tool": [2, 19, 24], "creat": [2, 3, 4, 5, 13, 14, 15, 19, 28], "filter": [2, 3, 6, 15, 16], "most": [2, 3, 5, 12, 15, 18, 22, 23], "discrimin": [2, 3, 15], "two": [2, 3, 7, 8, 15, 17, 18, 19, 22, 23, 24, 25, 27, 28], "sequenc": [2, 3, 4, 5, 6, 16, 18, 19, 22, 23, 24, 25, 26, 28, 29, 30], "default": [2, 3, 4, 5, 6, 8, 9, 12, 13, 14, 15, 16, 17], "load_categori": [2, 4], "categori": [2, 3, 4, 7, 9, 10, 12, 16, 17], "physicochem": [2, 4, 18, 22, 23, 24, 25, 26, 28], "part": [2, 3, 4, 15, 19, 28], "sequencefeatur": [2, 15], "get_split_kw": [2, 4, 15], "nest": [2, 4], "dictionari": [2, 3, 4, 9, 12], "split_typ": [2, 4, 15], "whether": [2, 3, 4, 11, 12], "accept": [2, 3, 4], "miss": [2, 3, 4], "omit": [2, 3, 4], "print": [2, 3, 4, 15], "progress": [2, 3, 24], "about": [2, 3], "run": [2, 4, 15], "parametr": 2, "n_filter": 2, "100": [2, 6, 15, 16], "tmd_len": [2, 3, 4], "20": [2, 3, 4, 7, 16, 17, 19, 25], "jmd_n_len": [2, 3, 4], "10": [2, 3, 4, 10, 12, 16, 17, 19, 25], "jmd_c_len": [2, 3, 4], "ext_len": [2, 3, 4], "4": [2, 3, 4, 16, 17, 25], "start": [2, 3, 4, 6, 19, 25, 26, 28], "check_cat": 2, "n_pre_filt": 2, "pct_pre_filt": 2, "5": [2, 3, 4, 5, 14, 15, 16, 17, 19, 25], "max_std_test": 2, "2": [2, 3, 4, 5, 8, 10, 12, 14, 16, 17, 19, 25, 30], "max_overlap": 2, "max_cor": 2, "n_process": 2, "pipelin": [2, 19], "creation": 2, "aim": [2, 3, 15, 19], "identifi": [2, 3, 5, 6, 15, 16, 18, 22, 23, 24, 26, 30], "collect": [2, 7], "non": [2, 4, 6, 15, 25], "test": [2, 15, 17], "group": [2, 3, 4, 12, 14, 25], "t": [2, 6, 15, 17, 25], "u": [2, 14, 18, 19], "p": [2, 17, 24], "length": [2, 3, 4, 6, 12, 16, 25], "tmd": [2, 3, 4, 6, 15, 16], "todo": [2, 19], "add": [2, 3, 4, 19], "link": [2, 18, 19, 21, 24], "explan": [2, 3, 19], "first": [2, 3, 4, 7, 14, 19], "n": [2, 3, 4, 6, 7, 15, 16, 17, 19, 24, 25], "terminu": [2, 3, 4, 25], "jmd": [2, 3, 4, 15], "c": [2, 3, 4, 8, 10, 11, 12, 13, 14, 15, 16, 17, 18, 24, 25], "extend": [2, 3, 4, 19, 25, 30], "termin": [2, 3, 4, 15, 16, 25], "longer": 2, "than": [2, 25], "check": [2, 19], "remain": [2, 17, 19], "maximum": [2, 4, 5, 6, 15], "standard": [2, 30], "deviat": 2, "overlap": 2, "cpu": 2, "multiprocess": 2, "automat": [2, 3, 5, 12, 19], "df_feat": [2, 3, 4, 15, 28], "statist": [2, 3], "n_feature_inform": [2, 3], "follow": [2, 4, 5, 7, 18, 19, 21, 22, 23, 26], "eleven": 2, "includ": [2, 4, 6, 7, 12, 19], "id": [2, 4, 6, 7, 17], "rank": [2, 17], "11": [2, 3, 16, 25], "split": [2, 4, 15, 28], "subcategori": [2, 3, 7, 17], "sub": 2, "scale_nam": [2, 3, 7, 17], "abs_auc": [2, 3], "absolut": [2, 19], "adjust": [2, 3, 12, 13, 14], "auc": 2, "abs_mean_dif": 2, "differ": [2, 3, 4, 10, 16, 17, 28], "std_test": [2, 3], "std_ref": 2, "p_val": 2, "mann_whitnei": 2, "ttest_indep": 2, "p_val_fdr_bh": 2, "benjamini": 2, "hochberg": 2, "fdr": 2, "correct": 2, "gener": [2, 3, 4, 6, 10, 11, 13, 19, 22, 24, 25, 30], "condit": [3, 4], "jmd_m_len": [3, 4], "profil": [3, 18, 22, 23, 29], "y": [3, 8, 9, 10, 11, 12, 13, 14, 15, 17], "val_col": 3, "mean_dif": 3, "val_typ": 3, "count": [3, 16], "normal": [3, 7, 12, 17, 19, 25], "figsiz": 3, "7": [3, 4, 5, 14, 16, 17, 25], "titl": [3, 8, 12, 13, 14, 15], "title_kw": 3, "dict_color": [3, 9, 12, 14], "edge_color": 3, "bar_width": 3, "75": 3, "add_jmd_tmd": 3, "jmd_n_seq": 3, "tmd_seq": 3, "jmd_c_seq": 3, "tmd_color": 3, "mediumspringgreen": 3, "jmd_color": 3, "blue": [3, 15], "tmd_seq_color": 3, "black": [3, 11, 12, 14, 19], "jmd_seq_color": 3, "white": [3, 11, 12], "seq_siz": 3, "tmd_jmd_fontsiz": 3, "xtick_siz": 3, "xtick_width": 3, "xtick_length": 3, "xticks_po": 3, "ytick_siz": 3, "ytick_width": 3, "ytick_length": 3, "ylim": [3, 15], "highlight_tmd_area": 3, "highlight_alpha": 3, "15": [3, 4, 16, 25], "grid": [3, 13, 14], "grid_axi": [3, 13, 14], "add_legend_cat": 3, "legend_kw": 3, "shap_plot": 3, "kwarg": [3, 4, 12], "plot": [3, 8, 9, 10, 11, 12, 13, 16, 18, 19, 25, 32], "avail": [3, 7, 12, 15, 17, 18, 21, 24], "specifi": [3, 4, 5, 9, 11, 15, 19], "check_value_typ": 3, "tupl": [3, 11], "size": [3, 4, 8, 12, 13, 14, 15, 25], "custom": [3, 7, 14, 19], "appear": [3, 25], "map": [3, 4, 11, 12], "color": [3, 8, 9, 10, 11, 12, 13, 14], "edg": [3, 12, 19, 25], "bar": 3, "width": [3, 12], "line": [3, 12, 13, 14, 19], "annot": 3, "font": [3, 8, 12, 13], "tick": [3, 13, 14], "axi": [3, 13, 17], "limit": [3, 19], "highlight": 3, "area": [3, 17, 25], "alpha": 3, "ad": 3, "drawn": 3, "legend": [3, 12, 13, 14], "shap": [3, 8, 11, 15, 19], "shaplei": 3, "addit": [3, 4, 5, 7, 13, 17, 19, 25], "intern": [3, 19, 25], "librari": [3, 13, 19], "ax": [3, 9, 12, 13], "matplotlib": [3, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19], "heatmap": 3, "8": [3, 4, 5, 12, 16, 17, 19, 25], "vmin": 3, "vmax": 3, "grid_on": 3, "cmap": 3, "rdbu_r": 3, "cmap_n_color": 3, "cbar_kw": 3, "facecolor_dark": [3, 11], "add_importance_map": 3, "cbar_pct": 3, "featuremap": 3, "versu": 3, "seaborn": [3, 8, 9, 10, 11, 12, 13, 14, 15, 16, 19], "level": [3, 6, 7, 16, 17, 18, 19, 23, 25, 26, 27], "e": [3, 4, 14, 15, 17, 18, 19, 22, 23, 25, 30], "g": [3, 4, 17, 18, 19, 22, 23, 25, 30], "protein": [3, 4, 6, 17, 18, 19, 22, 23, 24, 28, 29, 30], "shown": 3, "feat_impact": 3, "displai": [3, 13], "sum": [3, 17, 25], "std": 3, "aggreg": 3, "positions_onli": 3, "further": [3, 17, 19, 25], "across": [3, 13, 17, 19], "recommend": [3, 5, 7, 19], "when": [3, 5, 12, 19, 25], "emphas": [3, 19], "fewer": 3, "value_typ": 3, "height": 3, "figur": 3, "inch": 3, "pyplot": [3, 8, 9, 10, 11, 12, 13, 14, 15, 16], "anchor": [3, 12, 25], "colormap": 3, "infer": [3, 19], "seismic": 3, "space": [3, 5, 12, 19], "impact": 3, "discret": 3, "diverg": 3, "sequenti": 3, "classifi": 3, "kei": [3, 9, 12, 19, 25], "colorbar": 3, "under": [3, 7, 19], "depicet": 3, "depict": 3, "jmd_n": [3, 4, 6, 16], "jmd_c": [3, 4, 6, 16], "set_xticklabel": 3, "widht": 3, "tick_param": 3, "classif": [3, 6, 7, 15, 16, 17, 18, 23, 25, 26, 30], "pcolormesh": 3, "effect": [3, 19, 25, 30], "document": [3, 25], "more": [3, 12, 13, 15, 19], "detail": [3, 6, 7, 17, 18, 19, 21], "cpp": [3, 4, 8, 11, 18, 21, 22, 23, 26, 28], "code": [3, 8, 9, 10, 11, 12, 13, 14], "update_seq_s": 3, "retriev": [4, 15], "compon": [4, 5, 7, 17, 25], "continu": [4, 11, 15, 19], "domain": [4, 6, 15, 16, 25], "transmembran": [4, 25], "membran": [4, 25], "principl": [4, 18], "distinct": [4, 18, 19, 22, 23, 25], "segment": [4, 15, 28], "pattern": [4, 12, 15], "properti": [4, 12, 19, 25], "express": 4, "realiz": 4, "For": [4, 6, 16, 19, 30], "over": [4, 15], "valid": [4, 19], "tmd_e": 4, "tmd_n": 4, "tmd_c": 4, "ext_c": 4, "ext_n": 4, "tmd_jmd": [4, 15], "jmd_n_tmd_n": 4, "tmd_c_jmd_c": 4, "ext_n_tmd_n": 4, "tmd_c_ext_c": 4, "get_df_part": [4, 15], "df_seq": [4, 5, 6, 15, 16, 28], "list_part": [4, 15], "all_part": 4, "datafran": 4, "compris": [4, 12, 17], "tmd_start": [4, 6, 16], "tmd_stop": [4, 6, 16], "string": 4, "len": [4, 9, 16], "lenght": 4, "resp": [4, 25], "extra": [4, 14, 25], "possibl": [4, 16, 25, 30], "get": [4, 8, 12, 14, 26], "sf": [4, 15], "dom_gsec": [4, 15, 16, 25], "n_split_min": 4, "n_split_max": [4, 15], "steps_pattern": 4, "n_min": 4, "n_max": 4, "len_max": 4, "steps_periodicpattern": 4, "periodicpattern": 4, "greater": 4, "greatest": 4, "whole": [4, 6, 17], "specfii": 4, "smallest": [4, 25], "integ": 4, "3": [4, 5, 10, 11, 12, 16, 17, 19, 25], "6": [4, 16, 17, 25], "vari": [4, 16], "paramt": 4, "argumetn": 4, "get_featur": 4, "load_scal": [4, 15, 17, 18, 23, 25], "combin": [4, 15, 19, 25], "form": [4, 25], "feat_matrix": [4, 15], "n_job": [4, 15], "return_label": 4, "seri": 4, "job": 4, "parallel": [4, 25], "spars": 4, "feat_nam": 4, "convert": 4, "depend": [4, 25], "last": 4, "step1": 4, "step2": 4, "add_feat_valu": 4, "dict_scal": 4, "letter": 4, "feature_valu": 4, "n_part": 4, "ha": [4, 19, 25], "where": [4, 5, 13, 25], "structur": [4, 24, 25], "th": [4, 7, 17], "n_split": 4, "p1": 4, "p2": 4, "pn": 4, "end": [4, 19, 25], "odd": [4, 16], "even": 4, "give": 4, "add_dif": 4, "sample_nam": 4, "ref_group": 4, "add_posit": 4, "part_split": 4, "feat_posit": 4, "total": [4, 5, 17, 19, 25], "n_compon": 5, "pca_kwarg": 5, "determinist": [5, 18, 22, 23], "unlabel": [5, 18, 22, 23, 25, 30], "offer": [5, 16, 19], "approach": [5, 15, 16, 19, 30], "pu": [5, 18, 22, 23, 25], "emploi": 5, "princip": [5, 7, 17, 25], "analysi": [5, 7, 15, 17, 18, 19, 22, 23, 25], "pca": [5, 17], "dimension": [5, 24], "pc": [5, 7, 25], "iter": 5, "reliabl": [5, 16, 19], "These": [5, 7, 14, 15, 17, 19, 30], "those": [5, 25], "distant": 5, "altern": [5, 30], "also": [5, 16, 17, 19, 25], "80": 5, "cover": 5, "varianc": 5, "identif": [5, 24], "datapoint": 5, "inspir": [5, 19], "techniqu": [5, 30], "an": [5, 6, 7, 12, 14, 15, 16, 17, 18, 19, 21, 24, 25], "theoret": [5, 25], "high": [5, 24, 25], "n_neg": 5, "label_po": 5, "name_neg": 5, "rel_neg": 5, "col_class": 5, "newli": 5, "updat": [5, 19], "new": [5, 19], "store": 5, "Will": 5, "initi": [5, 25], "small": [5, 15, 16, 18, 19, 22, 23, 26, 31], "datafor": 5, "conta": 5, "po": 5, "unl": 5, "numpi": [5, 15, 19], "np": [5, 15], "atgc": 5, "gcta": 5, "actg": 5, "tacg": 5, "mode": 5, "dpul": 5, "info": 6, "random": [6, 16, 25], "non_canonical_aa": 6, "remov": [6, 13, 14], "min_len": [6, 16], "max_len": [6, 16], "aa_window_s": [6, 16], "9": [6, 10, 14, 15, 16, 17, 19, 25], "load": [6, 7, 18, 19, 23, 32], "benchmark": [6, 15, 17, 18, 23], "dataset": [6, 7, 15, 17, 18, 19, 22, 23, 30, 31], "categor": [6, 14, 16], "dom": [6, 16, 25], "seq": [6, 16, 25], "By": 6, "overview": [6, 7, 16, 19], "tabl": [6, 7, 16, 19], "depth": [6, 7, 17, 18, 23], "per": [6, 16, 25], "randomli": [6, 16], "liter": 6, "keep": 6, "gap": 6, "handl": [6, 12], "canon": [6, 17], "don": 6, "symbol": 6, "disabl": [6, 17], "window": [6, 25], "aa_": 6, "df_info": [6, 16], "entri": [6, 16, 17], "uniprot": 6, "binari": [6, 15, 16, 30], "stop": 6, "seq_amylo": [6, 16, 17, 25], "guid": [6, 7], "tutori": [6, 7, 15, 18, 19, 22], "just_aaindex": [7, 17], "unclassified_out": 7, "top60_n": [7, 17], "aaontologi": [7, 15, 18, 21, 23, 24, 26], "scales_raw": [7, 17, 25], "encompass": [7, 25], "aaindex": [7, 15, 17, 24], "kawashima08": [7, 24, 25], "along": [7, 15], "min": [7, 17, 25], "max": [7, 17, 25], "organ": [7, 19], "scales_cat": [7, 17, 25], "breimann23b": [7, 18, 21, 24, 25], "compress": [7, 17, 25], "scales_pc": [7, 17, 25], "aaclust": [7, 17, 18, 21, 22, 23, 24, 25], "top": [7, 14, 25], "60": [7, 17, 25], "top60": [7, 17, 25], "individu": [7, 19], "accompani": 7, "top60_ev": [7, 17, 25], "normliz": 7, "raw": [7, 17, 25], "best": [7, 17], "Or": [7, 16], "relev": 7, "exclus": 7, "suffix": [7, 16, 19], "scale_id": [7, 17], "deriv": 7, "descript": [7, 17, 19, 25], "scale_descript": [7, 17], "current": [8, 12], "plot_set": [8, 9, 10, 11, 12, 14, 15, 16], "here": [8, 16, 19, 25], "plt": [8, 9, 10, 11, 12, 13, 14, 15, 16], "sn": [8, 9, 10, 11, 12, 13, 14, 15, 16], "b": [8, 10, 11, 12, 13, 14, 25], "23": [8, 10, 11, 12, 13, 14, 25], "27": [8, 12, 13, 14], "43": [8, 12, 13, 14], "plot_get_clist": [8, 12, 13, 14], "barplot": [8, 9, 10, 11, 12, 13, 14, 15], "palett": [8, 9, 10, 11, 12, 13, 14, 15], "despin": [8, 9, 12, 13, 14, 15, 16], "bigger": 8, "tight_layout": [8, 9, 12, 13, 14], "show": [8, 9, 10, 11, 12, 13, 14, 15, 16, 17], "png": [8, 9, 10, 11, 12, 13], "hire": [8, 9, 10, 11, 12, 13], "pdf": [8, 9, 10, 11, 12, 13], "prelud": [8, 9, 10, 11, 12, 13, 32], "dict_cat": 9, "weight_bold": [9, 13], "xaxi": 9, "set_vis": 9, "n_color": [10, 11, 14], "fuction": 10, "eight": 10, "colorl": 10, "appeal": [10, 14], "visual": [10, 13, 14, 19], "33": [10, 11], "notebook": 10, "color_palett": [10, 11], "101": 11, "shp": 11, "least": [11, 12, 19], "central": [11, 29], "rgb": 11, "14": [11, 14, 25], "light_palett": 11, "lighter": 11, "packag": [11, 19], "list_cat": 12, "loc": [12, 17], "upper": 12, "left": [12, 25], "loc_out": 12, "ncol": [12, 14], "labelspac": 12, "columnspac": 12, "handletextpad": 12, "handlelength": 12, "fontsiz": [12, 14], "fontsize_titl": 12, "weight": [12, 24, 25], "fontsize_weight": 12, "marker": 12, "marker_s": 12, "lw": 12, "linestyl": 12, "edgecolor": 12, "hatch": [12, 14], "hatchcolor": 12, "title_align_left": 12, "independntli": 12, "customiz": 12, "flexbili": 12, "convini": 12, "func": 12, "attach": 12, "item": 12, "locat": [12, 25], "25": 12, "thei": [12, 15, 16, 19], "union": 12, "coordin": 12, "": [12, 16, 17, 19, 24, 25], "vertic": 12, "horizont": 12, "bewtween": 12, "text": [12, 13], "visiabl": 12, "corner": 12, "round": [12, 15], "style": [12, 13], "Not": 12, "fill": [12, 19], "furhter": 12, "word": 12, "line2d": 12, "core": 12, "gca": 12, "font_scal": [13, 16], "arial": 13, "adjust_only_font": 13, "adjust_further_el": 13, "no_tick": 13, "short_tick": 13, "no_ticks_x": [13, 14], "short_ticks_x": 13, "no_ticks_i": 13, "short_ticks_i": [13, 14], "show_opt": 13, "configur": 13, "global": 13, "embed": 13, "vector": [13, 25], "format": [13, 25], "svg": 13, "ensur": [13, 16, 19], "compat": 13, "edit": 13, "variou": [13, 15, 19, 25, 28], "viewer": 13, "softwar": [13, 19], "factor": [13, 25], "element": [13, 14], "set_context": 13, "common": [13, 19], "verdana": 13, "helvetica": 13, "dejavu": 13, "san": 13, "bold": 13, "leav": [13, 19], "unchang": 13, "make": [13, 14, 15, 16, 19], "layout": 13, "errorbar": 13, "choos": 13, "mark": 13, "short": 13, "ignor": [13, 16, 19], "runtim": 13, "polt": 13, "rcparam": 13, "manag": 13, "some": [14, 25], "readi": [14, 16], "view": [14, 19, 30], "let": 14, "right": [14, 25], "spine": 14, "look": 14, "just": 14, "easili": [14, 15, 16, 19], "comparison": [14, 15], "d": [14, 17], "increas": [14, 25], "match": [14, 24], "independ": 14, "plot_gcf": [14, 15], "plot_set_legend": 14, "dive": 15, "power": 15, "capabl": [15, 25], "framework": [15, 18, 22, 23], "dedic": 15, "free": [15, 17, 25], "In": [15, 16, 19, 30], "gamma": [15, 25], "secretas": [15, 24, 25], "substrat": [15, 24, 25], "exampl": [15, 16, 19, 22, 30], "we": [15, 16, 19], "ll": 15, "focu": [15, 19], "extract": 15, "interpret": [15, 18, 19, 21, 22, 23, 24, 25, 29], "how": 15, "har": 15, "task": [15, 19, 30], "essenti": [15, 16, 19], "randomforest": 15, "With": 15, "have": [15, 16, 17, 19, 25, 30], "\u03b3": [15, 24], "hand": [15, 25], "effortlessli": 15, "furthermor": 15, "predominantli": 15, "hierarch": 15, "known": 15, "your": [15, 18, 19, 21], "fingertip": 15, "now": 15, "50": [15, 16], "centerpiec": 15, "support": [15, 19, 25], "sinc": 15, "problem": 15, "machin": [15, 18, 19, 21, 24, 30], "lightweight": 15, "agglom": 15, "close": [15, 19], "agglomerativeclust": 15, "aac": 15, "integr": [15, 19, 24], "target": [15, 19], "middl": [15, 25], "adjac": [15, 25], "region": [15, 24, 25], "discontinu": 15, "togeth": [15, 28], "input": [15, 19, 28], "characterist": [15, 25], "As": 15, "baselin": 15, "entir": [15, 19], "ensembl": 15, "randomforestclassifi": 15, "model_select": 15, "cross_val_scor": 15, "rf": 15, "cv_base": 15, "accuraci": [15, 17, 24], "f": [15, 17], "58": [15, 25], "take": 15, "littl": 15, "time": 15, "improv": [15, 19, 24], "around": 15, "000": [15, 17], "cv": 15, "tab": 15, "red": 15, "ylabel": 15, "iloc": 16, "head": [16, 17], "13": [16, 25], "predictor": [16, 25], "aa_caspase3": [16, 25], "233": [16, 17, 25], "185605": [16, 25], "705": [16, 17, 25], "184900": [16, 25], "prosper": [16, 24, 25], "aa_furin": [16, 25], "71": [16, 25], "59003": [16, 25], "163": [16, 17, 25], "58840": [16, 25], "aa_ldr": [16, 25], "342": [16, 25], "118248": [16, 25], "35469": [16, 25], "82779": [16, 25], "idp": [16, 24, 25], "seq2seq": [16, 24, 25], "aa_mmp2": [16, 25], "573": [16, 25], "312976": [16, 25], "2416": [16, 25], "310560": [16, 25], "aa_rnabind": [16, 25], "221": [16, 17, 25], "55001": [16, 25], "6492": [16, 25], "48509": [16, 25], "gmksvm": [16, 25], "ru": [16, 25], "aa_sa": [16, 25], "101082": [16, 25], "84523": [16, 25], "1414": [16, 25], "8484": [16, 25], "511": [16, 25], "903": [16, 17, 25], "rerf": [16, 24, 25], "pred": [16, 24, 25], "seq_capsid": [16, 17, 25], "7935": [16, 25], "3364680": [16, 25], "3864": [16, 25], "4071": [16, 25], "viralpro": [16, 24, 25], "seq_disulfid": [16, 17, 25], "2547": [16, 25], "614470": [16, 25], "897": [16, 25], "1650": [16, 25], "dipro": [16, 25], "seq_loc": [16, 17, 25], "1835": [16, 25], "732398": [16, 25], "1045": [16, 25], "790": [16, 17, 25], "nan": [16, 25], "seq_solubl": [16, 17, 25], "17408": [16, 25], "4432269": [16, 25], "8704": [16, 25], "solpro": [16, 24, 25], "seq_tail": [16, 17, 25], "6668": [16, 25], "2671690": [16, 25], "2574": [16, 25], "4094": [16, 25], "12": [16, 25], "126": [16, 25], "92964": [16, 25], "63": [16, 25], "prefix": 16, "exemplifi": 16, "df_seq1": 16, "df_seq2": 16, "df_seq3": 16, "capsid_1": 16, "mvthnvkinkhvtrrsyssakevleippltevqtasykwfmdkgik": 16, "capsid_2": 16, "mkkrqkkmtlsnftdtsfqdfvsaeqvddksamalinraedfkagq": 16, "balanc": 16, "200": [16, 17], "value_count": 16, "dtype": 16, "int64": 16, "distribut": 16, "warn": 16, "simplefilt": 16, "action": 16, "futurewarn": 16, "list_seq_len": 16, "histplot": 16, "binwidth": 16, "xlim": 16, "1500": 16, "800": [16, 17], "residu": [16, 17, 24, 25], "seen": 16, "caspase3_1": 16, "mslfdlfrgffgfpgprshrdpffggmtrdedddeeeeeeggswgr": 16, "caspase3_2": 16, "mevtgdagvpesgeirtlkpcllrrnysreqhgvaascledlrska": 16, "caspase3_3": 16, "mrarsgargalllalllcwdptpslagidsggqalpdsfpsapaeq": 16, "caspase3_4": 16, "mdakarncllqhrealekdiktsyimdhmisdgfltiseeekvrn": 16, "conveni": 16, "flank": 16, "side": [16, 17, 25], "equal": 16, "popular": [16, 30], "caspase3_1_pos4": 16, "mslfdlfrg": 16, "caspase3_1_pos5": 16, "slfdlfrgf": 16, "caspase3_1_pos6": 16, "lfdlfrgff": 16, "caspase3_1_pos7": 16, "fdlfrgffg": 16, "21": [16, 25], "caspase3_55_pos170": 16, "kkrkleeeedgklkkpknkdk": 16, "caspase3_29_pos185": 16, "cphhercsdsdglappqhlir": 16, "caspase3_64_pos431": 16, "dnplnwpdekdssfyrnfgst": 16, "caspase3_93_pos455": 16, "fvknmnrdstfivnktitaev": 16, "caspase3_38_pos129": 16, "ssfdldydfqrdyydrmysyp": 16, "caspase3_8_pos33": 16, "rppqlrpgaptslqtepqgnp": 16, "typic": [16, 22, 25], "But": 16, "mani": 16, "face": 16, "challeng": [16, 19], "might": [16, 25], "unbalanc": [16, 18, 19, 22, 23, 26, 31], "lack": 16, "clear": [16, 19], "scenario": 16, "denot": [16, 25], "_pu": [16, 25], "dom_gsec_pu": [16, 25], "p05067": 16, "mlpglallllaawtaralevptdgnagllaepqiamfcgrlnmhmn": 16, "701": [16, 17], "723": [16, 17], "faedvgsnkg": 16, "aiiglmvggvviatvivitlvml": 16, "kkkqytsihh": 16, "p14925": 16, "magrarsgllllllgllalqssclafrsplsvfkrfkettrsfsn": 16, "868": [16, 17], "890": 16, "klstepgsgv": 16, "svvlittllvipvlvllaivmfi": 16, "rwkksrafgd": 16, "p70180": 16, "mrslllftfsacvllarvllaggassgagdtrpgsrrrarealaaq": 16, "477": 16, "499": 16, "pckssgglee": 16, "savtgivvgallgagllmafyff": 16, "rkkyriti": 16, "q03157": 16, "mgptspaargqgrrwrppplplllplsllllraqlavgnlavgsp": 16, "585": [16, 17], "607": [16, 17], "apsgtgvsr": 16, "alsgllimgagggslivlslll": 16, "rkkkpygti": 16, "q06481": 16, "maatgtaaaaatgrllllllvgltapalalagyiealaanagtgfa": 16, "694": [16, 17, 25], "716": [16, 17], "lredfslsss": 16, "aligllviavaiatvivislvml": 16, "rkrqygtish": 16, "121": 16, "p36941": 16, "mllpwatsapglawgplvlglfgllaasqpqavppyasenqtcrdq": 16, "226": [16, 17], "248": [16, 17], "plppemsgtm": 16, "lmlavllplafflllatvfsciw": 16, "kshpslcrkl": 16, "122": 16, "p25446": 16, "mlwiwavlplvlagsqlrvhtqgtnsiseslklrrrvretdkncs": 16, "170": [16, 17], "187": 16, "ncrkqsprnr": 16, "lwlltilvlliplvfiyr": 16, "kyrkrkcwkr": 16, "123": 16, "q9p2j2": 16, "mvwclglavlslvisqgadgrgkpevvsvvgragesvvlgcdllpp": 16, "738": [16, 17], "760": [16, 17], "pgllpqpvla": 16, "gvvggvcflgvavlvsilagcl": 16, "nrrraarrrr": 16, "124": 16, "q96j42": 16, "mvpaagrrpprvmrllgwwqvllwvlglpvrgvevaeesgrlwse": 16, "324": [16, 17], "lpstliksvd": 16, "wllvfslfflisfimyati": 16, "rtesirwlip": 16, "125": 16, "p0dpa2": 16, "mrvggafhlllvclspallsavringdgqevlylaegdnvrlgcpi": 16, "265": 16, "287": 16, "kvsdsrrigv": 16, "iigivlgsllalgclavgiwglv": 16, "ccccggsgag": 16, "df_seq_pu": 16, "689": [16, 17], "p60852": 16, "maggsattwgypvallllvatlglgrwlqpdpglpglrhsydcgik": 16, "602": [16, 17], "624": [16, 17], "dsngnsslrp": 16, "llwavlllpavalvlgfgvfvgl": 16, "sqtwaqklw": 16, "690": [16, 17], "p20239": 16, "marwqrkasvsspcgrsiyrflsllftlvtsvnsvslpqsenpafp": 16, "684": [16, 17], "703": [16, 17], "iiakdiaskt": 16, "lgavaalvgsavilgficyl": 16, "ykkrtirfnh": 16, "691": [16, 17], "p21754": 16, "melsyrlficlllwgstelcypqplwllqggashpetsvqpvlvec": 16, "387": [16, 17], "409": 16, "eqwalpsdt": 16, "vvllgvglavvvsltltavilvl": 16, "trrcrtashp": 16, "692": [16, 17], "q12836": 16, "mwllrcvllcvslslavsgqhkpeapdyssvlhcgpwsfqfavnln": 16, "506": [16, 17], "528": 16, "eklrvpvdsk": 16, "vlwvaglsgtlilgallvsylav": 16, "kkqkscpdqm": 16, "693": [16, 17], "q8tcw7": 16, "meqiwllllltirvlpgsaqfngyncdanlhsrfpaerdisvycgv": 16, "374": 16, "396": [16, 17], "pfqlnaitsa": 16, "lisgmvilgvtsfslllcslal": 16, "hrkgptslvl": 16, "six": 17, "origin": 17, "df_raw": 17, "df_pc": 17, "andn920101": 17, "argp820101": 17, "argp820102": 17, "argp820103": 17, "begf750101": 17, "begf750102": 17, "begf750103": 17, "bhar880101": 17, "bigc670101": 17, "biov880101": 17, "koeh090103": 17, "koeh090104": 17, "koeh090105": 17, "koeh090106": 17, "koeh090107": 17, "koeh090108": 17, "koeh090109": 17, "koeh090110": 17, "koeh090111": 17, "koeh090112": 17, "494": 17, "230": 17, "355": 17, "504": 17, "512": 17, "249": 17, "164": 17, "476": 17, "194": 17, "300": 17, "551": 17, "222": 17, "308": 17, "273": 17, "140": 17, "522": 17, "345": 17, "864": 17, "404": 17, "579": 17, "783": 17, "205": 17, "323": 17, "936": 17, "279": 17, "174": 17, "449": 17, "346": 17, "285": 17, "416": 17, "867": 17, "191": 17, "583": 17, "889": 17, "720": 17, "556": 17, "875": 17, "919": 17, "796": 17, "440": 17, "420": 17, "177": 17, "019": 17, "032": 17, "713": 17, "267": 17, "811": 17, "488": 17, "106": 17, "542": 17, "732": 17, "593": 17, "718": 17, "857": 17, "853": 17, "913": 17, "681": 17, "877": 17, "762": 17, "601": 17, "670": 17, "574": 17, "076": 17, "049": 17, "189": 17, "148": 17, "182": 17, "029": 17, "186": 17, "017": 17, "025": 17, "026": 17, "138": 17, "309": 17, "388": 17, "544": 17, "608": 17, "538": 17, "571": 17, "481": 17, "112": 17, "h": 17, "840": 17, "082": 17, "053": 17, "651": 17, "633": 17, "561": 17, "455": 17, "856": 17, "402": 17, "370": 17, "500": 17, "545": 17, "618": 17, "726": 17, "838": 17, "543": 17, "671": 17, "663": 17, "885": 17, "246": 17, "074": 17, "167": 17, "091": 17, "051": 17, "398": 17, "276": 17, "434": 17, "003": 17, "004": 17, "687": 17, "737": 17, "933": 17, "873": 17, "779": 17, "734": 17, "405": 17, "l": 17, "272": 17, "577": 17, "989": 17, "281": 17, "078": 17, "118": 17, "333": 17, "259": 17, "m": 17, "704": 17, "445": 17, "824": 17, "450": 17, "620": 17, "803": 17, "289": 17, "132": 17, "185": 17, "192": 17, "180": [17, 25], "419": 17, "224": [17, 25], "988": 17, "023": 17, "057": 17, "046": 17, "675": 17, "203": 17, "552": 17, "645": 17, "519": 17, "756": 17, "753": 17, "706": 17, "599": 17, "587": 17, "293": 17, "605": 17, "736": 17, "223": 17, "220": 17, "859": 17, "376": 17, "367": 17, "322": 17, "678": 17, "707": 17, "444": 17, "662": 17, "570": 17, "594": 17, "q": 17, "211": 17, "131": 17, "395": 17, "795": 17, "539": 17, "206": 17, "676": 17, "733": 17, "628": 17, "483": 17, "r": [17, 25], "531": 17, "047": 17, "110": 17, "489": 17, "940": 17, "735": 17, "215": 17, "852": 17, "883": 17, "743": 17, "362": 17, "679": 17, "238": 17, "851": 17, "188": 17, "399": 17, "589": 17, "655": 17, "590": 17, "382": 17, "384": 17, "379": 17, "598": 17, "352": 17, "312": 17, "366": 17, "578": 17, "407": 17, "364": 17, "331": 17, "250": 17, "514": 17, "v": [17, 25], "498": 17, "809": 17, "365": 17, "492": 17, "077": 17, "033": 17, "111": [17, 25], "156": 17, "154": 17, "496": 17, "w": 17, "926": 17, "040": 17, "146": 17, "600": 17, "400": 17, "104": 17, "316": 17, "244": 17, "802": 17, "709": 17, "107": 17, "502": 17, "806": 17, "588": 17, "286": 17, "644": 17, "474": 17, "410": 17, "429": 17, "413": 17, "235": 17, "336": 17, "586": [17, 25], "term": [17, 25], "lins030110": 17, "asa": [17, 25], "volum": [17, 25], "surfac": [17, 25], "fold": [17, 25], "coil": [17, 25], "turn": [17, 25], "median": 17, "resi": 17, "lins030113": 17, "janj780101": 17, "janin": [17, 25], "et": [17, 24, 25], "al": [17, 24, 25], "janj780103": 17, "expos": [17, 19, 25], "lins030104": 17, "lins030107": 17, "win3": 17, "choc760102": 17, "prot": 17, "lins030116": 17, "\u03b2": [17, 25], "strand": [17, 25], "lins030119": 17, "lins030103": 17, "hydrophil": [17, 25], "resid": 17, "stem": 17, "top60_id": 17, "acc": 17, "presenc": [17, 25], "absenc": [17, 25], "df_top60": 17, "aac01": 17, "aac02": 17, "aac03": 17, "aac04": 17, "aac05": 17, "aac06": 17, "aac07": 17, "aac08": 17, "aac09": 17, "aac10": 17, "df_eval": 17, "overal": 17, "aa5_caspase3": 17, "aa5_furin": 17, "aa5_ldr": 17, "aa5_mmp2": 17, "aa9_ldr": 17, "aa9_mmp2": 17, "aa9_rnabind": 17, "aa9_sa": 17, "aa13_caspase3": 17, "aa13_furin": 17, "aa13_ldr": 17, "aa13_mmp2": 17, "aa13_rnabind": 17, "aa13_sa": 17, "761": 17, "827": 17, "746": 17, "646": 17, "884": 17, "862": 17, "901": 17, "612": 17, "680": 17, "659": 17, "664": 17, "918": 17, "652": 17, "615": 17, "747": 17, "830": 17, "742": 17, "653": 17, "886": 17, "855": 17, "907": 17, "688": 17, "642": 17, "657": 17, "792": 17, "916": 17, "656": 17, "741": 17, "829": 17, "648": 17, "904": 17, "685": 17, "636": 17, "710": 17, "791": 17, "914": 17, "695": 17, "613": 17, "828": 17, "731": 17, "654": 17, "906": 17, "686": 17, "640": 17, "714": 17, "915": 17, "610": 17, "739": 17, "752": 17, "888": 17, "658": 17, "682": 17, "649": 17, "665": 17, "789": 17, "611": 17, "833": 17, "650": 17, "882": 17, "858": 17, "606": 17, "638": 17, "711": 17, "661": 17, "831": 17, "603": 17, "669": 17, "787": 17, "826": 17, "647": 17, "905": 17, "614": 17, "750": 17, "748": 17, "860": 17, "908": 17, "632": 17, "aac11": 17, "749": 17, "832": 17, "751": 17, "781": 17, "683": 17, "aac12": 17, "708": 17, "666": 17, "785": 17, "917": 17, "aac13": 17, "744": 17, "634": 17, "aac14": 17, "902": 17, "673": 17, "794": 17, "604": 17, "aac15": 17, "617": 17, "660": 17, "aac16": 17, "755": 17, "635": 17, "702": 17, "aac17": 17, "740": 17, "835": 17, "793": 17, "609": 17, "aac18": 17, "757": 17, "730": 17, "643": 17, "881": 17, "899": 17, "912": 17, "aac19": 17, "764": 17, "745": 17, "887": 17, "909": 17, "aac20": 17, "677": 17, "aac21": 17, "637": 17, "aac22": 17, "823": 17, "880": 17, "700": 17, "788": 17, "aac23": 17, "629": 17, "aac24": 17, "641": 17, "aac25": 17, "639": 17, "879": 17, "aac26": 17, "698": 17, "aac27": 17, "854": 17, "aac28": 17, "821": 17, "898": 17, "aac29": 17, "763": 17, "900": 17, "aac30": 17, "911": 17, "616": 17, "aac31": 17, "727": 17, "631": 17, "784": 17, "aac32": 17, "aac33": 17, "817": 17, "922": 17, "aac34": 17, "729": 17, "aac35": 17, "758": 17, "822": 17, "aac36": 17, "759": 17, "874": 17, "aac37": 17, "596": 17, "aac38": 17, "766": 17, "921": 17, "aac39": 17, "786": 17, "aac40": 17, "819": 17, "870": 17, "775": 17, "910": 17, "aac41": 17, "896": 17, "aac42": 17, "861": 17, "895": 17, "799": 17, "674": 17, "aac43": 17, "767": 17, "815": 17, "871": 17, "848": 17, "782": 17, "625": 17, "aac44": 17, "825": 17, "621": 17, "696": 17, "780": 17, "923": 17, "aac45": 17, "844": 17, "893": 17, "672": 17, "774": 17, "aac46": 17, "812": 17, "626": 17, "872": 17, "843": 17, "667": 17, "623": 17, "aac47": 17, "717": 17, "aac48": 17, "771": 17, "891": 17, "776": 17, "619": 17, "aac49": 17, "807": 17, "630": 17, "850": 17, "892": 17, "aac50": 17, "728": 17, "773": 17, "aac51": 17, "768": 17, "865": 17, "836": 17, "894": 17, "668": 17, "697": 17, "aac52": 17, "814": 17, "aac53": 17, "765": 17, "798": 17, "aac54": 17, "699": 17, "770": 17, "aac55": 17, "769": 17, "580": 17, "595": 17, "aac56": 17, "aac57": 17, "aac58": 17, "715": 17, "568": 17, "aac59": 17, "725": 17, "797": 17, "592": 17, "562": 17, "aac60": 17, "563": 17, "772": 17, "529": 17, "813": 17, "546": 17, "24": [17, 25], "df_cat_1": 17, "df_raw_1": 17, "df_scales_1": 17, "selected_scal": 17, "tolist": 17, "df_aac1": 17, "buna790103": 17, "bura740102": 17, "cham820102": 17, "cham830102": 17, "cham830103": 17, "cham830105": 17, "chop780101": 17, "chop780204": 17, "chop780206": 17, "kars160110": 17, "kars160112": 17, "kars160118": 17, "kars160119": 17, "kars160120": 17, "kars160122": 17, "lins030105": 17, "lins030109": 17, "264": 17, "262": 17, "425": 17, "298": 17, "863": 17, "952": 17, "149": 17, "947": 17, "442": 17, "256": 17, "557": 17, "213": 17, "397": 17, "473": 17, "566": 17, "247": 17, "311": 17, "152": 17, "354": 17, "462": 17, "119": 17, "085": 17, "208": 17, "139": 17, "169": 17, "133": 17, "240": 17, "470": 17, "160": 17, "393": 17, "313": 17, "145": 17, "134": 17, "424": 17, "115": 17, "044": 17, "195": 17, "495": 17, "554": 17, "433": 17, "458": 17, "114": 17, "463": 17, "070": 17, "421": 17, "218": 17, "553": 17, "067": 17, "021": 17, "526": 17, "135": 17, "480": 17, "043": 17, "087": 17, "532": 17, "335": 17, "963": 17, "317": 17, "319": 17, "381": 17, "198": 17, "468": 17, "390": 17, "339": 17, "282": 17, "515": 17, "486": 17, "275": 17, "257": [17, 19], "350": 17, "150": [17, 19], "534": 17, "178": 17, "565": 17, "550": 17, "320": 17, "327": 17, "326": 17, "369": 17, "028": 17, "093": 17, "537": 17, "540": 17, "231": 17, "002": 17, "372": 17, "457": 17, "120": 17, "209": 17, "081": 17, "467": 17, "183": 17, "exclud": 17, "well": [17, 19], "subordin": 17, "want": 17, "unclassified_in": 17, "guyh850104": 17, "energi": [17, 25], "appar": 17, "calcul": 17, "ja": 17, "guyh850105": 17, "racs770103": 17, "chain": [17, 25], "orient": 17, "prefer": [17, 25], "rackovski": [17, 25], "vheg790101": 17, "tfe": 17, "lipophil": 17, "phase": 17, "transfer": [17, 25], "von": 17, "buri": [17, 25], "buriabl": 17, "biov880102": 17, "werd780101": 17, "propens": [17, 25], "insid": [17, 25], "wertz": 17, "scheraga": [17, 25], "predict": [18, 19, 22, 23, 24, 25, 29, 30], "engin": [18, 19, 22, 23, 29], "dpulearn": [18, 21, 22, 23], "train": [18, 19, 22, 23, 30], "moreov": [18, 23], "load_data": [18, 23], "pypi": 18, "conda": [18, 19], "forg": 18, "pip": [18, 19], "introduct": 18, "usag": [18, 19, 22], "contribut": [18, 25], "api": [18, 19], "explain": [18, 19, 24, 26], "ai": [18, 19, 24, 26], "perturb": [18, 30], "modul": 18, "search": 18, "page": 18, "work": [18, 21], "pleas": [18, 19, 21], "cite": [18, 21], "_": [18, 21], "breimann": [18, 21, 24], "kamp": [18, 21], "steiner": [18, 21], "frishman": [18, 21], "2023": [18, 21], "ontologi": [18, 21, 24], "biorxiv": [18, 21, 24], "welcom": 19, "thank": 19, "open": 19, "project": [19, 25], "focus": 19, "involv": 19, "invalu": 19, "made": 19, "wai": 19, "file": 19, "github": 19, "issu": 19, "tracker": 19, "submit": 19, "particip": [19, 25], "discuss": 19, "newcom": 19, "tackl": 19, "email": 19, "stephanbreimann": 19, "gmail": 19, "com": 19, "question": 19, "comprehens": 19, "robust": 19, "life": [19, 30, 31], "scienc": [19, 30, 31], "seamlessli": 19, "flexibl": [19, 25], "interoper": 19, "biopython": 19, "reimplement": 19, "exist": [19, 30], "solut": 19, "biolog": [19, 22, 25, 30], "context": 19, "relianc": 19, "opaqu": 19, "box": 19, "empir": 19, "insight": 19, "cut": 19, "fair": 19, "transpar": 19, "re": [19, 24], "commit": 19, "divers": 19, "aspect": 19, "causal": 19, "minim": 19, "reproduc": 19, "mre": 19, "amount": 19, "demonstr": 19, "self": 19, "necessari": 19, "confirm": 19, "replic": 19, "guidelin": 19, "To": [19, 26], "git": 19, "http": 19, "breimanntool": 19, "master": 19, "repositori": 19, "your_usernam": 19, "navig": 19, "folder": 19, "up": 19, "cd": 19, "isol": 19, "activ": [19, 25], "poetri": 19, "pytest": 19, "hypothesi": 19, "execut": 19, "case": 19, "directori": 19, "out": [19, 25], "readm": 19, "command": 19, "cheat": 19, "sheet": [19, 25], "substanti": 19, "minor": 19, "typo": 19, "concis": 19, "branch": [19, 25], "fix": 19, "date": 19, "readthedoc": 19, "org": 19, "crucial": 19, "modif": 19, "render": 19, "correctli": 19, "strive": 19, "codebas": 19, "standalon": 19, "special": 19, "carri": 19, "complet": 19, "process": 19, "fulfil": 19, "purpos": 19, "inherit": 19, "supplementari": 19, "accordingli": 19, "cppplot": 19, "semi": 19, "strictli": 19, "adher": 19, "aforement": 19, "primari": [19, 28], "_util": 19, "_utils_const": 19, "py": 19, "modular": 19, "therefor": 19, "flat": 19, "hierarchi": 19, "outlin": 19, "user": 19, "friendli": 19, "hint": 19, "enhanc": [19, 25], "propos": 19, "pep": 19, "484": 19, "book": 19, "error": 19, "messag": 19, "docstr": 19, "markup": 19, "languag": 19, "restructuredtext": 19, "rst": 19, "primer": 19, "restructuretext": 19, "cheatsheet": 19, "sphinx": 19, "autodoc": 19, "inclus": 19, "napoleon": 19, "extens": 19, "conf": 19, "four": 19, "bird": 19, "ey": 19, "background": 19, "medium": [19, 25], "tabular": 19, "critic": 19, "except": 19, "rule": 19, "showcas": 19, "scientif": 19, "mai": 19, "mention": 19, "section": 19, "extern": 19, "note": 19, "go": 19, "html": 19, "_build": 19, "browser": 19, "below": 19, "blank": 19, "OF": 19, "ONE": 19, "complex": 19, "At": 19, "intric": 19, "do": 19, "placehold": 19, "incomplet": 19, "potenti": [19, 25], "expect": 19, "30": 19, "remind": 19, "token": 19, "truncat": 19, "respons": 19, "simpli": 19, "ask": 19, "someth": 19, "repeat": 19, "compil": 19, "done": 19, "script": 19, "leverag": 19, "struggl": 19, "produc": 19, "erron": 19, "often": [19, 30], "ambigu": 19, "logic": 19, "address": 19, "intuit": 19, "through": 19, "signatur": [19, 26], "behavior": 19, "deeper": 19, "intricaci": 19, "citat": 21, "develop": 22, "practic": 22, "2023a": 24, "2023b": 24, "breimann23c": [24, 25], "2023c": 24, "chart": 24, "cheng06": [24, 25], "cheng": 24, "2006": 24, "larg": 24, "disulphid": 24, "bridg": [24, 25], "kernel": 24, "neural": 24, "network": 24, "graph": [24, 25], "struct": 24, "funct": 24, "kawashima": 24, "2008": 24, "aid": 24, "databas": 24, "report": 24, "nucleic": 24, "magnan09": [24, 25], "magnan": 24, "randal": 24, "baldi": 24, "2009": [24, 25], "accur": 24, "solubl": [24, 25], "bioinformat": 24, "galiez16": [24, 25], "galiez": 24, "2016": [24, 25], "viral": 24, "capsid": [24, 25], "tail": [24, 25], "song18": [24, 25], "song": 24, "2018": 24, "throughput": 24, "cleavag": [24, 25], "site": [24, 25], "90": 24, "proteas": 24, "shen19": [24, 25], "shen": 24, "2019": 24, "subcellular": [24, 25], "local": [24, 25], "evolutionari": 24, "chou": [24, 25], "pseaac": 24, "j": 24, "theor": 24, "biol": 24, "tang20": [24, 25], "tang": 24, "2020": 24, "intrins": [24, 25], "disord": [24, 25], "teng21": [24, 25], "teng": 24, "2021": 24, "amyloidogen": [24, 25], "pseudo": 24, "composit": [24, 25], "tripeptid": 24, "bmc": 24, "yang21": [24, 25], "yang": 24, "granular": 24, "multipl": 24, "rna": [24, 25], "bind": [24, 25], "appl": 24, "chronolog": 25, "histori": 25, "t1_overview_benchmark": 25, "t2_overview_scal": 25, "t3a_aaontology_categori": 25, "t3b_aaontology_subcategori": 25, "begin": 25, "append": 25, "caspas": 25, "furin": 25, "long": 25, "ldr": 25, "metallopeptidas": 25, "mmp2": 25, "rbp60": 25, "solvent": 25, "sa": 25, "amyloidognen": 25, "capdsid": 25, "disulfid": 25, "ss": 25, "bond": 25, "cytoplasm": 25, "plasma": 25, "insolubl": 25, "494524": 25, "unknown": 25, "statu": 25, "tier": 25, "system": 25, "systemat": 25, "arrang": 25, "67": 25, "everi": 25, "clearli": 25, "assess": 25, "couldn": 25, "alloc": 25, "regard": 25, "chothia": 25, "1976": 25, "lin": 25, "2003": 25, "64": 25, "occurr": 25, "cellular": 25, "mitochondria": 25, "nakashima": 25, "1990": 25, "nishikawa": 25, "1992": 25, "conform": 25, "\u03b1": 25, "helix": 25, "ranodm": 25, "tanaka": 25, "1977": 25, "fasman": 25, "1978b": 25, "richardson": 25, "1988": 25, "qian": 25, "sejnowski": 25, "aurora": 25, "rose": 25, "1998": 25, "19": 25, "charg": 25, "entropi": 25, "charton": 25, "1983": 25, "gui": 25, "1985": 25, "radzicka": 25, "wolfenden": 25, "36": 25, "could": 25, "mutabl": 25, "sneath": 25, "1966": 25, "17": 25, "polar": 25, "hydrophob": 25, "amphiphil": 25, "kyte": 25, "doolittl": 25, "1982": 25, "mitaku": 25, "2002": 25, "koehler": 25, "steric": 25, "angl": 25, "symmetri": 25, "represent": 25, "eccentr": 25, "prabhakaran": 25, "ponnuswami": 25, "karkbara": 25, "knislei": 25, "45": 25, "stabil": 25, "backbon": 25, "dynam": 25, "vihinen": 25, "1994": 25, "bastolla": 25, "2005": 25, "31": 25, "water": 25, "tendenc": 25, "oppos": 25, "1978": 25, "partial": 25, "physic": 25, "displac": 25, "caus": 25, "interact": 25, "mainli": 25, "ones": 25, "bull": 25, "brees": 25, "1974": 25, "bigelow": 25, "1967": 25, "jone": 25, "dayhoff": 25, "interior": 25, "unpolar": 25, "fukuchi": 25, "2001": 25, "mp": 25, "cedano": 25, "1997": 25, "mitochondri": 25, "less": 25, "val": 25, "cf": 25, "cap": 25, "asp": 25, "glu": 25, "ly": 25, "arg": 25, "observ": 25, "character": 25, "punta": 25, "maritan": 25, "robson": 25, "suzuki": 25, "linker": 25, "georg": 25, "heringa": 25, "2004": 25, "helic": 25, "half": 25, "finkelstein": 25, "1991": 25, "outsid": 25, "befor": 25, "geisow": 25, "robert": 25, "1980": 25, "ramachandran": 25, "state": 25, "quadrant": 25, "bottom": 25, "paul": 25, "1951": 25, "antiparallel": 25, "lifson": 25, "sander": 25, "1979": 25, "bend": 25, "revers": 25, "tight": 25, "consecut": 25, "back": 25, "hydrogen": 25, "3rd": 25, "4th": 25, "1st": 25, "2nd": 25, "tm": 25, "place": 25, "monn\u00e9": 25, "1999": 25, "\u03c0": 25, "ala": 25, "gln": 25, "fodj": 25, "karadaghi": 25, "net": 25, "donor": 25, "klein": 25, "1984": 25, "acceptor": 25, "faucher": 25, "hi": 25, "electron": 25, "ion": 25, "pot": 25, "valenc": 25, "chemic": 25, "cosic": 25, "low": 25, "due": 25, "strong": 25, "hutchen": 25, "1970": 25, "unfold": 25, "gibb": 25, "denatur": 25, "yutani": 25, "1987": 25, "instabl": 25, "highest": 25, "break": 25, "pro": 25, "munoz": 25, "serrano": 25, "isoelectr": 25, "ph": 25, "electr": 25, "neutral": 25, "zimmerman": 25, "1968": 25, "16": 25, "crystal": 25, "pairwis": 25, "constitu": 25, "atom": 25, "lennard": 25, "oobatak": 25, "ooi": 25, "rel": 25, "chang": 25, "divid": 25, "aliphat": 25, "linear": 25, "aromat": 25, "carbon": 25, "approxim": 25, "invers": 25, "reactiv": 25, "hydroxythiol": 25, "wold": 25, "occur": 25, "esp": 25, "amphipath": 25, "highli": 25, "signal": 25, "argo": 25, "cornett": 25, "38": 25, "environ": 25, "eisenberg": 25, "mclachlan": 25, "1986": 25, "surround": 25, "angstrom": 25, "radiu": 25, "pack": 25, "globular": 25, "1981": 25, "28": 25, "eigenvalu": 25, "laplacian": 25, "undirect": 25, "node": 25, "mass": 25, "molecular": 25, "second": 25, "actual": 25, "root": 25, "squar": 25, "gyrat": 25, "farther": 25, "awai": 25, "relationship": 25, "rate": 25, "shift": 25, "bundi": 25, "wuthrich": 25, "nh": 25, "temperatur": 25, "rigid": 25, "gly": 25, "ser": 25, "particularli": 25, "ptitsyn": 25, "zhou": 25, "equilibrium": 25, "sueki": 25, "flow": 26, "enri": 26, "introduc": 27, "diagram": 28, "platform": 29, "novel": 29, "everywher": [30, 31], "setup": 30, "augment": 30, "smote": 30, "artifici": 30, "Such": 30, "veri": 30, "deep": 30, "imag": 30, "recognit": 30, "feasibl": 30, "becaus": 30, "slight": 30, "mutat": 30, "alter": 30, "dramat": 30, "great": 30, "quantiti": 30, "besid": 30, "distinguish": 30, "subfield": 30}, "objects": {"aaanalysis": [[1, 0, 1, "", "AAclust"], [2, 0, 1, "", "CPP"], [3, 0, 1, "", "CPPPlot"], [4, 0, 1, "", "SequenceFeature"], [5, 0, 1, "", "dPULearn"], [6, 3, 1, "", "load_dataset"], [7, 3, 1, "", "load_scales"], [8, 3, 1, "", "plot_gcfs"], [9, 3, 1, "", "plot_get_cdict"], [10, 3, 1, "", "plot_get_clist"], [11, 3, 1, "", "plot_get_cmap"], [12, 3, 1, "", "plot_legend"], [13, 3, 1, "", "plot_settings"]], "aaanalysis.AAclust": [[1, 1, 1, "", "__init__"], [1, 2, 1, "", "center_labels_"], [1, 2, 1, "", "centers_"], [1, 1, 1, "", "comp_centers"], [1, 1, 1, "", "comp_correlation"], [1, 1, 1, "", "comp_coverage"], [1, 1, 1, "", "comp_medoids"], [1, 1, 1, "", "eval"], [1, 1, 1, "", "fit"], [1, 2, 1, "", "is_medoid_"], [1, 2, 1, "", "labels_"], [1, 2, 1, "", "medoid_labels_"], [1, 2, 1, "", "medoid_names_"], [1, 2, 1, "", "medoids_"], [1, 2, 1, "", "model"], [1, 2, 1, "", "n_clusters"], [1, 1, 1, "", "name_clusters"]], "aaanalysis.CPP": [[2, 1, 1, "", "__init__"], [2, 1, 1, "", "eval"], [2, 1, 1, "", "run"]], "aaanalysis.CPPPlot": [[3, 1, 1, "", "__init__"], [3, 1, 1, "", "heatmap"], [3, 1, 1, "", "profile"], [3, 1, 1, "", "update_seq_size"]], "aaanalysis.SequenceFeature": [[4, 1, 1, "", "__init__"], [4, 1, 1, "", "add_dif"], [4, 1, 1, "", "add_feat_value"], [4, 1, 1, "", "add_position"], [4, 1, 1, "", "feat_matrix"], [4, 1, 1, "", "feat_names"], [4, 1, 1, "", "get_df_parts"], [4, 1, 1, "", "get_features"], [4, 1, 1, "", "get_split_kws"]], "aaanalysis.dPULearn": [[5, 1, 1, "", "__init__"], [5, 1, 1, "", "eval"], [5, 1, 1, "", "fit"], [5, 2, 1, "", "labels_"]]}, "objtypes": {"0": "py:class", "1": "py:method", "2": "py:attribute", "3": "py:function"}, "objnames": {"0": ["py", "class", "Python class"], "1": ["py", "method", "Python method"], "2": ["py", "attribute", "Python attribute"], "3": ["py", "function", "Python function"]}, "titleterms": {"api": 0, "data": [0, 16, 28, 30], "featur": [0, 15], "engin": [0, 15], "pu": [0, 16, 30], "learn": [0, 15, 30], "explain": [0, 15, 31], "ai": [0, 15, 31], "perturb": 0, "plot": [0, 14], "util": 0, "aaanalysi": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 28], "aaclust": [1, 15], "note": [1, 2, 4, 5, 6, 7, 12], "cpp": [2, 15, 29], "cppplot": 3, "exampl": [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 18], "sequencefeatur": 4, "dpulearn": 5, "load_dataset": 6, "load_scal": 7, "plot_gcf": 8, "plot_get_cdict": 9, "plot_get_clist": 10, "plot_get_cmap": 11, "plot_legend": 12, "plot_set": 13, "prelud": 14, "quick": [15, 32], "start": [15, 32], "what": [15, 30, 31], "you": 15, "Will": 15, "1": 15, "load": [15, 16, 17], "sequenc": [15, 31], "scale": [15, 17, 25, 27], "2": 15, "compar": 15, "physicochem": [15, 29], "profil": 15, "3": 15, "protein": [15, 16, 25], "predict": 15, "4": 15, "group": 15, "level": [15, 31], "individu": 15, "tutori": [16, 17, 32], "benchmark": [16, 24, 25], "amino": [16, 17, 25, 27], "acid": [16, 17, 25, 27], "window": 16, "size": 16, "posit": 16, "unlabel": 16, "dataset": [16, 24, 25], "three": 17, "set": 17, "numer": 17, "aaontologi": [17, 25, 27], "redund": 17, "reduc": 17, "subset": 17, "filter": 17, "welcom": 18, "document": [18, 19, 22], "instal": [18, 19], "overview": [18, 22, 25], "refer": [18, 24], "indic": 18, "tabl": [18, 25], "citat": 18, "contribut": 19, "introduct": [19, 22], "vision": 19, "object": 19, "non": 19, "goal": 19, "principl": [19, 26], "bug": 19, "report": 19, "latest": 19, "version": 19, "local": 19, "develop": 19, "environ": 19, "fork": 19, "clone": 19, "depend": 19, "run": 19, "unit": 19, "test": 19, "pull": 19, "request": 19, "preview": 19, "chang": 19, "name": 19, "convent": 19, "class": 19, "templat": 19, "function": 19, "method": 19, "code": 19, "philosophi": 19, "style": 19, "layer": 19, "build": 19, "doc": 19, "chatgpt": 19, "guid": 19, "tgd": 19, "workflow": 22, "algorithm": 24, "us": [24, 29], "case": 24, "further": [24, 32], "inform": 24, "categori": 25, "subcategori": 25, "usag": 26, "classif": 27, "flow": 28, "enri": 28, "point": 28, "compon": 28, "entri": 28, "bridg": 28, "extern": 28, "librari": 28, "identifi": 29, "signatur": 29, "from": 30, "unbalanc": 30, "small": 30, "i": [30, 31]}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx.ext.intersphinx": 1, "nbsphinx": 4, "sphinx": 57}, "alltitles": {"API": [[0, "api"]], "Data": [[0, "data"]], "Feature Engineering": [[0, "feature-engineering"]], "PU Learning": [[0, "pu-learning"]], "Explainable AI": [[0, "explainable-ai"]], "Perturbation": [[0, "perturbation"]], "Plot Utilities": [[0, "plot-utilities"]], "aaanalysis.AAclust": [[1, "aaanalysis-aaclust"]], "Notes": [[1, null], [1, null], [1, null], [1, null], [2, null], [2, null], [4, null], [4, null], [4, null], [4, null], [4, null], [5, null], [5, null], [6, null], [7, null], [12, null]], "aaanalysis.CPP": [[2, "aaanalysis-cpp"]], "aaanalysis.CPPPlot": [[3, "aaanalysis-cppplot"]], "Examples": [[3, null], [4, null], [4, null], [5, null], [6, null], [7, null], [8, null], [9, null], [10, null], [11, null], [12, null], [13, null]], "aaanalysis.SequenceFeature": [[4, "aaanalysis-sequencefeature"]], "aaanalysis.dPULearn": [[5, "aaanalysis-dpulearn"]], "aaanalysis.load_dataset": [[6, "aaanalysis-load-dataset"]], "aaanalysis.load_scales": [[7, "aaanalysis-load-scales"]], "aaanalysis.plot_gcfs": [[8, "aaanalysis-plot-gcfs"]], "aaanalysis.plot_get_cdict": [[9, "aaanalysis-plot-get-cdict"]], "aaanalysis.plot_get_clist": [[10, "aaanalysis-plot-get-clist"]], "aaanalysis.plot_get_cmap": [[11, "aaanalysis-plot-get-cmap"]], "aaanalysis.plot_legend": [[12, "aaanalysis-plot-legend"]], "aaanalysis.plot_settings": [[13, "aaanalysis-plot-settings"]], "Plotting Prelude": [[14, "plotting-prelude"]], "Quick Start with AAanalysis": [[15, "quick-start-with-aaanalysis"]], "What You Will Learn:": [[15, "what-you-will-learn"]], "1. Loading Sequences and Scales": [[15, "loading-sequences-and-scales"]], "2. Feature Engineering": [[15, "feature-engineering"]], "AAclust": [[15, "aaclust"]], "Comparative Physicochemical Profiling (CPP)": [[15, "comparative-physicochemical-profiling-cpp"]], "3. Protein Prediction": [[15, "protein-prediction"]], "4. Explainable AI": [[15, "explainable-ai"]], "Explainable AI on group level": [[15, "explainable-ai-on-group-level"]], "Explainable AI on individual level": [[15, "explainable-ai-on-individual-level"]], "Data Loading Tutorial": [[16, "data-loading-tutorial"]], "Loading of protein benchmarks": [[16, "loading-of-protein-benchmarks"]], "Loading of protein benchmarks: Amino acid window size": [[16, "loading-of-protein-benchmarks-amino-acid-window-size"]], "Loading of protein benchmarks: Positive-Unlabeled (PU) datasets": [[16, "loading-of-protein-benchmarks-positive-unlabeled-pu-datasets"]], "Scale Loading Tutorial": [[17, "scale-loading-tutorial"]], "Three sets of numerical amino acid scales": [[17, "three-sets-of-numerical-amino-acid-scales"]], "AAontology": [[17, "aaontology"], [25, "aaontology"]], "Redundancy-reduce scale subsets": [[17, "redundancy-reduce-scale-subsets"]], "Filtering of scales": [[17, "filtering-of-scales"]], "Welcome to the AAanalysis documentation!": [[18, "welcome-to-the-aaanalysis-documentation"]], "Install": [[18, "install"]], "OVERVIEW": [[18, null]], "EXAMPLES": [[18, null]], "REFERENCES": [[18, null]], "Indices and tables": [[18, "indices-and-tables"]], "Citation": [[18, "citation"]], "Contributing": [[19, "contributing"]], "Introduction": [[19, "introduction"], [22, "introduction"]], "Vision": [[19, "vision"]], "Objectives": [[19, "objectives"]], "Non-goals": [[19, "non-goals"]], "Principles": [[19, "principles"]], "Bug Reports": [[19, "bug-reports"]], "Installation": [[19, "installation"]], "Latest Version": [[19, "latest-version"]], "Local Development Environment": [[19, "local-development-environment"]], "Fork and Clone": [[19, "fork-and-clone"]], "Install Dependencies": [[19, "install-dependencies"]], "Run Unit Tests": [[19, "run-unit-tests"]], "Pull Requests": [[19, "pull-requests"]], "Preview Changes": [[19, "preview-changes"]], "Documentation": [[19, "documentation"]], "Naming Conventions": [[19, "naming-conventions"]], "Class Templates": [[19, "class-templates"]], "Function and Method Naming": [[19, "function-and-method-naming"]], "Code Philosophy": [[19, "code-philosophy"]], "Documentation Style": [[19, "documentation-style"]], "Documentation Layers": [[19, "documentation-layers"]], "Building the Docs": [[19, "building-the-docs"]], "Test with ChatGPT": [[19, "test-with-chatgpt"]], "Test Guided Development (TGD)": [[19, "test-guided-development-tgd"]], "Workflow": [[22, "workflow"]], "Overview of documentation": [[22, "overview-of-documentation"]], "References": [[24, "references"]], "Algorithms": [[24, "algorithms"]], "Datasets and Benchmarks": [[24, "datasets-and-benchmarks"]], "Use Cases": [[24, "use-cases"]], "Further Information": [[24, "further-information"]], "Tables": [[25, "tables"]], "Overview Table": [[25, "overview-table"]], "Protein Benchmark Datasets": [[25, "protein-benchmark-datasets"]], "Amino Acid Scale Datasets": [[25, "amino-acid-scale-datasets"]], "Categories": [[25, "categories"]], "Subcategories": [[25, "subcategories"]], "Usage Principles": [[26, "usage-principles"]], "AAontology: Classification of amino acid scales": [[27, "aaontology-classification-of-amino-acid-scales"]], "Data Flow and Enry Points": [[28, "data-flow-and-enry-points"]], "Data Flow: Components of AAanalysis": [[28, "data-flow-components-of-aaanalysis"]], "Entry Points: Bridges to External Libraries": [[28, "entry-points-bridges-to-external-libraries"]], "Identifying Physicochemical Signatures using CPP": [[29, "identifying-physicochemical-signatures-using-cpp"]], "Learning from unbalanced and small data": [[30, "learning-from-unbalanced-and-small-data"]], "What is PU learning?": [[30, "what-is-pu-learning"]], "Explainable AI at Sequence Level": [[31, "explainable-ai-at-sequence-level"]], "What is explainable AI?": [[31, "what-is-explainable-ai"]], "Tutorials": [[32, "tutorials"]], "Quick start": [[32, "quick-start"]], "Further Tutorials": [[32, "further-tutorials"]]}, "indexentries": {"aaclust (class in aaanalysis)": [[1, "aaanalysis.AAclust"]], "__init__() (aaanalysis.aaclust method)": [[1, "aaanalysis.AAclust.__init__"]], "center_labels_ (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.center_labels_"]], "centers_ (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.centers_"]], "comp_centers() (aaanalysis.aaclust static method)": [[1, "aaanalysis.AAclust.comp_centers"]], "comp_correlation() (aaanalysis.aaclust static method)": [[1, "aaanalysis.AAclust.comp_correlation"]], "comp_coverage() (aaanalysis.aaclust static method)": [[1, "aaanalysis.AAclust.comp_coverage"]], "comp_medoids() (aaanalysis.aaclust static method)": [[1, "aaanalysis.AAclust.comp_medoids"]], "eval() (aaanalysis.aaclust static method)": [[1, "aaanalysis.AAclust.eval"]], "fit() (aaanalysis.aaclust method)": [[1, "aaanalysis.AAclust.fit"]], "is_medoid_ (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.is_medoid_"]], "labels_ (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.labels_"]], "medoid_labels_ (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.medoid_labels_"]], "medoid_names_ (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.medoid_names_"]], "medoids_ (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.medoids_"]], "model (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.model"]], "n_clusters (aaanalysis.aaclust attribute)": [[1, "aaanalysis.AAclust.n_clusters"]], "name_clusters() (aaanalysis.aaclust static method)": [[1, "aaanalysis.AAclust.name_clusters"]], "cpp (class in aaanalysis)": [[2, "aaanalysis.CPP"]], "__init__() (aaanalysis.cpp method)": [[2, "aaanalysis.CPP.__init__"]], "eval() (aaanalysis.cpp method)": [[2, "aaanalysis.CPP.eval"]], "run() (aaanalysis.cpp method)": [[2, "aaanalysis.CPP.run"]], "cppplot (class in aaanalysis)": [[3, "aaanalysis.CPPPlot"]], "__init__() (aaanalysis.cppplot method)": [[3, "aaanalysis.CPPPlot.__init__"]], "heatmap() (aaanalysis.cppplot method)": [[3, "aaanalysis.CPPPlot.heatmap"]], "profile() (aaanalysis.cppplot method)": [[3, "aaanalysis.CPPPlot.profile"]], "update_seq_size() (aaanalysis.cppplot method)": [[3, "aaanalysis.CPPPlot.update_seq_size"]], "sequencefeature (class in aaanalysis)": [[4, "aaanalysis.SequenceFeature"]], "__init__() (aaanalysis.sequencefeature method)": [[4, "aaanalysis.SequenceFeature.__init__"]], "add_dif() (aaanalysis.sequencefeature static method)": [[4, "aaanalysis.SequenceFeature.add_dif"]], "add_feat_value() (aaanalysis.sequencefeature static method)": [[4, "aaanalysis.SequenceFeature.add_feat_value"]], "add_position() (aaanalysis.sequencefeature static method)": [[4, "aaanalysis.SequenceFeature.add_position"]], "feat_matrix() (aaanalysis.sequencefeature static method)": [[4, "aaanalysis.SequenceFeature.feat_matrix"]], "feat_names() (aaanalysis.sequencefeature static method)": [[4, "aaanalysis.SequenceFeature.feat_names"]], "get_df_parts() (aaanalysis.sequencefeature static method)": [[4, "aaanalysis.SequenceFeature.get_df_parts"]], "get_features() (aaanalysis.sequencefeature method)": [[4, "aaanalysis.SequenceFeature.get_features"]], "get_split_kws() (aaanalysis.sequencefeature static method)": [[4, "aaanalysis.SequenceFeature.get_split_kws"]], "__init__() (aaanalysis.dpulearn method)": [[5, "aaanalysis.dPULearn.__init__"]], "dpulearn (class in aaanalysis)": [[5, "aaanalysis.dPULearn"]], "eval() (aaanalysis.dpulearn method)": [[5, "aaanalysis.dPULearn.eval"]], "fit() (aaanalysis.dpulearn method)": [[5, "aaanalysis.dPULearn.fit"]], "labels_ (aaanalysis.dpulearn attribute)": [[5, "aaanalysis.dPULearn.labels_"]], "load_dataset() (in module aaanalysis)": [[6, "aaanalysis.load_dataset"]], "load_scales() (in module aaanalysis)": [[7, "aaanalysis.load_scales"]], "plot_gcfs() (in module aaanalysis)": [[8, "aaanalysis.plot_gcfs"]], "plot_get_cdict() (in module aaanalysis)": [[9, "aaanalysis.plot_get_cdict"]], "plot_get_clist() (in module aaanalysis)": [[10, "aaanalysis.plot_get_clist"]], "plot_get_cmap() (in module aaanalysis)": [[11, "aaanalysis.plot_get_cmap"]], "plot_legend() (in module aaanalysis)": [[12, "aaanalysis.plot_legend"]], "plot_settings() (in module aaanalysis)": [[13, "aaanalysis.plot_settings"]]}}) \ No newline at end of file diff --git a/docs/build/plot_directive/generated/aaanalysis-plot_gcfs-1.pdf b/docs/build/plot_directive/generated/aaanalysis-plot_gcfs-1.pdf index 29fca4d7..af43810e 100644 Binary files a/docs/build/plot_directive/generated/aaanalysis-plot_gcfs-1.pdf and b/docs/build/plot_directive/generated/aaanalysis-plot_gcfs-1.pdf differ diff --git a/docs/build/plot_directive/generated/aaanalysis-plot_get_cdict-1.pdf b/docs/build/plot_directive/generated/aaanalysis-plot_get_cdict-1.pdf index 52458eb0..1771af1b 100644 Binary files a/docs/build/plot_directive/generated/aaanalysis-plot_get_cdict-1.pdf and b/docs/build/plot_directive/generated/aaanalysis-plot_get_cdict-1.pdf differ diff --git a/docs/build/plot_directive/generated/aaanalysis-plot_get_clist-1.pdf b/docs/build/plot_directive/generated/aaanalysis-plot_get_clist-1.pdf index 50bf2f30..f0b11b7a 100644 Binary files a/docs/build/plot_directive/generated/aaanalysis-plot_get_clist-1.pdf and b/docs/build/plot_directive/generated/aaanalysis-plot_get_clist-1.pdf differ diff --git a/docs/build/plot_directive/generated/aaanalysis-plot_get_cmap-1.pdf b/docs/build/plot_directive/generated/aaanalysis-plot_get_cmap-1.pdf index e38c7d65..bb323fe1 100644 Binary files a/docs/build/plot_directive/generated/aaanalysis-plot_get_cmap-1.pdf and b/docs/build/plot_directive/generated/aaanalysis-plot_get_cmap-1.pdf differ diff --git a/docs/build/plot_directive/generated/aaanalysis-plot_legend-1.pdf b/docs/build/plot_directive/generated/aaanalysis-plot_legend-1.pdf index 63459a8c..7064ab06 100644 Binary files a/docs/build/plot_directive/generated/aaanalysis-plot_legend-1.pdf and b/docs/build/plot_directive/generated/aaanalysis-plot_legend-1.pdf differ diff --git a/docs/build/plot_directive/generated/aaanalysis-plot_settings-1.pdf b/docs/build/plot_directive/generated/aaanalysis-plot_settings-1.pdf index e6ddea7f..c2c1a032 100644 Binary files a/docs/build/plot_directive/generated/aaanalysis-plot_settings-1.pdf and b/docs/build/plot_directive/generated/aaanalysis-plot_settings-1.pdf differ diff --git a/docs/build/plot_directive/generated/aaanalysis-plot_settings-2.pdf b/docs/build/plot_directive/generated/aaanalysis-plot_settings-2.pdf index b5ebd506..034540bd 100644 Binary files a/docs/build/plot_directive/generated/aaanalysis-plot_settings-2.pdf and b/docs/build/plot_directive/generated/aaanalysis-plot_settings-2.pdf differ diff --git a/docs/source/generated/output_13_1.png b/docs/source/generated/output_13_1.png index 815e3a39..6e2513d5 100644 Binary files a/docs/source/generated/output_13_1.png and b/docs/source/generated/output_13_1.png differ diff --git a/docs/source/generated/tutorial1_quick_start.rst b/docs/source/generated/tutorial1_quick_start.rst index 75442ba7..c9cc5aa9 100644 --- a/docs/source/generated/tutorial1_quick_start.rst +++ b/docs/source/generated/tutorial1_quick_start.rst @@ -69,9 +69,9 @@ set of 100 scales, as defined by the ``n_clusters`` parameters: from sklearn.cluster import AgglomerativeClustering - aac = aa.AAclust(model=AgglomerativeClustering) - X = np.array(df_scales) - scales = aac.fit(X, names=list(df_scales), n_clusters=100) + aac = aa.AAclust(model_class=AgglomerativeClustering) + X = np.array(df_scales).T + scales = aac.fit(X, names=list(df_scales), n_clusters=100).medoid_names_ df_scales = df_scales[scales] Comparative Physicochemical Profiling (CPP) @@ -131,10 +131,10 @@ A feature matrix from a given set of CPP features can be created using .. parsed-literal:: - Mean accuracy of 0.6 + Mean accuracy of 0.58 -Creating more features with CPP will take some more time, but improve +Creating more features with CPP will take a little time, but improve prediction performance: .. code:: ipython3 @@ -153,7 +153,7 @@ prediction performance: sns.barplot(pd.DataFrame({"Baseline": cv_base, "CPP": cv}), palette=["tab:blue", "tab:red"]) plt.ylabel("Mean accuracy", size=aa.plot_gcfs()+1) plt.ylim(0, 1) - plt.title("Comparison of Feature Engineering Methods") + plt.title("Comparison of Feature Engineering Methods", size=aa.plot_gcfs()-1) sns.despine() plt.show() diff --git a/tutorials/tutorial1_quick_start.ipynb b/tutorials/tutorial1_quick_start.ipynb index c3195c34..03993f2e 100644 --- a/tutorials/tutorial1_quick_start.ipynb +++ b/tutorials/tutorial1_quick_start.ipynb @@ -30,8 +30,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-09-28T08:06:29.545799916Z", - "start_time": "2023-09-28T08:06:29.522441946Z" + "end_time": "2023-10-02T20:32:53.039469001Z", + "start_time": "2023-10-02T20:32:53.019487708Z" } } }, @@ -55,8 +55,8 @@ "name": "#%%\n" }, "ExecuteTime": { - "end_time": "2023-09-28T08:06:30.369962978Z", - "start_time": "2023-09-28T08:06:29.532292243Z" + "end_time": "2023-10-02T20:32:54.531812229Z", + "start_time": "2023-10-02T20:32:53.027672866Z" } }, "outputs": [], @@ -89,16 +89,16 @@ "source": [ "from sklearn.cluster import AgglomerativeClustering\n", "\n", - "aac = aa.AAclust(model=AgglomerativeClustering)\n", - "X = np.array(df_scales)\n", - "scales = aac.fit(X, names=list(df_scales), n_clusters=100) \n", + "aac = aa.AAclust(model_class=AgglomerativeClustering)\n", + "X = np.array(df_scales).T\n", + "scales = aac.fit(X, names=list(df_scales), n_clusters=100).medoid_names_ \n", "df_scales = df_scales[scales]" ], "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-09-28T08:06:30.451850383Z", - "start_time": "2023-09-28T08:06:30.376700053Z" + "end_time": "2023-10-02T20:32:54.532997978Z", + "start_time": "2023-10-02T20:32:54.250325038Z" } } }, @@ -126,8 +126,8 @@ "name": "#%%\n" }, "ExecuteTime": { - "end_time": "2023-09-28T08:06:30.578306544Z", - "start_time": "2023-09-28T08:06:30.532859763Z" + "end_time": "2023-10-02T20:32:54.533610828Z", + "start_time": "2023-10-02T20:32:54.388921950Z" } }, "outputs": [], @@ -160,8 +160,8 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-09-28T08:06:39.221976283Z", - "start_time": "2023-09-28T08:06:30.576931617Z" + "end_time": "2023-10-02T20:33:05.471265655Z", + "start_time": "2023-10-02T20:32:54.511627903Z" } } }, @@ -185,7 +185,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Mean accuracy of 0.6\n" + "Mean accuracy of 0.58\n" ] } ], @@ -201,15 +201,15 @@ "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-09-28T08:06:43.613234709Z", - "start_time": "2023-09-28T08:06:39.228528460Z" + "end_time": "2023-10-02T20:33:10.066404589Z", + "start_time": "2023-10-02T20:33:05.478739730Z" } } }, { "cell_type": "markdown", "source": [ - "Creating more features with CPP will take some more time, but improve prediction performance: " + "Creating more features with CPP will take a little time, but improve prediction performance: " ], "metadata": { "collapsed": false @@ -229,7 +229,7 @@ { "data": { "text/plain": "
", - "image/png": "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JFUihKWkpIhhb29v2TQfHx8xfOLEiTLb6tOnjxheuHAhTp06hUePHmHFihU4duwYgKJwphnQiIiIiIytSoSw9PR0MVy7dm3ZNEdHRzGckZFRZlshISH45JNPYGZmhlOnTqFly5awtbXFiBEjUFhYiKZNmyImJgZmZlXiqSEiIqIqqkrctujhw4diuPhhQktLSzH84MGDcrX39ttvIyEhAbt379aaNmDAANlhSV0WLlyIRYsW6Zx2+vTpctVAREREz7YqEcKM6dq1awgICMDVq1cBAN27d0fz5s2xe/dunD17Fl9//TUSExOxe/duWcDTlJGRwf7EiIiIyCBVIoTZ2tri7t27AKB1BWRubq4YtrOzK7OtTz75RASwt99+G/PnzxftdO7cGUeOHMG+ffsQHR2NyMhInW24uLjA19dX57TTp0/j8ePHZdZBREREz7YqceKTi4uLGM7KypJNy8zMFMOurq5ltrV161YxPGbMGDFsZWWFV155RTz+66+/SmwjMjISSUlJOv+aN29eZg1EREREVSKEaQabc+fOyaalpqaK4VatWpXZlmaI09yLBgAqlUoMa56HRkRERGRsVSKEhYaGiuFVq1aJsJSQkIC0tDQARVdNBgQElNmWl5eXGF64cKEYzsvLw2+//SYes4sKIiIiqkxV4pywl19+GVFRUbh9+zaOHz+O4OBgtG3bFqtXrxbzREREyE6kX7t2rbh3Y0hICEJCQsR877zzDgAgOjoaqampaNu2Lfbs2SOubFQqlRg9evST2jwiIiJ6BlWJEObo6Ijly5djwIAByMvLQ3x8POLj48V0Pz8/REVFyZbZsmULli9fDgCwtrYWIWzs2LH4559/sGLFCgDQasvMzAw//vgjz+0iIiKiSlUlDkcCQFhYGA4fPoxBgwbB2dkZlpaW8PLywtSpUxEbG4saNWqUqx0zMzMsX74cMTEx6NWrF5ycnGBubo66devipZdeQnx8PCIiIip5a4iIiOhZp5AkSTJ1EdWJn58fkpOT4evrKw6HEhFVRFzXIFOXQPTUCfo7ztQlGF2V2RNGREREVJ0whBERERGZAEMYERERkQkwhBERERGZAEMYERERkQkwhBERERGZAEMYERERkQkwhBERERGZgN4hTH0TbSIiIiKqOL1DWIMGDTBx4kQcO3bMmPUQERERPRP0DmE3b97E999/D19f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QpIkzJ49W+v2QURERETPKr1D2E8//QSgKGTZ2NhgyJAhsumBgYH44osvULNmTdFXmHoZIiIiomed3ldHHjx4UAyvXr0affv2lU2vV68epkyZgrZt26JPnz5QKBRISEjQv1IiIiKiakTvPWE3btwAACiVSoSFhZU4X69evaBUKiFJEq5fv67v6oiIiIiqFb1DmJWVFYCim3Xfu3evxPlu374NlUoFADA313vHGxEREVG1oncI8/T0FMM//vhjifN98803AIrOHWMHr0RERERF9N41FRoaipSUFADAjBkzkJaWhj59+sDFxQUFBQW4fPkyYmJi8Mcff4hlevfubXjFRERERNWA3iFswoQJWLBgAR4/fgyVSoWff/4ZP//8s9Z86i4sbGxs8N577+lfKREREVE1ovfhSDc3N0RHR0OpVIouKCRJkv2pmZub45dffkGDBg0Mr5iIiIioGjCox/zBgwdjz549aN++vSx0qUmShA4dOiAuLg4DBgwwZFVERERE1YrBlysGBgbin3/+wZkzZ3Dw4EHRdUXdunUREBCAZs2aGVwkERERUXVjtD4jmjVrxsBFREREVE4GHY5U27NnDw4dOqQ1fuzYsfjzzz+NsQoiIiKiasWgEHbz5k306NEDoaGhWLNmjWzavXv38NNPP6F///7o2rWrOExJRERERAaEsNzcXISEhCA2NhaSJIk+w9ROnTolhuPj49G7d28UFBToXykRERFRNaJ3CFuwYAFOnDghHhcPYdevX4eZ2f+aP378OBYvXqzv6oiIiIiqFb1D2Lp168RwYGAg/v77b9n0AQMGIC0tDUFBQWLc77//ru/qiIiIiKoVvUOY5uHGZcuWoWnTplrzNGjQAEuXLgUAnYcsiYiIiJ5VendR8eDBAwCAUqlE48aNS5zP3d0dSqUSKpUK9+/f13d1RE8VlZV9ucYRERGVRO8Q5ujoiFu3bkGlUuH06dNo3ry5zvmOHTsGlUoFALC3548UVQ+PGgeVPRMREVEp9D4c2aZNGzE8duxYPHz4UGue27dvY8yYMQAAhUIhW4aIiIjoWab3nrAhQ4bgr7/+AgDExcWhYcOGCAoKgouLCwoKCnD58mXs378fOTk5YpmhQ4caXjERERFRNaB3CBs1ahR++uknHD16FAqFAnfv3sWmTZtk80iSBIVCAQBo164dRo8ebVi1RERERNWE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" + "image/png": "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iIgIcTdfRESE0ZxGNlXBwcEiIOXm5uKdd95B586dERYWBk9PT9ndfE899VRdNZNqgcmc5tu+fTveeecdnV29V3cV9uzZg/DwcAAlPU2npaXBzs4O586dg6+vLzQaDdRqNf777z+D9VRrqniaj6h+OHToEPr06SPrNbosV1dXxMfH88iUASxevBgvvfRSpdMEBQUhPj7eoE8xoLplEkemTp48if79+4sgpetZWtWxZcsWMTxkyBBxMXTr1q1F/xwajQbbtm1T2GIiIuPQrVs3JCUl4eWXX0bHjh3h4OAgLrjt3Lkz3njjDSQlJTFIGciUKVMQHx+PMWPGoFWrVrCxsYFarUbDhg0RGhqKzz//HHv37mWQqmdM4tl8pUeerKysEBMTgzFjxqB169Y1rkf7wY0+Pj6yMl9fX8THxwNArTwnzNQoeVYXERmXVq1ayTrepdoVFhYm62yU6j+TODJlb2+PWbNmIT09He+8807NeiXVUtmz1rSfdcaL0ImIiKi6TOLIlLe3N2bPnq24Hu1rBsreRaHdP4f2k791Wbp0Kb755hudZefPn4eDgwNCQ0Px448/KmgtERERmQKTCFPGJiMjo9KuGW7dumWwDimJiIjIuD1UYar0gnMA5Z6Irf2AXgcHh0rrcXNzQ0BAgM6y1NRU5OXlKWglERERmZKHKky5ubnhxIkTAFDuidKlT8EGAHd390rriY6ORnR0tM6ywMBAvTsUJSIiItNjEhegG0q7du3E8JkzZ2RlaWlpYrhjx44PrE1ERERk2h6qMKX9zKnY2Fjk5OQAANLT07Fv3z4AgFqtRv/+/eukfURERGR66uVpvnXr1uHYsWMAgL59+6Jv375i2NfXF//88w+uXbuG0NBQhIWF4Y8//kBRUREAYOTIkWjSpEmdtZ2IiIhMS70MU5s2bcKqVasAANbW1iJMmZubY/Xq1ejbty/u3LmDkydP4uTJk2K+Fi1a4PPPP6+TNhMREZFpeqhO8wElz0Q6ceIExo0bBzc3N1hYWMDT0xMvvfQSDh069NA/k4+IiIhqxmQedGwqSu/mCwgIEKcaiYiIqP566I5MERERERkSwxQRERGRAgxTRERERAowTBEREREpwDBFREREpADDFBEREZECDFNERERECjBMERERESnAMEVERESkAMMUERERkQL18kHHRERE+po7dy4uXbokG+fp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cURFRYkg1aBBA2zdurVaQYqIiIhIm0mEKe3+n3788UdoNBoAwP79+5Geng6g5C6/kJCQKuu6desWhg4dKi5Wt7GxwY4dOxAREWH4hhMREVG9ZxKn+Z544gnExMQgMzMTSUlJiIiIgJ+fH9asWSOmmTRpkuzOvnXr1uHYsWMAgL59+6Jv374AgA8++EDWIaevry9iY2MRGxsrW6avry/Gjx9fm6tFRERE9YBJhClnZ2esWrUKw4cPR2FhIRISEpCQkCDKAwMDERMTI5tn06ZNWLVqFQDA2toaffv2RV5eHpYsWSKb7sSJEzhx4kS5Zfbv359hioiIiKpkEqf5ACAqKgpHjhzBiBEj4OrqCktLS3h7e2PmzJmIi4uDra1tlXUcOXJE1mcVERERkVImcWSqVOfOnbFu3bpqTbty5UqsXLlSNi4sLAySJNVCy4iIiOhhZTJHpoiIiIiMEcMUERERkQIMU0REREQKMEwRERERKcAwRURERKQAwxQRERGRAgxTRERERAowTBEREREpwDBFREREpADDFBEREZECDFNERERECjBMERERESnAMEVERESkAMMUERERkQIMU0REREQKMEwRERERKcAwRURERKQAwxQRERGRAgxTRERERAowTBEREREpwDBFREREpADDFBEREZECDFNERERECjBMERERESnAMEVERESkAMMUERERkQIMU0REREQKMEwRERERKcAwRURERKQAwxQRERGRAgxTRERERAowTBEREREpwDBFREREpADDFBEREZECDFNERERECjBMERERESnAMEVERESkAMMUERERkQIMU0REREQKMEwRERERKcAwRURERKQAwxQRERGRAgxTRERERAowTBEREREpwDBFREREpADDFBEREZECDFNERERECjBMERERESnAMEVERESkAMMUERERkQIMU0REREQKMEwRERERKcAwRURERKQAwxQRERGRAgxTRERERAowTBEREREpwDBFREREpIBJhanExEQMHz4crq6usLa2ho+PD959913k5OTUuK6zZ8/imWeegZubG6ysrODl5YVXXnkFN27cqIWWExERUX1lXtcNqK7t27dj8ODBKCwsFOPS0tLwwQcfYOvWrYiPj4ednV216jp58iQiIiJw+/ZtMe7ixYtYuHAhNm7ciH379sHNzc3Qq0BERET1kEkcmcrJycH4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" }, "metadata": {}, "output_type": "display_data" @@ -250,15 +250,15 @@ "sns.barplot(pd.DataFrame({\"Baseline\": cv_base, \"CPP\": cv}), palette=[\"tab:blue\", \"tab:red\"])\n", "plt.ylabel(\"Mean accuracy\", size=aa.plot_gcfs()+1)\n", "plt.ylim(0, 1)\n", - "plt.title(\"Comparison of Feature Engineering Methods\")\n", + "plt.title(\"Comparison of Feature Engineering Methods\", size=aa.plot_gcfs()-1)\n", "sns.despine()\n", "plt.show()" ], "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2023-09-28T08:10:29.342215861Z", - "start_time": "2023-09-28T08:09:02.264702356Z" + "end_time": "2023-10-02T20:37:12.095658200Z", + "start_time": "2023-10-02T20:35:34.799826700Z" } } },