Comparing Modlyn & Scanpy feature selection methods¶
!pip install 'modlyn[dev]'
!lamin init --storage test-modlyn
Show code cell output
Requirement already satisfied: modlyn[dev] in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (0.0.7)
Requirement already satisfied: anndata>=0.12.0rc1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (0.12.1)
Requirement already satisfied: scikit-learn in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (1.7.2)
Requirement already satisfied: matplotlib in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (3.10.6)
Requirement already satisfied: arrayloaders in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (0.0.3)
Requirement already satisfied: lightning in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (2.5.5)
Requirement already satisfied: lamindb[jupyter] in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (1.11.3)
Requirement already satisfied: seaborn in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (0.13.2)
Requirement already satisfied: scanpy in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (1.11.4)
Requirement already satisfied: pre-commit in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (4.3.0)
Requirement already satisfied: nox in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (2025.2.9)
Requirement already satisfied: pytest>=6.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (8.4.2)
Requirement already satisfied: pytest-cov in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (7.0.0)
Requirement already satisfied: nbproject_test in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (0.6.0)
Requirement already satisfied: array-api-compat>=1.7.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from anndata>=0.12.0rc1->modlyn[dev]) (1.12.0)
Requirement already satisfied: h5py>=3.8 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from anndata>=0.12.0rc1->modlyn[dev]) (3.14.0)
Requirement already satisfied: legacy-api-wrap in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from anndata>=0.12.0rc1->modlyn[dev]) (1.4.1)
Requirement already satisfied: natsort in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from anndata>=0.12.0rc1->modlyn[dev]) (8.4.0)
Requirement already satisfied: numpy>=1.26 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from anndata>=0.12.0rc1->modlyn[dev]) (2.2.6)
Requirement already satisfied: packaging>=24.2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from anndata>=0.12.0rc1->modlyn[dev]) (25.0)
Requirement already satisfied: pandas!=2.1.2,>=2.1.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from anndata>=0.12.0rc1->modlyn[dev]) (2.3.2)
Requirement already satisfied: scipy>=1.12 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from anndata>=0.12.0rc1->modlyn[dev]) (1.14.1)
Requirement already satisfied: zarr!=3.0.*,>=2.18.7 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from anndata>=0.12.0rc1->modlyn[dev]) (3.1.3)
Requirement already satisfied: python-dateutil>=2.8.2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from pandas!=2.1.2,>=2.1.0->anndata>=0.12.0rc1->modlyn[dev]) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from pandas!=2.1.2,>=2.1.0->anndata>=0.12.0rc1->modlyn[dev]) (2025.2)
Requirement already satisfied: tzdata>=2022.7 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from pandas!=2.1.2,>=2.1.0->anndata>=0.12.0rc1->modlyn[dev]) (2025.2)
Requirement already satisfied: iniconfig>=1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from pytest>=6.0->modlyn[dev]) (2.1.0)
Requirement already satisfied: pluggy<2,>=1.5 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from pytest>=6.0->modlyn[dev]) (1.6.0)
Requirement already satisfied: pygments>=2.7.2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from pytest>=6.0->modlyn[dev]) (2.19.2)
Requirement already satisfied: six>=1.5 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from python-dateutil>=2.8.2->pandas!=2.1.2,>=2.1.0->anndata>=0.12.0rc1->modlyn[dev]) (1.17.0)
Requirement already satisfied: donfig>=0.8 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from zarr!=3.0.*,>=2.18.7->anndata>=0.12.0rc1->modlyn[dev]) (0.8.1.post1)
Requirement already satisfied: numcodecs>=0.14 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from numcodecs[crc32c]>=0.14->zarr!=3.0.*,>=2.18.7->anndata>=0.12.0rc1->modlyn[dev]) (0.16.3)
Requirement already satisfied: typing-extensions>=4.9 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from zarr!=3.0.*,>=2.18.7->anndata>=0.12.0rc1->modlyn[dev]) (4.15.0)
Requirement already satisfied: pyyaml in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from donfig>=0.8->zarr!=3.0.*,>=2.18.7->anndata>=0.12.0rc1->modlyn[dev]) (6.0.2)
Requirement already satisfied: crc32c>=2.7 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from numcodecs[crc32c]>=0.14->zarr!=3.0.*,>=2.18.7->anndata>=0.12.0rc1->modlyn[dev]) (2.7.1)
Requirement already satisfied: torch in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from arrayloaders->modlyn[dev]) (2.8.0)
Requirement already satisfied: dask[array] in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from arrayloaders->modlyn[dev]) (2025.1.0)
Requirement already satisfied: tqdm in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from arrayloaders->modlyn[dev]) (4.67.1)
Requirement already satisfied: universal_pathlib>=0.2.6 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from arrayloaders->modlyn[dev]) (0.2.6)
Requirement already satisfied: aiohttp in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from anndata[lazy]>=0.12.0rc1->arrayloaders->modlyn[dev]) (3.12.15)
Requirement already satisfied: requests in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from anndata[lazy]>=0.12.0rc1->arrayloaders->modlyn[dev]) (2.32.5)
Requirement already satisfied: xarray>=2025.06.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from anndata[lazy]>=0.12.0rc1->arrayloaders->modlyn[dev]) (2025.9.0)
Requirement already satisfied: click>=8.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from dask[array]->arrayloaders->modlyn[dev]) (8.3.0)
Requirement already satisfied: cloudpickle>=3.0.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from dask[array]->arrayloaders->modlyn[dev]) (3.1.1)
Requirement already satisfied: fsspec>=2021.09.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from dask[array]->arrayloaders->modlyn[dev]) (2025.7.0)
Requirement already satisfied: partd>=1.4.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from dask[array]->arrayloaders->modlyn[dev]) (1.4.2)
Requirement already satisfied: toolz>=0.10.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from dask[array]->arrayloaders->modlyn[dev]) (1.0.0)
Requirement already satisfied: locket in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from partd>=1.4.0->dask[array]->arrayloaders->modlyn[dev]) (1.0.0)
Requirement already satisfied: aiohappyeyeballs>=2.5.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from aiohttp->anndata[lazy]>=0.12.0rc1->arrayloaders->modlyn[dev]) (2.6.1)
Requirement already satisfied: aiosignal>=1.4.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from aiohttp->anndata[lazy]>=0.12.0rc1->arrayloaders->modlyn[dev]) (1.4.0)
Requirement already satisfied: attrs>=17.3.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from aiohttp->anndata[lazy]>=0.12.0rc1->arrayloaders->modlyn[dev]) (25.3.0)
Requirement already satisfied: frozenlist>=1.1.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from aiohttp->anndata[lazy]>=0.12.0rc1->arrayloaders->modlyn[dev]) (1.7.0)
Requirement already satisfied: multidict<7.0,>=4.5 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from aiohttp->anndata[lazy]>=0.12.0rc1->arrayloaders->modlyn[dev]) (6.6.4)
Requirement already satisfied: propcache>=0.2.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from aiohttp->anndata[lazy]>=0.12.0rc1->arrayloaders->modlyn[dev]) (0.3.2)
Requirement already satisfied: yarl<2.0,>=1.17.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from aiohttp->anndata[lazy]>=0.12.0rc1->arrayloaders->modlyn[dev]) (1.20.1)
Requirement already satisfied: idna>=2.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from yarl<2.0,>=1.17.0->aiohttp->anndata[lazy]>=0.12.0rc1->arrayloaders->modlyn[dev]) (3.10)
WARNING: lamindb 1.11.3 does not provide the extra 'jupyter'
Requirement already satisfied: lamin_utils==0.15.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.15.0)
Requirement already satisfied: lamin_cli==1.7.2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.7.2)
Requirement already satisfied: lamindb_setup==1.10.2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.10.2)
Requirement already satisfied: bionty>=1.7a1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.7.0)
Requirement already satisfied: wetlab>=1.5a1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.5.0)
Requirement already satisfied: nbproject==0.11.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.11.1)
Requirement already satisfied: jupytext in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.17.3)
Requirement already satisfied: nbconvert>=7.2.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb[jupyter]; extra == "dev"->modlyn[dev]) (7.16.6)
Requirement already satisfied: mistune!=3.1.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb[jupyter]; extra == "dev"->modlyn[dev]) (3.1.4)
Requirement already satisfied: pyarrow in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb[jupyter]; extra == "dev"->modlyn[dev]) (21.0.0)
Requirement already satisfied: pandera>=0.24.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.26.1)
Requirement already satisfied: graphviz in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.21)
Requirement already satisfied: psycopg2-binary in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.9.10)
Requirement already satisfied: rich-click>=1.7 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamin_cli==1.7.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.9.1)
Requirement already satisfied: django<5.2,>=5.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (5.1.12)
Requirement already satisfied: dj_database_url<3.0.0,>=1.3.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.3.0)
Requirement already satisfied: pydantic-settings in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.11.0)
Requirement already satisfied: platformdirs<5.0.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (4.4.0)
Requirement already satisfied: botocore<2.0.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.40.18)
Requirement already satisfied: supabase<=2.15.0,>=2.8.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.15.0)
Requirement already satisfied: gotrue<=2.12.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.12.0)
Requirement already satisfied: pyjwt<3.0.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.10.1)
Requirement already satisfied: psutil in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (7.1.0)
Requirement already satisfied: urllib3<2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.26.20)
Requirement already satisfied: aiobotocore<3.0.0,>=2.5.4 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from aiobotocore[boto3]<3.0.0,>=2.5.4; extra == "aws"->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.24.2)
Requirement already satisfied: s3fs!=2024.10.0,<=2025.7.0,>=2023.12.2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2025.7.0)
Requirement already satisfied: pydantic>=2.0.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbproject==0.11.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.11.9)
Requirement already satisfied: orjson in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbproject==0.11.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (3.11.3)
Requirement already satisfied: importlib-metadata in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbproject==0.11.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (8.7.0)
Requirement already satisfied: aioitertools<1.0.0,>=0.5.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from aiobotocore<3.0.0,>=2.5.4->aiobotocore[boto3]<3.0.0,>=2.5.4; extra == "aws"->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.12.0)
Requirement already satisfied: jmespath<2.0.0,>=0.7.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from aiobotocore<3.0.0,>=2.5.4->aiobotocore[boto3]<3.0.0,>=2.5.4; extra == "aws"->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.0.1)
Requirement already satisfied: wrapt<2.0.0,>=1.10.10 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from aiobotocore<3.0.0,>=2.5.4->aiobotocore[boto3]<3.0.0,>=2.5.4; extra == "aws"->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.17.3)
Requirement already satisfied: boto3<1.40.19,>=1.40.15 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from aiobotocore[boto3]<3.0.0,>=2.5.4; extra == "aws"->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.40.18)
Requirement already satisfied: s3transfer<0.14.0,>=0.13.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from boto3<1.40.19,>=1.40.15->aiobotocore[boto3]<3.0.0,>=2.5.4; extra == "aws"->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.13.1)
Requirement already satisfied: asgiref<4,>=3.8.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from django<5.2,>=5.1->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (3.9.2)
Requirement already satisfied: sqlparse>=0.3.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from django<5.2,>=5.1->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.5.3)
Requirement already satisfied: httpx<0.29,>=0.26 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from httpx[http2]<0.29,>=0.26->gotrue<=2.12.0->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.28.1)
Requirement already satisfied: pytest-mock<4.0.0,>=3.14.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from gotrue<=2.12.0->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (3.15.1)
Requirement already satisfied: anyio in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from httpx<0.29,>=0.26->httpx[http2]<0.29,>=0.26->gotrue<=2.12.0->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (4.11.0)
Requirement already satisfied: certifi in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from httpx<0.29,>=0.26->httpx[http2]<0.29,>=0.26->gotrue<=2.12.0->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2025.8.3)
Requirement already satisfied: httpcore==1.* in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from httpx<0.29,>=0.26->httpx[http2]<0.29,>=0.26->gotrue<=2.12.0->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.0.9)
Requirement already satisfied: h11>=0.16 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from httpcore==1.*->httpx<0.29,>=0.26->httpx[http2]<0.29,>=0.26->gotrue<=2.12.0->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.16.0)
Requirement already satisfied: h2<5,>=3 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from httpx[http2]<0.29,>=0.26->gotrue<=2.12.0->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (4.3.0)
Requirement already satisfied: hyperframe<7,>=6.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from h2<5,>=3->httpx[http2]<0.29,>=0.26->gotrue<=2.12.0->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (6.1.0)
Requirement already satisfied: hpack<5,>=4.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from h2<5,>=3->httpx[http2]<0.29,>=0.26->gotrue<=2.12.0->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (4.1.0)
Requirement already satisfied: annotated-types>=0.6.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from pydantic>=2.0.0->nbproject==0.11.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.7.0)
Requirement already satisfied: pydantic-core==2.33.2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from pydantic>=2.0.0->nbproject==0.11.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.33.2)
Requirement already satisfied: typing-inspection>=0.4.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from pydantic>=2.0.0->nbproject==0.11.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.4.1)
Requirement already satisfied: postgrest<1.1,>0.19 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from supabase<=2.15.0,>=2.8.1->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.0.2)
Requirement already satisfied: realtime<2.5.0,>=2.4.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from supabase<=2.15.0,>=2.8.1->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.4.3)
Requirement already satisfied: storage3<0.12,>=0.10 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from supabase<=2.15.0,>=2.8.1->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.11.3)
Requirement already satisfied: supafunc<0.10,>=0.9 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from supabase<=2.15.0,>=2.8.1->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.9.4)
Requirement already satisfied: deprecation<3.0.0,>=2.1.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from postgrest<1.1,>0.19->supabase<=2.15.0,>=2.8.1->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.1.0)
Requirement already satisfied: websockets<15,>=11 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from realtime<2.5.0,>=2.4.0->supabase<=2.15.0,>=2.8.1->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (14.2)
Requirement already satisfied: strenum<0.5.0,>=0.4.15 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from supafunc<0.10,>=0.9->supabase<=2.15.0,>=2.8.1->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.4.15)
Requirement already satisfied: beautifulsoup4 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (4.13.5)
Requirement already satisfied: bleach!=5.0.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from bleach[css]!=5.0.0->nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (6.2.0)
Requirement already satisfied: defusedxml in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.7.1)
Requirement already satisfied: jinja2>=3.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (3.1.6)
Requirement already satisfied: jupyter-core>=4.7 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (5.8.1)
Requirement already satisfied: jupyterlab-pygments in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.3.0)
Requirement already satisfied: markupsafe>=2.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (3.0.2)
Requirement already satisfied: nbclient>=0.5.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.10.2)
Requirement already satisfied: nbformat>=5.7 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (5.10.4)
Requirement already satisfied: pandocfilters>=1.4.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.5.1)
Requirement already satisfied: traitlets>=5.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (5.14.3)
Requirement already satisfied: webencodings in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from bleach!=5.0.0->bleach[css]!=5.0.0->nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.5.1)
Requirement already satisfied: tinycss2<1.5,>=1.1.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from bleach[css]!=5.0.0->nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.4.0)
Requirement already satisfied: jupyter-client>=6.1.12 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbclient>=0.5.0->nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (8.6.3)
Requirement already satisfied: pyzmq>=23.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from jupyter-client>=6.1.12->nbclient>=0.5.0->nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (27.1.0)
Requirement already satisfied: tornado>=6.2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from jupyter-client>=6.1.12->nbclient>=0.5.0->nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (6.5.2)
Requirement already satisfied: fastjsonschema>=2.15 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbformat>=5.7->nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.21.2)
Requirement already satisfied: jsonschema>=2.6 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbformat>=5.7->nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (4.25.1)
Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from jsonschema>=2.6->nbformat>=5.7->nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2025.9.1)
Requirement already satisfied: referencing>=0.28.4 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from jsonschema>=2.6->nbformat>=5.7->nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.36.2)
Requirement already satisfied: rpds-py>=0.7.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from jsonschema>=2.6->nbformat>=5.7->nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.27.1)
Requirement already satisfied: typeguard in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from pandera>=0.24.0->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (4.4.4)
Requirement already satisfied: typing_inspect>=0.6.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from pandera>=0.24.0->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.9.0)
Requirement already satisfied: rich>=12 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from rich-click>=1.7->lamin_cli==1.7.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (14.1.0)
Requirement already satisfied: markdown-it-py>=2.2.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from rich>=12->rich-click>=1.7->lamin_cli==1.7.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (4.0.0)
Requirement already satisfied: mdurl~=0.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from markdown-it-py>=2.2.0->rich>=12->rich-click>=1.7->lamin_cli==1.7.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.1.2)
Requirement already satisfied: mypy-extensions>=0.3.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from typing_inspect>=0.6.0->pandera>=0.24.0->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.1.0)
Requirement already satisfied: sniffio>=1.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from anyio->httpx<0.29,>=0.26->httpx[http2]<0.29,>=0.26->gotrue<=2.12.0->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.3.1)
Requirement already satisfied: soupsieve>1.2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from beautifulsoup4->nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.8)
Requirement already satisfied: zipp>=3.20 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from importlib-metadata->nbproject==0.11.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (3.23.0)
Requirement already satisfied: mdit-py-plugins in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from jupytext->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.5.0)
Requirement already satisfied: lightning-utilities<2.0,>=0.10.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lightning->modlyn[dev]) (0.15.2)
Requirement already satisfied: torchmetrics<3.0,>0.7.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lightning->modlyn[dev]) (1.8.2)
Requirement already satisfied: pytorch-lightning in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lightning->modlyn[dev]) (2.5.5)
Requirement already satisfied: setuptools in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lightning-utilities<2.0,>=0.10.0->lightning->modlyn[dev]) (80.9.0)
Requirement already satisfied: filelock in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (3.19.1)
Requirement already satisfied: sympy>=1.13.3 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (1.14.0)
Requirement already satisfied: networkx in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (3.5)
Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.8.93 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (12.8.93)
Requirement already satisfied: nvidia-cuda-runtime-cu12==12.8.90 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (12.8.90)
Requirement already satisfied: nvidia-cuda-cupti-cu12==12.8.90 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (12.8.90)
Requirement already satisfied: nvidia-cudnn-cu12==9.10.2.21 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (9.10.2.21)
Requirement already satisfied: nvidia-cublas-cu12==12.8.4.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (12.8.4.1)
Requirement already satisfied: nvidia-cufft-cu12==11.3.3.83 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (11.3.3.83)
Requirement already satisfied: nvidia-curand-cu12==10.3.9.90 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (10.3.9.90)
Requirement already satisfied: nvidia-cusolver-cu12==11.7.3.90 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (11.7.3.90)
Requirement already satisfied: nvidia-cusparse-cu12==12.5.8.93 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (12.5.8.93)
Requirement already satisfied: nvidia-cusparselt-cu12==0.7.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (0.7.1)
Requirement already satisfied: nvidia-nccl-cu12==2.27.3 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (2.27.3)
Requirement already satisfied: nvidia-nvtx-cu12==12.8.90 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (12.8.90)
Requirement already satisfied: nvidia-nvjitlink-cu12==12.8.93 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (12.8.93)
Requirement already satisfied: nvidia-cufile-cu12==1.13.1.3 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (1.13.1.3)
Requirement already satisfied: triton==3.4.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (3.4.0)
Requirement already satisfied: mpmath<1.4,>=1.1.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from sympy>=1.13.3->torch->arrayloaders->modlyn[dev]) (1.3.0)
Requirement already satisfied: contourpy>=1.0.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from matplotlib->modlyn[dev]) (1.3.3)
Requirement already satisfied: cycler>=0.10 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from matplotlib->modlyn[dev]) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from matplotlib->modlyn[dev]) (4.60.0)
Requirement already satisfied: kiwisolver>=1.3.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from matplotlib->modlyn[dev]) (1.4.9)
Requirement already satisfied: pillow>=8 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from matplotlib->modlyn[dev]) (11.3.0)
Requirement already satisfied: pyparsing>=2.3.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from matplotlib->modlyn[dev]) (3.2.5)
Requirement already satisfied: ipykernel in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbproject_test->modlyn[dev]) (6.30.1)
Requirement already satisfied: comm>=0.1.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from ipykernel->nbproject_test->modlyn[dev]) (0.2.3)
Requirement already satisfied: debugpy>=1.6.5 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from ipykernel->nbproject_test->modlyn[dev]) (1.8.17)
Requirement already satisfied: ipython>=7.23.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from ipykernel->nbproject_test->modlyn[dev]) (9.5.0)
Requirement already satisfied: matplotlib-inline>=0.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from ipykernel->nbproject_test->modlyn[dev]) (0.1.7)
Requirement already satisfied: nest-asyncio>=1.4 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from ipykernel->nbproject_test->modlyn[dev]) (1.6.0)
Requirement already satisfied: decorator in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from ipython>=7.23.1->ipykernel->nbproject_test->modlyn[dev]) (5.2.1)
Requirement already satisfied: ipython-pygments-lexers in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from ipython>=7.23.1->ipykernel->nbproject_test->modlyn[dev]) (1.1.1)
Requirement already satisfied: jedi>=0.16 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from ipython>=7.23.1->ipykernel->nbproject_test->modlyn[dev]) (0.19.2)
Requirement already satisfied: pexpect>4.3 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from ipython>=7.23.1->ipykernel->nbproject_test->modlyn[dev]) (4.9.0)
Requirement already satisfied: prompt_toolkit<3.1.0,>=3.0.41 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from ipython>=7.23.1->ipykernel->nbproject_test->modlyn[dev]) (3.0.52)
Requirement already satisfied: stack_data in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from ipython>=7.23.1->ipykernel->nbproject_test->modlyn[dev]) (0.6.3)
Requirement already satisfied: wcwidth in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from prompt_toolkit<3.1.0,>=3.0.41->ipython>=7.23.1->ipykernel->nbproject_test->modlyn[dev]) (0.2.14)
Requirement already satisfied: parso<0.9.0,>=0.8.4 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from jedi>=0.16->ipython>=7.23.1->ipykernel->nbproject_test->modlyn[dev]) (0.8.5)
Requirement already satisfied: ptyprocess>=0.5 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from pexpect>4.3->ipython>=7.23.1->ipykernel->nbproject_test->modlyn[dev]) (0.7.0)
Requirement already satisfied: argcomplete<4,>=1.9.4 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nox->modlyn[dev]) (3.6.2)
Requirement already satisfied: colorlog<7,>=2.6.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nox->modlyn[dev]) (6.9.0)
Requirement already satisfied: dependency-groups>=1.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nox->modlyn[dev]) (1.3.1)
Requirement already satisfied: virtualenv>=20.14.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nox->modlyn[dev]) (20.34.0)
Requirement already satisfied: distlib<1,>=0.3.7 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from virtualenv>=20.14.1->nox->modlyn[dev]) (0.4.0)
Requirement already satisfied: cfgv>=2.0.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from pre-commit->modlyn[dev]) (3.4.0)
Requirement already satisfied: identify>=1.0.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from pre-commit->modlyn[dev]) (2.6.14)
Requirement already satisfied: nodeenv>=0.11.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from pre-commit->modlyn[dev]) (1.9.1)
Requirement already satisfied: python-dotenv>=0.21.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from pydantic-settings->lamindb_setup==1.10.2->lamindb_setup[aws]==1.10.2->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.1.1)
Requirement already satisfied: coverage>=7.10.6 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from coverage[toml]>=7.10.6->pytest-cov->modlyn[dev]) (7.10.7)
Requirement already satisfied: charset_normalizer<4,>=2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from requests->anndata[lazy]>=0.12.0rc1->arrayloaders->modlyn[dev]) (3.4.3)
Requirement already satisfied: joblib in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from scanpy->modlyn[dev]) (1.5.2)
Requirement already satisfied: numba>=0.57.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from scanpy->modlyn[dev]) (0.62.0)
Requirement already satisfied: patsy!=1.0.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from scanpy->modlyn[dev]) (1.0.1)
Requirement already satisfied: pynndescent>=0.5.13 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from scanpy->modlyn[dev]) (0.5.13)
Requirement already satisfied: session-info2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from scanpy->modlyn[dev]) (0.2.2)
Requirement already satisfied: statsmodels>=0.14.5 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from scanpy->modlyn[dev]) (0.14.5)
Requirement already satisfied: umap-learn>=0.5.6 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from scanpy->modlyn[dev]) (0.5.9.post2)
Requirement already satisfied: llvmlite<0.46,>=0.45.0dev0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from numba>=0.57.1->scanpy->modlyn[dev]) (0.45.0)
Requirement already satisfied: threadpoolctl>=3.1.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from scikit-learn->modlyn[dev]) (3.6.0)
Requirement already satisfied: executing>=1.2.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from stack_data->ipython>=7.23.1->ipykernel->nbproject_test->modlyn[dev]) (2.2.1)
Requirement already satisfied: asttokens>=2.1.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from stack_data->ipython>=7.23.1->ipykernel->nbproject_test->modlyn[dev]) (3.0.0)
Requirement already satisfied: pure-eval in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from stack_data->ipython>=7.23.1->ipykernel->nbproject_test->modlyn[dev]) (0.2.3)
• resetting django module variables
→ initialized lamindb: anonymous/test-modlyn
import lamindb as ln
import modlyn as mn
import scanpy as sc
import pandas as pd
import seaborn as sns
sns.set_theme()
%config InlineBackend.figure_formats = ['svg']
Show code cell output
→ connected lamindb: anonymous/test-modlyn
ln.track()
Show code cell output
→ created Transform('lgaypTuKfAVE0000'), started new Run('vP40gRNN...') at 2025-09-25 21:14:02 UTC
→ notebook imports: lamindb==1.11.3 modlyn==0.0.7 pandas==2.3.2 scanpy==1.11.4 seaborn==0.13.2
• recommendation: to identify the notebook across renames, pass the uid: ln.track("lgaypTuKfAVE")
Prepare dataset¶
artifact = ln.Artifact.using("laminlabs/arrayloader-benchmarks").get(
"JNaxQe8zbljesdbK0000"
)
adata = artifact.load()
sc.pp.log1p(adata)
adata
Show code cell output
→ transferred: Artifact(uid='JNaxQe8zbljesdbK0000'), Storage(uid='LCfy7WeXbvKN')
AnnData object with n_obs × n_vars = 1000 × 100
obs: 'sample', 'gene_count', 'tscp_count', 'mread_count', 'drugname_drugconc', 'drug', 'cell_line', 'sublibrary', 'BARCODE', 'pcnt_mito', 'S_score', 'G2M_score', 'phase', 'pass_filter', 'cell_name', 'plate'
uns: 'log1p'
keep = adata.obs["cell_line"].value_counts().loc[lambda x: x > 3].index
adata = adata[adata.obs["cell_line"].isin(keep)].copy()
adata
Show code cell output
AnnData object with n_obs × n_vars = 992 × 100
obs: 'sample', 'gene_count', 'tscp_count', 'mread_count', 'drugname_drugconc', 'drug', 'cell_line', 'sublibrary', 'BARCODE', 'pcnt_mito', 'S_score', 'G2M_score', 'phase', 'pass_filter', 'cell_name', 'plate'
uns: 'log1p'
adata.obs["cell_line"].value_counts().tail()
Show code cell output
cell_line
CVCL_0099 8
CVCL_1693 8
CVCL_1239 8
CVCL_0028 4
CVCL_1125 4
Name: count, dtype: int64
Train LogReg with Modlyn¶
logreg = mn.models.SimpleLogReg(
adata=adata,
label_column="cell_line",
learning_rate=1e-1,
weight_decay=1e-3,
)
logreg.fit(
adata_train=adata,
adata_val=adata[:20],
train_dataloader_kwargs={"batch_size": 128, "drop_last": True, "num_workers": 4},
max_epochs=5,
)
Show code cell output
💡 Tip: For seamless cloud uploads and versioning, try installing [litmodels](https://pypi.org/project/litmodels/) to enable LitModelCheckpoint, which syncs automatically with the Lightning model registry.
GPU available: False, used: False
TPU available: False, using: 0 TPU cores
HPU available: False, using: 0 HPUs
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/lightning/pytorch/trainer/connectors/logger_connector/logger_connector.py:76: Starting from v1.9.0, `tensorboardX` has been removed as a dependency of the `lightning.pytorch` package, due to potential conflicts with other packages in the ML ecosystem. For this reason, `logger=True` will use `CSVLogger` as the default logger, unless the `tensorboard` or `tensorboardX` packages are found. Please `pip install lightning[extra]` or one of them to enable TensorBoard support by default
| Name | Type | Params | Mode
-----------------------------------------------------------
0 | linear | Linear | 4.5 K | train
1 | train_metrics | MetricCollection | 0 | train
2 | val_metrics | MetricCollection | 0 | train
-----------------------------------------------------------
4.5 K Trainable params
0 Non-trainable params
4.5 K Total params
0.018 Total estimated model params size (MB)
7 Modules in train mode
0 Modules in eval mode
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/lightning/pytorch/trainer/connectors/data_connector.py:433: The 'val_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=3` in the `DataLoader` to improve performance.
Training: | | 0/? [00:00<?, ?it/s]
Training: | | 0/? [00:00<?, ?it/s]
Epoch 0: 0%| | 0/7 [00:00<?, ?it/s]
Epoch 0: 14%|█▍ | 1/7 [00:00<00:00, 35.14it/s]
Epoch 0: 14%|█▍ | 1/7 [00:00<00:00, 33.94it/s, v_num=0]
Epoch 0: 29%|██▊ | 2/7 [00:00<00:00, 52.73it/s, v_num=0]
Epoch 0: 29%|██▊ | 2/7 [00:00<00:00, 51.85it/s, v_num=0]
Epoch 0: 43%|████▎ | 3/7 [00:00<00:00, 65.20it/s, v_num=0]
Epoch 0: 43%|████▎ | 3/7 [00:00<00:00, 64.43it/s, v_num=0]
Epoch 0: 57%|█████▋ | 4/7 [00:00<00:00, 74.67it/s, v_num=0]
Epoch 0: 57%|█████▋ | 4/7 [00:00<00:00, 73.58it/s, v_num=0]
Epoch 0: 71%|███████▏ | 5/7 [00:00<00:00, 84.13it/s, v_num=0]
Epoch 0: 71%|███████▏ | 5/7 [00:00<00:00, 83.09it/s, v_num=0]
Epoch 0: 86%|████████▌ | 6/7 [00:00<00:00, 92.57it/s, v_num=0]
Epoch 0: 86%|████████▌ | 6/7 [00:00<00:00, 91.48it/s, v_num=0]
Epoch 0: 100%|██████████| 7/7 [00:00<00:00, 99.58it/s, v_num=0]
Epoch 0: 100%|██████████| 7/7 [00:00<00:00, 98.51it/s, v_num=0]
Validation: | | 0/? [00:00<?, ?it/s]
Validation: | | 0/? [00:00<?, ?it/s]
Validation DataLoader 0: 0%| | 0/20 [00:00<?, ?it/s]
Validation DataLoader 0: 5%|▌ | 1/20 [00:00<00:00, 130.51it/s]
Validation DataLoader 0: 10%|█ | 2/20 [00:00<00:00, 161.77it/s]
Validation DataLoader 0: 15%|█▌ | 3/20 [00:00<00:00, 175.78it/s]
Validation DataLoader 0: 20%|██ | 4/20 [00:00<00:00, 178.04it/s]
Validation DataLoader 0: 25%|██▌ | 5/20 [00:00<00:00, 182.80it/s]
Validation DataLoader 0: 30%|███ | 6/20 [00:00<00:00, 188.56it/s]
Validation DataLoader 0: 35%|███▌ | 7/20 [00:00<00:00, 191.28it/s]
Validation DataLoader 0: 40%|████ | 8/20 [00:00<00:00, 193.68it/s]
Validation DataLoader 0: 45%|████▌ | 9/20 [00:00<00:00, 195.76it/s]
Validation DataLoader 0: 50%|█████ | 10/20 [00:00<00:00, 195.22it/s]
Validation DataLoader 0: 55%|█████▌ | 11/20 [00:00<00:00, 195.36it/s]
Validation DataLoader 0: 60%|██████ | 12/20 [00:00<00:00, 196.32it/s]
Validation DataLoader 0: 65%|██████▌ | 13/20 [00:00<00:00, 197.17it/s]
Validation DataLoader 0: 70%|███████ | 14/20 [00:00<00:00, 197.32it/s]
Validation DataLoader 0: 75%|███████▌ | 15/20 [00:00<00:00, 197.08it/s]
Validation DataLoader 0: 80%|████████ | 16/20 [00:00<00:00, 198.42it/s]
Validation DataLoader 0: 85%|████████▌ | 17/20 [00:00<00:00, 199.93it/s]
Validation DataLoader 0: 90%|█████████ | 18/20 [00:00<00:00, 201.13it/s]
Validation DataLoader 0: 95%|█████████▌| 19/20 [00:00<00:00, 202.27it/s]
Validation DataLoader 0: 100%|██████████| 20/20 [00:00<00:00, 202.78it/s]
Epoch 0: 100%|██████████| 7/7 [00:00<00:00, 39.19it/s, v_num=0]
Epoch 0: 100%|██████████| 7/7 [00:00<00:00, 38.87it/s, v_num=0]
Epoch 0: 0%| | 0/7 [00:00<?, ?it/s, v_num=0]
Epoch 1: 0%| | 0/7 [00:00<?, ?it/s, v_num=0]
Epoch 1: 14%|█▍ | 1/7 [00:00<00:00, 9.83it/s, v_num=0]
Epoch 1: 14%|█▍ | 1/7 [00:00<00:00, 9.57it/s, v_num=0]
Epoch 1: 29%|██▊ | 2/7 [00:00<00:00, 18.09it/s, v_num=0]
Epoch 1: 29%|██▊ | 2/7 [00:00<00:00, 17.97it/s, v_num=0]
Epoch 1: 43%|████▎ | 3/7 [00:00<00:00, 25.34it/s, v_num=0]
Epoch 1: 43%|████▎ | 3/7 [00:00<00:00, 25.22it/s, v_num=0]
Epoch 1: 57%|█████▋ | 4/7 [00:00<00:00, 31.74it/s, v_num=0]
Epoch 1: 57%|█████▋ | 4/7 [00:00<00:00, 31.54it/s, v_num=0]
Epoch 1: 71%|███████▏ | 5/7 [00:00<00:00, 37.89it/s, v_num=0]
Epoch 1: 71%|███████▏ | 5/7 [00:00<00:00, 37.73it/s, v_num=0]
Epoch 1: 86%|████████▌ | 6/7 [00:00<00:00, 43.51it/s, v_num=0]
Epoch 1: 86%|████████▌ | 6/7 [00:00<00:00, 43.33it/s, v_num=0]
Epoch 1: 100%|██████████| 7/7 [00:00<00:00, 48.70it/s, v_num=0]
Epoch 1: 100%|██████████| 7/7 [00:00<00:00, 48.50it/s, v_num=0]
Validation: | | 0/? [00:00<?, ?it/s]
Validation: | | 0/? [00:00<?, ?it/s]
Validation DataLoader 0: 0%| | 0/20 [00:00<?, ?it/s]
Validation DataLoader 0: 5%|▌ | 1/20 [00:00<00:00, 135.55it/s]
Validation DataLoader 0: 10%|█ | 2/20 [00:00<00:00, 164.89it/s]
Validation DataLoader 0: 15%|█▌ | 3/20 [00:00<00:00, 178.44it/s]
Validation DataLoader 0: 20%|██ | 4/20 [00:00<00:00, 185.16it/s]
Validation DataLoader 0: 25%|██▌ | 5/20 [00:00<00:00, 188.54it/s]
Validation DataLoader 0: 30%|███ | 6/20 [00:00<00:00, 191.63it/s]
Validation DataLoader 0: 35%|███▌ | 7/20 [00:00<00:00, 194.18it/s]
Validation DataLoader 0: 40%|████ | 8/20 [00:00<00:00, 194.81it/s]
Validation DataLoader 0: 45%|████▌ | 9/20 [00:00<00:00, 197.15it/s]
Validation DataLoader 0: 50%|█████ | 10/20 [00:00<00:00, 197.97it/s]
Validation DataLoader 0: 55%|█████▌ | 11/20 [00:00<00:00, 200.69it/s]
Validation DataLoader 0: 60%|██████ | 12/20 [00:00<00:00, 201.61it/s]
Validation DataLoader 0: 65%|██████▌ | 13/20 [00:00<00:00, 202.85it/s]
Validation DataLoader 0: 70%|███████ | 14/20 [00:00<00:00, 204.10it/s]
Validation DataLoader 0: 75%|███████▌ | 15/20 [00:00<00:00, 204.48it/s]
Validation DataLoader 0: 80%|████████ | 16/20 [00:00<00:00, 204.72it/s]
Validation DataLoader 0: 85%|████████▌ | 17/20 [00:00<00:00, 204.92it/s]
Validation DataLoader 0: 90%|█████████ | 18/20 [00:00<00:00, 204.71it/s]
Validation DataLoader 0: 95%|█████████▌| 19/20 [00:00<00:00, 203.44it/s]
Validation DataLoader 0: 100%|██████████| 20/20 [00:00<00:00, 203.51it/s]
Epoch 1: 100%|██████████| 7/7 [00:00<00:00, 27.78it/s, v_num=0]
Epoch 1: 100%|██████████| 7/7 [00:00<00:00, 27.65it/s, v_num=0]
Epoch 1: 0%| | 0/7 [00:00<?, ?it/s, v_num=0]
Epoch 2: 0%| | 0/7 [00:00<?, ?it/s, v_num=0]
Epoch 2: 14%|█▍ | 1/7 [00:00<00:00, 10.17it/s, v_num=0]
Epoch 2: 14%|█▍ | 1/7 [00:00<00:00, 9.90it/s, v_num=0]
Epoch 2: 29%|██▊ | 2/7 [00:00<00:00, 17.52it/s, v_num=0]
Epoch 2: 29%|██▊ | 2/7 [00:00<00:00, 17.37it/s, v_num=0]
Epoch 2: 43%|████▎ | 3/7 [00:00<00:00, 24.73it/s, v_num=0]
Epoch 2: 43%|████▎ | 3/7 [00:00<00:00, 24.62it/s, v_num=0]
Epoch 2: 57%|█████▋ | 4/7 [00:00<00:00, 31.51it/s, v_num=0]
Epoch 2: 57%|█████▋ | 4/7 [00:00<00:00, 31.36it/s, v_num=0]
Epoch 2: 71%|███████▏ | 5/7 [00:00<00:00, 37.69it/s, v_num=0]
Epoch 2: 71%|███████▏ | 5/7 [00:00<00:00, 37.50it/s, v_num=0]
Epoch 2: 86%|████████▌ | 6/7 [00:00<00:00, 42.98it/s, v_num=0]
Epoch 2: 86%|████████▌ | 6/7 [00:00<00:00, 42.79it/s, v_num=0]
Epoch 2: 100%|██████████| 7/7 [00:00<00:00, 48.12it/s, v_num=0]
Epoch 2: 100%|██████████| 7/7 [00:00<00:00, 47.87it/s, v_num=0]
Validation: | | 0/? [00:00<?, ?it/s]
Validation: | | 0/? [00:00<?, ?it/s]
Validation DataLoader 0: 0%| | 0/20 [00:00<?, ?it/s]
Validation DataLoader 0: 5%|▌ | 1/20 [00:00<00:00, 132.68it/s]
Validation DataLoader 0: 10%|█ | 2/20 [00:00<00:00, 156.85it/s]
Validation DataLoader 0: 15%|█▌ | 3/20 [00:00<00:00, 165.60it/s]
Validation DataLoader 0: 20%|██ | 4/20 [00:00<00:00, 176.65it/s]
Validation DataLoader 0: 25%|██▌ | 5/20 [00:00<00:00, 180.78it/s]
Validation DataLoader 0: 30%|███ | 6/20 [00:00<00:00, 183.65it/s]
Validation DataLoader 0: 35%|███▌ | 7/20 [00:00<00:00, 185.49it/s]
Validation DataLoader 0: 40%|████ | 8/20 [00:00<00:00, 188.15it/s]
Validation DataLoader 0: 45%|████▌ | 9/20 [00:00<00:00, 190.94it/s]
Validation DataLoader 0: 50%|█████ | 10/20 [00:00<00:00, 192.64it/s]
Validation DataLoader 0: 55%|█████▌ | 11/20 [00:00<00:00, 195.01it/s]
Validation DataLoader 0: 60%|██████ | 12/20 [00:00<00:00, 196.54it/s]
Validation DataLoader 0: 65%|██████▌ | 13/20 [00:00<00:00, 198.41it/s]
Validation DataLoader 0: 70%|███████ | 14/20 [00:00<00:00, 199.62it/s]
Validation DataLoader 0: 75%|███████▌ | 15/20 [00:00<00:00, 200.80it/s]
Validation DataLoader 0: 80%|████████ | 16/20 [00:00<00:00, 202.06it/s]
Validation DataLoader 0: 85%|████████▌ | 17/20 [00:00<00:00, 201.57it/s]
Validation DataLoader 0: 90%|█████████ | 18/20 [00:00<00:00, 202.74it/s]
Validation DataLoader 0: 95%|█████████▌| 19/20 [00:00<00:00, 203.51it/s]
Validation DataLoader 0: 100%|██████████| 20/20 [00:00<00:00, 204.28it/s]
Epoch 2: 100%|██████████| 7/7 [00:00<00:00, 27.61it/s, v_num=0]
Epoch 2: 100%|██████████| 7/7 [00:00<00:00, 27.48it/s, v_num=0]
Epoch 2: 0%| | 0/7 [00:00<?, ?it/s, v_num=0]
Epoch 3: 0%| | 0/7 [00:00<?, ?it/s, v_num=0]
Epoch 3: 14%|█▍ | 1/7 [00:00<00:00, 10.21it/s, v_num=0]
Epoch 3: 14%|█▍ | 1/7 [00:00<00:00, 9.97it/s, v_num=0]
Epoch 3: 29%|██▊ | 2/7 [00:00<00:00, 17.95it/s, v_num=0]
Epoch 3: 29%|██▊ | 2/7 [00:00<00:00, 17.86it/s, v_num=0]
Epoch 3: 43%|████▎ | 3/7 [00:00<00:00, 25.67it/s, v_num=0]
Epoch 3: 43%|████▎ | 3/7 [00:00<00:00, 25.49it/s, v_num=0]
Epoch 3: 57%|█████▋ | 4/7 [00:00<00:00, 32.19it/s, v_num=0]
Epoch 3: 57%|█████▋ | 4/7 [00:00<00:00, 32.03it/s, v_num=0]
Epoch 3: 71%|███████▏ | 5/7 [00:00<00:00, 38.54it/s, v_num=0]
Epoch 3: 71%|███████▏ | 5/7 [00:00<00:00, 38.30it/s, v_num=0]
Epoch 3: 86%|████████▌ | 6/7 [00:00<00:00, 44.37it/s, v_num=0]
Epoch 3: 86%|████████▌ | 6/7 [00:00<00:00, 44.17it/s, v_num=0]
Epoch 3: 100%|██████████| 7/7 [00:00<00:00, 49.74it/s, v_num=0]
Epoch 3: 100%|██████████| 7/7 [00:00<00:00, 49.53it/s, v_num=0]
Validation: | | 0/? [00:00<?, ?it/s]
Validation: | | 0/? [00:00<?, ?it/s]
Validation DataLoader 0: 0%| | 0/20 [00:00<?, ?it/s]
Validation DataLoader 0: 5%|▌ | 1/20 [00:00<00:00, 138.76it/s]
Validation DataLoader 0: 10%|█ | 2/20 [00:00<00:00, 165.71it/s]
Validation DataLoader 0: 15%|█▌ | 3/20 [00:00<00:00, 179.70it/s]
Validation DataLoader 0: 20%|██ | 4/20 [00:00<00:00, 186.47it/s]
Validation DataLoader 0: 25%|██▌ | 5/20 [00:00<00:00, 193.10it/s]
Validation DataLoader 0: 30%|███ | 6/20 [00:00<00:00, 196.28it/s]
Validation DataLoader 0: 35%|███▌ | 7/20 [00:00<00:00, 193.27it/s]
Validation DataLoader 0: 40%|████ | 8/20 [00:00<00:00, 193.24it/s]
Validation DataLoader 0: 45%|████▌ | 9/20 [00:00<00:00, 192.64it/s]
Validation DataLoader 0: 50%|█████ | 10/20 [00:00<00:00, 191.93it/s]
Validation DataLoader 0: 55%|█████▌ | 11/20 [00:00<00:00, 192.62it/s]
Validation DataLoader 0: 60%|██████ | 12/20 [00:00<00:00, 191.76it/s]
Validation DataLoader 0: 65%|██████▌ | 13/20 [00:00<00:00, 193.65it/s]
Validation DataLoader 0: 70%|███████ | 14/20 [00:00<00:00, 195.47it/s]
Validation DataLoader 0: 75%|███████▌ | 15/20 [00:00<00:00, 196.97it/s]
Validation DataLoader 0: 80%|████████ | 16/20 [00:00<00:00, 198.32it/s]
Validation DataLoader 0: 85%|████████▌ | 17/20 [00:00<00:00, 199.53it/s]
Validation DataLoader 0: 90%|█████████ | 18/20 [00:00<00:00, 200.64it/s]
Validation DataLoader 0: 95%|█████████▌| 19/20 [00:00<00:00, 201.25it/s]
Validation DataLoader 0: 100%|██████████| 20/20 [00:00<00:00, 202.20it/s]
Epoch 3: 100%|██████████| 7/7 [00:00<00:00, 28.08it/s, v_num=0]
Epoch 3: 100%|██████████| 7/7 [00:00<00:00, 27.88it/s, v_num=0]
Epoch 3: 0%| | 0/7 [00:00<?, ?it/s, v_num=0]
Epoch 4: 0%| | 0/7 [00:00<?, ?it/s, v_num=0]
Epoch 4: 14%|█▍ | 1/7 [00:00<00:00, 9.04it/s, v_num=0]
Epoch 4: 14%|█▍ | 1/7 [00:00<00:00, 8.85it/s, v_num=0]
Epoch 4: 29%|██▊ | 2/7 [00:00<00:00, 16.65it/s, v_num=0]
Epoch 4: 29%|██▊ | 2/7 [00:00<00:00, 16.52it/s, v_num=0]
Epoch 4: 43%|████▎ | 3/7 [00:00<00:00, 23.24it/s, v_num=0]
Epoch 4: 43%|████▎ | 3/7 [00:00<00:00, 23.15it/s, v_num=0]
Epoch 4: 57%|█████▋ | 4/7 [00:00<00:00, 29.05it/s, v_num=0]
Epoch 4: 57%|█████▋ | 4/7 [00:00<00:00, 28.90it/s, v_num=0]
Epoch 4: 71%|███████▏ | 5/7 [00:00<00:00, 34.37it/s, v_num=0]
Epoch 4: 71%|███████▏ | 5/7 [00:00<00:00, 34.20it/s, v_num=0]
Epoch 4: 86%|████████▌ | 6/7 [00:00<00:00, 38.79it/s, v_num=0]
Epoch 4: 86%|████████▌ | 6/7 [00:00<00:00, 38.57it/s, v_num=0]
Epoch 4: 100%|██████████| 7/7 [00:00<00:00, 43.34it/s, v_num=0]
Epoch 4: 100%|██████████| 7/7 [00:00<00:00, 43.12it/s, v_num=0]
Validation: | | 0/? [00:00<?, ?it/s]
Validation: | | 0/? [00:00<?, ?it/s]
Validation DataLoader 0: 0%| | 0/20 [00:00<?, ?it/s]
Validation DataLoader 0: 5%|▌ | 1/20 [00:00<00:00, 136.72it/s]
Validation DataLoader 0: 10%|█ | 2/20 [00:00<00:00, 166.77it/s]
Validation DataLoader 0: 15%|█▌ | 3/20 [00:00<00:00, 175.51it/s]
Validation DataLoader 0: 20%|██ | 4/20 [00:00<00:00, 180.63it/s]
Validation DataLoader 0: 25%|██▌ | 5/20 [00:00<00:00, 183.06it/s]
Validation DataLoader 0: 30%|███ | 6/20 [00:00<00:00, 186.55it/s]
Validation DataLoader 0: 35%|███▌ | 7/20 [00:00<00:00, 188.53it/s]
Validation DataLoader 0: 40%|████ | 8/20 [00:00<00:00, 190.92it/s]
Validation DataLoader 0: 45%|████▌ | 9/20 [00:00<00:00, 192.85it/s]
Validation DataLoader 0: 50%|█████ | 10/20 [00:00<00:00, 194.56it/s]
Validation DataLoader 0: 55%|█████▌ | 11/20 [00:00<00:00, 197.24it/s]
Validation DataLoader 0: 60%|██████ | 12/20 [00:00<00:00, 198.30it/s]
Validation DataLoader 0: 65%|██████▌ | 13/20 [00:00<00:00, 199.64it/s]
Validation DataLoader 0: 70%|███████ | 14/20 [00:00<00:00, 200.93it/s]
Validation DataLoader 0: 75%|███████▌ | 15/20 [00:00<00:00, 202.59it/s]
Validation DataLoader 0: 80%|████████ | 16/20 [00:00<00:00, 203.92it/s]
Validation DataLoader 0: 85%|████████▌ | 17/20 [00:00<00:00, 203.47it/s]
Validation DataLoader 0: 90%|█████████ | 18/20 [00:00<00:00, 203.14it/s]
Validation DataLoader 0: 95%|█████████▌| 19/20 [00:00<00:00, 202.76it/s]
Validation DataLoader 0: 100%|██████████| 20/20 [00:00<00:00, 201.98it/s]
Epoch 4: 100%|██████████| 7/7 [00:00<00:00, 25.87it/s, v_num=0]
Epoch 4: 100%|██████████| 7/7 [00:00<00:00, 25.72it/s, v_num=0]
`Trainer.fit` stopped: `max_epochs=5` reached.
Epoch 4: 100%|██████████| 7/7 [00:00<00:00, 25.16it/s, v_num=0]
logreg.plot_losses()
Show code cell output
Final training loss: 3.2960
Final validation loss: 4.2202
logreg.plot_classification_report(adata)
Show code cell output
Weighted F1: 0.100
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/sklearn/metrics/_classification.py:1731: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
_warn_prf(average, modifier, f"{metric.capitalize()} is", result.shape[0])
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/sklearn/metrics/_classification.py:1731: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
_warn_prf(average, modifier, f"{metric.capitalize()} is", result.shape[0])
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/sklearn/metrics/_classification.py:1731: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
_warn_prf(average, modifier, f"{metric.capitalize()} is", result.shape[0])
Get features scores of different methods¶
df_modlyn_logreg = logreg.get_weights()
df_modlyn_logreg.head()
Show code cell output
gene_name | PIM2 | ECHS1 | LINC03049 | RPL27AP5 | ENSG00000274769 | ENSG00000277770 | CTF1 | Y_RNA-586 | LINC01312 | XRCC6P2 | KMT2E-AS1 | TSPAN9 | ENSG00000286107 | ENSG00000258854 | DPY19L2P3-1 | ENSG00000261018 | SNORD115-2 | ENSG00000264272 | ENSG00000280206 | ENSG00000267005 | UBE2V1P8 | FREM1 | HNRNPA1P67 | BAG4 | ENSG00000284823 | RN7SL440P | EFHC2 | ACOT9 | LINC03038 | OR5BN1P | TLDC2 | MTND2P14 | DEFA5 | PANCR | MIR34B | PPP1R2P6 | ARHGAP23P1 | ENPP7P8 | RNA5SP333 | CENPIP1 | ENSG00000287269 | ATRIP | GOLGA6A | PDZRN4 | MIR452 | ENSG00000289747 | CA10 | UBE2L3 | HHATL | RNU4-20P | XXYLT1-AS2 | RPL32P23 | GRIK5 | NIPA1 | ENSG00000286637 | RIOK3P1 | RANP2 | HDAC3 | ENSG00000287195 | ARID5A | ENSG00000286681 | ENSG00000258193 | ENSG00000272905 | ENSG00000212517 | PARD6BP1 | RNU6-679P | RBM22P13 | MRPL53 | KCNK15-AS1 | ENSG00000276884 | ENSG00000291051 | ENSG00000251490 | AGGF1P9 | MTND4P28 | CCDC110 | ENSG00000255368 | ENSG00000236951 | BLVRB | ENSG00000278384 | ENSG00000228776 | ENSG00000272729 | ENSG00000286587 | LINC01100 | RNU6-307P | RPL7P6 | ENSG00000248452 | ATP5PB | DEFB104A | MIR924 | MTND1P1 | HMOX1 | KRT8P28 | ENSG00000271945 | CHRND | ADAM7-AS2 | ENSG00000272384 | IMP4 | PSMC1P8 | HOMER3 | AIFM3 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
CVCL_0023 | -0.437013 | -0.492468 | -0.005691 | 0.009075 | 0.009509 | -0.007264 | 0.005782 | -0.006765 | -0.026713 | -0.001579 | -0.109718 | -0.371418 | -0.007233 | 0.011394 | -0.004892 | -0.010887 | -0.010023 | -0.010331 | -0.011704 | -0.007817 | -0.006581 | -0.047021 | -0.002159 | -0.546798 | 0.001574 | -0.011260 | 0.001315 | 0.676439 | -0.002742 | 0.007154 | -0.120808 | -0.010856 | 0.009408 | -0.001448 | 0.005130 | 0.005739 | 0.004300 | -0.065155 | -0.011951 | 0.016019 | -0.090340 | -0.281827 | -0.006925 | -0.042783 | 0.011741 | -0.010473 | -0.086969 | -0.721065 | 0.006493 | -0.009591 | -0.039980 | 0.002917 | -0.048419 | -0.599465 | -0.008847 | 0.009493 | 0.002471 | -0.129355 | -0.069014 | 0.312660 | -0.117341 | 0.011012 | -0.023611 | -0.003661 | 0.000556 | 0.000878 | 0.001689 | -0.002763 | -0.180128 | -0.007233 | -0.072646 | 0.001579 | -0.010619 | 0.000474 | -0.020106 | -0.009910 | -0.000181 | -0.328004 | -0.067326 | -0.005988 | -0.007234 | -0.004957 | 0.005396 | 0.008890 | -0.000564 | 0.000221 | -0.549693 | 0.003884 | 0.011813 | 0.002243 | -0.098517 | -0.004943 | 0.601834 | -0.006754 | -0.005967 | -0.011485 | -0.455838 | 0.005959 | 0.438310 | -0.057991 |
CVCL_0028 | -0.066473 | 0.474048 | -0.006072 | 0.009343 | -0.010519 | -0.007048 | 0.008482 | 0.011746 | 0.011690 | 0.005547 | -0.007196 | -0.166672 | -0.005146 | -0.008678 | -0.000390 | -0.006128 | -0.006203 | 0.002958 | -0.004112 | -0.011221 | 0.011352 | 0.013814 | 0.010339 | -0.226305 | -0.005687 | -0.003036 | 0.001476 | -0.205301 | 0.001754 | 0.004138 | -0.033979 | 0.008291 | 0.005906 | -0.005346 | -0.007052 | 0.006807 | -0.011420 | -0.012367 | -0.012088 | -0.013383 | -0.028820 | -0.129589 | 0.008648 | -0.025737 | -0.007357 | 0.000055 | -0.025288 | 0.191376 | -0.003183 | -0.006046 | -0.021582 | -0.011715 | -0.029773 | -0.118068 | -0.010520 | -0.003994 | -0.012287 | -0.117148 | -0.027603 | -0.044585 | -0.036214 | 0.009515 | -0.003271 | 0.005534 | -0.009013 | -0.005372 | 0.007090 | -0.002200 | -0.006946 | 0.004885 | -0.003492 | 0.003242 | 0.002986 | 0.012294 | 0.006016 | 0.007319 | -0.006663 | -0.122803 | -0.005154 | -0.000767 | 0.004291 | 0.001145 | 0.010936 | -0.002239 | -0.012123 | 0.003093 | -0.107212 | 0.011529 | 0.004323 | -0.003380 | -0.104253 | -0.009997 | -0.028555 | -0.011125 | -0.001458 | 0.002853 | -0.167365 | 0.004206 | -0.026937 | -0.015395 |
CVCL_0069 | 0.903096 | -0.339298 | -0.003614 | -0.005387 | 0.005105 | -0.004968 | 0.019859 | -0.007143 | -0.035474 | 0.002041 | -0.049948 | -0.574562 | -0.011709 | 0.005439 | 0.007259 | 0.012691 | -0.007232 | 0.004265 | 0.006304 | -0.004152 | -0.000079 | 0.703780 | 0.006633 | -0.441066 | -0.000280 | 0.010787 | -0.010636 | -0.679625 | -0.003286 | 0.005591 | -0.040061 | 0.004685 | -0.005198 | -0.006635 | 0.011504 | -0.002379 | 0.006545 | -0.023389 | -0.011523 | -0.008741 | -0.033750 | 0.509051 | 0.006818 | -0.031425 | 0.011855 | 0.001543 | -0.049337 | -0.607087 | -0.008499 | 0.005279 | -0.017355 | 0.006723 | -0.051755 | -0.540907 | -0.002050 | 0.008961 | -0.007056 | -0.095583 | -0.049634 | -0.241015 | -0.060656 | 0.009954 | -0.018485 | 0.012245 | -0.008113 | -0.001120 | -0.004519 | 0.005180 | -0.073978 | 0.005542 | -0.009056 | -0.008536 | -0.003296 | -0.000915 | -0.028025 | 0.000561 | -0.001214 | 0.082974 | -0.019512 | 0.006600 | -0.002348 | -0.019483 | -0.011823 | -0.006640 | 0.011187 | -0.003660 | -0.349959 | -0.011903 | 0.003626 | -0.001278 | -0.329561 | 0.005130 | -0.059161 | 0.007234 | -0.006591 | -0.008999 | -0.305927 | 0.002987 | -0.186042 | -0.031811 |
CVCL_0099 | -0.111362 | -0.186988 | -0.001611 | 0.011432 | 0.000046 | -0.002915 | 0.014925 | -0.001820 | -0.028356 | 0.006091 | 0.698925 | -0.301836 | 0.010478 | 0.010188 | 0.000624 | 0.018346 | 0.011455 | -0.008822 | 0.005144 | 0.002145 | 0.000989 | -0.045397 | 0.005803 | -0.247453 | -0.007044 | 0.009718 | 0.002921 | 0.531949 | 0.006381 | -0.010956 | -0.016338 | -0.010966 | -0.003907 | 0.007006 | 0.002723 | 0.009749 | -0.006600 | -0.029358 | 0.001438 | -0.005146 | -0.014013 | 0.882460 | 0.006111 | -0.012858 | -0.005413 | -0.001244 | -0.017930 | -0.324905 | -0.009443 | 0.004762 | -0.004053 | 0.003263 | -0.004670 | -0.275234 | 0.002232 | -0.003817 | -0.003504 | -0.271933 | -0.027909 | -0.101901 | -0.014303 | -0.006553 | -0.015881 | 0.003537 | -0.003892 | -0.003071 | 0.009519 | 0.001063 | -0.026503 | 0.011920 | -0.001217 | -0.007230 | 0.002529 | -0.010892 | -0.028255 | -0.001653 | 0.009181 | -0.214058 | -0.017139 | -0.003398 | -0.010565 | -0.000469 | 0.000868 | -0.000545 | 0.000692 | -0.008558 | -0.189564 | 0.001084 | -0.006917 | -0.008097 | -0.208791 | 0.009780 | -0.008995 | 0.004110 | -0.004304 | -0.006332 | -0.181583 | -0.009932 | -0.060256 | -0.006086 |
CVCL_0131 | -0.041377 | 0.664680 | 0.007159 | -0.006221 | 0.009506 | 0.000191 | -0.008814 | 0.005242 | -0.037912 | 0.001185 | 0.306489 | 0.865569 | -0.000176 | -0.004281 | -0.008992 | -0.029622 | -0.002682 | -0.012132 | 0.011274 | -0.005829 | -0.004490 | -0.072925 | -0.002796 | -0.382060 | -0.006049 | 0.009512 | -0.002940 | 1.332506 | 0.007372 | -0.009275 | -0.295534 | 0.007133 | -0.008717 | 0.003269 | -0.012292 | 0.003303 | 0.008913 | -0.084770 | 0.005829 | -0.046871 | -0.134080 | 0.069322 | 0.005929 | -0.055632 | 0.001307 | -0.006297 | -0.092424 | -0.139251 | 0.006697 | -0.011408 | -0.040256 | 0.012292 | -0.170513 | -0.413858 | -0.007007 | 0.010313 | 0.010504 | 0.755426 | -0.126440 | -0.334400 | -0.151783 | 0.001460 | -0.048581 | -0.007145 | -0.006909 | 0.008812 | 0.010629 | 0.010793 | -0.326453 | 0.002987 | -0.281003 | 0.006329 | 0.006460 | 0.004562 | -0.099089 | 0.009202 | -0.007048 | -0.565487 | -0.144034 | 0.004629 | 0.012297 | -0.032218 | -0.010118 | 0.000870 | 0.006954 | 0.002117 | 0.197185 | 0.002232 | -0.004807 | 0.005665 | -0.215983 | -0.007065 | -0.200477 | -0.002509 | -0.008376 | 0.008891 | -0.572390 | 0.012301 | -0.286157 | -0.056421 |
sc.tl.rank_genes_groups(adata, "cell_line", method="logreg", key_added="sc_logreg")
df_scanpy_logreg = sc.get.rank_genes_groups_df(
adata, group=None, key="sc_logreg"
).pivot(index="group", columns="names", values="scores")
df_scanpy_logreg.attrs["method_name"] = "scanpy_logreg"
df_scanpy_logreg.head()
Show code cell output
names | ACOT9 | ADAM7-AS2 | AGGF1P9 | AIFM3 | ARHGAP23P1 | ARID5A | ATP5PB | ATRIP | BAG4 | BLVRB | CA10 | CCDC110 | CENPIP1 | CHRND | CTF1 | DEFA5 | DEFB104A | DPY19L2P3-1 | ECHS1 | EFHC2 | ENPP7P8 | ENSG00000212517 | ENSG00000228776 | ENSG00000236951 | ENSG00000248452 | ENSG00000251490 | ENSG00000255368 | ENSG00000258193 | ENSG00000258854 | ENSG00000261018 | ENSG00000264272 | ENSG00000267005 | ENSG00000271945 | ENSG00000272384 | ENSG00000272729 | ENSG00000272905 | ENSG00000274769 | ENSG00000276884 | ENSG00000277770 | ENSG00000278384 | ENSG00000280206 | ENSG00000284823 | ENSG00000286107 | ENSG00000286587 | ENSG00000286637 | ENSG00000286681 | ENSG00000287195 | ENSG00000287269 | ENSG00000289747 | ENSG00000291051 | FREM1 | GOLGA6A | GRIK5 | HDAC3 | HHATL | HMOX1 | HNRNPA1P67 | HOMER3 | IMP4 | KCNK15-AS1 | KMT2E-AS1 | KRT8P28 | LINC01100 | LINC01312 | LINC03038 | LINC03049 | MIR34B | MIR452 | MIR924 | MRPL53 | MTND1P1 | MTND2P14 | MTND4P28 | NIPA1 | OR5BN1P | PANCR | PARD6BP1 | PDZRN4 | PIM2 | PPP1R2P6 | PSMC1P8 | RANP2 | RBM22P13 | RIOK3P1 | RN7SL440P | RNA5SP333 | RNU4-20P | RNU6-307P | RNU6-679P | RPL27AP5 | RPL32P23 | RPL7P6 | SNORD115-2 | TLDC2 | TSPAN9 | UBE2L3 | UBE2V1P8 | XRCC6P2 | XXYLT1-AS2 | Y_RNA-586 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
group | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CVCL_0023 | 0.659619 | 0.0 | 0.0 | -0.031030 | 0.0 | 0.231700 | -0.597663 | -0.293583 | -0.548325 | -0.266298 | -0.082783 | -0.045841 | -0.015898 | 0.0 | -0.010365 | 0.0 | 0.0 | 0.0 | -0.575461 | 0.0 | -0.055588 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.021380 | 0.0 | 0.0 | 0.534051 | 0.0 | 0.0 | -0.021372 | 0.0 | 0.0 | 0.0 | -0.072769 | 0.0 | 0.0 | 0.0 | -0.010334 | 0.0 | -0.097399 | -0.062543 | -0.081638 | 0.0 | -0.083266 | -0.057678 | 0.0 | -0.081447 | -0.076739 | 0.0 | 0.027629 | 0.0 | 0.380300 | -0.411706 | -0.201785 | -0.135275 | 0.0 | 0.0 | -0.020358 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.451120 | 0.0 | 0.0 | 0.0 | -0.049817 | -0.388620 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.100345 | -0.296452 | -0.581789 | 0.0 | 0.0 | -0.026876 | 0.0 |
CVCL_0028 | -0.242722 | 0.0 | 0.0 | -0.004131 | 0.0 | -0.056368 | -0.127507 | -0.051343 | -0.118966 | -0.154227 | -0.012074 | -0.008392 | -0.004916 | 0.0 | -0.003226 | 0.0 | 0.0 | 0.0 | 0.503187 | 0.0 | -0.006376 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.003028 | 0.0 | 0.0 | -0.017592 | 0.0 | 0.0 | -0.003027 | 0.0 | 0.0 | 0.0 | -0.012716 | 0.0 | 0.0 | 0.0 | -0.001919 | 0.0 | -0.016386 | -0.012091 | -0.014355 | 0.0 | -0.013727 | -0.008475 | 0.0 | -0.019995 | -0.196099 | 0.0 | -0.089237 | 0.0 | -0.033589 | -0.074636 | -0.029068 | -0.022051 | 0.0 | 0.0 | -0.003674 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.200991 | 0.0 | 0.0 | 0.0 | -0.008840 | -0.069161 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.009306 | -0.237150 | 0.332721 | 0.0 | 0.0 | -0.005290 | 0.0 |
CVCL_0069 | -0.660637 | 0.0 | 0.0 | -0.016866 | 0.0 | -0.187451 | -0.364054 | 0.430795 | -0.362275 | 0.079542 | -0.048852 | -0.020147 | -0.010189 | 0.0 | -0.006503 | 0.0 | 0.0 | 0.0 | -0.357629 | 0.0 | -0.021883 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.012438 | 0.0 | 0.0 | -0.059714 | 0.0 | 0.0 | -0.012433 | 0.0 | 0.0 | 0.0 | -0.042695 | 0.0 | 0.0 | 0.0 | -0.009499 | 0.0 | -0.055973 | -0.036866 | -0.046467 | 0.0 | -0.036167 | 0.625455 | 0.0 | -0.054923 | -0.081832 | 0.0 | -0.278417 | 0.0 | -0.120229 | -0.230591 | -0.103036 | -0.079745 | 0.0 | 0.0 | -0.015980 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.070717 | 0.0 | 0.0 | 0.0 | -0.027376 | 0.865099 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.029943 | -0.612792 | -0.662977 | 0.0 | 0.0 | -0.017092 | 0.0 |
CVCL_0099 | 0.580845 | 0.0 | 0.0 | -0.012109 | 0.0 | -0.107889 | -0.227719 | 1.138218 | -0.206624 | -0.275041 | -0.024520 | -0.013685 | -0.005912 | 0.0 | -0.004008 | 0.0 | 0.0 | 0.0 | -0.219816 | 0.0 | -0.016099 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.006181 | 0.0 | 0.0 | -0.030592 | 0.0 | 0.0 | -0.006179 | 0.0 | 0.0 | 0.0 | -0.021131 | 0.0 | 0.0 | 0.0 | -0.003260 | 0.0 | -0.028204 | -0.018937 | -0.024585 | 0.0 | -0.025939 | -0.016734 | 0.0 | -0.030014 | -0.363001 | 0.0 | -0.165278 | 0.0 | -0.066894 | -0.142272 | -0.059129 | 0.599882 | 0.0 | 0.0 | -0.006520 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.363288 | 0.0 | 0.0 | 0.0 | -0.014925 | -0.127938 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.028184 | -0.400412 | -0.420857 | 0.0 | 0.0 | -0.009776 | 0.0 |
CVCL_0131 | 1.401372 | 0.0 | 0.0 | -0.031490 | 0.0 | -0.405170 | 0.233429 | 0.091139 | 0.118451 | -0.426099 | -0.082796 | -0.141214 | -0.051428 | 0.0 | -0.011740 | 0.0 | 0.0 | 0.0 | 0.621408 | 0.0 | -0.074962 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.021403 | 0.0 | 0.0 | -0.164928 | 0.0 | 0.0 | -0.021396 | 0.0 | 0.0 | 0.0 | -0.122074 | 0.0 | 0.0 | 0.0 | -0.010812 | 0.0 | -0.191677 | -0.109097 | -0.098982 | 0.0 | -0.285361 | -0.075810 | 0.0 | -0.190743 | 0.733823 | 0.0 | 0.046973 | 0.0 | -0.323709 | -0.661705 | -0.381364 | 0.231011 | 0.0 | 0.0 | -0.024485 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.230977 | 0.0 | 0.0 | 0.0 | -0.072152 | -0.011737 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.241474 | 0.822093 | -0.169687 | 0.0 | 0.0 | -0.035441 | 0.0 |
sc.tl.rank_genes_groups(adata, "cell_line", method="wilcoxon", key_added="sc_wilcoxon")
df_scanpy_wilcoxon = sc.get.rank_genes_groups_df(
adata, group=None, key="sc_wilcoxon"
).pivot(index="group", columns="names", values="scores")
df_scanpy_wilcoxon.attrs["method_name"] = "scanpy_wilcoxon"
df_scanpy_wilcoxon.head()
Show code cell output
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:456: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "names"] = self.var_names[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:458: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "scores"] = scores[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:461: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals"] = pvals[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:471: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "pvals_adj"] = pvals_adj[global_indices]
/opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/scanpy/tools/_rank_genes_groups.py:482: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`
self.stats[group_name, "logfoldchanges"] = np.log2(
names | ACOT9 | ADAM7-AS2 | AGGF1P9 | AIFM3 | ARHGAP23P1 | ARID5A | ATP5PB | ATRIP | BAG4 | BLVRB | CA10 | CCDC110 | CENPIP1 | CHRND | CTF1 | DEFA5 | DEFB104A | DPY19L2P3-1 | ECHS1 | EFHC2 | ENPP7P8 | ENSG00000212517 | ENSG00000228776 | ENSG00000236951 | ENSG00000248452 | ENSG00000251490 | ENSG00000255368 | ENSG00000258193 | ENSG00000258854 | ENSG00000261018 | ENSG00000264272 | ENSG00000267005 | ENSG00000271945 | ENSG00000272384 | ENSG00000272729 | ENSG00000272905 | ENSG00000274769 | ENSG00000276884 | ENSG00000277770 | ENSG00000278384 | ENSG00000280206 | ENSG00000284823 | ENSG00000286107 | ENSG00000286587 | ENSG00000286637 | ENSG00000286681 | ENSG00000287195 | ENSG00000287269 | ENSG00000289747 | ENSG00000291051 | FREM1 | GOLGA6A | GRIK5 | HDAC3 | HHATL | HMOX1 | HNRNPA1P67 | HOMER3 | IMP4 | KCNK15-AS1 | KMT2E-AS1 | KRT8P28 | LINC01100 | LINC01312 | LINC03038 | LINC03049 | MIR34B | MIR452 | MIR924 | MRPL53 | MTND1P1 | MTND2P14 | MTND4P28 | NIPA1 | OR5BN1P | PANCR | PARD6BP1 | PDZRN4 | PIM2 | PPP1R2P6 | PSMC1P8 | RANP2 | RBM22P13 | RIOK3P1 | RN7SL440P | RNA5SP333 | RNU4-20P | RNU6-307P | RNU6-679P | RPL27AP5 | RPL32P23 | RPL7P6 | SNORD115-2 | TLDC2 | TSPAN9 | UBE2L3 | UBE2V1P8 | XRCC6P2 | XXYLT1-AS2 | Y_RNA-586 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
group | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CVCL_0023 | 0.332005 | 0.0 | 0.0 | -0.018388 | 0.0 | 0.144039 | -0.533252 | -0.193074 | -0.478088 | -0.299997 | -0.036776 | -0.036776 | -0.018388 | 0.0 | -0.009194 | 0.0 | 0.0 | 0.0 | -0.487282 | 0.0 | -0.027582 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.009194 | 0.0 | 0.0 | 0.273436 | 0.0 | 0.0 | -0.009194 | 0.0 | 0.0 | 0.0 | -0.045970 | 0.0 | 0.0 | 0.0 | -0.009194 | 0.0 | -0.073552 | -0.036776 | -0.045970 | 0.0 | -0.055164 | -0.027582 | 0.0 | -0.073552 | -0.158682 | 0.0 | -0.041884 | 0.0 | 0.209078 | -0.294208 | -0.119522 | -0.082746 | 0.0 | 0.0 | -0.018388 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.557428 | 0.0 | 0.0 | 0.0 | -0.027582 | -0.248238 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.045970 | -0.571730 | -0.687506 | 0.0 | 0.0 | -0.018388 | 0.0 |
CVCL_0028 | -0.409188 | 0.0 | 0.0 | -0.006995 | 0.0 | -0.073444 | -0.202846 | -0.073444 | -0.181862 | -0.241316 | -0.013989 | -0.013989 | -0.006995 | 0.0 | -0.003497 | 0.0 | 0.0 | 0.0 | 0.678483 | 0.0 | -0.010492 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.003497 | 0.0 | 0.0 | -0.024481 | 0.0 | 0.0 | -0.003497 | 0.0 | 0.0 | 0.0 | -0.017487 | 0.0 | 0.0 | 0.0 | -0.003497 | 0.0 | -0.027979 | -0.013989 | -0.017487 | 0.0 | -0.020984 | -0.010492 | 0.0 | -0.027979 | -0.314760 | 0.0 | -0.143391 | 0.0 | -0.048963 | -0.111915 | -0.045465 | -0.031476 | 0.0 | 0.0 | -0.006995 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.339242 | 0.0 | 0.0 | 0.0 | -0.010492 | -0.094428 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.017487 | -0.356728 | 0.466895 | 0.0 | 0.0 | -0.006995 | 0.0 |
CVCL_0069 | -0.796838 | 0.0 | 0.0 | -0.013621 | 0.0 | -0.143022 | -0.395014 | 0.307384 | -0.354150 | -0.024064 | -0.027242 | -0.027242 | -0.013621 | 0.0 | -0.006811 | 0.0 | 0.0 | 0.0 | -0.360961 | 0.0 | -0.020432 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.006811 | 0.0 | 0.0 | -0.047674 | 0.0 | 0.0 | -0.006811 | 0.0 | 0.0 | 0.0 | -0.034053 | 0.0 | 0.0 | 0.0 | -0.006811 | 0.0 | -0.054485 | -0.027242 | -0.034053 | 0.0 | -0.040864 | 0.429975 | 0.0 | -0.054485 | -0.167086 | 0.0 | -0.279234 | 0.0 | -0.095348 | -0.217939 | -0.088538 | -0.061295 | 0.0 | 0.0 | -0.013621 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.214760 | 0.0 | 0.0 | 0.0 | -0.020432 | 0.716019 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.034053 | -0.694680 | -0.755975 | 0.0 | 0.0 | -0.013621 | 0.0 |
CVCL_0099 | 0.629415 | 0.0 | 0.0 | -0.009912 | 0.0 | -0.104077 | -0.287449 | 1.125018 | -0.257713 | -0.341966 | -0.019824 | -0.019824 | -0.009912 | 0.0 | -0.004956 | 0.0 | 0.0 | 0.0 | -0.262669 | 0.0 | -0.014868 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.004956 | 0.0 | 0.0 | -0.034692 | 0.0 | 0.0 | -0.004956 | 0.0 | 0.0 | 0.0 | -0.024780 | 0.0 | 0.0 | 0.0 | -0.004956 | 0.0 | -0.039648 | -0.019824 | -0.024780 | 0.0 | -0.029736 | -0.014868 | 0.0 | -0.039648 | -0.446042 | 0.0 | -0.203197 | 0.0 | -0.069384 | -0.158593 | -0.064428 | 0.569323 | 0.0 | 0.0 | -0.009912 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.480734 | 0.0 | 0.0 | 0.0 | -0.014868 | -0.133813 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.024780 | -0.505515 | -0.550119 | 0.0 | 0.0 | -0.009912 | 0.0 |
CVCL_0131 | 2.103801 | 0.0 | 0.0 | -0.022238 | 0.0 | -0.233502 | 0.201855 | 0.049323 | -0.014255 | -0.467575 | -0.044477 | -0.044477 | -0.022238 | 0.0 | -0.011119 | 0.0 | 0.0 | 0.0 | 0.552537 | 0.0 | -0.033357 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.011119 | 0.0 | 0.0 | -0.077834 | 0.0 | 0.0 | -0.011119 | 0.0 | 0.0 | 0.0 | -0.055596 | 0.0 | 0.0 | 0.0 | -0.011119 | 0.0 | -0.088953 | -0.044477 | -0.055596 | 0.0 | -0.066715 | -0.033357 | 0.0 | -0.088953 | 0.959099 | 0.0 | 0.105204 | 0.0 | -0.155668 | -0.355813 | -0.144549 | 0.182468 | 0.0 | 0.0 | -0.022238 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.238634 | 0.0 | 0.0 | 0.0 | -0.033357 | -0.017677 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | -0.055596 | 1.118188 | -0.118889 | 0.0 | 0.0 | -0.022238 | 0.0 |
Compare feature selection results¶
compare = mn.eval.CompareScoresJaccard(
[df_modlyn_logreg, df_scanpy_logreg, df_scanpy_wilcoxon], n_top_values=[5, 10, 25]
)
compare.plot_heatmaps()
Show code cell output
compare.compute_jaccard_comparison()
compare.plot_jaccard_comparison()
Show code cell output
ln.finish()
Show code cell output
! calling anonymously, will miss private instances
→ finished Run('vP40gRNN') after 23s at 2025-09-25 21:14:25 UTC