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.0)
Requirement already satisfied: scikit-learn in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (1.7.1)
Requirement already satisfied: matplotlib in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (3.10.3)
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.2)
Requirement already satisfied: lamindb[jupyter] in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (1.9.1)
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.3)
Requirement already satisfied: pre-commit in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (4.2.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.1)
Requirement already satisfied: pytest-cov in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (6.2.1)
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.1)
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.0)
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.1)
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.14.1)
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.7.1)
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.14)
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.4)
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.7.1)
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.2.1)
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.3.2)
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.3)
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)
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.6.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.6.0)
Requirement already satisfied: lamindb_setup==1.8.3 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup[aws]==1.8.3->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.8.3)
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.25.0)
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: 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.2)
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.3)
Requirement already satisfied: rich-click>=1.7 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamin_cli==1.6.0->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.8.9)
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.8.3->lamindb_setup[aws]==1.8.3->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (5.1.11)
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.8.3->lamindb_setup[aws]==1.8.3->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.8.3->lamindb_setup[aws]==1.8.3->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.10.1)
Requirement already satisfied: platformdirs<5.0.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup==1.8.3->lamindb_setup[aws]==1.8.3->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (4.3.8)
Requirement already satisfied: botocore<2.0.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup==1.8.3->lamindb_setup[aws]==1.8.3->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.39.8)
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.8.3->lamindb_setup[aws]==1.8.3->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.8.3->lamindb_setup[aws]==1.8.3->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.8.3->lamindb_setup[aws]==1.8.3->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.8.3->lamindb_setup[aws]==1.8.3->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (7.0.0)
Requirement already satisfied: urllib3<2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup[aws]==1.8.3->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.8.3->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.23.2)
Requirement already satisfied: s3fs!=2024.10.0,<=2025.3.2,>=2023.12.2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup[aws]==1.8.3->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2025.3.2)
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.7)
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.0)
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.8.3->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.8.3->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.8.3->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.17.2)
Requirement already satisfied: boto3<1.39.9,>=1.39.7 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.8.3->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.39.8)
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.39.9,>=1.39.7->aiobotocore[boto3]<3.0.0,>=2.5.4; extra == "aws"->lamindb_setup[aws]==1.8.3->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.8.3->lamindb_setup[aws]==1.8.3->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (3.9.1)
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.8.3->lamindb_setup[aws]==1.8.3->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.8.3->lamindb_setup[aws]==1.8.3->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.8.3->lamindb_setup[aws]==1.8.3->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (3.14.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.8.3->lamindb_setup[aws]==1.8.3->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (4.9.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.8.3->lamindb_setup[aws]==1.8.3->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2025.7.14)
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.8.3->lamindb_setup[aws]==1.8.3->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.8.3->lamindb_setup[aws]==1.8.3->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.8.3->lamindb_setup[aws]==1.8.3->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (4.2.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.8.3->lamindb_setup[aws]==1.8.3->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.8.3->lamindb_setup[aws]==1.8.3->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.8.3->lamindb_setup[aws]==1.8.3->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.8.3->lamindb_setup[aws]==1.8.3->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.8.3->lamindb_setup[aws]==1.8.3->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.8.3->lamindb_setup[aws]==1.8.3->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.8.3->lamindb_setup[aws]==1.8.3->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.8.3->lamindb_setup[aws]==1.8.3->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.8.3->lamindb_setup[aws]==1.8.3->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.4)
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.0.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.1)
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.1)
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.0)
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.4.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.26.0)
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>=10.7 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from rich-click>=1.7->lamin_cli==1.6.0->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (14.0.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>=10.7->rich-click>=1.7->lamin_cli==1.6.0->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (3.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>=10.7->rich-click>=1.7->lamin_cli==1.6.0->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.8.3->lamindb_setup[aws]==1.8.3->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.7)
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.4.2)
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.14.3)
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.0)
Requirement already satisfied: pytorch-lightning in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lightning->modlyn[dev]) (2.5.2)
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.18.0)
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.6.77 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (12.6.77)
Requirement already satisfied: nvidia-cuda-runtime-cu12==12.6.77 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (12.6.77)
Requirement already satisfied: nvidia-cuda-cupti-cu12==12.6.80 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (12.6.80)
Requirement already satisfied: nvidia-cudnn-cu12==9.5.1.17 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (9.5.1.17)
Requirement already satisfied: nvidia-cublas-cu12==12.6.4.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (12.6.4.1)
Requirement already satisfied: nvidia-cufft-cu12==11.3.0.4 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (11.3.0.4)
Requirement already satisfied: nvidia-curand-cu12==10.3.7.77 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (10.3.7.77)
Requirement already satisfied: nvidia-cusolver-cu12==11.7.1.2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (11.7.1.2)
Requirement already satisfied: nvidia-cusparse-cu12==12.5.4.2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (12.5.4.2)
Requirement already satisfied: nvidia-cusparselt-cu12==0.6.3 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (0.6.3)
Requirement already satisfied: nvidia-nccl-cu12==2.26.2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (2.26.2)
Requirement already satisfied: nvidia-nvtx-cu12==12.6.77 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (12.6.77)
Requirement already satisfied: nvidia-nvjitlink-cu12==12.6.85 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (12.6.85)
Requirement already satisfied: nvidia-cufile-cu12==1.11.1.6 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (1.11.1.6)
Requirement already satisfied: triton==3.3.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch->arrayloaders->modlyn[dev]) (3.3.1)
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.2)
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.59.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.8)
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.3)
Requirement already satisfied: ipykernel in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbproject_test->modlyn[dev]) (6.30.0)
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.2)
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.15)
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.4.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.51)
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.13)
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.4)
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.32.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.12)
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.8.3->lamindb_setup[aws]==1.8.3->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.1.1)
Requirement already satisfied: coverage>=7.5 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from coverage[toml]>=7.5->pytest-cov->modlyn[dev]) (7.10.0)
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.2)
Requirement already satisfied: joblib in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from scanpy->modlyn[dev]) (1.5.1)
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.61.2)
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)
Requirement already satisfied: statsmodels>=0.14.4 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.45,>=0.44.0dev0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from numba>=0.57.1->scanpy->modlyn[dev]) (0.44.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.0)
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)
→ 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('MDTqYTJs1jY90000'), started new Run('vFw5AFwj...') at 2025-07-24 23:24:04 UTC
→ notebook imports: lamindb==1.9.1 modlyn==0.0.7 pandas==2.3.1 scanpy==1.11.3 seaborn==0.13.2
• recommendation: to identify the notebook across renames, pass the uid: ln.track("MDTqYTJs1jY9")
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:425: 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%| | 0/7 [00:00<?, ?it/s]
Epoch 0: 0%| | 0/7 [00:00<?, ?it/s]
Epoch 0: 14%|█▍ | 1/7 [00:00<00:00, 26.92it/s]
Epoch 0: 14%|█▍ | 1/7 [00:00<00:00, 26.04it/s, v_num=0]
Epoch 0: 29%|██▊ | 2/7 [00:00<00:00, 40.24it/s, v_num=0]
Epoch 0: 29%|██▊ | 2/7 [00:00<00:00, 39.51it/s, v_num=0]
Epoch 0: 43%|████▎ | 3/7 [00:00<00:00, 49.76it/s, v_num=0]
Epoch 0: 43%|████▎ | 3/7 [00:00<00:00, 48.79it/s, v_num=0]
Epoch 0: 57%|█████▋ | 4/7 [00:00<00:00, 56.30it/s, v_num=0]
Epoch 0: 57%|█████▋ | 4/7 [00:00<00:00, 55.61it/s, v_num=0]
Epoch 0: 71%|███████▏ | 5/7 [00:00<00:00, 63.04it/s, v_num=0]
Epoch 0: 71%|███████▏ | 5/7 [00:00<00:00, 62.33it/s, v_num=0]
Epoch 0: 86%|████████▌ | 6/7 [00:00<00:00, 68.64it/s, v_num=0]
Epoch 0: 86%|████████▌ | 6/7 [00:00<00:00, 67.96it/s, v_num=0]
Epoch 0: 100%|██████████| 7/7 [00:00<00:00, 73.17it/s, v_num=0]
Epoch 0: 100%|██████████| 7/7 [00:00<00:00, 72.30it/s, v_num=0]
Validation: | | 0/? [00:00<?, ?it/s]
Validation: 0%| | 0/20 [00:00<?, ?it/s]
Validation DataLoader 0: 0%| | 0/20 [00:00<?, ?it/s]
Validation DataLoader 0: 5%|▌ | 1/20 [00:00<00:00, 92.97it/s]
Validation DataLoader 0: 10%|█ | 2/20 [00:00<00:00, 110.95it/s]
Validation DataLoader 0: 15%|█▌ | 3/20 [00:00<00:00, 121.42it/s]
Validation DataLoader 0: 20%|██ | 4/20 [00:00<00:00, 124.45it/s]
Validation DataLoader 0: 25%|██▌ | 5/20 [00:00<00:00, 128.42it/s]
Validation DataLoader 0: 30%|███ | 6/20 [00:00<00:00, 130.55it/s]
Validation DataLoader 0: 35%|███▌ | 7/20 [00:00<00:00, 131.58it/s]
Validation DataLoader 0: 40%|████ | 8/20 [00:00<00:00, 132.26it/s]
Validation DataLoader 0: 45%|████▌ | 9/20 [00:00<00:00, 132.86it/s]
Validation DataLoader 0: 50%|█████ | 10/20 [00:00<00:00, 134.64it/s]
Validation DataLoader 0: 55%|█████▌ | 11/20 [00:00<00:00, 135.68it/s]
Validation DataLoader 0: 60%|██████ | 12/20 [00:00<00:00, 136.65it/s]
Validation DataLoader 0: 65%|██████▌ | 13/20 [00:00<00:00, 137.16it/s]
Validation DataLoader 0: 70%|███████ | 14/20 [00:00<00:00, 137.56it/s]
Validation DataLoader 0: 75%|███████▌ | 15/20 [00:00<00:00, 137.11it/s]
Validation DataLoader 0: 80%|████████ | 16/20 [00:00<00:00, 137.59it/s]
Validation DataLoader 0: 85%|████████▌ | 17/20 [00:00<00:00, 138.06it/s]
Validation DataLoader 0: 90%|█████████ | 18/20 [00:00<00:00, 138.47it/s]
Validation DataLoader 0: 95%|█████████▌| 19/20 [00:00<00:00, 138.54it/s]
Validation DataLoader 0: 100%|██████████| 20/20 [00:00<00:00, 139.05it/s]
Epoch 0: 100%|██████████| 7/7 [00:00<00:00, 27.14it/s, v_num=0]
Epoch 0: 100%|██████████| 7/7 [00:00<00:00, 26.95it/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.09it/s, v_num=0]
Epoch 1: 14%|█▍ | 1/7 [00:00<00:00, 8.80it/s, v_num=0]
Epoch 1: 29%|██▊ | 2/7 [00:00<00:00, 15.81it/s, v_num=0]
Epoch 1: 29%|██▊ | 2/7 [00:00<00:00, 15.69it/s, v_num=0]
Epoch 1: 43%|████▎ | 3/7 [00:00<00:00, 22.26it/s, v_num=0]
Epoch 1: 43%|████▎ | 3/7 [00:00<00:00, 22.11it/s, v_num=0]
Epoch 1: 57%|█████▋ | 4/7 [00:00<00:00, 27.51it/s, v_num=0]
Epoch 1: 57%|█████▋ | 4/7 [00:00<00:00, 27.29it/s, v_num=0]
Epoch 1: 71%|███████▏ | 5/7 [00:00<00:00, 32.52it/s, v_num=0]
Epoch 1: 71%|███████▏ | 5/7 [00:00<00:00, 32.33it/s, v_num=0]
Epoch 1: 86%|████████▌ | 6/7 [00:00<00:00, 37.08it/s, v_num=0]
Epoch 1: 86%|████████▌ | 6/7 [00:00<00:00, 36.89it/s, v_num=0]
Epoch 1: 100%|██████████| 7/7 [00:00<00:00, 40.77it/s, v_num=0]
Epoch 1: 100%|██████████| 7/7 [00:00<00:00, 40.57it/s, v_num=0]
Validation: | | 0/? [00:00<?, ?it/s]
Validation: 0%| | 0/20 [00:00<?, ?it/s]
Validation DataLoader 0: 0%| | 0/20 [00:00<?, ?it/s]
Validation DataLoader 0: 5%|▌ | 1/20 [00:00<00:00, 96.49it/s]
Validation DataLoader 0: 10%|█ | 2/20 [00:00<00:00, 115.60it/s]
Validation DataLoader 0: 15%|█▌ | 3/20 [00:00<00:00, 123.27it/s]
Validation DataLoader 0: 20%|██ | 4/20 [00:00<00:00, 128.21it/s]
Validation DataLoader 0: 25%|██▌ | 5/20 [00:00<00:00, 131.16it/s]
Validation DataLoader 0: 30%|███ | 6/20 [00:00<00:00, 132.82it/s]
Validation DataLoader 0: 35%|███▌ | 7/20 [00:00<00:00, 134.27it/s]
Validation DataLoader 0: 40%|████ | 8/20 [00:00<00:00, 135.57it/s]
Validation DataLoader 0: 45%|████▌ | 9/20 [00:00<00:00, 136.19it/s]
Validation DataLoader 0: 50%|█████ | 10/20 [00:00<00:00, 136.74it/s]
Validation DataLoader 0: 55%|█████▌ | 11/20 [00:00<00:00, 137.63it/s]
Validation DataLoader 0: 60%|██████ | 12/20 [00:00<00:00, 138.19it/s]
Validation DataLoader 0: 65%|██████▌ | 13/20 [00:00<00:00, 138.65it/s]
Validation DataLoader 0: 70%|███████ | 14/20 [00:00<00:00, 139.05it/s]
Validation DataLoader 0: 75%|███████▌ | 15/20 [00:00<00:00, 139.39it/s]
Validation DataLoader 0: 80%|████████ | 16/20 [00:00<00:00, 139.36it/s]
Validation DataLoader 0: 85%|████████▌ | 17/20 [00:00<00:00, 139.23it/s]
Validation DataLoader 0: 90%|█████████ | 18/20 [00:00<00:00, 138.52it/s]
Validation DataLoader 0: 95%|█████████▌| 19/20 [00:00<00:00, 138.50it/s]
Validation DataLoader 0: 100%|██████████| 20/20 [00:00<00:00, 138.36it/s]
Epoch 1: 100%|██████████| 7/7 [00:00<00:00, 21.07it/s, v_num=0]
Epoch 1: 100%|██████████| 7/7 [00:00<00:00, 20.91it/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, 9.08it/s, v_num=0]
Epoch 2: 14%|█▍ | 1/7 [00:00<00:00, 8.85it/s, v_num=0]
Epoch 2: 29%|██▊ | 2/7 [00:00<00:00, 16.01it/s, v_num=0]
Epoch 2: 29%|██▊ | 2/7 [00:00<00:00, 15.89it/s, v_num=0]
Epoch 2: 43%|████▎ | 3/7 [00:00<00:00, 21.98it/s, v_num=0]
Epoch 2: 43%|████▎ | 3/7 [00:00<00:00, 21.79it/s, v_num=0]
Epoch 2: 57%|█████▋ | 4/7 [00:00<00:00, 27.18it/s, v_num=0]
Epoch 2: 57%|█████▋ | 4/7 [00:00<00:00, 27.01it/s, v_num=0]
Epoch 2: 71%|███████▏ | 5/7 [00:00<00:00, 32.14it/s, v_num=0]
Epoch 2: 71%|███████▏ | 5/7 [00:00<00:00, 31.89it/s, v_num=0]
Epoch 2: 86%|████████▌ | 6/7 [00:00<00:00, 36.54it/s, v_num=0]
Epoch 2: 86%|████████▌ | 6/7 [00:00<00:00, 36.26it/s, v_num=0]
Epoch 2: 100%|██████████| 7/7 [00:00<00:00, 40.53it/s, v_num=0]
Epoch 2: 100%|██████████| 7/7 [00:00<00:00, 40.35it/s, v_num=0]
Validation: | | 0/? [00:00<?, ?it/s]
Validation: 0%| | 0/20 [00:00<?, ?it/s]
Validation DataLoader 0: 0%| | 0/20 [00:00<?, ?it/s]
Validation DataLoader 0: 5%|▌ | 1/20 [00:00<00:00, 96.85it/s]
Validation DataLoader 0: 10%|█ | 2/20 [00:00<00:00, 117.23it/s]
Validation DataLoader 0: 15%|█▌ | 3/20 [00:00<00:00, 124.47it/s]
Validation DataLoader 0: 20%|██ | 4/20 [00:00<00:00, 129.02it/s]
Validation DataLoader 0: 25%|██▌ | 5/20 [00:00<00:00, 131.11it/s]
Validation DataLoader 0: 30%|███ | 6/20 [00:00<00:00, 133.77it/s]
Validation DataLoader 0: 35%|███▌ | 7/20 [00:00<00:00, 135.40it/s]
Validation DataLoader 0: 40%|████ | 8/20 [00:00<00:00, 135.04it/s]
Validation DataLoader 0: 45%|████▌ | 9/20 [00:00<00:00, 135.75it/s]
Validation DataLoader 0: 50%|█████ | 10/20 [00:00<00:00, 136.43it/s]
Validation DataLoader 0: 55%|█████▌ | 11/20 [00:00<00:00, 136.65it/s]
Validation DataLoader 0: 60%|██████ | 12/20 [00:00<00:00, 137.43it/s]
Validation DataLoader 0: 65%|██████▌ | 13/20 [00:00<00:00, 137.89it/s]
Validation DataLoader 0: 70%|███████ | 14/20 [00:00<00:00, 138.12it/s]
Validation DataLoader 0: 75%|███████▌ | 15/20 [00:00<00:00, 138.35it/s]
Validation DataLoader 0: 80%|████████ | 16/20 [00:00<00:00, 138.84it/s]
Validation DataLoader 0: 85%|████████▌ | 17/20 [00:00<00:00, 138.93it/s]
Validation DataLoader 0: 90%|█████████ | 18/20 [00:00<00:00, 139.32it/s]
Validation DataLoader 0: 95%|█████████▌| 19/20 [00:00<00:00, 139.63it/s]
Validation DataLoader 0: 100%|██████████| 20/20 [00:00<00:00, 139.65it/s]
Epoch 2: 100%|██████████| 7/7 [00:00<00:00, 21.13it/s, v_num=0]
Epoch 2: 100%|██████████| 7/7 [00:00<00:00, 20.96it/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, 9.01it/s, v_num=0]
Epoch 3: 14%|█▍ | 1/7 [00:00<00:00, 8.76it/s, v_num=0]
Epoch 3: 29%|██▊ | 2/7 [00:00<00:00, 15.83it/s, v_num=0]
Epoch 3: 29%|██▊ | 2/7 [00:00<00:00, 15.72it/s, v_num=0]
Epoch 3: 43%|████▎ | 3/7 [00:00<00:00, 22.19it/s, v_num=0]
Epoch 3: 43%|████▎ | 3/7 [00:00<00:00, 22.04it/s, v_num=0]
Epoch 3: 57%|█████▋ | 4/7 [00:00<00:00, 27.08it/s, v_num=0]
Epoch 3: 57%|█████▋ | 4/7 [00:00<00:00, 26.92it/s, v_num=0]
Epoch 3: 71%|███████▏ | 5/7 [00:00<00:00, 32.06it/s, v_num=0]
Epoch 3: 71%|███████▏ | 5/7 [00:00<00:00, 31.82it/s, v_num=0]
Epoch 3: 86%|████████▌ | 6/7 [00:00<00:00, 36.51it/s, v_num=0]
Epoch 3: 86%|████████▌ | 6/7 [00:00<00:00, 36.33it/s, v_num=0]
Epoch 3: 100%|██████████| 7/7 [00:00<00:00, 40.54it/s, v_num=0]
Epoch 3: 100%|██████████| 7/7 [00:00<00:00, 40.26it/s, v_num=0]
Validation: | | 0/? [00:00<?, ?it/s]
Validation: 0%| | 0/20 [00:00<?, ?it/s]
Validation DataLoader 0: 0%| | 0/20 [00:00<?, ?it/s]
Validation DataLoader 0: 5%|▌ | 1/20 [00:00<00:00, 99.36it/s]
Validation DataLoader 0: 10%|█ | 2/20 [00:00<00:00, 118.18it/s]
Validation DataLoader 0: 15%|█▌ | 3/20 [00:00<00:00, 125.58it/s]
Validation DataLoader 0: 20%|██ | 4/20 [00:00<00:00, 129.41it/s]
Validation DataLoader 0: 25%|██▌ | 5/20 [00:00<00:00, 132.08it/s]
Validation DataLoader 0: 30%|███ | 6/20 [00:00<00:00, 135.36it/s]
Validation DataLoader 0: 35%|███▌ | 7/20 [00:00<00:00, 135.73it/s]
Validation DataLoader 0: 40%|████ | 8/20 [00:00<00:00, 135.82it/s]
Validation DataLoader 0: 45%|████▌ | 9/20 [00:00<00:00, 135.90it/s]
Validation DataLoader 0: 50%|█████ | 10/20 [00:00<00:00, 135.79it/s]
Validation DataLoader 0: 55%|█████▌ | 11/20 [00:00<00:00, 135.43it/s]
Validation DataLoader 0: 60%|██████ | 12/20 [00:00<00:00, 136.69it/s]
Validation DataLoader 0: 65%|██████▌ | 13/20 [00:00<00:00, 137.33it/s]
Validation DataLoader 0: 70%|███████ | 14/20 [00:00<00:00, 137.48it/s]
Validation DataLoader 0: 75%|███████▌ | 15/20 [00:00<00:00, 136.94it/s]
Validation DataLoader 0: 80%|████████ | 16/20 [00:00<00:00, 137.39it/s]
Validation DataLoader 0: 85%|████████▌ | 17/20 [00:00<00:00, 137.77it/s]
Validation DataLoader 0: 90%|█████████ | 18/20 [00:00<00:00, 137.26it/s]
Validation DataLoader 0: 95%|█████████▌| 19/20 [00:00<00:00, 137.55it/s]
Validation DataLoader 0: 100%|██████████| 20/20 [00:00<00:00, 137.60it/s]
Epoch 3: 100%|██████████| 7/7 [00:00<00:00, 21.00it/s, v_num=0]
Epoch 3: 100%|██████████| 7/7 [00:00<00:00, 20.90it/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, 8.47it/s, v_num=0]
Epoch 4: 14%|█▍ | 1/7 [00:00<00:00, 8.25it/s, v_num=0]
Epoch 4: 29%|██▊ | 2/7 [00:00<00:00, 15.36it/s, v_num=0]
Epoch 4: 29%|██▊ | 2/7 [00:00<00:00, 15.26it/s, v_num=0]
Epoch 4: 43%|████▎ | 3/7 [00:00<00:00, 21.67it/s, v_num=0]
Epoch 4: 43%|████▎ | 3/7 [00:00<00:00, 21.53it/s, v_num=0]
Epoch 4: 57%|█████▋ | 4/7 [00:00<00:00, 27.21it/s, v_num=0]
Epoch 4: 57%|█████▋ | 4/7 [00:00<00:00, 27.04it/s, v_num=0]
Epoch 4: 71%|███████▏ | 5/7 [00:00<00:00, 31.97it/s, v_num=0]
Epoch 4: 71%|███████▏ | 5/7 [00:00<00:00, 31.73it/s, v_num=0]
Epoch 4: 86%|████████▌ | 6/7 [00:00<00:00, 36.49it/s, v_num=0]
Epoch 4: 86%|████████▌ | 6/7 [00:00<00:00, 36.29it/s, v_num=0]
Epoch 4: 100%|██████████| 7/7 [00:00<00:00, 40.57it/s, v_num=0]
Epoch 4: 100%|██████████| 7/7 [00:00<00:00, 40.37it/s, v_num=0]
Validation: | | 0/? [00:00<?, ?it/s]
Validation: 0%| | 0/20 [00:00<?, ?it/s]
Validation DataLoader 0: 0%| | 0/20 [00:00<?, ?it/s]
Validation DataLoader 0: 5%|▌ | 1/20 [00:00<00:00, 100.05it/s]
Validation DataLoader 0: 10%|█ | 2/20 [00:00<00:00, 118.95it/s]
Validation DataLoader 0: 15%|█▌ | 3/20 [00:00<00:00, 125.09it/s]
Validation DataLoader 0: 20%|██ | 4/20 [00:00<00:00, 129.26it/s]
Validation DataLoader 0: 25%|██▌ | 5/20 [00:00<00:00, 129.37it/s]
Validation DataLoader 0: 30%|███ | 6/20 [00:00<00:00, 132.55it/s]
Validation DataLoader 0: 35%|███▌ | 7/20 [00:00<00:00, 134.19it/s]
Validation DataLoader 0: 40%|████ | 8/20 [00:00<00:00, 135.08it/s]
Validation DataLoader 0: 45%|████▌ | 9/20 [00:00<00:00, 135.76it/s]
Validation DataLoader 0: 50%|█████ | 10/20 [00:00<00:00, 135.35it/s]
Validation DataLoader 0: 55%|█████▌ | 11/20 [00:00<00:00, 136.36it/s]
Validation DataLoader 0: 60%|██████ | 12/20 [00:00<00:00, 136.75it/s]
Validation DataLoader 0: 65%|██████▌ | 13/20 [00:00<00:00, 137.38it/s]
Validation DataLoader 0: 70%|███████ | 14/20 [00:00<00:00, 137.86it/s]
Validation DataLoader 0: 75%|███████▌ | 15/20 [00:00<00:00, 138.40it/s]
Validation DataLoader 0: 80%|████████ | 16/20 [00:00<00:00, 138.54it/s]
Validation DataLoader 0: 85%|████████▌ | 17/20 [00:00<00:00, 138.94it/s]
Validation DataLoader 0: 90%|█████████ | 18/20 [00:00<00:00, 138.90it/s]
Validation DataLoader 0: 95%|█████████▌| 19/20 [00:00<00:00, 138.56it/s]
Validation DataLoader 0: 100%|██████████| 20/20 [00:00<00:00, 138.48it/s]
Epoch 4: 100%|██████████| 7/7 [00:00<00:00, 21.13it/s, v_num=0]
Epoch 4: 100%|██████████| 7/7 [00:00<00:00, 20.99it/s, v_num=0]
`Trainer.fit` stopped: `max_epochs=5` reached.
Epoch 4: 100%|██████████| 7/7 [00:00<00:00, 20.57it/s, v_num=0]
logreg.plot_losses()
Show code cell output
Final training loss: 3.2958
Final validation loss: 4.2260
logreg.plot_classification_report(adata)
Show code cell output
Weighted F1: 0.098
/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.447591 | -0.507049 | 0.006763 | 0.006999 | 0.010271 | -0.009416 | -0.010091 | -0.010306 | -0.030679 | 0.011558 | -0.110246 | -0.358202 | 0.010882 | 0.012256 | 0.011268 | -0.012141 | -0.003787 | -0.000290 | -0.001047 | -0.010178 | -0.012151 | -0.093302 | -0.003871 | -0.542225 | 0.001605 | 0.007944 | -0.006827 | 0.670204 | 0.001351 | -0.001309 | -0.129540 | 0.008558 | 0.000871 | 0.003540 | -0.011694 | 0.002581 | -0.006754 | -0.048118 | 0.007822 | 0.006341 | -0.094675 | -0.304202 | -0.000833 | -0.044218 | 0.008019 | 0.008945 | -0.084933 | -0.715560 | 0.005110 | -0.003130 | -0.042606 | 0.011672 | -0.058019 | -0.580920 | 0.005471 | 0.005613 | -0.005364 | -0.140977 | -0.069784 | 0.315141 | -0.111172 | 0.003411 | -0.047681 | -0.006109 | 0.007615 | -0.008428 | -0.004572 | 0.004222 | -0.181965 | -0.006295 | -0.073692 | -0.011715 | -0.008854 | 0.004468 | -0.019649 | 0.004070 | 0.006523 | -0.331908 | -0.064793 | 0.000852 | -0.004705 | -0.018105 | -0.002801 | -0.002987 | -0.010636 | 0.006810 | -0.548035 | -0.000812 | 0.002260 | -0.011398 | -0.085742 | 0.011846 | 0.602983 | -0.006914 | 0.008708 | 0.002370 | -0.448010 | -0.006489 | 0.436138 | -0.057702 |
| CVCL_0028 | -0.135303 | 0.464680 | 0.009161 | 0.008638 | 0.007207 | 0.005524 | 0.014528 | 0.011969 | -0.015318 | -0.009471 | -0.010428 | -0.156470 | 0.001157 | -0.002887 | 0.007210 | -0.009072 | 0.012036 | -0.007482 | -0.006492 | 0.009505 | -0.000455 | -0.023442 | -0.004756 | -0.222331 | -0.002907 | 0.002070 | 0.005591 | -0.191313 | -0.009799 | -0.005632 | -0.015052 | -0.007165 | -0.007074 | 0.002911 | -0.006643 | 0.002143 | -0.001923 | -0.012349 | 0.005112 | -0.003586 | -0.037591 | -0.103838 | 0.005149 | -0.021498 | -0.009590 | -0.000214 | -0.018908 | 0.196209 | -0.003922 | -0.008778 | -0.002025 | 0.008995 | -0.014914 | -0.125485 | -0.007804 | -0.006375 | -0.002986 | -0.119237 | -0.027490 | -0.068447 | -0.011629 | 0.001485 | -0.008943 | 0.002529 | -0.012301 | 0.012301 | -0.011696 | 0.004088 | -0.033841 | -0.012051 | -0.001029 | 0.008091 | 0.007195 | -0.006133 | -0.024491 | -0.002799 | -0.010008 | -0.125814 | 0.005585 | -0.009289 | -0.006838 | -0.001271 | 0.002594 | -0.010749 | -0.005758 | 0.002809 | -0.126850 | 0.001616 | 0.010200 | 0.009742 | -0.176140 | -0.002469 | 0.003288 | 0.012297 | -0.002176 | 0.009064 | -0.167556 | 0.008945 | -0.022988 | -0.031413 |
| CVCL_0069 | 0.891725 | -0.309761 | 0.011756 | 0.010152 | 0.006601 | -0.002595 | 0.016574 | 0.001178 | -0.000533 | 0.004805 | -0.068199 | -0.574488 | -0.010282 | -0.005043 | 0.008847 | -0.012724 | 0.002207 | -0.009009 | -0.000716 | 0.009414 | 0.011849 | 0.709459 | 0.008539 | -0.441019 | -0.005359 | -0.012158 | 0.002362 | -0.665238 | -0.010177 | 0.007204 | -0.041102 | -0.007936 | 0.006746 | -0.012081 | 0.010398 | -0.011832 | 0.007127 | -0.012722 | 0.006842 | 0.009565 | -0.069425 | 0.509364 | 0.002476 | -0.025823 | 0.005188 | 0.004625 | -0.054844 | -0.625165 | 0.003544 | -0.005808 | -0.011506 | 0.009135 | -0.027024 | -0.546997 | -0.011184 | 0.007185 | 0.003099 | -0.111323 | -0.054659 | -0.210607 | -0.059254 | 0.011882 | -0.020806 | -0.011989 | 0.006814 | 0.010833 | -0.006303 | -0.002267 | -0.096033 | 0.000466 | -0.036122 | -0.004699 | 0.011759 | 0.007057 | -0.003603 | -0.003027 | -0.000588 | 0.080104 | -0.026819 | -0.006595 | 0.007300 | -0.015938 | 0.002952 | -0.001621 | -0.006287 | -0.003317 | -0.337782 | -0.003140 | -0.008969 | -0.011772 | -0.388060 | 0.001648 | -0.049394 | -0.006799 | 0.001946 | -0.010437 | -0.307212 | -0.006979 | -0.146174 | -0.023650 |
| CVCL_0099 | -0.197260 | -0.223284 | -0.004077 | 0.005822 | -0.001995 | 0.004346 | 0.014433 | 0.006959 | -0.025542 | 0.008777 | 0.693768 | -0.328966 | -0.008189 | 0.003476 | 0.005285 | 0.007462 | -0.008516 | -0.006870 | -0.002529 | 0.006520 | -0.009529 | -0.045869 | -0.009246 | -0.278958 | 0.011577 | -0.000376 | -0.007519 | 0.529674 | -0.002097 | -0.001201 | -0.057782 | 0.006724 | 0.004845 | -0.002945 | 0.009710 | 0.005136 | 0.009353 | -0.023981 | -0.007233 | -0.009655 | -0.031348 | 0.879918 | 0.007801 | -0.035576 | -0.003599 | -0.007168 | -0.011270 | -0.307099 | 0.002966 | 0.006771 | -0.023376 | -0.011110 | -0.019473 | -0.303852 | -0.009489 | -0.009519 | 0.005207 | -0.284320 | -0.032200 | -0.084030 | -0.024119 | -0.001438 | -0.016311 | 0.001444 | 0.003603 | 0.004092 | 0.009839 | 0.007571 | -0.048861 | 0.003607 | -0.031926 | 0.008697 | 0.008136 | 0.003282 | -0.006546 | -0.002296 | -0.002475 | -0.228994 | -0.015325 | -0.002618 | -0.006847 | -0.000703 | 0.008957 | -0.001241 | 0.007234 | 0.008915 | -0.219336 | -0.000019 | 0.000540 | 0.006592 | -0.271930 | -0.004562 | -0.035872 | -0.002145 | -0.009534 | -0.004999 | -0.217490 | -0.004045 | -0.058611 | -0.002844 |
| CVCL_0131 | -0.038800 | 0.658527 | -0.006584 | 0.002372 | -0.012273 | 0.000877 | 0.006075 | -0.006394 | -0.044975 | -0.009366 | 0.318293 | 0.850248 | -0.000688 | 0.000754 | 0.010146 | -0.018341 | -0.009737 | 0.005715 | 0.012238 | 0.006765 | 0.006976 | -0.065676 | 0.004334 | -0.409718 | 0.003165 | -0.006352 | -0.000056 | 1.330413 | 0.010072 | 0.006901 | -0.278202 | -0.007232 | -0.011513 | 0.007200 | 0.011548 | -0.001291 | -0.000346 | -0.078906 | -0.002753 | -0.053082 | -0.108753 | 0.073065 | -0.004732 | -0.039212 | -0.012299 | 0.003248 | -0.106201 | -0.143579 | -0.002597 | -0.006583 | -0.027650 | -0.012293 | -0.136627 | -0.433208 | -0.010100 | 0.002983 | 0.005510 | 0.744233 | -0.099057 | -0.342311 | -0.139928 | 0.005286 | -0.035698 | -0.011465 | 0.006961 | -0.004981 | 0.006918 | 0.008827 | -0.303742 | 0.002138 | -0.241112 | 0.007684 | 0.011384 | -0.000159 | -0.096354 | 0.004305 | -0.010929 | -0.580104 | -0.137511 | -0.004077 | -0.005620 | -0.010607 | 0.011779 | -0.005353 | 0.004270 | 0.008017 | 0.206669 | -0.012246 | -0.007198 | -0.001252 | -0.228518 | -0.007650 | -0.165663 | -0.011406 | 0.004324 | -0.003963 | -0.546293 | -0.001483 | -0.270277 | -0.036732 |
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('vFw5AFwj') after 33s at 2025-07-24 23:24:37 UTC