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: JUND
DeepSHAP scores path: /users/amtseng/tfmodisco/results/importance_scores/multitask_profile/JUND_multitask_profile_fold4/JUND_multitask_profile_fold4_imp_scores.h5
TF-MoDISco results path: /users/amtseng/tfmodisco/results/tfmodisco/multitask_profile/JUND_multitask_profile_fold4/JUND_multitask_profile_fold4_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/JUND_multitask_profile_fold4/JUND_multitask_profile_fold4_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%|██████████| 350/350 [03:34<00:00,  1.63it/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/9

5838 seqlets

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

Pattern 2/9

1580 seqlets

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

Pattern 3/9

884 seqlets

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

Pattern 4/9

489 seqlets

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

Pattern 5/9

445 seqlets

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

Pattern 6/9

384 seqlets

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

Pattern 7/9

157 seqlets

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

Pattern 8/9

105 seqlets

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

Pattern 9/9

57 seqlets

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

Metacluster 2/2

Pattern 1/20

200 seqlets

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

Pattern 2/20

109 seqlets

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

Pattern 3/20

105 seqlets

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

Pattern 4/20

94 seqlets

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

Pattern 5/20

87 seqlets

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

Pattern 6/20

83 seqlets

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

Pattern 7/20

77 seqlets

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

Pattern 8/20

77 seqlets

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

Pattern 9/20

76 seqlets

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

Pattern 10/20

68 seqlets

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

Pattern 11/20

67 seqlets

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

Pattern 12/20

66 seqlets

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

Pattern 13/20

57 seqlets

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

Pattern 14/20

49 seqlets

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

Pattern 15/20

47 seqlets

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

Pattern 16/20

46 seqlets

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

Pattern 17/20

46 seqlets

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

Pattern 18/20

44 seqlets

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

Pattern 19/20

40 seqlets

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

Pattern 20/20

34 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
15838
21580
3884
4489
5445
6384
7157
8105
957

Metacluster 2/2

/users/amtseng/tfmodisco/src/plot/viz_sequence.py:152: RuntimeWarning: More than 20 figures have been opened. Figures created through the pyplot interface (`matplotlib.pyplot.figure`) are retained until explicitly closed and may consume too much memory. (To control this warning, see the rcParam `figure.max_open_warning`).
  fig = plt.figure(figsize=figsize)
#SeqletsForwardReverse
1200
2109
3105
494
587
683
777
877
976
1068
1167
1266
1357
1449
1547
1646
1746
1844
1940
2034

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/9

Motif IDq-valPWM
JUN_HUMAN.H11MO.0.A6.52846e-07
FOSL2_HUMAN.H11MO.0.A6.52846e-07
MA0099.3_FOS::JUN1.09949e-06
MA1130.1_FOSL2::JUN1.64923e-06
FOSB_HUMAN.H11MO.0.A2.6801999999999998e-06
JUND_HUMAN.H11MO.0.A2.6801999999999998e-06Not shown
MA1141.1_FOS::JUND3.0707299999999997e-06Not shown
MA1138.1_FOSL2::JUNB3.0707299999999997e-06Not shown
MA1128.1_FOSL1::JUN3.0707299999999997e-06Not shown
FOSL1_HUMAN.H11MO.0.A5.51984e-06Not shown

Motif 2/9

Motif IDq-valPWM
MA0605.2_ATF31.90702e-06
ATF2_HUMAN.H11MO.0.B1.90702e-06
MA1136.1_FOSB::JUNB(var.2)1.90702e-06
MA1129.1_FOSL1::JUN(var.2)5.07893e-06
MA1145.1_FOSL2::JUND(var.2)5.07893e-06
MA1475.1_CREB3L4(var.2)5.07893e-06Not shown
MA1139.1_FOSL2::JUNB(var.2)5.683139999999999e-06Not shown
JDP2_HUMAN.H11MO.0.D5.683139999999999e-06Not shown
MA1126.1_FOS::JUN(var.2)5.683139999999999e-06Not shown
MA1131.1_FOSL2::JUN(var.2)5.986209999999999e-06Not shown

Motif 3/9

Motif IDq-valPWM
ATF4_HUMAN.H11MO.0.A0.000613018
MA0833.2_ATF40.000613018
MA1636.1_CEBPG(var.2)0.000613018
CEBPG_HUMAN.H11MO.0.B0.000909883
BATF_HUMAN.H11MO.1.A0.00119638
DDIT3_HUMAN.H11MO.0.D0.00121812Not shown
MA1143.1_FOSL1::JUND(var.2)0.00411551Not shown
CEBPD_HUMAN.H11MO.0.C0.00415586Not shown
MA0837.1_CEBPE0.00443383Not shown
MA0466.2_CEBPB0.00443383Not shown

Motif 4/9

Motif IDq-valPWM
MA1132.1_JUN::JUNB0.150532
BATF3_HUMAN.H11MO.0.B0.150532
MA0490.2_JUNB0.150532
MA1633.1_BACH10.150532
MA1141.1_FOS::JUND0.150532
MA0501.1_MAF::NFE20.150532Not shown
MA0659.2_MAFG0.150532Not shown
MA0783.1_PKNOX20.150532Not shown
MA0089.2_NFE2L10.150532Not shown
MA1622.1_Smad2::Smad30.150532Not shown

Motif 5/9

Motif IDq-valPWM
SP2_HUMAN.H11MO.0.A0.000371122
SP3_HUMAN.H11MO.0.B0.000585393
SP1_HUMAN.H11MO.0.A0.000625351
KLF3_HUMAN.H11MO.0.B0.00296416
SP1_HUMAN.H11MO.1.A0.00407506
USF2_HUMAN.H11MO.0.A0.00407506Not shown
MA1513.1_KLF150.00689235Not shown
MA0146.2_Zfx0.014112000000000001Not shown
KLF16_HUMAN.H11MO.0.D0.024337400000000002Not shown
MA1650.1_ZBTB140.031308499999999996Not shown

Motif 6/9

Motif IDq-valPWM
CTCFL_HUMAN.H11MO.0.A0.00665269
CTCF_HUMAN.H11MO.0.A0.00665269
MA0139.1_CTCF0.010537200000000002
MA1102.2_CTCFL0.049210000000000004
MA0830.2_TCF40.11195999999999999
USF2_HUMAN.H11MO.0.A0.117073Not shown
ZN320_HUMAN.H11MO.0.C0.143334Not shown
MA0103.3_ZEB10.143334Not shown
MA0750.2_ZBTB7A0.217837Not shown
MA0104.4_MYCN0.217837Not shown

Motif 7/9

Motif IDq-valPWM
SP1_HUMAN.H11MO.0.A5.3833900000000006e-05
ZN770_HUMAN.H11MO.0.C5.3833900000000006e-05
SP2_HUMAN.H11MO.0.A6.21439e-05
SP3_HUMAN.H11MO.0.B7.30211e-05
TBX15_HUMAN.H11MO.0.D7.30211e-05
KLF16_HUMAN.H11MO.0.D0.00010895Not shown
WT1_HUMAN.H11MO.0.C0.000301277Not shown
SRBP2_HUMAN.H11MO.0.B0.000536872Not shown
MA1596.1_ZNF4600.000639707Not shown
PATZ1_HUMAN.H11MO.0.C0.000830349Not shown

Motif 8/9

Motif IDq-valPWM
CPEB1_HUMAN.H11MO.0.D2.02484e-05
MA1125.1_ZNF3840.0151702
PRDM6_HUMAN.H11MO.0.C0.0151702
FOXL1_HUMAN.H11MO.0.D0.0151702
FOXG1_HUMAN.H11MO.0.D0.053129499999999996
ANDR_HUMAN.H11MO.0.A0.0631545Not shown
FOXJ3_HUMAN.H11MO.0.A0.0631545Not shown
MA0679.2_ONECUT10.0764645Not shown
ONEC2_HUMAN.H11MO.0.D0.0764645Not shown
FOXJ3_HUMAN.H11MO.1.B0.0764645Not shown

Motif 9/9

Motif IDq-valPWM
MA0828.1_SREBF2(var.2)0.342097
MA0841.1_NFE20.342097
MA0692.1_TFEB0.342097
HXB8_HUMAN.H11MO.0.C0.342097
MA0663.1_MLX0.342097
MA0153.2_HNF1B0.342097Not shown
SRBP1_HUMAN.H11MO.0.A0.342097Not shown
MA0664.1_MLXIPL0.342097Not shown
PDX1_HUMAN.H11MO.1.A0.342097Not shown
MA0083.3_SRF0.361153Not shown

Metacluster 2/2

Motif 1/20

No TOMTOM matches passing threshold

Motif 2/20

Motif IDq-valPWM
MA0478.1_FOSL20.000272331
MA0489.1_JUN(var.2)0.000272331
MAFG_HUMAN.H11MO.0.A0.000272331
MA1135.1_FOSB::JUNB0.000272331
MA1138.1_FOSL2::JUNB0.000272331
MA1144.1_FOSL2::JUND0.000272331Not shown
MA0476.1_FOS0.000291784Not shown
MA0655.1_JDP20.000302309Not shown
MA1134.1_FOS::JUNB0.000302309Not shown
MAFK_HUMAN.H11MO.0.A0.000482769Not shown

Motif 3/20

Motif IDq-valPWM
SP4_HUMAN.H11MO.0.A0.15192
FLI1_HUMAN.H11MO.0.A0.15192
OLIG2_HUMAN.H11MO.0.B0.15192

Motif 4/20

No TOMTOM matches passing threshold

Motif 5/20

No TOMTOM matches passing threshold

Motif 6/20

Motif IDq-valPWM
AP2C_HUMAN.H11MO.0.A0.119977
MA0154.4_EBF10.119977
AP2A_HUMAN.H11MO.0.A0.119977
COE1_HUMAN.H11MO.0.A0.119977
MA0812.1_TFAP2B(var.2)0.125247
MA0003.4_TFAP2A0.25856399999999996Not shown
MA1615.1_Plagl10.272015Not shown
STAT6_HUMAN.H11MO.0.B0.272015Not shown
MA0814.2_TFAP2C(var.2)0.272015Not shown
MA0155.1_INSM10.272015Not shown

Motif 7/20

Motif IDq-valPWM
COE1_HUMAN.H11MO.0.A0.0139046
MA0154.4_EBF10.027699099999999997
MA0116.1_Znf4230.119707
MA0872.1_TFAP2A(var.3)0.119707
MA0815.1_TFAP2C(var.3)0.119707
MA1604.1_Ebf20.120951Not shown
MA1637.1_EBF30.120951Not shown
MA0813.1_TFAP2B(var.3)0.176307Not shown
MA1597.1_ZNF5280.237733Not shown
MA0163.1_PLAG10.237733Not shown

Motif 8/20

No TOMTOM matches passing threshold

Motif 9/20

No TOMTOM matches passing threshold

Motif 10/20

Motif IDq-valPWM
AP2B_HUMAN.H11MO.0.B0.237357

Motif 11/20

No TOMTOM matches passing threshold

Motif 12/20

Motif IDq-valPWM
CTCFL_HUMAN.H11MO.0.A0.180585
ZFX_HUMAN.H11MO.0.A0.180585
MA0103.3_ZEB10.180585
MBD2_HUMAN.H11MO.0.B0.180585
MA1102.2_CTCFL0.180585
MA0522.3_TCF30.180585Not shown
MA0830.2_TCF40.180585Not shown
SP2_HUMAN.H11MO.0.A0.180585Not shown
RFX1_HUMAN.H11MO.0.B0.180585Not shown
SP1_HUMAN.H11MO.0.A0.180585Not shown

Motif 13/20

No TOMTOM matches passing threshold

Motif 14/20

No TOMTOM matches passing threshold

Motif 15/20

Motif IDq-valPWM
MA0476.1_FOS0.00048202900000000003
MA0478.1_FOSL20.00048202900000000003
MA0489.1_JUN(var.2)0.000514164
MA0655.1_JDP20.000838465
MA1135.1_FOSB::JUNB0.000846958
MA1134.1_FOS::JUNB0.000846958Not shown
MA1138.1_FOSL2::JUNB0.000846958Not shown
MA1144.1_FOSL2::JUND0.000846958Not shown
MA0841.1_NFE20.000846958Not shown
BACH1_HUMAN.H11MO.0.A0.0010429999999999999Not shown

Motif 16/20

Motif IDq-valPWM
SMAD3_HUMAN.H11MO.0.B0.178765
MAZ_HUMAN.H11MO.0.A0.178765
PTF1A_HUMAN.H11MO.1.B0.178765
SNAI1_HUMAN.H11MO.0.C0.178765
MESP1_HUMAN.H11MO.0.D0.179248
TFAP4_HUMAN.H11MO.0.A0.179248Not shown
SALL4_HUMAN.H11MO.0.B0.179248Not shown
WT1_HUMAN.H11MO.0.C0.179248Not shown
MA1629.1_Zic20.179248Not shown
MA1102.2_CTCFL0.179248Not shown

Motif 17/20

Motif IDq-valPWM
ZN563_HUMAN.H11MO.1.C0.10533
THAP1_HUMAN.H11MO.0.C0.292715
SP2_HUMAN.H11MO.0.A0.292715
NRF1_HUMAN.H11MO.0.A0.292715
EGR4_HUMAN.H11MO.0.D0.292715
SP1_HUMAN.H11MO.0.A0.292715Not shown
MA1650.1_ZBTB140.292715Not shown
SP3_HUMAN.H11MO.0.B0.292715Not shown
MXI1_HUMAN.H11MO.0.A0.307471Not shown
ZN708_HUMAN.H11MO.1.D0.307883Not shown

Motif 18/20

Motif IDq-valPWM
ERR1_HUMAN.H11MO.0.A0.46700200000000003
MA1155.1_ZSCAN40.46700200000000003
MA0099.3_FOS::JUN0.46700200000000003
NKX21_HUMAN.H11MO.0.A0.46700200000000003
MA1144.1_FOSL2::JUND0.46700200000000003
NF2L2_HUMAN.H11MO.0.A0.46700200000000003Not shown
MAFK_HUMAN.H11MO.1.A0.46700200000000003Not shown
MA1633.1_BACH10.46700200000000003Not shown
ZKSC1_HUMAN.H11MO.0.B0.46700200000000003Not shown
MA0501.1_MAF::NFE20.46700200000000003Not shown

Motif 19/20

No TOMTOM matches passing threshold

Motif 20/20

Motif IDq-valPWM
ZFX_HUMAN.H11MO.1.A0.0735497
MAZ_HUMAN.H11MO.1.A0.424678
RXRA_HUMAN.H11MO.0.A0.424678
KLF3_HUMAN.H11MO.0.B0.424678
MECP2_HUMAN.H11MO.0.C0.424678
NR2C1_HUMAN.H11MO.0.C0.424678Not shown
MA0753.2_ZNF7400.424678Not shown
MA1529.1_NHLH20.424678Not shown
RXRA_HUMAN.H11MO.1.A0.424678Not shown
COT2_HUMAN.H11MO.1.A0.424678Not shown