# Information content differentiates enhancers from silencers in mouse photoreceptors

1. Edison Family Center for Genome Sciences and Systems Biology, Washington University School of Medicine
St. LouisUnited States
2. Department of Genetics, Washington University School of Medicine
St. LouisUnited States
3. Department of Pathology and Immunology, Washington University School of Medicine
St LouisUnited States
• Research Article
• Computational and Systems Biology
• Genetics and Genomics
• enhancers
• silencers
• information theory
• massively parallel reporter assays
• Mouse
• publisher-id67403
• doi10.7554/eLife.67403
• elocation-ide67403

## Abstract

Enhancers and silencers often depend on the same transcription factors (TFs) and are conflated in genomic assays of TF binding or chromatin state. To identify sequence features that distinguish enhancers and silencers, we assayed massively parallel reporter libraries of genomic sequences targeted by the photoreceptor TF cone-rod homeobox (CRX) in mouse retinas. Both enhancers and silencers contain more TF motifs than inactive sequences, but relative to silencers, enhancers contain motifs from a more diverse collection of TFs. We developed a measure of information content that describes the number and diversity of motifs in a sequence and found that, while both enhancers and silencers depend on CRX motifs, enhancers have higher information content. The ability of information content to distinguish enhancers and silencers targeted by the same TF illustrates how motif context determines the activity of cis-regulatory sequences.

## Introduction

Active cis-regulatory sequences in the genome are characterized by accessible chromatin and specific histone modifications, which reflect the action of DNA-binding transcription factors (TFs) that recognize specific sequence motifs and recruit chromatin-modifying enzymes 44Klemm et al.2019. These epigenetic hallmarks of active chromatin are routinely used to train machine learning models that predict cis-regulatory sequences, based on the assumption that such epigenetic marks are reliable predictors of genuine cis-regulatory sequences . However, results from functional assays show that many predicted cis-regulatory sequences exhibit little or no cis-regulatory activity. Typically, 50% or more of predicted cis-regulatory sequences fail to drive expression in massively parallel reporter assays (MPRAs) , indicating that an active chromatin state is not sufficient to reliably identify cis-regulatory sequences.

Another challenge is that enhancers and silencers are difficult to distinguish by chromatin accessibility or epigenetic state , and thus computational predictions of _cis-_regulatory sequences often do not differentiate between enhancers and silencers. Silencers are often enhancers in other cell types , reside in open chromatin , sometimes bear epigenetic marks of active enhancers , and can be bound by TFs that also act on enhancers in the same cell type . As a result, enhancers and silencers share similar sequence features, and understanding how they are distinguished in a particular cell type remains an important challenge 76Segert et al.2021.

The TF cone-rod homeobox (CRX) controls selective gene expression in a number of different photoreceptor and bipolar cell types in the retina . These cell types derive from the same progenitor cell population , but they exhibit divergent, CRX-directed transcriptional programs . CRX cooperates with cell type-specific co-factors to selectively activate and repress different genes in different cell types and is required for differentiation of rod and cone photoreceptors . However, the sequence features that define CRX-targeted enhancers vs. silencers in the retina are largely unknown.

We previously found that a significant minority of CRX-bound sequences act as silencers in an MPRA conducted in live mouse retinas 85White et al.2013, and that silencer activity requires CRX 86White et al.2016. Here, we extend our analysis by testing thousands of additional candidate cis-regulatory sequences. We show that while regions of accessible chromatin and CRX binding exhibit a range of cis-regulatory activity, enhancers and silencers contain more TF motifs than inactive sequences, and that enhancers are distinguished from silencers by a higher diversity of TF motifs. We capture the differences between these sequence classes with a new metric, motif information content (Boltzmann entropy), that considers only the number and diversity of TF motifs in a candidate cis-regulatory sequence. Our results suggest that CRX-targeted enhancers are defined by a flexible regulatory grammar and demonstrate how differences in motif information content encode functional differences between genomic loci with similar chromatin states.

# Setup imports for analysis
import os
import sys
import itertools

import numpy as np
import pandas as pd
import matplotlib as mpl
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
from mpl_toolkits.axes_grid1 import make_axes_locatable
from scipy import stats
from sklearn.feature_selection import RFE, RFECV
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import StratifiedKFold
from pybedtools import BedTool
from IPython.display import display
import logomaker

sys.path.insert(0, "utils")
from utils import fasta_seq_parse_manip, gkmsvm, modeling, plot_utils, predicted_occupancy, quality_control, sequence_annotation_processing

data_dir = os.path.join("Data")
figures_dir = os.path.join("Figures")

# Load in all sequences
all_seqs = fasta_seq_parse_manip.read_fasta(os.path.join(data_dir, "library1And2.fasta"))
# Drop scrambled sequences -- we don't need them for any analysis
all_seqs = all_seqs[~(all_seqs.index.str.contains("scr"))]
plot_utils.set_manuscript_params()

## Results

We tested the activities of 4844 putative CRX-targeted cis-regulatory sequences (CRX-targeted sequences) by MPRA in live retinas. The MPRA libraries consist of 164 bp genomic sequences centered on the best match to the CRX position weight matrix (PWM) 49Lee et al.2010 whenever a CRX motif is present, and matched sequences in which all CRX motifs were abolished by point mutation (Materials and methods). The MPRA libraries include 3299 CRX-bound sequences identified by ChIP-seq in the adult retina 9Corbo et al.2010 and 1545 sequences that do not have measurable CRX binding in the adult retina but reside in accessible chromatin in adult photoreceptors 31Hughes et al.2017 and have the H3K27ac enhancer mark in postnatal day 14 (P14) retina 72Ruzycki et al.2018 (‘ATAC-seq peaks’). We split the sequences across two plasmid libraries, each of which contained the same 150 scrambled sequences as internal controls (Supplementary files 1 and 2). We cloned sequences upstream of the rod photoreceptor-specific Rhodopsin (Rho) promoter and a DsRed reporter gene, electroporated libraries into explanted mouse retinas at P0 in triplicate, harvested the retinas at P8, and then sequenced the RNA and input DNA plasmid pool. The data is highly reproducible across replicates (R2 > 0.96, Figure 1—figure supplement 1). After activity scores were calculated and normalized to the basal Rho promoter, the two libraries were well calibrated and merged together (two-sample Kolmogorov-Smirnov test p = 0.09, Figure 1—figure supplement 2, Supplementary file 3, and Materials and methods).

# Process data for the Rho promoter: convert counts into activity scores for each sequence
library_names = ["library1", "library2"]
rho_activity_data = {} # {library name: pd.DataFrame}
barcode_count_dir = os.path.join(data_dir, "Rhodopsin")

for library in library_names:
print(f"Processing data for {library} with the Rho promoter...")
# File names
barcode_count_files = [
os.path.join(barcode_count_dir, f"{library}{sample}.counts")
for sample in ["Plasmid", "Rna1", "Rna2", "Rna3"]
]

# Masks and metadata for downstream functions
sample_labels = np.array(["DNA", "RNA1", "RNA2", "RNA3"])
sample_rna_mask = np.array([False, True, True, True])
n_samples = len(sample_labels)
n_rna_samples = len(rna_labels)
n_dna_samples = len(dna_labels)
n_barcodes_per_sequence = 3

# Read in the barcode counts
print("Reading in barcode counts.")
all_sample_counts_df = quality_control.read_bc_count_files(barcode_count_files, sample_labels)

# Remove barcodes that are detection-limited.
# Barcodes below the DNA cutoff are NaN (because they are missing from the input plasmid pool)
# Barcodes below any of the RNA cutoffs are zero in all replicates
print("Removing detection-limited barcodes and normalizing to counts per million.")
cutoffs = [10, 5, 5, 5]
threshold_sample_counts_df = quality_control.filter_low_counts(all_sample_counts_df, sample_labels, cutoffs,
dna_labels=dna_labels, bc_per_seq=n_barcodes_per_sequence)

# Normalize RNA barcode counts by plasmid barcode counts
print("Normalizing RNA to DNA.")
normalized_sample_counts_df = quality_control.normalize_rna_by_dna(threshold_sample_counts_df, rna_labels, dna_labels)
# Drop DNA
barcode_sample_counts_df = normalized_sample_counts_df.drop(columns=dna_labels)

# Average across barcodes
print("Averaging across barcodes within a replicate.")
activity_replicate_df = quality_control.average_barcodes(barcode_sample_counts_df)

# Basal-normalize, average across replicates, do statistics
print("Normalizing to the basal Rho promoter.")
sequence_expression_df = quality_control.basal_normalize(activity_replicate_df, "BASAL")
print("Computing p-values for the null hypothesis that a sequence is no different than the basal promoter alone.")
sequence_expression_df["expression_pvalue"] = quality_control.log_ttest_vs_basal(activity_replicate_df, "BASAL")
sequence_expression_df["expression_qvalue"] = modeling.fdr(sequence_expression_df["expression_pvalue"])
print(f"Done processing data!")

rho_activity_data[library] = sequence_expression_df
# Now process data for the Polylinker (experiment is in Fig 4, but it is easier to process the data here)
# Process data for the Rho promoter: convert counts into activity scores for each sequence
library_names = ["library1", "library2"]
polylinker_activity_data = {} # {library name: pd.DataFrame}
barcode_count_dir = os.path.join(data_dir, "Polylinker")

for library in library_names:
print(f"Processing data for {library} with the Polylinker...")
# File names
barcode_count_files = [
os.path.join(barcode_count_dir, f"{library}{sample}.counts")
for sample in ["Plasmid", "Rna1", "Rna2", "Rna3"]
]

# Masks and metadata for downstream functions
sample_labels = np.array(["DNA", "RNA1", "RNA2", "RNA3"])
sample_rna_mask = np.array([False, True, True, True])
n_samples = len(sample_labels)
n_rna_samples = len(rna_labels)
n_dna_samples = len(dna_labels)
n_barcodes_per_sequence = 3

# Read in the barcode counts
print("Reading in barcode counts.")
all_sample_counts_df = quality_control.read_bc_count_files(barcode_count_files, sample_labels)

# Remove barcodes that are detection-limited.
print("Removing barcodes missing from the DNA pool and normalizing to counts per million.")
cutoffs_dna_only = [50, 0, 0, 0]
# Barcodes below the DNA cutoff are NaN (because they are missing from the input plasmid pool)
# Barcodes below any of the RNA cutoffs are zero in all replicates
print("Removing detection-limited barcodes and normalizing to counts per million.")
threshold_sample_counts_df = quality_control.filter_low_counts(all_sample_counts_df, sample_labels, cutoffs_dna_only,
dna_labels=dna_labels, bc_per_seq=n_barcodes_per_sequence)
print("Now removing RNA barcodes missing from any replicate.")
cutoffs_rna_cpm = [0, 8, 8, 8]
threshold_sample_counts_df = quality_control.filter_low_counts(threshold_sample_counts_df, sample_labels, cutoffs_rna_cpm,
dna_labels=dna_labels, bc_per_seq=n_barcodes_per_sequence, cpm_normalize=False)

# Normalize RNA barcode counts by plasmid barcode counts
print("Normalizing RNA to DNA.")
normalized_sample_counts_df = quality_control.normalize_rna_by_dna(threshold_sample_counts_df, rna_labels, dna_labels)
# Drop DNA
barcode_sample_counts_df = normalized_sample_counts_df.drop(columns=dna_labels)

# Average across barcodes
print("Averaging across barcodes within a replicate.")
activity_replicate_df = quality_control.average_barcodes(barcode_sample_counts_df)

# Drop "basal" and average across replicates
print("Removing the 'basal' promoter (Polylinker) and averaging across replicates. No statistical analysis is performed here.")
activity_replicate_df = activity_replicate_df.drop(index="BASAL")
sequence_expression_df = activity_replicate_df.apply(lambda x: pd.Series({"expression": x.mean(), "expression_SEM": x.sem()}), axis=1)
print(f"Done processing data!")

polylinker_activity_data[library] = sequence_expression_df
# Join and annotate all data
print("Joining together data from the two libraries with the Rho promoter.")
color_mapping = {
"Strong enhancer": "#1f78b4",
"Weak enhancer": "#a6cee3",
"Inactive": "#33a02c",
"Silencer": "#e31a1c",
np.nan: "grey"
}

# Join the libraries and add a pseudocount to take log2
rho_df = library1_rho_df.append(library2_rho_df)
rho_pseudocount = 1e-3
rho_df["expression_log2"] = np.log2(rho_df["expression"] + rho_pseudocount)

# Define cutoff for a strong enhancer based on scrambled sequences
print("Annotating sequences as strong enhancer, weak enhancer, inactive, silencer, or ambiguous.")
scrambled_df = scrambled_df[scrambled_df["expression"].notna()]
strong_cutoff = scrambled_df["expression_log2"].quantile(0.95)
print(f"Cutoff to call something a strong enhancer: activity is above {strong_cutoff:.2f}")

# Drop scrambled sequences

# Helper function to label and color a sequence
def label_color_sequence(row, alpha=0.05, strong_cutoff=strong_cutoff, inactive_cutoff=1, color_mapping=color_mapping):
expr_log2 = row["expression_log2"]
qval = row["expression_qvalue"]
# Inactive
if (np.abs(expr_log2) <= inactive_cutoff) & (qval >= alpha):
group = "Inactive"
# Silencer
elif (expr_log2 < -inactive_cutoff) & ((qval < alpha) | (row["expression"] == 0)):
group = "Silencer"
# Enhancer
elif (expr_log2 > inactive_cutoff) & (qval < alpha):
# Strong
if expr_log2 > strong_cutoff:
group = "Strong enhancer"
# Weak
else:
group = "Weak enhancer"
# Ambiguous
else:
group = np.nan

color = color_mapping[group]
return pd.Series({"group_name": group, "plot_color": color})

# Annotate both WT and MUT sequences
rho_df = rho_df.join(rho_df.apply(label_color_sequence, axis=1))
rho_df["group_name"] = sequence_annotation_processing.to_categorical(rho_df["group_name"])

# Now do Polylinker data
print("Joining together data from the two libraries with the Polylinker promoter and annotate for autonomous activity.")
poly_df = library1_poly_df.append(library2_poly_df)
poly_pseudocount = 1e-2
poly_df["expression_log2"] = np.log2(poly_df["expression"] + poly_pseudocount)
poly_df["autonomous_activity"] = (poly_df["expression_log2"] > 0)

# Compute effect of mutating CRX motifs in the presence of the Rho promoter.
print("Computing the effect size upon mutating CRX motifs in the presence of the Rho promoter.")
print("This is for Figure 5, but it is easier to do it here.")
wt_mask = rho_df.index.str.contains("_WT$") mut_mask = rho_df.index.str.contains("_MUT-allCrxSites$")

# Add variant info as a column, then trim it off the index
rho_df_no_variant_df = rho_df.copy()
rho_df_no_variant_df["variant"] = rho_df_no_variant_df.index.str.split("_").str[2:].str.join("_")
rho_df_no_variant_df = sequence_annotation_processing.remove_mutations_from_seq_id(rho_df_no_variant_df)

# Separate out WT and MUT, then join them together on the same row
wt_vs_mut_rho_df = wt_df.join(mut_df, lsuffix="_WT", rsuffix="_MUT")
wt_vs_mut_rho_df["wt_vs_mut_log2"] = wt_vs_mut_rho_df["expression_log2_WT"] - wt_vs_mut_rho_df["expression_log2_MUT"]

# Compute parameters for lognormal distribution to do stats
wt_cov = wt_vs_mut_rho_df["expression_std_WT"] / wt_vs_mut_rho_df["expression_WT"]
wt_log_mean = np.log(wt_vs_mut_rho_df["expression_WT"] / np.sqrt(wt_cov**2 + 1))
wt_log_std = np.sqrt(np.log(wt_cov**2 + 1))
mut_cov = wt_vs_mut_rho_df["expression_std_MUT"] / wt_vs_mut_rho_df["expression_MUT"]
mut_log_mean = np.log(wt_vs_mut_rho_df["expression_MUT"] / np.sqrt(mut_cov**2 + 1))
mut_log_std = np.sqrt(np.log(mut_cov**2 + 1))

# Do t-tests and FDR
wt_vs_mut_rho_df["wt_vs_mut_pvalue"] = stats.ttest_ind_from_stats(wt_log_mean, wt_log_std, wt_vs_mut_rho_df["expression_reps_WT"], mut_log_mean, mut_log_std, wt_vs_mut_rho_df["expression_reps_MUT"], equal_var=False)[1]
wt_vs_mut_rho_df["wt_vs_mut_qvalue"] = modeling.fdr(wt_vs_mut_rho_df["wt_vs_mut_pvalue"])

# Pull out WT polylinker measurements
print("Joining Rho and Polylinker data together.")
poly_wt_df = poly_df.copy()
poly_wt_df = poly_wt_df[poly_wt_df.index.str.contains("WT")]

# Drop the variant ID
poly_wt_df = poly_wt_df.rename(index=lambda x: x[:-3], columns={"expression": "expression_POLY", "expression_SEM": "expression_SEM_POLY", "expression_log2": "expression_log2_POLY"})

# Join with Rho
activity_df = wt_vs_mut_rho_df.join(poly_wt_df)

print("Annotating sequences for binding patterns.")
# Get info on CRX binding from the seq ID strings
activity_df["crx_bound"] = activity_df.index.str.contains("_C...$") # Read in BED files library_bed = BedTool(os.path.join(data_dir, "library1And2.bed")) nrl_chip_bed = BedTool(os.path.join("Data", "Downloaded", "ChIP", "nrlPeaksMm10.bed")) mef2d_chip_bed = BedTool(os.path.join("Data", "Downloaded", "ChIP", "mef2dPeaksMm10.bed")) # Get binding patterns for NRL and MEF2D library_nrl_bound_df = library_bed.intersect(nrl_chip_bed, wa=True).to_dataframe() activity_df["nrl_bound"] = activity_df.index.isin(library_nrl_bound_df["name"]) library_mef2d_bound_df = library_bed.intersect(mef2d_chip_bed, wa=True).to_dataframe() activity_df["mef2d_bound"] = activity_df.index.isin(library_mef2d_bound_df["name"]) # Helper function to "reverse one hot encode" binding patterns def annotate_binding(row): crx, nrl, mef2d = row[["crx_bound", "nrl_bound", "mef2d_bound"]] if crx: if nrl: if mef2d: return "All three" else: return "CRX+NRL" elif mef2d: return "CRX+MEF2D" else: return "CRX only" elif nrl: if mef2d: return "NRL+MEF2D" else: return "NRL only" elif mef2d: return "MEF2D only" else: return "No binding" activity_df["binding_group"] = activity_df.apply(annotate_binding, axis=1) print("Done processing and annotating data. This table corresponds to Supplementary file 3.") display(activity_df.head()) ### Strong enhancers and silencers have high CRX motif content The cis-regulatory activities of CRX-targeted sequences vary widely (Figure 1a). We defined enhancers and silencers as those sequences that have statistically significant activity that is at least twofold above or below the activity of the basal Rho promoter (Welch’s t-test, Benjamini-Hochberg false discovery rate (FDR) q < 0.05, Supplementary file 3). We defined inactive sequences as those whose activity is both within a twofold change of basal activity and not significantly different from the basal Rho promoter. We further stratified enhancers into strong and weak enhancers based on whether or not they fell above the 95th percentile of scrambled sequences. Using these criteria, 22% of CRX-targeted sequences are strong enhancers, 28% are weak enhancers, 19% are inactive, and 17% are silencers; the remaining 13% were considered ambiguous and removed from further analysis. To test whether these sequences function as CRX-dependent enhancers and silencers in the genome, we examined genes differentially expressed in Crx-/- retina 71Roger et al.2014. Genes that are de-repressed are more likely to be near silencers (Fisher’s exact test p = 0.001, odds ratio = 2.1, n = 206) and genes that are down-regulated are more likely to be near enhancers (Fisher’s exact test p = 0.02, odds ratio = 1.5, n = 344, Materials and methods), suggesting that our reporter assay identified sequences that act as enhancers and silencers in the genome. We sought to identify features that would accurately classify these different classes of sequences. # Calculate predicted occupancy of all TFs print("Computing predicted occupancy of 8 TFs on every WT and mutant sequence. This might take 2-3 minutes.") # Load in PWMs pwms = predicted_occupancy.read_pwm_files(os.path.join("Data", "Downloaded", "Pwm", "photoreceptorAndEnrichedMotifs.meme")) pwms = pwms.rename(lambda x: x.split("_")[0]) # Reverse compliment RAX for display purposes rax = pwms["RAX"].copy() rax = rax[::-1].reset_index(drop=True) rax_rc = rax.copy() rax_rc["A"] = rax["T"] rax_rc["C"] = rax["G"] rax_rc["G"] = rax["C"] rax_rc["T"] = rax["A"] pwms["RAX"] = rax_rc motif_len = pwms.apply(len) ewms = pwms.apply(predicted_occupancy.ewm_from_letter_prob).apply(predicted_occupancy.ewm_to_dict) mu = 9 # Do predicted occupancy scans occupancy_df = predicted_occupancy.all_seq_total_occupancy(all_seqs, ewms, mu, convert_ewm=False) print("Done computing predicted occupancies. This corresponds to Supplementary table 4.") display(occupancy_df.head()) # Separate out the WT sequences wt_occupancy_df = occupancy_df[occupancy_df.index.str.contains("WT$")].copy()
wt_occupancy_df = sequence_annotation_processing.remove_mutations_from_seq_id(wt_occupancy_df)
wt_occupancy_df = wt_occupancy_df.loc[activity_df.index]
n_tfs = len(wt_occupancy_df.columns)
print("Computing information content of sequences.")
entropy_df = occupancy_df.apply(predicted_occupancy.boltzmann_entropy, axis=1)
print("Done computing information content and related metrics. This corresponds to Supplementary table 5.")

wt_entropy_df = entropy_df[entropy_df.index.str.contains("WT\$")].copy()
wt_entropy_df = sequence_annotation_processing.remove_mutations_from_seq_id(wt_entropy_df)
wt_entropy_df = wt_entropy_df.loc[activity_df.index]

mut_entropy_df = entropy_df[entropy_df.index.str.contains("MUT")].copy()
mut_entropy_df = sequence_annotation_processing.remove_mutations_from_seq_id(mut_entropy_df)
mut_entropy_df = mut_entropy_df.loc[activity_df.index]

Neither CRX ChIP-seq-binding status nor DNA accessibility as measured by ATAC-seq strongly differentiates between these four classes (Figure 1b). Compared to CRX ChIP-seq peaks, ATAC-seq peaks that lack CRX binding in the adult retina are slightly enriched for inactive sequences (Fisher’s exact test p = 2 × 10–7, odds ratio = 1.5) and slightly depleted for strong enhancers (Fisher’s exact test p = 1 × 10–21, odds ratio = 2.2). However, sequences with ChIP-seq or ATAC-seq peaks span all four activity categories, consistent with prior reports that DNA accessibility and TF binding data are not sufficient to identify functional enhancers and silencers .

We examined whether the number and affinity of CRX motifs differentiate enhancers, silencers, and inactive sequences by computing the predicted CRX occupancy (i.e. expected number of bound molecules) for each sequence 85White et al.2013. Consistent with our previous work 86White et al.2016, both strong enhancers and silencers have higher predicted CRX occupancy than inactive sequences (Mann-Whitney U test, p = 6 × 10–10 and 6 × 10–17, respectively, Figure 1c), suggesting that total CRX motif content helps distinguish silencers and strong enhancers from inactive sequences. However, predicted CRX occupancy does not distinguish strong enhancers from silencers: a logistic regression classifier trained with fivefold cross-validation only achieves an area under the receiver operating characteristic (AUROC) curve of 0.548 ± 0.023 and an area under the precision recall (AUPR) curve of 0.571 ± 0.020 (Figure 2a and Figure 2—figure supplement 1). We thus sought to identify sequence features that distinguish strong enhancers from silencers.

# Prepare data for fitting models
# Mask to pull out the silencers and strong enhancers
# Mask to pull out the inactive seqs and the strong enhancers

# Within the data to model, mask indicating which sequences are strong enhancers
labels_with_silencer = activity_df.loc[silencer_modeling_mask, "group_name_WT"].str.contains("Strong")
labels_with_inactive = activity_df.loc[inactive_modeling_mask, "group_name_WT"].str.contains("Strong")

# Write strong enhancers and silencers to file for the SVM
seq_bins_dir = os.path.join(data_dir, "ActivityBins")
positives_fasta = os.path.join(seq_bins_dir, "strongEnhancer.fasta")
negatives_fasta = os.path.join(seq_bins_dir, "silencer.fasta")
strong_ids = activity_df.loc[all_strong_mask, "variant_WT"]
fasta_seq_parse_manip.write_fasta(all_seqs[strong_ids.index + "_" + strong_ids], positives_fasta)
silencer_ids = activity_df.loc[all_silencer_mask, "variant_WT"]
fasta_seq_parse_manip.write_fasta(all_seqs[silencer_ids.index + "_" + silencer_ids], negatives_fasta)

# Fit k-mer SVM
print("Fitting k-mer Supper Vector Machine. This will take a few minutes.")
# Hyperparameter setup
seed = 1210
word_len = 6
max_mis = 1
nfolds = 5

models_dir = "Models"
svm_dir = os.path.join(models_dir, "StrongEnhancerVsSilencer")
if not os.path.exists(svm_dir):
os.makedirs(svm_dir)

# Fit the SVM
svm_prefix = os.path.join(svm_dir, f"gkmsvm_{word_len}_{word_len}_{max_mis}")
fig_list, xaxis, svm_tpr, svm_prec, svm_f1, svm_scores = gkmsvm.train_with_cv(positives_fasta, negatives_fasta, svm_prefix, num_folds=nfolds, word_len=word_len, info_pos=word_len, max_mis=max_mis, seed=seed)
plt.close()

# Fit logistic regression models
print("Fitting strong enhancer vs. silencer logistic regression model for CRX occupancy.")
cv = StratifiedKFold(n_splits=nfolds, shuffle=True, random_state=seed)
crx_clf = LogisticRegression()
crx_clf, crx_tpr_list, crx_prec_list, crx_f1_list = modeling.train_estimate_variance(crx_clf, cv, wt_occupancy_df.loc[silencer_modeling_mask, "CRX"], labels_with_silencer, xaxis, positive_cutoff=0)

print("Fitting strong enhancer vs. silencer logistic regression model for 8 TFs.")
occ_clf = LogisticRegression()
param_grid = {"C": np.logspace(-4, 4, 9)}
np.random.seed(seed)
occ_clf, occ_tpr_list, occ_prec_list = modeling.grid_search_hyperparams(occ_clf, nfolds, param_grid, "f1", wt_occupancy_df[silencer_modeling_mask], labels_with_silencer, xaxis, positive_cutoff=0)
c_opt = occ_clf.get_params()["C"]
print(f"Optimal regularization strength (C): {c_opt:1.1e}")

### Lineage-defining TF motifs differentiate strong enhancers from silencers

We performed a de novo motif enrichment analysis to identify motifs that distinguish strong enhancers from silencers and found several differentially enriched motifs matching known TFs. For motifs that matched multiple TFs, we selected one representative TF for downstream analysis, since TFs from the same family have PWMs that are too similar to meaningfully distinguish between motifs for these TFs (Figure 2—figure supplement 2, Materials and methods). Strong enhancers are enriched for several motif families that include TFs that interact with CRX or are important for photoreceptor development: NeuroD1/NDF1 (E-box-binding bHLH) 59Morrow et al.1999, RORB (nuclear receptor) , MAZ or Sp4 (C2H2 zinc finger) 51Lerner et al.2005, and NRL (bZIP) . Sp4 physically interacts with CRX in the retina 51Lerner et al.2005, but we chose to represent the zinc finger motif with MAZ because it has a higher quality score in the HOCOMOCO database 46Kulakovskiy et al.2018. Silencers were enriched for a motif that resembles a partial K50 homeodomain motif but instead matches the zinc finger TF GFI1, a member of the Snail repressor family 8Chiang and Ayyanathan2013 expressed in developing retinal ganglion cells 88Yang et al.2003. Therefore, while strong enhancers and silencers are not distinguished by their CRX motif content, strong enhancers are uniquely enriched for several lineage-defining TFs.

To quantify how well these TF motifs differentiate strong enhancers from silencers, we trained two different classification models with fivefold cross-validation. First, we trained a 6-mer support vector machine (SVM) 19Ghandi et al.2014 and achieved an AUROC of 0.781 ± 0.013 and AUPR of 0.812 ± 0.020 (Figure 2a and Figure 2—figure supplement 1). The SVM considers all 2080 non-redundant 6-mers and provides an upper bound to the predictive power of models that do not consider the exact arrangement or spacing of sequence features. We next trained a logistic regression model on the predicted occupancy for eight lineage-defining TFs (Supplementary file 4) and compared it to the upper bound established by the SVM. In this model, we considered CRX, the five TFs identified in our motif enrichment analysis, and two additional TFs enriched in photoreceptor ATAC-seq peaks 31Hughes et al.2017: RAX, a Q50 homeodomain TF that contrasts with CRX, a K50 homeodomain TF 34Irie et al.2015 and MEF2D, a MADS box TF which co-binds with CRX 2Andzelm et al.2015. The logistic regression model performs nearly as well as the SVM (AUROC 0.698 ± 0.036, AUPR 0.745 ± 0.032, Figure 2a and Figure 2—figure supplement 1) despite a 260-fold reduction from 2080 to 8 features. To determine whether the logistic regression model depends specifically on the eight lineage-defining TFs, we established a null distribution by fitting 100 logistic regression models with randomly selected TFs (Materials and methods). Our logistic regression model outperforms the null distribution (one-tailed Z-test for AUROC and AUPR, p < 0.0008, Figure 2—figure supplement 3), indicating that the performance of the model specifically requires the eight lineage-defining TFs. To determine whether the SVM identified any additional motifs that could be added to the logistic regression model, we generated de novo motifs using the SVM k-mer scores and found no additional motifs predictive of strong enhancers. Finally, we found that our two models perform similarly on an independent test set of CRX-targeted sequences (85White et al.2013; Figure 2—figure supplement 3). Since the logistic regression model performs near the upper bound established by the SVM and depends specifically on the eight selected motifs, we conclude that these motifs comprise nearly all of the sequence features captured by the SVM that distinguish strong enhancers from silencers among CRX-targeted sequences.

### Strong enhancers are characterized by diverse total motif content

To understand how these eight TF motifs differentiate strong enhancers from silencers, we first calculated the total predicted occupancy of each sequence by all eight lineage-defining TFs and compared the different activity classes. Strong enhancers and silencers both have higher total predicted occupancies than inactive sequences, but total predicted occupancies do not distinguish strong enhancers and silencers from each other (Figure 2b, Supplementary file 5). Since strong enhancers are enriched for several motifs relative to silencers, this suggests that strong enhancers are distinguished from silencers by the diversity of their motifs, rather than the total number.

We considered two hypotheses for how the more diverse collection of motifs function in strong enhancers: either strong enhancers depend on specific combinations of TF motifs (‘TF identity hypothesis’) or they instead must be co-occupied by multiple lineage-defining TFs, regardless of TF identity (‘TF diversity hypothesis’). To distinguish between these hypotheses, we examined which specific motifs contribute to the total motif content of strong enhancers and silencers. We considered motifs for a TF present in a sequence if the TF predicted occupancy was above 0.5 molecules (Supplementary file 4), which generally corresponds to at least one motif with a relative KD above 3%. This threshold captures the effect of low affinity motifs that are often biologically relevant . As expected, 97% of strong enhancers and silencers contain CRX motifs since the sequences were selected based on CRX binding or significant matches to the CRX PWM within open chromatin (Figure 2c). Compared to silencers, strong enhancers contain a broader diversity of motifs for the eight lineage-defining TFs (Figure 2c). However, while strong enhancers contain a broader range of motifs, no single motif occurs in a majority of strong enhancers: NRL motifs are present in 23% of strong enhancers, NeuroD1 and RORB in 18% each, and MAZ in 16%. Additionally, none of the motifs tend to co-occur as pairs in strong enhancers: no specific pair occurred in more than 5% of sequences (Figure 2d). We also did not observe a bias in the linear arrangement of motifs in strong enhancers (Materials and methods). Similarly, no single motif occurs in more than 15% of silencers (Figure 2c). These results suggest that strong enhancers are defined by the diversity of their motifs, and not by specific motif combinations or their linear arrangement.

The results above predict that strong enhancers are more likely to be bound by a diverse but degenerate collection of TFs, compared with silencers or inactive sequences. We tested this prediction by examining in vivo TF binding using published ChIP-seq data for NRL 23Hao et al.2012 and MEF2D 2Andzelm et al.2015. Consistent with the prediction, sequences bound by CRX and either NRL or MEF2D are approximately twice as likely to be strong enhancers compared to sequences only bound by CRX (Figure 2e). Sequences bound by all three TFs are the most likely to be strong or weak enhancers rather than silencers or inactive sequences. However, most strong enhancers are not bound by either NRL or MEF2D (Figure 2f), indicating that binding of these TFs is not required for strong enhancers. Our results support the TF diversity hypothesis: CRX-targeted enhancers are co-occupied by multiple TFs, without a requirement for specific combinations of lineage-defining TFs.

### Strong enhancers have higher motif information content than silencers

Our results indicate that both strong enhancers and silencers have a higher total motif content than inactive sequences, while strong enhancers contain a more diverse collection of motifs than silencers. To quantify these differences in the number and diversity of motifs, we computed the information content of CRX-targeted sequences using Boltzmann entropy. The Boltzmann entropy of a system is related to the number of ways the system’s molecules can be arranged, which increases with either the number or diversity of molecules (67Phillips et al.2012, Chapter 5). In our case, each TF is a different type of molecule and the number of each TF is represented by its predicted occupancy for a cis-regulatory sequence. The number of molecular arrangements is thus W, the number of distinguishable permutations that the TFs can be ordered on the sequence, and the information content of a sequence is then log2W (Materials and methods).

We found that on average, strong enhancers have higher information content than both silencers and inactive sequences (Mann-Whitney U test, p = 1 × 10–23 and 7 × 10–34, respectively, Figure 3a, Supplementary file 5), confirming that information content captures the effect of both the number and diversity of motifs. Quantitatively, the average silencer and inactive sequence contains 1.6 and 1.4 bits, respectively, which represents approximately three total motifs for two TFs. Strong enhancers contain on average 2.4 bits, representing approximately three total motifs for three TFs or four total motifs for two TFs. To compare the predictive value of our information content metric to the model based on all eight motifs, we trained a logistic regression model and found that information content classifies strong enhancers from silencers with an AUROC of 0.634 ± 0.008 and an AUPR of 0.663 ± 0.014 (Figure 3b and Figure 3—figure supplement 1). This is only slightly worse than the model trained on eight TF occupancies despite an eightfold reduction in the number of features, which is itself comparable to the SVM with 2080 features. The difference between the two logistic regression models suggests that the specific identities of TF motifs make some contribution to the eight TF model, but that most of the signal captured by the SVM can be described with a single metric that does not assign weights to specific motifs. Information content also distinguishes strong enhancers from inactive sequences (AUROC 0.658 ± 0.012, AUPR 0.675 ± 0.019, Figure 3b and Figure 3—figure supplement 1). These results indicate that strong enhancers are characterized by higher information content, which reflects both the total number and diversity of motifs.

### Strong enhancers require high information content but not NRL motifs

Our results show that except for CRX, none of the lineage-defining motifs occur in a majority of strong enhancers. However, all sequences were tested in reporter constructs with the Rho promoter, which contains an NRL motif and three CRX motifs . Since NRL is a key co-regulator with CRX in rod photoreceptors, we tested whether strong enhancers generally require NRL, which would be inconsistent with our TF diversity hypothesis. We removed the NRL motif by recloning our MPRA library without the basal Rho promoter. If strong enhancers require an NRL motif for high activity, then only CRX-targeted sequences with NRL motifs will drive reporter expression. If information content (i.e. total motif content and diversity) is the primary determinant of strong enhancers, only CRX-targeted sequences with sufficient motif diversity, measured by information content, will drive reporter expression regardless of whether or not NRL motifs are present.

We replaced the Rho promoter with a minimal 23 bp polylinker sequence between our libraries and DsRed, and repeated the MPRA (Figure 1—figure supplement 1, Supplementary file 3). CRX-targeted sequences were designated as ‘autonomous’ if they retained activity in the absence of the Rho promoter (log2(RNA/DNA) > 0, Materials and methods). We found that 90% of autonomous sequences are from the enhancer class, while less than 3% of autonomous sequences are from the silencer class (Figure 4a). This confirms that the distinction between silencers and enhancers does not depend on the Rho promoter, which is consistent with our previous finding that CRX-targeted silencers repress other promoters . However, while most autonomous sequences are enhancers, only 39% of strong enhancers and 9% of weak enhancers act autonomously. Consistent with a role for information content, autonomous strong enhancers have higher information content (Mann-Whitney U test p = 4 × 10–8, Figure 4b) and higher predicted CRX occupancy (Mann-Whitney U test p = 9 × 10–12, Figure 4c) than non-autonomous strong enhancers. We found no evidence that specific lineage-defining motifs are required for autonomous activity, including NRL, which is present in only 25% of autonomous strong enhancers (Figure 4d). Similarly, NRL ChIP-seq binding 23Hao et al.2012 occurs more often among autonomous strong enhancers (41% vs. 19%, Fisher’s exact test p = 2 × 10–14, odds ratio = 3.0), yet NRL binding still only accounts for a minority of these sequences. We thus conclude that strong enhancers require high information content, rather than any specific lineage-defining motifs.

### TF motifs contribute independently to strong enhancers

Our results indicate that information content distinguishes strong enhancers from silencers and inactive sequences. Information content only takes into account the total number and diversity of motifs in a sequence and not any potential interactions between them. The classification success of information content thus suggests that each TF motif will contribute independently to enhancer activity. We tested this prediction with CRX-targeted sequences where all CRX motifs were abolished by point mutation (Supplementary file 3). Consistent with our previous work 85White et al.2013, mutating CRX motifs causes the activities of both enhancers and silencers to regress toward basal levels (Pearson’s r = 0.608, Figure 5a), indicating that most enhancers and silencers show some dependence on CRX. However, 40% of wild-type strong enhancers show low CRX dependence and remain strong enhancers with their CRX motifs abolished. Although strong enhancers with high and low CRX dependence have similar wild-type information content (Figure 5b), strong enhancers with low CRX dependence have lower predicted CRX occupancy than those with high CRX dependence (Mann-Whitney U test p = 2 × 10–9, Figure 5c), and also have higher ‘residual’ information content (i.e. information content without CRX motifs, Mann-Whitney U test p = 1 × 10–7, Figure 5d). Low CRX dependence sequences have an average of 1.5 residual bits, which corresponds to three motifs for two TFs, while high CRX dependence sequences have an average of 1.0 residual bits, which corresponds to two motifs for two TFs (Figure 5e).

Strong enhancers with low and high CRX dependence have similar wild-type information content and similar total predicted occupancy (Figure 5b and e). As a result, sequences with more CRX motifs have fewer motifs for other TFs, suggesting that there is no evolutionary pressure for enhancers to contain additional motifs beyond the minimum amount of information content required to be active. To test this idea, we calculated the minimum number and diversity of motifs necessary to specify a relatively unique location in the genome 87Wunderlich and Mirny2009 and found that a 164 bp sequence only requires five motifs for three TFs (Materials and methods). These motif requirements can be achieved in two ways with similar information content that differ only in the quantitative number of motifs for each TF. In other words, the number of motifs for any particular TF is not important so long as there is sufficient information content. Taken together, we conclude that each TF motif provides an independent contribution toward specifying strong enhancers.

## Discussion

Many regions in the genome are bound by TFs and bear the epigenetic hallmarks of active cis-regulatory sequences, yet fail to exhibit cis-regulatory activity when tested directly. The discrepancy between measured epigenomic state and cis-regulatory activity indicates that enhancers and silencers consist of more than the minimal sequence features necessary to recruit TFs and chromatin-modifying factors. Our results show that enhancers, silencers, and inactive sequences in developing photoreceptors can be distinguished by their motif content, even though they are indistinguishable by CRX binding or chromatin accessibility. We show that both enhancers and silencers contain more TF motifs than inactive sequences, and that enhancers also contain more diverse sets of motifs for lineage-defining TFs. These differences are captured by our measure of information content. Information content, as a single metric, identifies strong enhancers nearly as well as an unbiased set of 2080 non-redundant 6-mers used for an SVM, indicating that a simple measure of motif number and diversity can capture the key sequence features that distinguish enhancers from other sequences that lie in open chromatin.

The results of our information content classifier are consistent with the TF collective model of enhancers : globally, active enhancers are specified by the combinatorial action of lineage-defining TFs with little constraint on which motifs must co-occur. We show that CRX-targeted enhancers are distinguished from inactive CRX-targeted sequences by a larger, more diverse collection of TF motifs, and not any specific combination of motifs. This indicates that enhancers are active because they have acquired the necessary number of TF binding motifs, and not because they are defined by a strict regulatory grammar. Sequences with fewer motifs may be bound by CRX and reside within open chromatin, but they lack sufficient TF binding for activity. Such loose constraints would facilitate the de novo emergence of tissue-specific enhancers and silencers over evolution and explain why critical cell type-specific TF interactions, such as CRX and NRL in rod photoreceptors, occur at only a minority of the active enhancers in that cell type .

Like enhancers, CRX-targeted silencers require higher motif content and are dependent on CRX motifs, but they lack the TF diversity of enhancers. The lack of TF diversity in silencers parallels the architecture of signal-responsive cis-regulatory sequences, which are silencers in the absence of a signal and require multiple activators for induction 4Barolo and Posakony2002. Consistent with this, we previously showed using synthetic sequences that high occupancy of CRX alone is sufficient to encode silencers while the addition of a single NRL motif converts synthetic silencers to enhancers, and that genomic sequences with very high CRX motif content repress a basal promoter that lacks NRL motifs 86White et al.2016. We found that photoreceptor genes which are de-repressed upon loss of CRX are located near cis-regulatory sequences with high CRX motif content, and that genes near regions that are bound only by CRX are expressed at lower levels than genes near regions co-bound by CRX and NRL 86White et al.2016. In the current study, we find that silencers in our MPRA library are more likely to occur near de-repressed photoreceptor genes, while strong enhancers are enriched near genes that lose expression in Crx-/- retina. These findings suggest that the low TF diversity and high CRX motif content that characterize silencers in our MPRA library are also important for silencing in the genome.

The contrast in motif diversity between enhancers and silencers that we observe could explain how CRX achieves selective activation and repression of its target genes in multiple cell types and across developmental time points . CRX itself is required for silencing, and we previously showed that some silencers become active enhancers in Crx-/- retina 86White et al.2016. The mechanism of CRX-based silencing is unknown, however CRX cooperates with other TFs that can sometimes act as repressors of cell type-specific genes , while other repressors can directly inhibit activation by CRX or its co-activators . In Drosophila photoreceptors, selective silencing of opsin genes is controlled by cell type-specific expression of a repressor, Dve, which acts on the same K50 homeodomain-binding sites as a universally expressed activator, Otd, a homolog of CRX 70Rister et al.2015. Other transcriptional activators selectively act as repressors in the same cell type. GATA-1 represses the _GATA-_2 promoter by displacing CREB-binding protein (CBP), while at other genes GATA-1 binds CBP to activate transcription 21Grass et al.2003. Selective repression by GATA-1 is also mediated by chromatin occupancy levels and interaction with co-regulators 38Johnson et al.2006, which is consistent with our finding that sequence context enables a TF to both activate and repress genes in the same cell type.

Given the central role of CRX in selectively regulating genes in multiple closely related cell types 60Murphy et al.2019, we speculate that CRX-targeted silencers may contain sufficient information to act as enhancers in other cell types in which a different set of co-activating TFs are expressed. This hypothesis would be consistent with the finding that many silencers are enhancers in other cell types . Our work suggests that characterizing sequences by their motif information content offers a way to identify these different classes of cis-regulatory sequences in the genome.

## Materials and methods

Reagent type (species) or resource Designation Source or reference Identifiers Additional information
Strain, strain background (Mus musculus, male and female) CD-1 Charles River Strain code 022
Recombinant DNA reagent Library1 This paper Listed in Supplementary file 1
Recombinant DNA reagent Library2 This paper Listed in Supplementary file 2
Recombinant DNA reagent pJK01_Rhominprox-DsRed 47Kwasnieski et al.2012 AddGene plasmid # 173,489
Recombinant DNA reagent pJK03__Rho_basal__DsRed 47Kwasnieski et al.2012 AddGene plasmid # 173,490
Sequence-based reagent Primers IDT Listed in Supplementary file 6
Commercial assay or kit Monarch PCR Cleanup Kit New England Biolabs T1030S
Commercial assay or kit Monarch DNA Gel Extraction Kit New England Biolabs T1020L
Commercial assay or kit TURBO DNA-free Invitrogen AM1907
Commercial assay or kit SuperScript III Reverse Transcriptase Invitrogen 18080044
Software, algorithm Bedtools https://bedtools.readthedocs.io/en/latest/ RRID:SCR_006646
Software, algorithm MEME Suite https://meme-suite.org/ RRID:SCR_001783
Software, algorithm ShapeMF https://github.com/h-samee/shape-motif, 74Samee2021 DOI:10.1016/j.cels.2018.12.001
Software, algorithm Numpy https://numpy.org/ DOI:10.1038/s41586-020-2649-2
Software, algorithm Scipy https://www.scipy.org/ DOI:10.1038/s41592-019-0686-2
Software, algorithm Pandas https://pandas.pydata.org/ DOI:10.5281/zenodo.3509134
Software, algorithm Matplotlib https://matplotlib.org/ DOI:10.5281/zenodo.1482099
Software, algorithm Logomaker https://github.com/jbkinney/logomaker, 40Justin2021 DOI:10.1093/bioinformatics/btz921

### Library design

CRX ChIP-seq peaks re-processed by 72Ruzycki et al.2018 were intersected with previously published CRX MPRA libraries and one unpublished library to select sequences that had not been previously tested by MPRA. These sequences were scanned for instances of CRX motifs using FIMO version 4.11.2 3Bailey et al.2009, a p-value cutoff of 2.3 × 10–3 (see below), and a CRX PWM derived from an electrophoretic mobility shift assay 49Lee et al.2010. We centered 2622 sequences on the highest scoring CRX motif. For 677 sequences without a CRX motif, we instead centered them using the Gibbs sampler from ShapeMF (Github commit abe8421) 73Samee et al.2019 and a motif size of 10.

For sequences unbound in CRX ChIP-seq but in open chromatin, we took ATAC-seq peaks collected in 8-week FACS-purified rods, green cones, and Nrl-/- blue cones 31Hughes et al.2017 and removed sequences that overlapped with CRX ChIP-seq peaks. The remaining sequences were scanned for instances of CRX motifs using FIMO with a p-value cutoff of 2.5 × 10–3 and the CRX PWM. Sequences with a CRX motif were kept and the three ATAC-seq data sets were merged together, intersected with H3K27ac and H3K4me3 ChIP-seq peaks collected in P14 retinas 72Ruzycki et al.2018, and centered on the highest scoring CRX motifs. We randomly selected 1004 H3K27ac+H3K4me3- sequences and 541 H3K27ac+H3K4me3+ to reflect the fact that ~35% of CRX ChIP-seq peaks are H3K4me3+. After synthesis of our library, we discovered 11% of these sequences do not actually overlap H3K27ac ChIP-seq peaks (110/1004 of the H3K4me3- group and 60/541 of the H3K4me3+ group), but we still included them in the analysis because they contain CRX motifs in ATAC-seq peaks.

All data was converted to mm10 coordinates using the UCSC liftOver tool 22Haeussler et al.2019 and processed using Bedtools version 2.27.1 68Quinlan and Hall2010. All sequences in our library design were adjusted to 164 bp and screened for instances of EcoRI, SpeI, SphI, and NotI sites. In total, our library contains 4844 genomic sequences (2622 CRX ChIP-seq peaks with motifs, 677 CRX ChIP-seq peaks without motifs, 1004 CRX-ATAC+H3K27ac+H3K4me3- CRX motifs, and 541 CRX-ATAC+H3K27ac+H3K4me3+ CRX motifs), a variant of each sequence with all CRX motifs mutated, 150 scrambled sequences, and a construct for cloning the basal promoter alone.

For sequences centered on CRX motifs, all CRX motifs with a p-value of 2.5 × 10–3 or less were mutated by changing the core TAAT to TACT 49Lee et al.2010 on the appropriate strand, as described previously . We then re-scanned sequences and mutated any additional motifs inadvertently created.

To generate scrambled sequences, we randomly selected 150 CRX ChIP-seq peaks spanning the entire range of GC content in the library. We then scrambled each sequence while preserving dinucleotide content as previously described 85White et al.2013. We used FIMO to confirm that none of the scrambled sequences contain CRX motifs.

We unintentionally used a FIMO p-value cutoff of 2.3 × 10–3 to identify CRX motifs in CRX ChIP-seq peaks, rather than the slightly less stringent 2.5 × 10–3 cutoff used with ATAC-seq peaks or mutating CRX motifs. Due to this anomaly, there may be sequences centered using ShapeMF that should have been centered on a CRX motif, and these motifs would not have been mutated because CRX motifs were not mutated in sequences centered using ShapeMF. However, any intact CRX motifs would still be captured in the residual information content of the mutant sequence.

### Plasmid library construction

We generated two 15,000 libraries of 230 bp oligonucleotides (oligos) from Agilent Technologies (Santa Clara, CA) through a limited licensing agreement. Our library was split across the two oligo pools, ensuring that both the genomic and mutant forms of each sequence were placed in the same oligo pool (Supplementary files 1 and 2). Both oligo pools contain all 150 scrambled sequences as an internal control. All sequences were assigned three unique barcodes as previously described 85White et al.2013. In each oligo pool, the basal promoter alone was assigned 18 unique barcodes. Oligos were synthesized as follows: 5’ priming sequence (GTAGCGTCTGTCCGT)/EcoRI site/Library sequence/SpeI site/C/SphI site/Barcode sequence/NotI site/3’ priming sequence (CAACTACTACTACAG). To clone the basal promoter into barcoded oligos without any upstream cis-regulatory sequence, we placed the SpeI site next to the EcoRI site, which allowed us to place the promoter between the EcoRI site and the 3’ barcode.

We cloned the synthesized oligos as previously described by our group . Specifically, for each oligo pool, we used 50 femtomoles of template and four cycles of PCR in each of multiple 50 µl reactions (New England Biolabs [NEB], Ipswich, MA) (NEB Phusion) using primers MO563 and MO564 (Supplementary file 6), 2% DMSO, and an annealing temperature of 57°C. PCR amplicons were purified from a 2% agarose gel (NEB), digested with EcoRI-HF and NotI-HF (NEB), and then cloned into the EagI and EcoRI sites of the plasmid pJK03 with multiple 20 µl ligation reactions (NEB T4 ligase). The libraries were transformed into 5-alpha electrocompetent cells (NEB) and grown in liquid culture. Next, 2 µg of each library was digested with SphI-HF and SpeI-HF (NEB) and then treated with Antarctic phosphatase (NEB).

The Rho basal promoter and DsRed reporter gene was amplified from the plasmid pJK01 using primers MO566 and MO567 (Supplementary file 6). The Polylinker and DsRed reporter gene was amplified from the plasmid pJK03 using primers MO610 and MO567 (Supplementary file 6). The Polylinker is a short 23 bp multiple cloning site with no known core promoter motifs. Inserts were purified from a 1% agarose gel (NEB), digested with NheI-HF and SphI-HF (NEB), and cloned into the libraries using multiple 20 µl ligations (NEB T4 ligase). The libraries were transformed into 5-alpha electrocompetent cells (NEB) and grown in liquid culture.

### Retinal explant electroporation

Animal procedures were performed in accordance with a Washington University in St Louis Institutional Animal Care and Use Committee-approved vertebrate animals protocol. Electroporation into retinal explants and RNA extraction was performed as described previously . Briefly, retinas were isolated from P0 newborn CD-1 mice and electroporated in a solution with 30 µg library and 30 µg Rho-GFP. Electroporated retinas were cultured for 8 days, at which point they were harvested, washed three times with HBSS (ThermoFisher Scientific/Gibco, Waltham, MA), and stored in TRIzol (ThermoFisher Scientific/Invitrogen, Waltham, MA) at –80°C. Five retinas were pooled for each biological replicate and three replicates were performed for each library. RNA was extracted from TRIzol according to manufacturer’s instructions and treated with TURBO DNase (Invitrogen). cDNA was prepared using SuperScript RT III (Invitrogen) with oligo dT primers. Barcodes from both the cDNA and the plasmid DNA pool were amplified for sequencing (described below). The resulting products were mixed at equal concentration and sequenced on the Illumina NextSeq platform. We obtained greater than 1300× coverage across all samples.

Rho libraries were amplified using primers MO574 and MO575 (Supplementary file 6) for six cycles at an annealing temperature of 66°C followed by 18 cycles with no annealing step (NEB Phusion) and then purified with the Monarch PCR kit (NEB). PCR amplicons were digested using MfeI-HF and SphI-HF (NEB) and ligated to custom-annealed adaptors with PE2 indexing barcodes and phased P1 barcodes (Supplementary file 6). The final enrichment PCR used primers MO588 and MO589 (Supplementary file 6) for 20 cycles at an annealing temperature of 66°C (NEB Phusion), followed by purification with the Monarch PCR kit. Polylinker libraries were amplified using primers BC_CRX_Nested_F and BC_CRX_R (Supplementary file 6) for 30 cycles (NEB Q5) at an annealing temperature of 67°C and then purified with the Monarch PCR kit. Illumina adaptors were then added via two further rounds of PCR. First, P1 indexing barcodes were added using forward primers P1_inner_A through P1_inner_D and reverse primer P1_inner_nested_rev (Supplementary file 6) for five cycles at an annealing temperature of 55°C followed by five cycles with no annealing step (NEB Q5). PE2 indexing barcodes were then added by amplifying 2 µl of the previous reaction with forward primer P1_outer and reverse primers PE2_outer_SIC69 and PE2_outer_SIC70 (Supplementary file 6) for five cycles at an annealing temperature of 66°C followed by five cycles with no annealing step (NEB Q5) and then purified with the Monarch PCR kit.

### Data processing

All data processing, statistical analysis, and downstream analyses were performed in Python version 3.6.5 using Numpy version 1.15.4 24Harris et al.2020, Scipy version 1.1.0 82Virtanen et al.2020, and Pandas version 0.23.4 54McKinney2010, and visualized using Matplotlib version 3.0.2 33Hunter2007 and Logomaker version 0.8 81Tareen and Kinney2020. All statistical analysis used two-sided tests unless noted otherwise.

Sequencing reads were filtered to ensure that the barcode sequence perfectly matched the expected sequence (>93% reads in a sample for the Rho libraries, >86% reads for the Polylinker libraries). For the Rho libraries, barcodes that had less than 10 raw counts in the DNA sample were considered missing and removed from downstream analysis. Barcodes that had less than five raw counts in any cDNA sample were considered present in the input plasmid pool but below the detection limit and thus set to zero in all samples. Barcode counts were normalized by reads per million (RPM) for each sample. Barcode expression was calculated by dividing the cDNA RPM by the DNA RPM. Replicate-specific expression was calculated by averaging the barcodes corresponding to each library sequence. After performing statistical analysis (see below), expression levels were normalized by replicate-specific basal mean expression and then averaged across biological replicates.

For the Polylinker assay, the expected lack of expression of many constructs required different processing. Barcodes that had less than 50 raw counts in the DNA sample were removed from downstream analysis. Barcodes were normalized by RPM for each replicate. Barcodes that had less than 8 RPM in any cDNA sample were set to zero in all samples. cDNA RPM were then divided by DNA RPM as above. Within each biological replicate, barcodes were averaged as above but were not normalized to basal expression because there is no basal construct. Expression values were then averaged across biological replicates. Due to the low expression of scrambled sequences and the lack of a basal construct, we were unable to assess data calibration with the same rigor as above.

### Assignment of activity classes

Activity classes were assigned by comparing expression levels to basal promoter expression levels across replicates. The null hypothesis is that the expression of a sequence is the same as basal levels. Expression levels were approximately log-normally distributed, so we computed the log-normal parameters for each sequence and then performed Welch’s t-test. We corrected for multiple hypotheses using the Benjamini-Hochberg FDR procedure. We corrected for multiple hypotheses in each library separately to account for any potential batch effects between libraries. The log2 expression was calculated after adding a pseudocount of 1 × 10–3 to every sequence.

Sequences were classified as enhancers if they were twofold above basal and the q-value was below 0.05. Silencers were similarly defined as twofold below basal and q-value less than 0.05. Inactive sequences were defined as within a twofold change and q-value greater than or equal to 0.05. All other sequences were classified as ambiguous and removed from further analysis. We used scrambled sequences to further stratify enhancers into strong and weak enhancers, using the rationale that scrambled sequences give an empirical distribution for the activity of random sequences. We defined strong enhancers as enhancers that are above the 95th percentile of scrambled sequences and all other enhancers as weak enhancers.

For the Polylinker assay, we did not have a basal construct as a reference point. Instead, we defined a sequence to have autonomous activity if the average cDNA barcode counts were higher than average DNA barcode counts, and non-autonomous otherwise. The log2 expression was calculated after adding a pseudocount of 1 × 10–2 to every sequence.

### RNA-seq analysis

We obtained RNA-seq data from WT and Crx-/- P21 retinas 71Roger et al.2014 processed into a counts matrix for each gene by 72Ruzycki et al.2018. Each sample was normalized by read counts per million and replicates were averaged together. Genes with at least a twofold change between genotypes were considered differentially expressed. We determined which differentially expressed genes are near a member of our library using previously published associations between retinal ATAC-seq peaks and genes 60Murphy et al.2019. For de-repressed genes, we determined how often the nearest library member is a silencer; for down-regulated genes, we determined how often the nearest library member is a strong or weak enhancer.

### Motif analysis

We performed motif enrichment analysis using the MEME Suite version 5.0.4 3Bailey et al.2009. We searched for motifs that were enriched in one group of sequences relative to another group using DREME-py3 with the parameters -mink 6 -maxk 12 -e 0.05 and compared the de novo motifs to known motifs using TOMTOM on default parameters. We ran DREME using strong enhancers as positives and silencers as negatives, and vice versa. For TOMTOM, we used version 11 of the full mouse HOCOMOCO database 46Kulakovskiy et al.2018 with the following additions from the JASPAR human database 42Khan et al.2018: NRL (accession MA0842.1), RORB (accession MA1150.1), and RAX (accession MA0718.1). We added these PWMs because they have known roles in the retina, but the mouse PWMs were not in the HOCOMOCO database. We also used the CRX PWM that we used to design the library. Motifs were selected for downstream analysis based on their matches to the de novo motifs, whether the TF had a known role in retinal development, and the quality of the PWM. Because PWMs from TFs of the same family were so similar, we used one TF for each DREME motif, recognizing that these motifs may be bound by other TFs that recognize similar motifs. We did not use any PWMs with a quality of ‘D’. We excluded DREME motifs without a match to the database from further analysis; most of these resemble dinucleotides.

### Predicted occupancy

We computed predicted occupancy as previously described . Briefly, we normalized each letter probability matrix by the most probable letter at each position. We took the negative log of this matrix and multiplied by 2.5, which corresponds to the ideal gas constant times 300 K, to obtain an energy weight matrix. We used a chemical potential μ of 9 for all TFs. At this value, the probability of a site being bound is at least 0.5 if the relative KD is at least 0.03 of the optimal binding site. We computed the predicted occupancy for every site on the forward and reverse strands and summed them together to get a single value for each TF.

To determine if there is a bias in the linear arrangement of motifs, we selected strong enhancers with exactly one site occupied by CRX and exactly one site occupied by a second TF. We counted the number of times the position of the second TF was 5’ and 3’ of the CRX site and then performed a binomial test. We did not observe a statistically significant bias for any TF at an FDR q-value cutoff of 0.05. We also performed this analysis for silencers with exactly one site occupied by CRX and exactly one site occupied by NRL and did not observe a significant difference in the 5’ vs. 3’ bias of strong enhancers vs. silencers (Fisher’s exact test p = 0.17).

### Information content

To capture the effects of TF predicted occupancy and diversity in a single metric, we calculated the motif information content using Boltzmann entropy. Boltzmann’s equation states that the entropy of a system is related to the number of ways the molecules can be arranged (microstates) via the equation , where is Boltzmann’s constant (67Phillips et al.2012, Chapter 5). The number of microstates is defined as where is the total number of particles and are the number of the -th type of particles. In our case, the system is the collection of predicted binding motifs for different TFs in a cis-regulatory sequence. We assume each TF is a different type of molecule because the DNA-binding domain of each TF belongs to a different subfamily. The number of molecular arrangements represents the number of distinguishable ways that the TFs can be ordered on the sequence. Thus, is the predicted occupancy of the -th TF and is the total predicted occupancy of all TFs on the cis-regulatory sequence. Because the predicted occupancies are continuous values, we exploit the definition of the Gamma function, to rewrite .

If we assume that each arrangement of motifs is equally likely, then we can write the probability of arrangement as and rewrite the entropy as , where we have dropped Boltzmann’s constant since the connection between molecular arrangements and temperature is not important. Because each arrangement is equally likely, then is also the expected value of and we can write the entropy as , which is Shannon entropy. By definition, Shannon entropy is also the expected value of the information content: where the information content of a particular state is . Since we assumed each arrangement is equally likely, then the expected value of the information content is also the information content of each arrangement. Therefore, the information content of a cis-regulatory sequence can be written as . We use log base 2 to express the information content in bits.

With this metric, cis-regulatory sequences with higher predicted TF occupancies generally have higher information content. Sequences with higher TF diversity have higher information content than lower diversity sequences with the same predicted occupancy. Thus, our metric captures the effects of both TF diversity and total TF occupancy. For example, consider hypothetical TFs A, B, and C. If motifs for only one TF are in a sequence, then is always one and the information content is always zero (regardless of total occupancy). The simplest case for non-zero information content is one motif for A, one motif for B, and zero motifs for C (1-1-0). Then and bit. If we increase predicted occupancy by adding a motif for A (2-1-0), then and bits, which is approximately the information content of silencers and inactive sequences. If we increase predicted occupancy again and add a second motif for B (2-2-0), then and bits, which is approximately the information content of strong enhancers. If instead of increasing predicted occupancy, we instead increase diversity by replacing a motif for A with a motif for C (1-1-1), then and once again bits, which is higher than the lower diversity case (2-1-0).

According to 87Wunderlich and Mirny2009, the probability of observing total motifs for different TFs in a bp window is , where and is the probability of finding a spurious motif in the genome. The expected number of windows with total motifs in a genome of length N is thus . In mammals, and Wunderlich and Mirny find that for multicellular eukaryotes. For TFs and a w=164 bp window (which is the size of our sequences), and meaning that five total motifs for three different TFs specify an approximately unique 164 bp location in a mammalian genome. Five total motifs for three different TFs can be achieved in two ways: three motifs for A, one for B, and one for C (3-1-1), or two motifs for A, two for B, and one for C (2-2-1). In the case of 3-1-1, and bits. In the case of 2-2-1, and bits.

### Machine learning

The k-mer SVM was fit using gkmSVM 19Ghandi et al.2014. All other machine learning, including cross-validation, logistic regression, and computing ROC and PR curves, was performed using scikit-learn version 0.19.1 64Pedregosa et al.2011. We wrote custom Python wrappers for gkmSVM to allow for interfacing between the C++ binaries and the rest of our workflow. We ran gkmSVM with the parameters -l 6 -k 6 -m 1. To estimate model performance, all models were fit with stratified fivefold cross-validation after shuffling the order of sequences. For the TF occupancy logistic regression model, we used L2 regularization. We selected the regularization parameter C by performing grid search with fivefold cross-validation on the values 10–4, 10–3, 10–2, 10–1, 1, 101, 102, 103, 104 and selecting the value that maximized the F1 score. The optimal value of C was 0.01, which we used as the regularization strength when assessing the performance of the model with other feature sets.

To assess the performance of the logistic regression model, we randomly sampled eight PWMs from the HOCOMOCO database and computed the predicted occupancy of each TF on each sequence. We then fit a new logistic regression model with these features and repeated this procedure 100 times to generate a background distribution of model performances.

To generate de novo motifs from the SVM, we generated all 6-mers and scored them against the SVM. We then ran the svmwemalign.py script from gkmSVM on the _k-mer scores with the parameters -n 10 -f 2 -m 4 and a PWM length of 6, and then used TOMTOM to compare them to the database from our motif analysis.

### Other data sources

We used our previously published library 85White et al.2013 as an independent test set for our machine learning models. We defined strong enhancers as ChIP-seq peaks that were above the 95th percentile of all scrambled sequences. There was no basal promoter construct in this library, so instead we defined silencers as ChIP-seq peaks that were at least twofold below the log2 mean of all scrambled sequences.

Previously published ChIP-seq data for NRL 23Hao et al.2012 that was re-processed by 31Hughes et al.2017 and MEF2D 2Andzelm et al.2015 was used to annotate sequences for in vivo TF binding. We converted peaks to mm10 coordinates using the UCSC liftOver tool and then used Bedtools to intersect peaks with our library.

## References

Requirements for transcriptional repression and activation by engrailed in Drosophila embryos130Development729739
• doi10.1242/dev.00286
• pmid12506003
MEF2D drives photoreceptor development through a genome-wide competition for tissue-specific enhancers86Neuron247263
• doi10.1016/j.neuron.2015.02.038
• pmid25801704
MEME SUITE: Tools for motif discovery and searching37Nucleic Acids Research
• doi10.1093/nar/gkp335
• pmid19458158
Three habits of highly effective signaling pathways: Principles of transcriptional control by developmental cell signaling16Genes & Development11671181
• pmid12023297
A yeast silencer contains sequences that can promote autonomous plasmid replication and transcriptional activation51Cell709719
• doi10.1016/0092-8674(87)90094-8
• pmid3315230
Crx, a novel Otx-like paired-homeodomain protein, binds to and transactivates photoreceptor cell-specific genes19Neuron10171030
• doi10.1016/s0896-6273(00)80394-3
• pmid9390516
The rod photoreceptor-specific nuclear receptor Nr2e3 represses transcription of multiple cone-specific genes25The Journal of Neuroscience118129
• doi10.1523/JNEUROSCI.3571-04.2005
• pmid15634773
SNAIL/GFI-1 (SNAG) family zinc finger proteins in transcription regulation, chromatin dynamics, cell signaling, development, and disease24Cytokine & Growth Factor Reviews123131
• doi10.1016/j.cytogfr.2012.09.002
• pmid23102646
CRX ChIP-seq reveals the cis-regulatory architecture of mouse photoreceptors20Genome Research15121525
• doi10.1101/gr.109405.110
• pmid20693478
Low affinity binding site clusters confer hox specificity and regulatory robustness160Cell191203
• doi10.1016/j.cell.2014.11.041
• pmid25557079
Candidate silencer elements for the human and mouse genomes11Nature Communications
• doi10.1038/s41467-020-14853-5
• pmid32103011
Chx10 targets a subset of photoreceptor genes281The Journal of Biological Chemistry744751
• doi10.1074/jbc.M509470200
• pmid16236706
ChromHMM: automating chromatin-state discovery and characterization9Nature Methods215216
• doi10.1038/nmeth.1906
• pmid22373907
Loss of the co-repressor GPS2 sensitizes macrophage activation upon metabolic stress induced by obesity and type 2 diabetes22Nature Medicine780791
• doi10.1038/nm.4114
• pmid27270589
Suboptimization of developmental enhancers350Science325328
• doi10.1126/science.aac6948
• pmid26472909
Syntax compensates for poor binding sites to encode tissue specificity of developmental enhancers113PNAS65086513
• doi10.1073/pnas.1605085113
• pmid27155014
Cone-rod dystrophy due to mutations in a novel photoreceptor-specific homeobox gene (CRX) essential for maintenance of the photoreceptor91Cell543553
• doi10.1016/s0092-8674(00)80440-7
• pmid9390563
Crx, a novel otx-like homeobox gene, shows photoreceptor-specific expression and regulates photoreceptor differentiation91Cell531541
• doi10.1016/s0092-8674(00)80439-0
• pmid9390562
Enhanced Regulatory Sequence Prediction Using Gapped k-mer Features10PLOS Computational Biology
• doi10.1371/journal.pcbi.1003711
• pmid25033408
Transcriptional silencers in Drosophila serve a dual role as transcriptional enhancers in alternate cellular contexts77Molecular Cell324337
• doi10.1016/j.molcel.2019.10.004
• pmid31704182
GATA-1-dependent transcriptional repression of GATA-2 via disruption of positive autoregulation and domain-wide chromatin remodeling100PNAS88118816
• doi10.1073/pnas.1432147100
• pmid12857954
The UCSC Genome Browser database: 2019 update47Nucleic Acids Research
• doi10.1093/nar/gky1095
• pmid30407534
Transcriptional regulation of rod photoreceptor homeostasis revealed by in vivo NRL targetome analysis8PLOS Genetics
• doi10.1371/journal.pgen.1002649
• pmid22511886
Array programming with NumPy585Nature357362
• doi10.1038/s41586-020-2649-2
• pmid32939066
Regulation of photoreceptor gene expression by Crx-associated transcription factor network1192Brain Research114133
• doi10.1016/j.brainres.2007.06.036
• pmid17662965
Sterile alpha motif containing 7 (SAMD7) is a novel Crx-regulated transcriptional repressor in the retina8PLOS ONE
• doi10.1371/journal.pone.0060633
• pmid23565263
Unsupervised pattern discovery in human chromatin structure through genomic segmentation9Nature Methods473476
• doi10.1038/nmeth.1937
• pmid22426492
The cis-regulatory logic of the mammalian photoreceptor transcriptional network2PLOS ONE
• doi10.1371/journal.pone.0000643
• pmid17653270
Identification of human silencers by correlating cross-tissue epigenetic profiles and gene expression29Genome Research657667
• doi10.1101/gr.247007.118
• pmid30886051
The corepressors GPS2 and SMRT control enhancer and silencer remodeling via eRNA transcription during inflammatory activation of macrophages81Molecular Cell953968
• doi10.1016/j.molcel.2020.12.040
• pmid33503407
Cell type-specific epigenomic analysis reveals a uniquely closed chromatin architecture in mouse rod photoreceptors7Scientific Reports
• doi10.1038/srep43184
• pmid28256534
A massively parallel reporter assay reveals context-dependent activity of homeodomain binding sites in vivo28Genome Research15201531
• doi10.1101/gr.231886.117
• pmid30158147
Matplotlib: A 2D Graphics Environment9Computing in Science & Engineering9095
• doi10.1109/MCSE.2007.55
Rax Homeoprotein Regulates Photoreceptor Cell Maturation and Survival in Association with Crx in the Postnatal Mouse Retina35Molecular and Cellular Biology25832596
• doi10.1128/MCB.00048-15
• pmid25986607
The transcriptional repressor Nkx6.1 also functions as a deoxyribonucleic acid context-dependent transcriptional activator during pancreatic beta-cell differentiation: evidence for feedback activation of the nkx6.1 gene by Nkx6.118Molecular Endocrinology13631375
• doi10.1210/me.2004-0006
• pmid15056733
Retinoid-related orphan nuclear receptor RORbeta is an early-acting factor in rod photoreceptor development106PNAS1753417539
• doi10.1073/pnas.0902425106
• pmid19805139
Conversion of a dorsal-dependent silencer into an enhancer: evidence for dorsal corepressors12The EMBO Journal32013209
• doi10.1002/j.1460-2075.1993.tb05989.x
• pmid8344257
Differential sensitivities of transcription factor target genes underlie cell type-specific gene expression profiles103PNAS1593915944
• doi10.1073/pnas.0604041103
• pmid17043224
A transcription factor collective defines cardiac cell fate and reflects lineage history148Cell473486
• doi10.1016/j.cell.2012.01.030
• pmid22304916
Basset: Learning the regulatory code of the accessible genome with deep convolutional neural networks26Genome Research990999
• doi10.1101/gr.200535.115
• pmid27197224
JASPAR 2018: update of the open-access database of transcription factor binding profiles and its web framework46Nucleic Acids Research
• doi10.1093/nar/gkx1188
• pmid29161433
Both PCE-1/RX and OTX/CRX interactions are necessary for photoreceptor-specific gene expression275The Journal of Biological Chemistry11521160
• doi10.1074/jbc.275.2.1152
• pmid10625658
Chromatin accessibility and the regulatory epigenome20Nature Reviews. Genetics207220
• doi10.1038/s41576-018-0089-8
• pmid30675018
Functional roles of Otx2 transcription factor in postnatal mouse retinal development27Molecular and Cellular Biology83188329
• doi10.1128/MCB.01209-07
• pmid17908793
HOCOMOCO: Towards a complete collection of transcription factor binding models for human and mouse via large-scale ChIP-seq analysis46Nucleic Acids Research
• doi10.1093/nar/gkx1106
• pmid29140464
Complex effects of nucleotide variants in a mammalian cis-regulatory element109PNAS1949819503
• doi10.1073/pnas.1210678109
• pmid23129659
High-throughput functional testing of ENCODE segmentation predictions24Genome Research15951602
• doi10.1101/gr.173518.114
• pmid25035418
Quantitative fine-tuning of photoreceptor cis-regulatory elements through affinity modulation of transcription factor binding sites17Gene Therapy13901399
• doi10.1038/gt.2010.77
• pmid20463752
Discriminative prediction of mammalian enhancers from DNA sequence21Genome Research21672180
• doi10.1101/gr.121905.111
• pmid21875935
Sp4 is expressed in retinal neurons, activates transcription of photoreceptor-specific genes, and synergizes with Crx280The Journal of Biological Chemistry2064220650
• doi10.1074/jbc.M500957200
• pmid15781457
Sox2 acts as a transcriptional repressor in neural stem cells15BMC Neuroscience
• doi10.1186/1471-2202-15-95
• pmid25103589
Activator and repressor functions of the Mot3 transcription factor in the osmostress response of Saccharomyces cerevisiae12Eukaryotic Cell636647
• doi10.1128/EC.00037-13
• pmid23435728
Proceedings of the 9th Python in Science conference5156
Nrl is required for rod photoreceptor development29Nature Genetics447452
• doi10.1038/ng774
• pmid11694879
The leucine zipper of NRL interacts with the CRX homeodomain. A possible mechanism of transcriptional synergy in rhodopsin regulation275The Journal of Biological Chemistry2979429799
• doi10.1074/jbc.M003658200
• pmid10887186
Interaction of retinal bZIP transcription factor NRL with Flt3-interacting zinc-finger protein Fiz1: possible role of Fiz1 as a transcriptional repressor12Human Molecular Genetics365373
• doi10.1093/hmg/ddg035
• pmid12566383
Expanded encyclopaedias of DNA elements in the human and mouse genomes583Nature699710
• doi10.1038/s41586-020-2493-4
• pmid32728249
NeuroD regulates multiple functions in the developing neural retina in rodent126Development2336
• doi10.1242/dev.126.1.23
• pmid9834183
Cis-regulatory basis of sister cell type divergence in the vertebrate retina8eLife
• doi10.7554/eLife.48216
• pmid31633482
Chromatin interaction analyses elucidate the roles of PRC2-bound silencers in mouse development52Nature Genetics264272
• doi10.1038/s41588-020-0581-x
• pmid32094912
Systematic identification of silencers in human cells52Nature Genetics254263
• doi10.1038/s41588-020-0578-5
• pmid32094911
The cis-regulatory logic of Hedgehog gradient responses: key roles for gli binding affinity, competition, and cooperativity4Science Signaling
• doi10.1126/scisignal.2002077
Scikit-learn: Machine learning in Python12The Journal of Machine Learning Research28252830
The photoreceptor-specific nuclear receptor Nr2e3 interacts with CRX and exerts opposing effects on the transcription of rod versus cone genes14Human Molecular Genetics747764
• doi10.1093/hmg/ddi070
• pmid15689355
Detection and characterization of silencers and enhancer-blockers in the greater CFTR locus18Genome Research12381246
• doi10.1101/gr.073817.107
• pmid18436892
Physical Biology of the CellGarland Science
• doi10.1201/9781134111589
Bedtools: A flexible suite of utilities for comparing genomic features26Bioinformatics841842
• doi10.1093/bioinformatics/btq033
• pmid20110278
FHL2 switches MITF from activator to repressor of Erbin expression during cardiac hypertrophy195International Journal of Cardiology8594
• doi10.1016/j.ijcard.2015.05.108
• pmid26025865
Single-base pair differences in a shared motif determine differential Rhodopsin expression350Science12581261
• doi10.1126/science.aab3417
• pmid26785491
OTX2 loss causes rod differentiation defect in CRX-associated congenital blindness124The Journal of Clinical Investigation631643
• doi10.1172/JCI72722
• pmid24382353
CRX directs photoreceptor differentiation by accelerating chromatin remodeling at specific target sites11Epigenetics & Chromatin
• doi10.1186/s13072-018-0212-2
• pmid30068366
A De Novo Shape Motif Discovery Algorithm Reveals Preferences of Transcription Factors for DNA Shape Beyond Sequence Motifs8Cell Systems2742
• doi10.1016/j.cels.2018.12.001
• pmid30660610
Panky, a novel photoreceptor-specific ankyrin repeat protein, is a transcriptional cofactor that suppresses CRX-regulated photoreceptor genes584FEBS Letters753758
• doi10.1016/j.febslet.2009.12.030
• pmid20026326
Transcriptional silencers: Driving gene expression with the brakes on37Trends in Genetics514527
• doi10.1016/j.tig.2021.02.002
• pmid33712326
Supervised enhancer prediction with epigenetic pattern recognition and targeted validation17Nature Methods807814
• doi10.1038/s41592-020-0907-8
• pmid32737473
Transcription factors: From enhancer binding to developmental control13Nature Reviews. Genetics613626
• doi10.1038/nrg3207
• pmid22868264
Activation of the blue opsin gene in cone photoreceptor development by retinoid-related orphan receptor beta20Molecular Endocrinology17281741
• doi10.1210/me.2005-0505
• pmid16574740
Transcriptional regulators form diverse groups with context-dependent regulatory functions528Nature147151
• doi10.1038/nature15545
• pmid26550828
Logomaker: beautiful sequence logos in Python36Bioinformatics22722274
• doi10.1093/bioinformatics/btz921
• pmid31821414
SciPy 1.0: Fundamental algorithms for scientific computing in Python17Nature Methods261272
• doi10.1038/s41592-019-0686-2
• pmid32015543
A gene regulatory network controls the binary fate decision of rod and bipolar cells in the vertebrate retina30Developmental Cell513527
• doi10.1016/j.devcel.2014.07.018
• pmid25155555
Dual role of Nr2e3 in photoreceptor development and maintenance87Experimental Eye Research3548
• doi10.1016/j.exer.2008.04.006
• pmid18547563
Massively parallel in vivo enhancer assay reveals that highly local features determine the cis-regulatory function of ChIP-seq peaks110PNAS1195211957
• doi10.1073/pnas.1307449110
• pmid23818646
A Simple Grammar Defines Activating and Repressing cis-Regulatory Elements in Photoreceptors17Cell Reports12471254
• doi10.1016/j.celrep.2016.09.066
• pmid27783940
Different gene regulation strategies revealed by analysis of binding motifs25Trends in Genetics434440
• doi10.1016/j.tig.2009.08.003
• pmid19815308
Math5 determines the competence state of retinal ganglion cell progenitors264Developmental Biology240254
• doi10.1016/j.ydbio.2003.08.005
• pmid14623245
Inferring binding energies from selected binding sites5PLOS Computational Biology
• doi10.1371/journal.pcbi.1000590
• pmid19997485
Predicting effects of noncoding variants with deep learning-based sequence model12Nature Methods931934
• doi10.1038/nmeth.3547
• pmid26301843