Logo

Getting Started

  • Installation
    • From PyPI (recommended)
    • Standalone Windows executable
    • From source (for development)
      • Building the .exe yourself
    • First-run setup
      • Workspace location
  • Quick Start
    • GUI in 5 clicks
    • CLI wizard
    • One-liner CLI examples
  • Performance
    • Resources per step
    • Notes

Scientific Workflow

  • The 7-Step Workflow
  • Step 1 — Promoter Extraction
    • Inputs
    • What it does
    • Output
    • Performance
    • CLI equivalent
  • Step 2 — Motif Search
    • Inputs
    • Statistics
    • Outputs
    • CLI equivalent
    • Gene-ID Resolution
  • Step 3 — Motif Logos
    • Inputs
    • Settings
    • Outputs
  • Step 4 — Expression Feeding
    • Inputs
    • Gene-ID Mapping Methods
    • Outputs
  • Step 5 — Co-expression Network
    • Inputs
    • Pipeline
    • Outputs
  • Step 6 — K-means Clustering
    • Inputs
    • Settings
    • Diagnostics
    • Outputs
  • Step 7 — KEGG Enrichment
    • Inputs
    • Statistics
    • REST endpoints used
    • Output
    • CLI equivalent

GUI

  • GUI Overview
    • Theme & shortcuts
  • NCBI Fetch Tab
    • Search strategies
    • Outputs
  • Contact Tab
    • Theming

CLI

  • CLI Overview
    • Conveniences
  • The Wizard
    • Available workflows
    • Multi-species batch wizard
  • Command Reference
    • cis-gs fetch
    • cis-gs extract
    • cis-gs search
    • cis-gs batch
    • cis-gs logo
    • cis-gs feed
    • cis-gs coexpr
    • cis-gs kmeans
    • cis-gs enrich-kegg
    • cis-gs id-convert

API Reference

  • Programmatic API
    • cis_gs.enrichment
      • cis_gs.enrichment.core
      • cis_gs.enrichment.kegg
      • cis_gs.enrichment.plots
    • cis_gs.enrichment.idmap
      • detect_id_type()
      • consensus_id_type()
      • IDMapping
      • IDConverter
      • search_ncbi_taxonomy()
    • Top-level package
  • cis_gs.enrichment
    • cis_gs.enrichment.core
      • bh_fdr()
      • fold_enrichment()
      • EnrichmentResult
      • hypergeometric_enrichment()
    • cis_gs.enrichment.kegg
      • KEGGClient
      • KEGGEnricher
    • cis_gs.enrichment.plots
      • Provenance
      • dot_plot()
      • bar_plot()
  • cis_gs.enrichment.idmap
    • detect_id_type()
    • consensus_id_type()
    • IDMapping
      • IDMapping.user_input
      • IDMapping.ensembl_gene_id
      • IDMapping.entrez_id
      • IDMapping.symbol
      • IDMapping.species
    • IDConverter
      • IDConverter.convert()
    • search_ncbi_taxonomy()

Project

  • Changelog
    • v1.3.2.5 — 2026-10
    • v1.3.2.4 — 2026-10
    • v1.3.2.3 — 2026-08
    • v1.3.2.2 — 2026-06
    • v1.3.2.1 — 2026-06
    • v1.3.2 — 2026-06
    • v1.3.1 — 2026-06
    • v1.3.0 — 2026-06
    • v1.2.0 — 2026-05
    • v1.1.0 — 2026-05
    • v1.0.0 — 2026-03
  • Contributing
    • Development setup
    • Running the tests
    • Building the docs locally
    • Coding conventions
    • Opening a pull request
    • Code of conduct
  • Citation
    • BibTeX
    • Acknowledgements
Cis-GS
  • Step 2 — Motif Search
  • Edit on GitHub
Previous Next

Step 2 — Motif Search

Scans every promoter for transcription-factor binding motifs and tests every gene-motif pair against a composition-matched null model.

Inputs

  • Target FASTA — usually the promoters.fa from Step 1.

  • Motifs — any combination of:

    • Free-text IUPAC consensus (one per line, NAME SEQ)

    • MEME file

    • Live import from PlantTFDB (157 species), AnimalTFDB (vertebrates + insects), JASPAR 2024, or HOCOMOCO v11.

Statistics

Per promoter and motif strand (the p_value column): the probability of seeing at least \(k\) matches of the motif in a promoter of length \(L\), under a binomial model

\[p = P(X \geq k), \qquad X \sim \text{Binomial}(L - w + 1,\; q)\]

where \(w\) is the motif length and \(q\) is the probability that a random sequence matches the (IUPAC) motif at one position, computed from that promoter’s own base composition. A GC-rich motif is therefore expected more often in GC-rich promoters, which prevents spurious calls.

Multiple testing (p_value_adj): Benjamini-Hochberg over all promoters x motif strands scanned, not only over the pairs that happen to contain a hit. Individual occurrences of a short or degenerate motif are therefore rarely significant on their own; that is expected.

Motif-level enrichment: cis-gs search also prints, for every motif strand, the observed number of hits, the number expected under the same null, the fold enrichment and a one-sided Poisson P-value. This is the appropriate test for “is this motif enriched in these promoters at all?”. In Python it is available as df.attrs["motif_enrichment"].

Note

Versions up to 1.3.2.3 estimated the background GC from the hit sequences and corrected only over the pairs with hits, which flagged nearly every hit as significant. Significance columns from those versions should not be compared with 1.3.2.4 and later.

Outputs

  • hits.csv — one row per hit with position, strand, matched sequence, p_value, p_value_adj, neg_log10_p and significance.

  • Significance Summary — collapsed table with one row per (gene x motif).

CLI equivalent

cis-gs search promoters.fasta --motifs-file motifs.txt -o hits.csv

Gene-ID Resolution

Cis-GS adds three optional ID-mapping methods to bridge the common NCBI LOC### ↔ species-database mismatch:

  1. Column swap — append XM_ / XP_ accessions to the exported CSV.

  2. Mapping CSV — user-supplied two-column lookup.

  3. GFF3 Dbxref expansion — pull every synonym from Dbxref= and locus_tag= attributes in the annotation.

Previous Next

© Copyright 2026, Ayushman Mallick (Plant Signaling Lab, IISER Tirupati).

Built with Sphinx using a theme provided by Read the Docs.