Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

initial scaffolding for the initial port (PR 1 of N) #4

Merged
merged 2 commits into from
Sep 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
__pycache__/

# Distribution / packaging
.Python
build/
dist/
*.egg-info/

# Unit test / coverage reports
.coverage
.coverage.*
.cache
coverage.xml
.pytest_cache/

# Jupyter Notebook
.ipynb_checkpoints

# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/

# mypy
.mypy_cache/
.dmypy.json
dmypy.json
26 changes: 26 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
repos:
- repo: https://github.com/psf/black
rev: "24.8.0"
hooks:
- id: black
exclude: 'apis/'

- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.6.5
hooks:
- id: ruff
name: "ruff for tiledbsoma_ml"
args: ["--config=pyproject.toml"]
exclude: 'apis/'

- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.11.2
hooks:
- id: mypy
pass_filenames: false
args: ["--config-file=pyproject.toml", "src"]
additional_dependencies:
- attrs
- numpy
- pandas-stubs>=2
exclude: 'apis/'
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@

# Change Log

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).

## [Unreleased] - yyyy-mm-dd

Port and enhance contribution from the Chan Zuckerberg Initiative Foundation
[CELLxGENE](https://cellxgene.cziscience.com/) project.

This is not a one-for-one migration of the contributed code. Substantial changes have
been made to the package utility (e.g., multi-GPU support), improve API usability, etc.

### Added

### Changed

### Fixed
76 changes: 76 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
[build-system]
requires = ["setuptools >= 61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "tiledbsoma-ml"
dynamic = ["version"]
dependencies = [
"attrs>=22.2",
"tiledbsoma>=1.9.0",
"torch>=2.0",
"torchdata<=0.9",
"numpy",
"numba",
"pandas",
"pyarrow",
"scipy"
]
requires-python = ">= 3.9"
description = "Machine learning tools for use with tiledbsoma"
readme = "README.md"
authors = [
{name = "TileDB, Inc.", email = "help@tiledb.io"},
{name = "The Chan Zuckerberg Initiative Foundation", email = "soma@chanzuckerberg.com" },
]
maintainers = [
{name = "TileDB, Inc.", email="help@tiledb.io"},
]

classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Intended Audience :: Information Technology",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: MIT License",
"Topic :: Scientific/Engineering :: Bio-Informatics",
"Operating System :: Unix",
"Operating System :: POSIX :: Linux",
"Operating System :: MacOS :: MacOS X",
"Operating System :: Microsoft :: Windows",
"Programming Language :: Python",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
]

[project.urls]
Repository = "https://github.com/TileDB-Inc/TileDB-SOMA-ML.git"
Issues = "https://github.com/TileDB-Inc/TileDB-SOMA-ML/issues"
Changelog = "https://github.com/TileDB-Inc/TileDB-SOMA-ML/blob/main/CHANGELOG.md"

[tool.setuptools.dynamic]
version = {attr = "tiledbsoma_ml.__version__"}

[tool.setuptools.package-data]
"tiledbsoma_ml" = ["py.typed"]

[tool.setuptools_scm]
root = "../../.."

[tool.mypy]
show_error_codes = true
ignore_missing_imports = true
warn_unreachable = true
strict = true
python_version = 3.9
plugins = "numpy.typing.mypy_plugin"

[tool.ruff]
lint.select = ["E", "F", "B", "I"]
lint.ignore = ["E501"] # line too long
lint.extend-select = ["I001"] # unsorted-imports
fix = true
target-version = "py39"
line-length = 120
8 changes: 8 additions & 0 deletions src/tiledbsoma_ml/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Copyright (c) 2021-2024 The Chan Zuckerberg Initiative Foundation
# Copyright (c) 2021-2024 TileDB, Inc.
#
# Licensed under the MIT License.

"""An API to support machine learning applications built on SOMA."""

__version__ = "0.1.0-dev"
2 changes: 2 additions & 0 deletions src/tiledbsoma_ml/py.typed
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Marker file to indicate that this package contains Python typing information,
# and that mypy can use it to typecheck client code.