Comparing Modlyn & Scanpy feature selection methods¶
!pip install 'modlyn[dev]'
!lamin init --storage test-modlyn
Show code cell output
Requirement already satisfied: modlyn[dev] in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (0.0.7)
Requirement already satisfied: anndata>=0.12.0rc1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (0.12.1)
Requirement already satisfied: scikit-learn in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (1.7.1)
Requirement already satisfied: matplotlib in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from modlyn[dev]) (3.10.5)
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.10.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.4)
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.1)
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: 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.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.6.1)
Requirement already satisfied: lamindb_setup==1.9.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup[aws]==1.9.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.9.1)
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: fsspec in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2025.3.2)
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.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (4.3.8)
Requirement already satisfied: requests in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup==1.9.1->lamindb_setup[aws]==1.9.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.32.4)
Requirement already satisfied: universal_pathlib==0.2.6 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup==1.9.1->lamindb_setup[aws]==1.9.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (0.2.6)
Requirement already satisfied: botocore<2.0.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lamindb_setup==1.9.1->lamindb_setup[aws]==1.9.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.39.11)
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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->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.9.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.24.0)
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.9.1->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.1)
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: aiohttp<4.0.0,>=3.9.2 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.9.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (3.12.15)
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.9.1->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.9.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.0.1)
Requirement already satisfied: multidict<7.0.0,>=6.0.0 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.9.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (6.6.3)
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.9.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.17.2)
Requirement already satisfied: boto3<1.39.12,>=1.39.9 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.9.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.39.11)
Requirement already satisfied: aiohappyeyeballs>=2.5.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.9.2->aiobotocore<3.0.0,>=2.5.4->aiobotocore[boto3]<3.0.0,>=2.5.4; extra == "aws"->lamindb_setup[aws]==1.9.1->lamindb[jupyter]; extra == "dev"->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<4.0.0,>=3.9.2->aiobotocore<3.0.0,>=2.5.4->aiobotocore[boto3]<3.0.0,>=2.5.4; extra == "aws"->lamindb_setup[aws]==1.9.1->lamindb[jupyter]; extra == "dev"->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<4.0.0,>=3.9.2->aiobotocore<3.0.0,>=2.5.4->aiobotocore[boto3]<3.0.0,>=2.5.4; extra == "aws"->lamindb_setup[aws]==1.9.1->lamindb[jupyter]; extra == "dev"->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<4.0.0,>=3.9.2->aiobotocore<3.0.0,>=2.5.4->aiobotocore[boto3]<3.0.0,>=2.5.4; extra == "aws"->lamindb_setup[aws]==1.9.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.7.0)
Requirement already satisfied: propcache>=0.2.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from aiohttp<4.0.0,>=3.9.2->aiobotocore<3.0.0,>=2.5.4->aiobotocore[boto3]<3.0.0,>=2.5.4; extra == "aws"->lamindb_setup[aws]==1.9.1->lamindb[jupyter]; extra == "dev"->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<4.0.0,>=3.9.2->aiobotocore<3.0.0,>=2.5.4->aiobotocore[boto3]<3.0.0,>=2.5.4; extra == "aws"->lamindb_setup[aws]==1.9.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.20.1)
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.12,>=1.39.9->aiobotocore[boto3]<3.0.0,>=2.5.4; extra == "aws"->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (4.10.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.9.1->lamindb_setup[aws]==1.9.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2025.8.3)
Requirement already satisfied: httpcore==1.* in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from httpx<0.29,>=0.26->httpx[http2]<0.29,>=0.26->gotrue<=2.12.0->lamindb_setup==1.9.1->lamindb_setup[aws]==1.9.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (1.0.9)
Requirement already satisfied: idna 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.9.1->lamindb_setup[aws]==1.9.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (3.10)
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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.9.1->lamindb_setup[aws]==1.9.1->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.1)
Requirement already satisfied: tornado>=6.2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from jupyter-client>=6.1.12->nbclient>=0.5.0->nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (6.5.2)
Requirement already satisfied: fastjsonschema>=2.15 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from nbformat>=5.7->nbconvert>=7.2.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (2.21.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.27.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: click>=7 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from rich-click>=1.7->lamin_cli==1.6.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (8.2.1)
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.1->lamindb[jupyter]; extra == "dev"->modlyn[dev]) (14.1.0)
Requirement already satisfied: markdown-it-py>=2.2.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from rich>=10.7->rich-click>=1.7->lamin_cli==1.6.1->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.1->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.9.1->lamindb_setup[aws]==1.9.1->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.15.2)
Requirement already satisfied: torch<4.0,>=2.1.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lightning->modlyn[dev]) (2.8.0)
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.1)
Requirement already satisfied: tqdm<6.0,>=4.57.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from lightning->modlyn[dev]) (4.67.1)
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<4.0,>=2.1.0->lightning->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<4.0,>=2.1.0->lightning->modlyn[dev]) (1.14.0)
Requirement already satisfied: networkx in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch<4.0,>=2.1.0->lightning->modlyn[dev]) (3.5)
Requirement already satisfied: nvidia-cuda-nvrtc-cu12==12.8.93 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch<4.0,>=2.1.0->lightning->modlyn[dev]) (12.8.93)
Requirement already satisfied: nvidia-cuda-runtime-cu12==12.8.90 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch<4.0,>=2.1.0->lightning->modlyn[dev]) (12.8.90)
Requirement already satisfied: nvidia-cuda-cupti-cu12==12.8.90 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch<4.0,>=2.1.0->lightning->modlyn[dev]) (12.8.90)
Requirement already satisfied: nvidia-cudnn-cu12==9.10.2.21 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch<4.0,>=2.1.0->lightning->modlyn[dev]) (9.10.2.21)
Requirement already satisfied: nvidia-cublas-cu12==12.8.4.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch<4.0,>=2.1.0->lightning->modlyn[dev]) (12.8.4.1)
Requirement already satisfied: nvidia-cufft-cu12==11.3.3.83 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch<4.0,>=2.1.0->lightning->modlyn[dev]) (11.3.3.83)
Requirement already satisfied: nvidia-curand-cu12==10.3.9.90 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch<4.0,>=2.1.0->lightning->modlyn[dev]) (10.3.9.90)
Requirement already satisfied: nvidia-cusolver-cu12==11.7.3.90 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch<4.0,>=2.1.0->lightning->modlyn[dev]) (11.7.3.90)
Requirement already satisfied: nvidia-cusparse-cu12==12.5.8.93 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch<4.0,>=2.1.0->lightning->modlyn[dev]) (12.5.8.93)
Requirement already satisfied: nvidia-cusparselt-cu12==0.7.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch<4.0,>=2.1.0->lightning->modlyn[dev]) (0.7.1)
Requirement already satisfied: nvidia-nccl-cu12==2.27.3 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch<4.0,>=2.1.0->lightning->modlyn[dev]) (2.27.3)
Requirement already satisfied: nvidia-nvtx-cu12==12.8.90 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch<4.0,>=2.1.0->lightning->modlyn[dev]) (12.8.90)
Requirement already satisfied: nvidia-nvjitlink-cu12==12.8.93 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch<4.0,>=2.1.0->lightning->modlyn[dev]) (12.8.93)
Requirement already satisfied: nvidia-cufile-cu12==1.13.1.3 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch<4.0,>=2.1.0->lightning->modlyn[dev]) (1.13.1.3)
Requirement already satisfied: triton==3.4.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from torch<4.0,>=2.1.0->lightning->modlyn[dev]) (3.4.0)
Requirement already satisfied: mpmath<1.4,>=1.1.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from sympy>=1.13.3->torch<4.0,>=2.1.0->lightning->modlyn[dev]) (1.3.0)
Requirement already satisfied: contourpy>=1.0.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from matplotlib->modlyn[dev]) (1.3.3)
Requirement already satisfied: cycler>=0.10 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from matplotlib->modlyn[dev]) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from matplotlib->modlyn[dev]) (4.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.1)
Requirement already satisfied: comm>=0.1.1 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from ipykernel->nbproject_test->modlyn[dev]) (0.2.3)
Requirement already satisfied: debugpy>=1.6.5 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from ipykernel->nbproject_test->modlyn[dev]) (1.8.16)
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.33.1)
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.9.1->lamindb_setup[aws]==1.9.1->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.2)
Requirement already satisfied: charset_normalizer<4,>=2 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from requests->lamindb_setup==1.9.1->lamindb_setup[aws]==1.9.1->lamindb[jupyter]; extra == "dev"->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.5 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from scanpy->modlyn[dev]) (0.14.5)
Requirement already satisfied: umap-learn>=0.5.6 in /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages (from scanpy->modlyn[dev]) (0.5.9.post2)
Requirement already satisfied: llvmlite<0.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)
[notice] A new release of pip is available: 25.1.1 -> 25.2
[notice] To update, run: pip install --upgrade pip
→ 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('55qk0w1DOg3p0000'), started new Run('n927L9ET...') at 2025-08-08 19:40:54 UTC
→ notebook imports: lamindb==1.10.1 modlyn==0.0.7 pandas==2.3.1 scanpy==1.11.4 seaborn==0.13.2
• recommendation: to identify the notebook across renames, pass the uid: ln.track("55qk0w1DOg3p")
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, 29.28it/s]
Epoch 0: 14%|█▍ | 1/7 [00:00<00:00, 28.22it/s, v_num=0]
Epoch 0: 29%|██▊ | 2/7 [00:00<00:00, 42.72it/s, v_num=0]
Epoch 0: 29%|██▊ | 2/7 [00:00<00:00, 41.62it/s, v_num=0]
Epoch 0: 43%|████▎ | 3/7 [00:00<00:00, 51.36it/s, v_num=0]
Epoch 0: 43%|████▎ | 3/7 [00:00<00:00, 50.38it/s, v_num=0]
Epoch 0: 57%|█████▋ | 4/7 [00:00<00:00, 60.29it/s, v_num=0]
Epoch 0: 57%|█████▋ | 4/7 [00:00<00:00, 59.52it/s, v_num=0]
Epoch 0: 71%|███████▏ | 5/7 [00:00<00:00, 67.48it/s, v_num=0]
Epoch 0: 71%|███████▏ | 5/7 [00:00<00:00, 66.67it/s, v_num=0]
Epoch 0: 86%|████████▌ | 6/7 [00:00<00:00, 72.49it/s, v_num=0]
Epoch 0: 86%|████████▌ | 6/7 [00:00<00:00, 71.71it/s, v_num=0]
Epoch 0: 100%|██████████| 7/7 [00:00<00:00, 76.14it/s, v_num=0]
Epoch 0: 100%|██████████| 7/7 [00:00<00:00, 75.41it/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, 91.77it/s]
Validation DataLoader 0: 10%|█ | 2/20 [00:00<00:00, 113.92it/s]
Validation DataLoader 0: 15%|█▌ | 3/20 [00:00<00:00, 121.48it/s]
Validation DataLoader 0: 20%|██ | 4/20 [00:00<00:00, 126.94it/s]
Validation DataLoader 0: 25%|██▌ | 5/20 [00:00<00:00, 129.26it/s]
Validation DataLoader 0: 30%|███ | 6/20 [00:00<00:00, 130.69it/s]
Validation DataLoader 0: 35%|███▌ | 7/20 [00:00<00:00, 131.67it/s]
Validation DataLoader 0: 40%|████ | 8/20 [00:00<00:00, 133.32it/s]
Validation DataLoader 0: 45%|████▌ | 9/20 [00:00<00:00, 133.97it/s]
Validation DataLoader 0: 50%|█████ | 10/20 [00:00<00:00, 135.12it/s]
Validation DataLoader 0: 55%|█████▌ | 11/20 [00:00<00:00, 136.12it/s]
Validation DataLoader 0: 60%|██████ | 12/20 [00:00<00:00, 136.78it/s]
Validation DataLoader 0: 65%|██████▌ | 13/20 [00:00<00:00, 137.09it/s]
Validation DataLoader 0: 70%|███████ | 14/20 [00:00<00:00, 137.15it/s]
Validation DataLoader 0: 75%|███████▌ | 15/20 [00:00<00:00, 137.25it/s]
Validation DataLoader 0: 80%|████████ | 16/20 [00:00<00:00, 137.55it/s]
Validation DataLoader 0: 85%|████████▌ | 17/20 [00:00<00:00, 138.02it/s]
Validation DataLoader 0: 90%|█████████ | 18/20 [00:00<00:00, 138.36it/s]
Validation DataLoader 0: 95%|█████████▌| 19/20 [00:00<00:00, 138.48it/s]
Validation DataLoader 0: 100%|██████████| 20/20 [00:00<00:00, 138.52it/s]
Epoch 0: 100%|██████████| 7/7 [00:00<00:00, 27.48it/s, v_num=0]
Epoch 0: 100%|██████████| 7/7 [00:00<00:00, 27.24it/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.17it/s, v_num=0]
Epoch 1: 14%|█▍ | 1/7 [00:00<00:00, 8.87it/s, v_num=0]
Epoch 1: 29%|██▊ | 2/7 [00:00<00:00, 16.18it/s, v_num=0]
Epoch 1: 29%|██▊ | 2/7 [00:00<00:00, 16.06it/s, v_num=0]
Epoch 1: 43%|████▎ | 3/7 [00:00<00:00, 22.12it/s, v_num=0]
Epoch 1: 43%|████▎ | 3/7 [00:00<00:00, 21.97it/s, v_num=0]
Epoch 1: 57%|█████▋ | 4/7 [00:00<00:00, 27.83it/s, v_num=0]
Epoch 1: 57%|█████▋ | 4/7 [00:00<00:00, 27.60it/s, v_num=0]
Epoch 1: 71%|███████▏ | 5/7 [00:00<00:00, 32.93it/s, v_num=0]
Epoch 1: 71%|███████▏ | 5/7 [00:00<00:00, 32.71it/s, v_num=0]
Epoch 1: 86%|████████▌ | 6/7 [00:00<00:00, 37.28it/s, v_num=0]
Epoch 1: 86%|████████▌ | 6/7 [00:00<00:00, 37.01it/s, v_num=0]
Epoch 1: 100%|██████████| 7/7 [00:00<00:00, 41.03it/s, v_num=0]
Epoch 1: 100%|██████████| 7/7 [00:00<00:00, 40.81it/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, 94.77it/s]
Validation DataLoader 0: 10%|█ | 2/20 [00:00<00:00, 115.23it/s]
Validation DataLoader 0: 15%|█▌ | 3/20 [00:00<00:00, 124.18it/s]
Validation DataLoader 0: 20%|██ | 4/20 [00:00<00:00, 129.09it/s]
Validation DataLoader 0: 25%|██▌ | 5/20 [00:00<00:00, 132.27it/s]
Validation DataLoader 0: 30%|███ | 6/20 [00:00<00:00, 134.21it/s]
Validation DataLoader 0: 35%|███▌ | 7/20 [00:00<00:00, 134.79it/s]
Validation DataLoader 0: 40%|████ | 8/20 [00:00<00:00, 134.96it/s]
Validation DataLoader 0: 45%|████▌ | 9/20 [00:00<00:00, 135.13it/s]
Validation DataLoader 0: 50%|█████ | 10/20 [00:00<00:00, 135.26it/s]
Validation DataLoader 0: 55%|█████▌ | 11/20 [00:00<00:00, 136.25it/s]
Validation DataLoader 0: 60%|██████ | 12/20 [00:00<00:00, 137.25it/s]
Validation DataLoader 0: 65%|██████▌ | 13/20 [00:00<00:00, 136.89it/s]
Validation DataLoader 0: 70%|███████ | 14/20 [00:00<00:00, 137.39it/s]
Validation DataLoader 0: 75%|███████▌ | 15/20 [00:00<00:00, 137.66it/s]
Validation DataLoader 0: 80%|████████ | 16/20 [00:00<00:00, 138.00it/s]
Validation DataLoader 0: 85%|████████▌ | 17/20 [00:00<00:00, 137.96it/s]
Validation DataLoader 0: 90%|█████████ | 18/20 [00:00<00:00, 138.07it/s]
Validation DataLoader 0: 95%|█████████▌| 19/20 [00:00<00:00, 138.63it/s]
Validation DataLoader 0: 100%|██████████| 20/20 [00:00<00:00, 138.96it/s]
Epoch 1: 100%|██████████| 7/7 [00:00<00:00, 21.22it/s, v_num=0]
Epoch 1: 100%|██████████| 7/7 [00:00<00:00, 21.06it/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.13it/s, v_num=0]
Epoch 2: 14%|█▍ | 1/7 [00:00<00:00, 8.84it/s, v_num=0]
Epoch 2: 29%|██▊ | 2/7 [00:00<00:00, 16.05it/s, v_num=0]
Epoch 2: 29%|██▊ | 2/7 [00:00<00:00, 15.93it/s, v_num=0]
Epoch 2: 43%|████▎ | 3/7 [00:00<00:00, 21.71it/s, v_num=0]
Epoch 2: 43%|████▎ | 3/7 [00:00<00:00, 21.51it/s, v_num=0]
Epoch 2: 57%|█████▋ | 4/7 [00:00<00:00, 26.98it/s, v_num=0]
Epoch 2: 57%|█████▋ | 4/7 [00:00<00:00, 26.82it/s, v_num=0]
Epoch 2: 71%|███████▏ | 5/7 [00:00<00:00, 31.59it/s, v_num=0]
Epoch 2: 71%|███████▏ | 5/7 [00:00<00:00, 31.43it/s, v_num=0]
Epoch 2: 86%|████████▌ | 6/7 [00:00<00:00, 35.59it/s, v_num=0]
Epoch 2: 86%|████████▌ | 6/7 [00:00<00:00, 35.41it/s, v_num=0]
Epoch 2: 100%|██████████| 7/7 [00:00<00:00, 38.95it/s, v_num=0]
Epoch 2: 100%|██████████| 7/7 [00:00<00:00, 38.77it/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, 93.02it/s]
Validation DataLoader 0: 10%|█ | 2/20 [00:00<00:00, 111.08it/s]
Validation DataLoader 0: 15%|█▌ | 3/20 [00:00<00:00, 119.64it/s]
Validation DataLoader 0: 20%|██ | 4/20 [00:00<00:00, 123.19it/s]
Validation DataLoader 0: 25%|██▌ | 5/20 [00:00<00:00, 125.66it/s]
Validation DataLoader 0: 30%|███ | 6/20 [00:00<00:00, 127.33it/s]
Validation DataLoader 0: 35%|███▌ | 7/20 [00:00<00:00, 128.65it/s]
Validation DataLoader 0: 40%|████ | 8/20 [00:00<00:00, 129.79it/s]
Validation DataLoader 0: 45%|████▌ | 9/20 [00:00<00:00, 130.69it/s]
Validation DataLoader 0: 50%|█████ | 10/20 [00:00<00:00, 131.17it/s]
Validation DataLoader 0: 55%|█████▌ | 11/20 [00:00<00:00, 131.48it/s]
Validation DataLoader 0: 60%|██████ | 12/20 [00:00<00:00, 131.88it/s]
Validation DataLoader 0: 65%|██████▌ | 13/20 [00:00<00:00, 131.95it/s]
Validation DataLoader 0: 70%|███████ | 14/20 [00:00<00:00, 132.29it/s]
Validation DataLoader 0: 75%|███████▌ | 15/20 [00:00<00:00, 132.07it/s]
Validation DataLoader 0: 80%|████████ | 16/20 [00:00<00:00, 132.65it/s]
Validation DataLoader 0: 85%|████████▌ | 17/20 [00:00<00:00, 133.10it/s]
Validation DataLoader 0: 90%|█████████ | 18/20 [00:00<00:00, 133.72it/s]
Validation DataLoader 0: 95%|█████████▌| 19/20 [00:00<00:00, 133.86it/s]
Validation DataLoader 0: 100%|██████████| 20/20 [00:00<00:00, 134.20it/s]
Epoch 2: 100%|██████████| 7/7 [00:00<00:00, 20.32it/s, v_num=0]
Epoch 2: 100%|██████████| 7/7 [00:00<00:00, 20.19it/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, 8.43it/s, v_num=0]
Epoch 3: 14%|█▍ | 1/7 [00:00<00:00, 8.21it/s, v_num=0]
Epoch 3: 29%|██▊ | 2/7 [00:00<00:00, 15.12it/s, v_num=0]
Epoch 3: 29%|██▊ | 2/7 [00:00<00:00, 15.02it/s, v_num=0]
Epoch 3: 43%|████▎ | 3/7 [00:00<00:00, 21.07it/s, v_num=0]
Epoch 3: 43%|████▎ | 3/7 [00:00<00:00, 20.95it/s, v_num=0]
Epoch 3: 57%|█████▋ | 4/7 [00:00<00:00, 25.85it/s, v_num=0]
Epoch 3: 57%|█████▋ | 4/7 [00:00<00:00, 25.71it/s, v_num=0]
Epoch 3: 71%|███████▏ | 5/7 [00:00<00:00, 30.35it/s, v_num=0]
Epoch 3: 71%|███████▏ | 5/7 [00:00<00:00, 30.20it/s, v_num=0]
Epoch 3: 86%|████████▌ | 6/7 [00:00<00:00, 34.34it/s, v_num=0]
Epoch 3: 86%|████████▌ | 6/7 [00:00<00:00, 34.16it/s, v_num=0]
Epoch 3: 100%|██████████| 7/7 [00:00<00:00, 37.90it/s, v_num=0]
Epoch 3: 100%|██████████| 7/7 [00:00<00:00, 37.71it/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.71it/s]
Validation DataLoader 0: 10%|█ | 2/20 [00:00<00:00, 118.56it/s]
Validation DataLoader 0: 15%|█▌ | 3/20 [00:00<00:00, 125.78it/s]
Validation DataLoader 0: 20%|██ | 4/20 [00:00<00:00, 130.19it/s]
Validation DataLoader 0: 25%|██▌ | 5/20 [00:00<00:00, 133.24it/s]
Validation DataLoader 0: 30%|███ | 6/20 [00:00<00:00, 135.32it/s]
Validation DataLoader 0: 35%|███▌ | 7/20 [00:00<00:00, 136.51it/s]
Validation DataLoader 0: 40%|████ | 8/20 [00:00<00:00, 136.82it/s]
Validation DataLoader 0: 45%|████▌ | 9/20 [00:00<00:00, 136.98it/s]
Validation DataLoader 0: 50%|█████ | 10/20 [00:00<00:00, 137.25it/s]
Validation DataLoader 0: 55%|█████▌ | 11/20 [00:00<00:00, 137.14it/s]
Validation DataLoader 0: 60%|██████ | 12/20 [00:00<00:00, 137.70it/s]
Validation DataLoader 0: 65%|██████▌ | 13/20 [00:00<00:00, 137.86it/s]
Validation DataLoader 0: 70%|███████ | 14/20 [00:00<00:00, 137.94it/s]
Validation DataLoader 0: 75%|███████▌ | 15/20 [00:00<00:00, 138.03it/s]
Validation DataLoader 0: 80%|████████ | 16/20 [00:00<00:00, 137.61it/s]
Validation DataLoader 0: 85%|████████▌ | 17/20 [00:00<00:00, 138.22it/s]
Validation DataLoader 0: 90%|█████████ | 18/20 [00:00<00:00, 138.18it/s]
Validation DataLoader 0: 95%|█████████▌| 19/20 [00:00<00:00, 138.30it/s]
Validation DataLoader 0: 100%|██████████| 20/20 [00:00<00:00, 138.67it/s]
Epoch 3: 100%|██████████| 7/7 [00:00<00:00, 20.24it/s, v_num=0]
Epoch 3: 100%|██████████| 7/7 [00:00<00:00, 20.14it/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.88it/s, v_num=0]
Epoch 4: 14%|█▍ | 1/7 [00:00<00:00, 8.63it/s, v_num=0]
Epoch 4: 29%|██▊ | 2/7 [00:00<00:00, 15.58it/s, v_num=0]
Epoch 4: 29%|██▊ | 2/7 [00:00<00:00, 15.48it/s, v_num=0]
Epoch 4: 43%|████▎ | 3/7 [00:00<00:00, 21.28it/s, v_num=0]
Epoch 4: 43%|████▎ | 3/7 [00:00<00:00, 21.14it/s, v_num=0]
Epoch 4: 57%|█████▋ | 4/7 [00:00<00:00, 26.02it/s, v_num=0]
Epoch 4: 57%|█████▋ | 4/7 [00:00<00:00, 25.87it/s, v_num=0]
Epoch 4: 71%|███████▏ | 5/7 [00:00<00:00, 30.54it/s, v_num=0]
Epoch 4: 71%|███████▏ | 5/7 [00:00<00:00, 30.35it/s, v_num=0]
Epoch 4: 86%|████████▌ | 6/7 [00:00<00:00, 34.50it/s, v_num=0]
Epoch 4: 86%|████████▌ | 6/7 [00:00<00:00, 34.34it/s, v_num=0]
Epoch 4: 100%|██████████| 7/7 [00:00<00:00, 38.09it/s, v_num=0]
Epoch 4: 100%|██████████| 7/7 [00:00<00:00, 37.80it/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, 98.77it/s]
Validation DataLoader 0: 10%|█ | 2/20 [00:00<00:00, 117.85it/s]
Validation DataLoader 0: 15%|█▌ | 3/20 [00:00<00:00, 125.98it/s]
Validation DataLoader 0: 20%|██ | 4/20 [00:00<00:00, 130.84it/s]
Validation DataLoader 0: 25%|██▌ | 5/20 [00:00<00:00, 133.41it/s]
Validation DataLoader 0: 30%|███ | 6/20 [00:00<00:00, 135.46it/s]
Validation DataLoader 0: 35%|███▌ | 7/20 [00:00<00:00, 136.15it/s]
Validation DataLoader 0: 40%|████ | 8/20 [00:00<00:00, 135.77it/s]
Validation DataLoader 0: 45%|████▌ | 9/20 [00:00<00:00, 137.20it/s]
Validation DataLoader 0: 50%|█████ | 10/20 [00:00<00:00, 137.88it/s]
Validation DataLoader 0: 55%|█████▌ | 11/20 [00:00<00:00, 138.64it/s]
Validation DataLoader 0: 60%|██████ | 12/20 [00:00<00:00, 139.06it/s]
Validation DataLoader 0: 65%|██████▌ | 13/20 [00:00<00:00, 139.58it/s]
Validation DataLoader 0: 70%|███████ | 14/20 [00:00<00:00, 140.04it/s]
Validation DataLoader 0: 75%|███████▌ | 15/20 [00:00<00:00, 140.47it/s]
Validation DataLoader 0: 80%|████████ | 16/20 [00:00<00:00, 140.44it/s]
Validation DataLoader 0: 85%|████████▌ | 17/20 [00:00<00:00, 140.15it/s]
Validation DataLoader 0: 90%|█████████ | 18/20 [00:00<00:00, 139.73it/s]
Validation DataLoader 0: 95%|█████████▌| 19/20 [00:00<00:00, 139.53it/s]
Validation DataLoader 0: 100%|██████████| 20/20 [00:00<00:00, 139.46it/s]
Epoch 4: 100%|██████████| 7/7 [00:00<00:00, 20.45it/s, v_num=0]
Epoch 4: 100%|██████████| 7/7 [00:00<00:00, 20.30it/s, v_num=0]
`Trainer.fit` stopped: `max_epochs=5` reached.
Epoch 4: 100%|██████████| 7/7 [00:00<00:00, 19.89it/s, v_num=0]
logreg.plot_losses()
Show code cell output
Final training loss: 3.2953
Final validation loss: 4.2238
logreg.plot_classification_report(adata)
Show code cell output
Weighted F1: 0.097
/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.453627 | -0.502124 | 0.011681 | -0.011156 | -0.000428 | -0.011572 | -0.011624 | 0.002538 | -0.034436 | -0.012284 | -0.144380 | -0.373645 | -0.000544 | -0.001643 | 0.006187 | -0.020195 | 0.005537 | 0.005944 | -0.006701 | -0.005201 | -0.009142 | -0.050585 | 0.003897 | -0.484655 | -0.006089 | 0.009232 | 0.006400 | 0.667398 | -0.006657 | 0.011793 | -0.126557 | 0.002780 | -0.001410 | 0.000207 | -0.011643 | 0.009486 | -0.007088 | -0.051778 | -0.011786 | -0.011574 | -0.091228 | -0.285022 | 0.011762 | -0.039460 | -0.011757 | -0.011103 | -0.086163 | -0.721944 | -0.004854 | 0.007019 | -0.039534 | -0.011382 | -0.059938 | -0.610395 | -0.001220 | -0.004768 | 0.011171 | -0.130513 | -0.068391 | 0.318157 | -0.135277 | -0.008863 | -0.026277 | -0.002987 | 0.004179 | -0.009505 | 0.011694 | 0.005893 | -0.184948 | 0.006944 | -0.073348 | 0.001137 | 0.000748 | -0.001643 | 0.001275 | -0.005333 | 0.005282 | -0.333182 | -0.057192 | 0.011843 | -0.001990 | -0.024727 | 0.007155 | 0.006887 | 0.007225 | 0.007221 | -0.571135 | -0.007186 | -0.005410 | -0.011872 | -0.097064 | -0.006911 | 0.602242 | -0.009134 | 0.007001 | 0.010231 | -0.422177 | -0.002167 | 0.442696 | -0.036608 |
CVCL_0028 | -0.103486 | 0.467020 | -0.001893 | 0.012262 | -0.007204 | 0.005271 | 0.017506 | -0.007233 | -0.011402 | 0.007452 | -0.002406 | -0.156218 | -0.008758 | 0.003833 | -0.010388 | 0.009991 | -0.008790 | -0.009918 | -0.010328 | 0.002676 | -0.004769 | -0.030305 | -0.011564 | -0.192224 | 0.011818 | -0.003940 | -0.008772 | -0.194055 | -0.010748 | -0.008962 | -0.022489 | 0.009393 | -0.007488 | 0.011629 | -0.007087 | -0.008689 | -0.007220 | -0.015417 | 0.002362 | -0.009804 | -0.026573 | -0.127363 | -0.007293 | -0.022104 | -0.006912 | 0.008371 | -0.002700 | 0.205036 | -0.011833 | 0.009870 | -0.010610 | 0.009265 | -0.017908 | -0.127472 | -0.008550 | 0.009871 | -0.000356 | -0.120536 | -0.018070 | -0.054115 | -0.021620 | 0.005197 | -0.005779 | 0.005812 | -0.006162 | 0.006612 | 0.002059 | 0.003534 | -0.022918 | -0.000239 | 0.003765 | 0.003216 | -0.010915 | -0.002797 | -0.012353 | 0.007046 | 0.006933 | -0.094036 | -0.010533 | -0.006179 | 0.011509 | 0.001350 | -0.012223 | 0.008688 | 0.005474 | 0.006062 | -0.122740 | 0.004154 | -0.006280 | -0.002348 | -0.093033 | -0.006055 | -0.023499 | -0.008912 | -0.002328 | -0.001407 | -0.168056 | 0.000471 | -0.031850 | -0.026672 |
CVCL_0069 | 0.888029 | -0.307714 | 0.009504 | 0.011830 | -0.009257 | 0.005957 | 0.018455 | 0.010179 | -0.003400 | 0.006365 | -0.075849 | -0.567586 | -0.009505 | -0.010008 | 0.004917 | 0.002086 | 0.009906 | -0.002591 | -0.008113 | 0.007210 | 0.002278 | 0.710423 | -0.007214 | -0.358391 | -0.000946 | 0.003583 | -0.011224 | -0.648159 | -0.002388 | 0.009462 | -0.037505 | 0.006355 | -0.012045 | -0.001819 | -0.006163 | 0.008186 | 0.012301 | -0.028284 | 0.007640 | 0.003146 | -0.071284 | 0.509553 | -0.008188 | -0.050140 | -0.009418 | 0.006601 | -0.068825 | -0.618353 | -0.010205 | -0.011288 | -0.012659 | 0.007282 | -0.045386 | -0.545033 | 0.009416 | -0.009264 | -0.008921 | -0.105353 | -0.051309 | -0.197994 | -0.062763 | 0.012279 | -0.031687 | 0.006609 | -0.004356 | -0.003983 | 0.002544 | 0.011836 | -0.080831 | -0.004545 | -0.046005 | 0.011317 | -0.001232 | -0.009210 | 0.002718 | -0.011986 | 0.012278 | 0.083107 | -0.035172 | 0.005119 | 0.008797 | -0.003806 | 0.011628 | -0.001824 | 0.001663 | 0.001734 | -0.368392 | 0.011572 | 0.012300 | -0.005595 | -0.331332 | -0.008287 | -0.055511 | -0.008308 | -0.010725 | 0.002596 | -0.310499 | 0.005797 | -0.156273 | -0.044997 |
CVCL_0099 | -0.176818 | -0.192106 | -0.011498 | 0.011774 | -0.006677 | -0.000457 | 0.014986 | -0.012291 | -0.028025 | -0.003772 | 0.698218 | -0.312775 | 0.005776 | 0.007228 | -0.006060 | 0.007412 | -0.004476 | -0.009202 | -0.010613 | 0.010342 | 0.002974 | -0.032307 | -0.009123 | -0.220937 | 0.007204 | -0.005368 | 0.008976 | 0.538447 | 0.009893 | -0.008823 | -0.052075 | -0.011651 | -0.009273 | 0.007601 | -0.006383 | 0.002038 | -0.000487 | -0.026330 | -0.001914 | -0.012012 | -0.007965 | 0.924642 | 0.008160 | -0.035094 | -0.004907 | -0.003388 | -0.011628 | -0.298742 | 0.005487 | -0.001704 | -0.001949 | 0.004285 | -0.038863 | -0.277809 | -0.006769 | -0.007072 | 0.007684 | -0.269388 | -0.027038 | -0.100221 | -0.023720 | -0.011807 | -0.003934 | -0.001549 | -0.011181 | -0.005612 | -0.010466 | 0.000008 | -0.056000 | 0.007196 | -0.000191 | 0.006163 | -0.008994 | -0.004354 | -0.014068 | 0.009238 | -0.009695 | -0.186393 | -0.011181 | -0.010317 | -0.002767 | 0.000589 | 0.009423 | -0.006533 | -0.011846 | 0.006092 | -0.231183 | 0.007170 | 0.006266 | 0.003622 | -0.265507 | 0.000632 | -0.015980 | -0.006244 | -0.009517 | 0.007210 | -0.222188 | 0.006406 | -0.081124 | -0.007820 |
CVCL_0131 | -0.046422 | 0.669492 | -0.007224 | -0.002227 | -0.006185 | 0.003822 | 0.004404 | -0.002927 | -0.021845 | -0.012057 | 0.304116 | 0.861971 | -0.007958 | -0.006847 | 0.003503 | -0.019263 | 0.007371 | -0.008983 | 0.003876 | -0.007234 | 0.006413 | -0.081075 | -0.011977 | -0.421795 | 0.006489 | 0.011787 | -0.011539 | 1.301854 | -0.003341 | 0.007732 | -0.266222 | 0.007188 | 0.007233 | -0.010686 | 0.008778 | -0.004872 | -0.002605 | -0.083975 | 0.009423 | -0.036805 | -0.122501 | 0.069179 | 0.005813 | -0.065185 | 0.005672 | -0.005482 | -0.108329 | -0.142020 | 0.004436 | 0.011924 | -0.044819 | -0.003453 | -0.140249 | -0.429918 | 0.012114 | 0.000064 | 0.008346 | 0.759492 | -0.110214 | -0.343306 | -0.133491 | -0.007213 | -0.033293 | 0.002614 | -0.009722 | 0.000232 | 0.011684 | -0.012158 | -0.296367 | 0.011846 | -0.243973 | 0.004985 | 0.004284 | 0.000117 | -0.085627 | -0.006341 | 0.002655 | -0.574587 | -0.137129 | 0.000714 | 0.005098 | -0.015184 | -0.011198 | 0.012217 | 0.007959 | 0.011791 | 0.191450 | 0.003533 | -0.004520 | -0.011901 | -0.223539 | -0.006880 | -0.186794 | 0.011722 | 0.001574 | -0.005896 | -0.561008 | -0.005685 | -0.275717 | -0.061650 |
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('n927L9ET') after 34s at 2025-08-08 19:41:28 UTC