Wuhan market metagenomics

icons
lightgrey theme
points
lines
in publication
Metagenomics in the Wuhan market after beginning of the covid pandemy.
Author

J. Barnier, V. Navratil, D. de Vienne

Published

November 25, 2025

Note

This visualization accompanies the article presenting pylifemap, available at link to be added.

The visualization allows exploration and comparison of wild species inventoried between May 2017 and November 2019 in the Wuhan market [1], just prior to the SARS‑CoV‑2 pandemic (red crosses), with an environmental metagenomics survey performed in the same market in 2020. Sequenced reads were assigned to taxa using the taxonomic classifier Kraken2, which relies on a reference database (GenBank nt, November 2022).

Here, taxa/lineages present in the reference database used by Kraken2 are represented by orange branches, and the number of reads assigned to each taxon is indicated by a circle whose size and color are proportional to this number. Points representing fewer than 1,000 reads mapped to the taxa were discarded.

Show the code
# Load library
from pylifemap import Lifemap, aggregate_count, get_duplicated_taxids, aggregate_freq, aggregate_num
import pandas as pd

# Get all metagenomics read data (kraken)
df = pd.read_parquet("data/wuhan_taxid_kraken2.parquet", engine='pyarrow')

# Get all taxids in the reference database at the time of the study
alltaxid = pd.read_parquet("data/kraken2_nt_28112022_inspect_tax_id.parquet", engine="pyarrow")

# Get all taxids belonging to amniota
amniota_taxid = pd.read_csv("data/amniota_taxid_list.csv")
amniota_taxid = amniota_taxid["taxid"].tolist()

# Subsample datasets to only amniota
df_amniota = df[df["taxid"].isin(amniota_taxid)].copy()
alltaxid_amniota = alltaxid[alltaxid["taxid"].isin(amniota_taxid)].copy()

# Aggregate along tree nodes
alltaxid_amniota_agg = aggregate_count(alltaxid_amniota)

# Get species present in Wuhan market
wuhan_taxid_df = pd.read_csv("data/wuhan_taxid_df.csv")

# PLOT
(
    Lifemap(
        theme="lightgrey",
        center=32524,
        zoom=12.5
    )
    .layer_lines(
        alltaxid_amniota_agg,
        color="#f4aa44",
        width=1.5
    )
    .layer_icons(
        wuhan_taxid_df,
        icon="img/cross.png",
        scale=0.2,
        popup=False,
        declutter=False
    )
    .layer_points(
        df_amniota[df_amniota["count"]>=1000],
        radius="count",
        fill="count",
        radius_range = [4,25],
        scheme="YlOrRd"
    )
    .show()
)
Warning: 2 taxids have not been found in Lifemap database: [None, 1576478].
Warning: 1 taxids have not been found in Lifemap database: [None].
NoteReferences

[1] Xiao X., Newman C., Buesching C.D., Macdonald D.W., Zhou Z.-M. 2021. Animal sales from Wuhan wet markets immediately prior to the COVID-19 pandemic. Scientific Reports. 11:11898. https://doi-org.docelec.univ-lyon1.fr/10.1038/s41598-021-91470-2 [2] Liu W.J., Liu P., Lei W., Jia Z., He X., Shi W., Tan Y., Zou S., Wong G., Wang J., Wang F., Wang G., Qin K., Gao R., Zhang J., Li M., Xiao W., Guo Y., Xu Z., Zhao Y., Song J., Zhang J., Zhen W., Zhou W., Ye B., Song J., Yang M., Zhou W., Dai Y., Lu G., Bi Y., Tan W., Han J., Gao G.F., Wu G. 2024. Surveillance of SARS-CoV-2 at the Huanan Seafood Market. Nature. 631:402–408.