In [1]:
import os
import sys
sys.path.append(os.path.abspath("/users/amtseng/tfmodisco/src/"))
from tfmodisco.run_tfmodisco import import_shap_scores, import_tfmodisco_results
from motif.read_motifs import pfm_info_content, pfm_to_pwm, trim_motif_by_ic
from motif.match_motifs import match_motifs_to_database
from util import figure_to_vdom_image
import plot.viz_sequence as viz_sequence
import numpy as np
import h5py
import matplotlib.pyplot as plt
import vdom.helpers as vdomh
from IPython.display import display

Define constants and paths

In [2]:
# Define parameters/fetch arguments
tf_name = os.environ["TFM_TF_NAME"]
shap_scores_path = os.environ["TFM_SHAP_PATH"]
tfm_results_path = os.environ["TFM_TFM_PATH"]
hyp_score_key = os.environ["TFM_HYP_SCORE_KEY"]
if "TFM_MOTIF_CACHE" in os.environ:
    tfm_motifs_cache_dir = os.environ["TFM_MOTIF_CACHE"]
else:
    tfm_motifs_cache_dir = None

print("TF name: %s" % tf_name)
print("DeepSHAP scores path: %s" % shap_scores_path)
print("TF-MoDISco results path: %s" % tfm_results_path)
print("Importance score key: %s" % hyp_score_key)
print("Saved TF-MoDISco-derived motifs cache: %s" % tfm_motifs_cache_dir)
TF name: GABPA
DeepSHAP scores path: /users/amtseng/tfmodisco/results/importance_scores/multitask_profile/GABPA_multitask_profile_fold9/GABPA_multitask_profile_fold9_imp_scores.h5
TF-MoDISco results path: /users/amtseng/tfmodisco/results/tfmodisco/multitask_profile/GABPA_multitask_profile_fold9/GABPA_multitask_profile_fold9_profile_tfm.h5
Importance score key: profile_hyp_scores
Saved TF-MoDISco-derived motifs cache: /users/amtseng/tfmodisco/results/reports/tfmodisco_results//cache/multitask_profile/GABPA_multitask_profile_fold9/GABPA_multitask_profile_fold9_profile
In [3]:
# Define paths and constants
input_length = 2114
shap_score_center_size = 400
In [4]:
if tfm_motifs_cache_dir:
    os.makedirs(tfm_motifs_cache_dir, exist_ok=True)

Import SHAP scores and TF-MoDISco results

In [5]:
# Import SHAP coordinates and one-hot sequences
hyp_scores, _, one_hot_seqs, shap_coords = import_shap_scores(shap_scores_path, hyp_score_key, center_cut_size=shap_score_center_size)
# This cuts the sequences/scores off just as how TF-MoDISco saw them, but the coordinates are uncut
Importing SHAP scores: 100%|██████████| 104/104 [01:37<00:00,  1.06it/s]
In [6]:
# Import the TF-MoDISco results object
tfm_obj = import_tfmodisco_results(tfm_results_path, hyp_scores, one_hot_seqs, shap_score_center_size)

Plot some SHAP score tracks

Plot the central region of some randomly selected actual importance scores

In [7]:
plot_slice = slice(int(shap_score_center_size / 4), int(3 * shap_score_center_size / 4))
for index in np.random.choice(hyp_scores.shape[0], size=5, replace=False):
    viz_sequence.plot_weights((hyp_scores[index] * one_hot_seqs[index])[plot_slice], subticks_frequency=100)

Plot TF-MoDISco results

Plot all motifs by metacluster

In [8]:
motif_pfms, motif_hcwms, motif_cwms = [], [], []  # Save the trimmed PFMs, hCWMs, and CWMs
motif_pfms_short = []  # PFMs that are even more trimmed (for TOMTOM)
num_seqlets = []  # Number of seqlets for each motif
motif_seqlets = []  # Save seqlets of each motif
metaclusters = tfm_obj.metacluster_idx_to_submetacluster_results
num_metaclusters = len(metaclusters.keys())
if tfm_motifs_cache_dir:
    motif_hdf5 = h5py.File(os.path.join(tfm_motifs_cache_dir, "all_motifs.h5"), "w")
for metacluster_i, metacluster_key in enumerate(metaclusters.keys()):
    metacluster = metaclusters[metacluster_key]
    display(vdomh.h3("Metacluster %d/%d" % (metacluster_i + 1, num_metaclusters)))
    patterns = metacluster.seqlets_to_patterns_result.patterns
    if not patterns:
        break
    motif_pfms.append([])
    motif_hcwms.append([])
    motif_cwms.append([])
    motif_pfms_short.append([])
    num_seqlets.append([])
    motif_seqlets.append([])
    num_patterns = len(patterns)
    for pattern_i, pattern in enumerate(patterns):
        seqlets = pattern.seqlets
        display(vdomh.h4("Pattern %d/%d" % (pattern_i + 1, num_patterns)))
        display(vdomh.p("%d seqlets" % len(seqlets)))
        
        pfm = pattern["sequence"].fwd
        hcwm = pattern["task0_hypothetical_contribs"].fwd
        cwm = pattern["task0_contrib_scores"].fwd
        
        pfm_fig = viz_sequence.plot_weights(pfm, subticks_frequency=10, return_fig=True)
        hcwm_fig = viz_sequence.plot_weights(hcwm, subticks_frequency=10, return_fig=True)
        cwm_fig = viz_sequence.plot_weights(cwm, subticks_frequency=10, return_fig=True)
        pfm_fig.tight_layout()
        hcwm_fig.tight_layout()
        cwm_fig.tight_layout()
        
        motif_table = vdomh.table(
            vdomh.tr(
                vdomh.td("Sequence (PFM)"),
                vdomh.td(figure_to_vdom_image(pfm_fig))
            ),
            vdomh.tr(
                vdomh.td("Hypothetical contributions (hCWM)"),
                vdomh.td(figure_to_vdom_image(hcwm_fig))
            ),
            vdomh.tr(
                vdomh.td("Actual contributions (CWM)"),
                vdomh.td(figure_to_vdom_image(cwm_fig))
            )
        )
        display(motif_table)
        plt.close("all")  # Remove all standing figures
        
        # Trim motif based on information content
        short_trimmed_pfm = trim_motif_by_ic(pfm, pfm)
        motif_pfms_short[-1].append(short_trimmed_pfm)
        
        # Expand trimming to +/- 4bp on either side
        trimmed_pfm = trim_motif_by_ic(pfm, pfm, pad=4)
        trimmed_hcwm = trim_motif_by_ic(pfm, hcwm, pad=4)
        trimmed_cwm = trim_motif_by_ic(pfm, cwm, pad=4)
        
        motif_pfms[-1].append(trimmed_pfm)
        motif_hcwms[-1].append(trimmed_hcwm)
        motif_cwms[-1].append(trimmed_cwm)
        
        num_seqlets[-1].append(len(seqlets))
        
        if tfm_motifs_cache_dir:
            # Save results and figures
            motif_id = "%d_%d" % (metacluster_i, pattern_i)
            pfm_fig.savefig(os.path.join(tfm_motifs_cache_dir, motif_id + "_pfm_full.png"))
            hcwm_fig.savefig(os.path.join(tfm_motifs_cache_dir, motif_id + "_hcwm_full.png"))
            cwm_fig.savefig(os.path.join(tfm_motifs_cache_dir, motif_id + "_cwm_full.png"))
            motif_dset = motif_hdf5.create_group(motif_id)
            motif_dset.create_dataset("pfm_full", data=pfm, compression="gzip")
            motif_dset.create_dataset("hcwm_full", data=hcwm, compression="gzip")
            motif_dset.create_dataset("cwm_full", data=cwm, compression="gzip")
            motif_dset.create_dataset("pfm_trimmed", data=trimmed_pfm, compression="gzip")
            motif_dset.create_dataset("hcwm_trimmed", data=trimmed_hcwm, compression="gzip")
            motif_dset.create_dataset("cwm_trimmed", data=trimmed_cwm, compression="gzip")
            motif_dset.create_dataset("pfm_short_trimmed", data=short_trimmed_pfm, compression="gzip")
if tfm_motifs_cache_dir:
    motif_hdf5.close()

Metacluster 1/2

Pattern 1/10

5445 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Pattern 2/10

481 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Pattern 3/10

392 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Pattern 4/10

347 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Pattern 5/10

310 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Pattern 6/10

287 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Pattern 7/10

133 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Pattern 8/10

116 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Pattern 9/10

102 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Pattern 10/10

69 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Metacluster 2/2

Pattern 1/8

411 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Pattern 2/8

234 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Pattern 3/8

173 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Pattern 4/8

135 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Pattern 5/8

90 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Pattern 6/8

50 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Pattern 7/8

47 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Pattern 8/8

41 seqlets

Sequence (PFM)
Hypothetical contributions (hCWM)
Actual contributions (CWM)

Summary of motifs

Motifs are trimmed based on information content, and presented in descending order by number of supporting seqlets. The motifs are separated by metacluster. The motifs are presented as hCWMs. The forward orientation is defined as the orientation that is richer in purines.

In [9]:
colgroup = vdomh.colgroup(
    vdomh.col(style={"width": "5%"}),
    vdomh.col(style={"width": "5%"}),
    vdomh.col(style={"width": "45%"}),
    vdomh.col(style={"width": "45%"})
)
header = vdomh.thead(
    vdomh.tr(
        vdomh.th("#", style={"text-align": "center"}),
        vdomh.th("Seqlets", style={"text-align": "center"}),
        vdomh.th("Forward", style={"text-align": "center"}),
        vdomh.th("Reverse", style={"text-align": "center"})
    )
)

for i in range(len(motif_hcwms)):
    display(vdomh.h3("Metacluster %d/%d" % (i + 1, num_metaclusters)))
    body = []
    for j in range(len(motif_hcwms[i])):
        motif = motif_hcwms[i][j]
        if np.sum(motif[:, [0, 2]]) > 0.5 * np.sum(motif):
            # Forward is purine-rich, reverse-complement is pyrimidine-rich
            f, rc = motif, np.flip(motif, axis=(0, 1))
        else:
            f, rc = np.flip(motif, axis=(0, 1)), motif
            
        f_fig = viz_sequence.plot_weights(f, figsize=(20, 4), return_fig=True)
        f_fig.tight_layout()
        rc_fig = viz_sequence.plot_weights(rc, figsize=(20, 4), return_fig=True)
        rc_fig.tight_layout()
        
        if tfm_motifs_cache_dir:
            # Save results and figures
            motif_id = "%d_%d" % (i, j)
            f_fig.savefig(os.path.join(tfm_motifs_cache_dir, motif_id + "_hcwm_trimmed_fwd.png"))
            rc_fig.savefig(os.path.join(tfm_motifs_cache_dir, motif_id + "_hcwm_trimmed_rev.png"))

        body.append(
            vdomh.tr(
                vdomh.td(str(j + 1)),
                vdomh.td(str(num_seqlets[i][j])),
                vdomh.td(figure_to_vdom_image(f_fig)),
                vdomh.td(figure_to_vdom_image(rc_fig))
            )
        )
    display(vdomh.table(colgroup, header, vdomh.tbody(*body)))
    plt.close("all")

Metacluster 1/2

#SeqletsForwardReverse
15445
2481
3392
4347
5310
6287
7133
8116
9102
1069

Metacluster 2/2

#SeqletsForwardReverse
1411
2234
3173
4135
590
650
747
841

Top TOMTOM matches for each motif

Here, the TF-MoDISco motifs are plotted as hCWMs, but the TOMTOM matches are shown as PWMs.

In [10]:
num_matches_to_keep = 10
num_matches_to_show = 5

header = vdomh.thead(
    vdomh.tr(
        vdomh.th("Motif ID", style={"text-align": "center"}),
        vdomh.th("q-val", style={"text-align": "center"}),
        vdomh.th("PWM", style={"text-align": "center"})
    )
)

for i in range(len(motif_pfms)):
    display(vdomh.h3("Metacluster %d/%d" % (i + 1, num_metaclusters)))
    
    # Compute TOMTOM matches for all motifs in the metacluster at once
    out_dir = os.path.join(tfm_motifs_cache_dir, "tomtom", "metacluster_%d" % i) if tfm_motifs_cache_dir else None
    tomtom_matches = match_motifs_to_database(motif_pfms_short[i], top_k=num_matches_to_keep, temp_dir=out_dir)
    
    for j in range(len(motif_pfms[i])):
        display(vdomh.h4("Motif %d/%d" % (j + 1, len(motif_pfms[i]))))
        viz_sequence.plot_weights(motif_hcwms[i][j])
    
        body = []
        for k, (match_name, match_pfm, match_qval) in enumerate(tomtom_matches[j]):
            fig = viz_sequence.plot_weights(pfm_to_pwm(match_pfm), return_fig=True)
            fig.tight_layout()
            if k < num_matches_to_show:
                body.append(
                    vdomh.tr(
                        vdomh.td(match_name),
                        vdomh.td(str(match_qval)),
                        vdomh.td(figure_to_vdom_image(fig))
                    )
                )
                if tfm_motifs_cache_dir:
                    # Save results and figures
                    motif_id = "%d_%d" % (i, j)
                    fig.savefig(os.path.join(out_dir, motif_id + ("_hit-%d.png" % (k + 1))))
            else:
                body.append(
                    vdomh.tr(
                        vdomh.td(match_name),
                        vdomh.td(str(match_qval)),
                        vdomh.td("Not shown")
                    )
                )
        if not body:
            display(vdomh.p("No TOMTOM matches passing threshold"))
        else:
            display(vdomh.table(header, vdomh.tbody(*body)))
        plt.close("all")

Metacluster 1/2

Motif 1/10

Motif IDq-valPWM
ETV1_HUMAN.H11MO.0.A8.640560000000001e-07
MA0750.2_ZBTB7A8.640560000000001e-07
ELK1_HUMAN.H11MO.0.B1.55745e-06
MA0076.2_ELK41.55745e-06
ELK4_HUMAN.H11MO.0.A1.55745e-06
ELF2_HUMAN.H11MO.0.C1.55745e-06Not shown
ELF1_HUMAN.H11MO.0.A1.55745e-06Not shown
GABPA_HUMAN.H11MO.0.A1.55745e-06Not shown
MA0765.2_ETV58.90893e-06Not shown
MA0763.1_ETV32.8174200000000002e-05Not shown

Motif 2/10

Motif IDq-valPWM
ZNF76_HUMAN.H11MO.0.C2.70023e-21
ZN143_HUMAN.H11MO.0.A7.389760000000001e-20
THA11_HUMAN.H11MO.0.B2.65974e-17
MA1573.1_THAP112.24248e-09
MA0088.2_ZNF1430.014499799999999998
STAT3_HUMAN.H11MO.0.A0.0564617Not shown
P63_HUMAN.H11MO.0.A0.07686799999999999Not shown
MA1625.1_Stat5b0.107287Not shown
MA0519.1_Stat5a::Stat5b0.12906199999999998Not shown
MA0525.2_TP630.16322Not shown

Motif 3/10

Motif IDq-valPWM
GABPA_HUMAN.H11MO.0.A0.00317498
MA0076.2_ELK40.00942936
MA0645.1_ETV60.0111744
MA0474.2_ERG0.0111744
MA0475.2_FLI10.0111744
ELF2_HUMAN.H11MO.0.C0.0111744Not shown
MA0098.3_ETS10.0111744Not shown
MA0763.1_ETV30.0111744Not shown
MA0028.2_ELK10.0116Not shown
ELK4_HUMAN.H11MO.0.A0.0116Not shown

Motif 4/10

No TOMTOM matches passing threshold

Motif 5/10

Motif IDq-valPWM
SP2_HUMAN.H11MO.0.A0.0536102
CTCFL_HUMAN.H11MO.0.A0.0536102
USF2_HUMAN.H11MO.0.A0.0536102
SP1_HUMAN.H11MO.1.A0.0536102
SP3_HUMAN.H11MO.0.B0.0536102
CTCF_HUMAN.H11MO.0.A0.059375199999999996Not shown
SP1_HUMAN.H11MO.0.A0.0809607Not shown
EGR4_HUMAN.H11MO.0.D0.0809607Not shown
MA1513.1_KLF150.0809607Not shown
MA1102.2_CTCFL0.0809607Not shown

Motif 6/10

Motif IDq-valPWM
SP2_HUMAN.H11MO.0.A5.75151e-06
SP1_HUMAN.H11MO.0.A1.3186500000000002e-05
SP3_HUMAN.H11MO.0.B6.25006e-05
KLF16_HUMAN.H11MO.0.D6.37028e-05
TBX15_HUMAN.H11MO.0.D0.000135048
SP1_HUMAN.H11MO.1.A0.000135048Not shown
KLF3_HUMAN.H11MO.0.B0.0009614360000000001Not shown
MA1513.1_KLF150.00154848Not shown
MA1650.1_ZBTB140.00245929Not shown
PATZ1_HUMAN.H11MO.0.C0.00308759Not shown

Motif 7/10

No TOMTOM matches passing threshold

Motif 8/10

Motif IDq-valPWM
SP1_HUMAN.H11MO.0.A0.045951599999999995
ATF2_HUMAN.H11MO.2.C0.045951599999999995
SP2_HUMAN.H11MO.0.A0.045951599999999995
USF2_HUMAN.H11MO.0.A0.0679066
RFX1_HUMAN.H11MO.0.B0.0718509
SP3_HUMAN.H11MO.0.B0.0718509Not shown
CREM_HUMAN.H11MO.0.C0.0718509Not shown
KLF16_HUMAN.H11MO.0.D0.11839100000000001Not shown
MA0765.2_ETV50.134444Not shown
MA1475.1_CREB3L4(var.2)0.134444Not shown

Motif 9/10

Motif IDq-valPWM
SP2_HUMAN.H11MO.0.A0.035374199999999995
USF2_HUMAN.H11MO.0.A0.035374199999999995
MXI1_HUMAN.H11MO.0.A0.0709697
SP1_HUMAN.H11MO.0.A0.100678
MA1527.1_NFIC(var.2)0.100678
MA1513.1_KLF150.14777300000000002Not shown
MA0146.2_Zfx0.176448Not shown
MA1650.1_ZBTB140.176448Not shown
SP3_HUMAN.H11MO.0.B0.176448Not shown
MA1528.1_NFIX(var.2)0.176448Not shown

Motif 10/10

Motif IDq-valPWM
SP1_HUMAN.H11MO.0.A7.4009699999999995e-06
SP2_HUMAN.H11MO.0.A7.4009699999999995e-06
SP3_HUMAN.H11MO.0.B0.00021490099999999998
PATZ1_HUMAN.H11MO.0.C0.0009736069999999999
MA1513.1_KLF150.0009736069999999999
MA1650.1_ZBTB140.0009736069999999999Not shown
SP1_HUMAN.H11MO.1.A0.00104494Not shown
KLF16_HUMAN.H11MO.0.D0.00141096Not shown
ZFX_HUMAN.H11MO.1.A0.00361323Not shown
USF2_HUMAN.H11MO.0.A0.00361323Not shown

Metacluster 2/2

Motif 1/8

Motif IDq-valPWM
MA0076.2_ELK44.20439e-06
MA0750.2_ZBTB7A4.20439e-06
ELK4_HUMAN.H11MO.0.A1.17928e-05
MA0765.2_ETV55.4437399999999995e-05
ELF1_HUMAN.H11MO.0.A5.97171e-05
GABPA_HUMAN.H11MO.0.A7.47474e-05Not shown
ELF2_HUMAN.H11MO.0.C7.47474e-05Not shown
ELK1_HUMAN.H11MO.0.B7.47474e-05Not shown
ETV1_HUMAN.H11MO.0.A0.00110926Not shown
ETS1_HUMAN.H11MO.0.A0.00114018Not shown

Motif 2/8

Motif IDq-valPWM
SP2_HUMAN.H11MO.0.A1.25861e-08
SP3_HUMAN.H11MO.0.B5.9789099999999995e-06
SP1_HUMAN.H11MO.0.A0.000139354
KLF3_HUMAN.H11MO.0.B0.00048526900000000003
SP1_HUMAN.H11MO.1.A0.00048526900000000003
MA0146.2_Zfx0.00110697Not shown
THAP1_HUMAN.H11MO.0.C0.0016928000000000002Not shown
MA1513.1_KLF150.00330208Not shown
ZFX_HUMAN.H11MO.1.A0.00467669Not shown
RFX1_HUMAN.H11MO.0.B0.00705724Not shown

Motif 3/8

Motif IDq-valPWM
GABPA_HUMAN.H11MO.0.A0.356108
MA0474.2_ERG0.356108
MA0098.3_ETS10.356108
MA0641.1_ELF40.356108
ELK4_HUMAN.H11MO.0.A0.356108
MA0759.1_ELK30.356108Not shown
MA0475.2_FLI10.356108Not shown
ELF2_HUMAN.H11MO.0.C0.356108Not shown
MA0762.1_ETV20.356108Not shown
MA0076.2_ELK40.356108Not shown

Motif 4/8

Motif IDq-valPWM
SP2_HUMAN.H11MO.0.A2.1146100000000002e-07
SP1_HUMAN.H11MO.0.A1.0284500000000001e-05
SP3_HUMAN.H11MO.0.B1.12277e-05
KLF3_HUMAN.H11MO.0.B0.00110058
SP1_HUMAN.H11MO.1.A0.00166886
MA0146.2_Zfx0.0025226Not shown
THAP1_HUMAN.H11MO.0.C0.00444476Not shown
MA1513.1_KLF150.00537156Not shown
ZFX_HUMAN.H11MO.1.A0.00537156Not shown
MA1650.1_ZBTB140.00636835Not shown

Motif 5/8

Motif IDq-valPWM
SP2_HUMAN.H11MO.0.A1.5955200000000001e-06
SP3_HUMAN.H11MO.0.B5.4266400000000006e-05
SP1_HUMAN.H11MO.0.A7.23284e-05
MXI1_HUMAN.H11MO.0.A0.00213446
MA0750.2_ZBTB7A0.00311168
MA0076.2_ELK40.00311168Not shown
MA0765.2_ETV50.00414841Not shown
KLF16_HUMAN.H11MO.0.D0.00414841Not shown
KLF3_HUMAN.H11MO.0.B0.00414841Not shown
ELK1_HUMAN.H11MO.0.B0.00587283Not shown

Motif 6/8

Motif IDq-valPWM
SP2_HUMAN.H11MO.0.A1.8709099999999998e-06
SP3_HUMAN.H11MO.0.B7.371489999999999e-06
SP1_HUMAN.H11MO.0.A6.096060000000001e-05
KLF3_HUMAN.H11MO.0.B0.0008157389999999999
SP1_HUMAN.H11MO.1.A0.00131308
MA1513.1_KLF150.00323884Not shown
USF2_HUMAN.H11MO.0.A0.004529600000000001Not shown
THAP1_HUMAN.H11MO.0.C0.00717675Not shown
PATZ1_HUMAN.H11MO.0.C0.00717675Not shown
KLF16_HUMAN.H11MO.0.D0.0116458Not shown

Motif 7/8

Motif IDq-valPWM
SP2_HUMAN.H11MO.0.A1.31602e-05
SP1_HUMAN.H11MO.0.A5.41108e-05
SP3_HUMAN.H11MO.0.B5.41108e-05
KLF3_HUMAN.H11MO.0.B0.000196205
MA0146.2_Zfx0.0006666589999999999
SP1_HUMAN.H11MO.1.A0.0029697Not shown
KLF16_HUMAN.H11MO.0.D0.00393194Not shown
MXI1_HUMAN.H11MO.0.A0.00393194Not shown
MA1513.1_KLF150.00511767Not shown
THAP1_HUMAN.H11MO.0.C0.00868532Not shown

Motif 8/8

Motif IDq-valPWM
SP2_HUMAN.H11MO.0.A2.8564099999999997e-06
SP3_HUMAN.H11MO.0.B2.2293400000000002e-05
SP1_HUMAN.H11MO.0.A9.62446e-05
KLF3_HUMAN.H11MO.0.B0.0028508
KLF16_HUMAN.H11MO.0.D0.00322931
MA1513.1_KLF150.00326969Not shown
MBD2_HUMAN.H11MO.0.B0.00682825Not shown
USF2_HUMAN.H11MO.0.A0.0080395Not shown
THAP1_HUMAN.H11MO.0.C0.0080395Not shown
MXI1_HUMAN.H11MO.0.A0.0106155Not shown