diff --git a/README.md b/README.md
index 4cf1bbb77..925a7a680 100644
--- a/README.md
+++ b/README.md
@@ -219,7 +219,7 @@ To learn more about the docker pull rate limits and the open source software pro
| [Porechop](https://hub.docker.com/r/staphb/porechop/)
[![docker pulls](https://badgen.net/docker/pulls/staphb/porechop)](https://hub.docker.com/r/staphb/porechop) |
| https://github.com/rrwick/Porechop |
| [PPanGGOLiN](https://hub.docker.com/r/staphb/ppanggolin/)
[![docker pulls](https://badgen.net/docker/pulls/staphb/ppanggolin)](https://hub.docker.com/r/staphb/ppanggolin) | | https://github.com/labgem/PPanGGOLiN |
| [Prokka](https://hub.docker.com/r/staphb/prokka/)
[![docker pulls](https://badgen.net/docker/pulls/staphb/prokka)](https://hub.docker.com/r/staphb/prokka) | | https://github.com/tseemann/prokka |
-| [pyCirclize](https://hub.docker.com/r/staphb/pycirclize/)
[![docker pulls](https://badgen.net/docker/pulls/staphb/pycirclize)](https://hub.docker.com/r/staphb/pycirclize) | - [1.0.0](pycirclize/1.0.0/)
| https://github.com/moshi4/pyCirclize |
+| [pyCirclize](https://hub.docker.com/r/staphb/pycirclize/)
[![docker pulls](https://badgen.net/docker/pulls/staphb/pycirclize)](https://hub.docker.com/r/staphb/pycirclize) | - [1.0.0](pycirclize/1.0.0/)
- [1.2.0](./pycirclize/1.2.0/)
| https://github.com/moshi4/pyCirclize |
| [pyGenomeViz](https://hub.docker.com/r/staphb/pygenomeviz/)
[![docker pulls](https://badgen.net/docker/pulls/staphb/pygenomeviz)](https://hub.docker.com/r/staphb/pygenomeviz) | - 0.2.2
- 0.3.2
- [0.4.2](pygenomeviz/0.4.2/)
- [0.4.3](pygenomeviz/0.4.3/)
- [0.4.4](pygenomeviz/0.4.4/)
| https://github.com/moshi4/pyGenomeViz |
| [QUAST](https://hub.docker.com/r/staphb/quast/)
[![docker pulls](https://badgen.net/docker/pulls/staphb/quast)](https://hub.docker.com/r/staphb/quast) | - 5.0.0
- 5.0.2
- [5.2.0](./quast/5.2.0)
| https://github.com/ablab/quast |
| [QuickSNP](https://hub.docker.com/r/staphb/quicksnp/)
[![docker pulls](https://badgen.net/docker/pulls/staphb/quicksnp)](https://hub.docker.com/r/staphb/quicksnp) | | https://github.com/k-florek/QuickSNP |
diff --git a/pycirclize/1.2.0/Dockerfile b/pycirclize/1.2.0/Dockerfile
new file mode 100644
index 000000000..ffb4843c4
--- /dev/null
+++ b/pycirclize/1.2.0/Dockerfile
@@ -0,0 +1,39 @@
+FROM python:3.9.17-slim as app
+
+ARG PYCIRCLIZE_VER="1.2.0"
+
+# 'LABEL' instructions tag the image with metadata that might be important to the user
+LABEL base.image="python:3.9.17-slim"
+LABEL dockerfile.version="1"
+LABEL software="pyCirclize"
+LABEL software.version="${PYCIRCLIZE_VER}"
+LABEL description="Circular visualization in Python"
+LABEL website="https://github.com/moshi4/pyCirclize"
+LABEL license="https://github.com/moshi4/pyCirclize/blob/main/LICENSE"
+LABEL maintainer="Erin Young"
+LABEL maintainer.email="eriny@utah.gov"
+
+RUN apt-get update && apt-get install -y --no-install-recommends \
+ procps && \
+ apt-get autoclean && rm -rf /var/lib/apt/lists/*
+
+RUN pip install --no-cache pycirclize==${PYCIRCLIZE_VER}
+
+ENV PATH=$PATH \
+ LC_ALL=C
+
+CMD pip show pycirclize
+
+WORKDIR /data
+
+FROM app as test
+
+WORKDIR /test
+
+RUN pip show pycirclize
+
+COPY /tests/* /test/
+
+RUN python example1.py && ls example01.png && \
+ python example2.py && ls example02.png && \
+ python example3.py && ls example03.png
\ No newline at end of file
diff --git a/pycirclize/1.2.0/README.md b/pycirclize/1.2.0/README.md
new file mode 100644
index 000000000..e574bb7aa
--- /dev/null
+++ b/pycirclize/1.2.0/README.md
@@ -0,0 +1,61 @@
+# pyCirclize container
+
+Main tool: [pyCirclize](https://pypi.org/project/pyCirclize/)
+
+Code repository: https://github.com/moshi4/pyCirclize
+
+Basic information on how to use this tool:
+- executable: NA
+- help: NA
+- version: NA
+- description: pyCirclize is a python package for creating visual images of circular genomes (like those of bacteria)
+
+Full documentation: https://pypi.org/project/pyCirclize/
+
+## Example Usage
+
+This is for running containers with a specific python package, and is not really meant to be run from the command line. Instead, a bioinformatician could create a python script that uses pycirclize.
+
+example1.py:
+```python
+from pycirclize import Circos
+import numpy as np
+np.random.seed(0)
+
+# Initialize Circos sectors
+sectors = {"A": 10, "B": 15, "C": 12, "D": 20, "E": 15}
+circos = Circos(sectors, space=5)
+
+for sector in circos.sectors:
+ # Plot sector name
+ sector.text(f"Sector: {sector.name}", r=110, size=15)
+ # Create x positions & random y values
+ x = np.arange(sector.start, sector.end) + 0.5
+ y = np.random.randint(0, 100, len(x))
+ # Plot lines
+ track1 = sector.add_track((80, 100), r_pad_ratio=0.1)
+ track1.xticks_by_interval(interval=1)
+ track1.axis()
+ track1.line(x, y)
+ # Plot points
+ track2 = sector.add_track((55, 75), r_pad_ratio=0.1)
+ track2.axis()
+ track2.scatter(x, y)
+ # Plot bars
+ track3 = sector.add_track((30, 50), r_pad_ratio=0.1)
+ track3.axis()
+ track3.bar(x, y)
+
+# Plot links
+circos.link(("A", 0, 3), ("B", 15, 12))
+circos.link(("B", 0, 3), ("C", 7, 11), color="skyblue")
+circos.link(("C", 2, 5), ("E", 15, 12), color="chocolate", direction=1)
+circos.link(("D", 3, 5), ("D", 18, 15), color="lime", ec="black", lw=0.5, hatch="//", direction=2)
+circos.link(("D", 8, 10), ("E", 2, 8), color="violet", ec="red", lw=1.0, ls="dashed")
+
+circos.savefig("example01.png")
+```
+
+```bash
+python example1.py
+```
\ No newline at end of file
diff --git a/pycirclize/1.2.0/tests/example1.py b/pycirclize/1.2.0/tests/example1.py
new file mode 100755
index 000000000..2833e5532
--- /dev/null
+++ b/pycirclize/1.2.0/tests/example1.py
@@ -0,0 +1,36 @@
+from pycirclize import Circos
+import numpy as np
+np.random.seed(0)
+
+# Initialize Circos sectors
+sectors = {"A": 10, "B": 15, "C": 12, "D": 20, "E": 15}
+circos = Circos(sectors, space=5)
+
+for sector in circos.sectors:
+ # Plot sector name
+ sector.text(f"Sector: {sector.name}", r=110, size=15)
+ # Create x positions & random y values
+ x = np.arange(sector.start, sector.end) + 0.5
+ y = np.random.randint(0, 100, len(x))
+ # Plot lines
+ track1 = sector.add_track((80, 100), r_pad_ratio=0.1)
+ track1.xticks_by_interval(interval=1)
+ track1.axis()
+ track1.line(x, y)
+ # Plot points
+ track2 = sector.add_track((55, 75), r_pad_ratio=0.1)
+ track2.axis()
+ track2.scatter(x, y)
+ # Plot bars
+ track3 = sector.add_track((30, 50), r_pad_ratio=0.1)
+ track3.axis()
+ track3.bar(x, y)
+
+# Plot links
+circos.link(("A", 0, 3), ("B", 15, 12))
+circos.link(("B", 0, 3), ("C", 7, 11), color="skyblue")
+circos.link(("C", 2, 5), ("E", 15, 12), color="chocolate", direction=1)
+circos.link(("D", 3, 5), ("D", 18, 15), color="lime", ec="black", lw=0.5, hatch="//", direction=2)
+circos.link(("D", 8, 10), ("E", 2, 8), color="violet", ec="red", lw=1.0, ls="dashed")
+
+circos.savefig("example01.png")
\ No newline at end of file
diff --git a/pycirclize/1.2.0/tests/example2.py b/pycirclize/1.2.0/tests/example2.py
new file mode 100755
index 000000000..406b67773
--- /dev/null
+++ b/pycirclize/1.2.0/tests/example2.py
@@ -0,0 +1,42 @@
+from pycirclize import Circos
+from pycirclize.utils import fetch_genbank_by_accid
+from pycirclize.parser import Genbank
+
+# Download `NC_002483` E.coli plasmid genbank
+gbk_fetch_data = fetch_genbank_by_accid("NC_002483")
+gbk = Genbank(gbk_fetch_data)
+
+# Initialize Circos instance with genome size
+circos = Circos(sectors={gbk.name: gbk.range_size})
+circos.text(f"Escherichia coli K-12 plasmid F\n\n{gbk.name}", size=14)
+circos.rect(r_lim=(90, 100), fc="lightgrey", ec="none", alpha=0.5)
+sector = circos.sectors[0]
+
+# Plot forward strand CDS
+f_cds_track = sector.add_track((95, 100))
+f_cds_feats = gbk.extract_features("CDS", target_strand=1)
+f_cds_track.genomic_features(f_cds_feats, plotstyle="arrow", fc="salmon", lw=0.5)
+
+# Plot reverse strand CDS
+r_cds_track = sector.add_track((90, 95))
+r_cds_feats = gbk.extract_features("CDS", target_strand=-1)
+r_cds_track.genomic_features(r_cds_feats, plotstyle="arrow", fc="skyblue", lw=0.5)
+
+# Plot 'gene' qualifier label if exists
+labels, label_pos_list = [], []
+for feat in gbk.extract_features("CDS"):
+ start = int(str(feat.location.start))
+ end = int(str(feat.location.end))
+ label_pos = (start + end) / 2
+ gene_name = feat.qualifiers.get("gene", [None])[0]
+ if gene_name is not None:
+ labels.append(gene_name)
+ label_pos_list.append(label_pos)
+f_cds_track.xticks(label_pos_list, labels, label_size=6, label_orientation="vertical")
+
+# Plot xticks (interval = 10 Kb)
+r_cds_track.xticks_by_interval(
+ 10000, outer=False, label_formatter=lambda v: f"{v/1000:.1f} Kb"
+)
+
+circos.savefig("example02.png")
\ No newline at end of file
diff --git a/pycirclize/1.2.0/tests/example3.py b/pycirclize/1.2.0/tests/example3.py
new file mode 100755
index 000000000..72bd3fcaa
--- /dev/null
+++ b/pycirclize/1.2.0/tests/example3.py
@@ -0,0 +1,23 @@
+from pycirclize import Circos
+import pandas as pd
+
+# Create matrix dataframe (3 x 6)
+row_names = ["F1", "F2", "F3"]
+col_names = ["T1", "T2", "T3", "T4", "T5", "T6"]
+matrix_data = [
+ [10, 16, 7, 7, 10, 8],
+ [4, 9, 10, 12, 12, 7],
+ [17, 13, 7, 4, 20, 4],
+]
+matrix_df = pd.DataFrame(matrix_data, index=row_names, columns=col_names)
+
+# Initialize Circos from matrix for plotting Chord Diagram
+circos = Circos.initialize_from_matrix(
+ matrix_df,
+ space=5,
+ cmap="tab10",
+ label_kws=dict(size=12),
+ link_kws=dict(ec="black", lw=0.5, direction=1),
+)
+
+circos.savefig("example03.png")
\ No newline at end of file