Metadata-Version: 2.1
Name: lincbrain-cli
Version: 0.10.0
Summary: Command line client for interaction with LINC Brain archive elements
Home-page: http://lincbrain.org
Author: LINC developers
Author-email: team@lincbrain.org
Maintainer: Aaron Kanzer
Maintainer-email: akanzer@mit.edu
License: Apache 2.0
Project-URL: Source Code, https://github.com/lincbrain/linc-cli
Project-URL: Documentation, https://dandi.readthedocs.io
Platform: OS Independent
Classifier: Development Status :: 1 - Planning
Classifier: Environment :: Console
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.8
Description-Content-Type: text/markdown; charset=UTF-8
License-File: LICENSE
Requires-Dist: bidsschematools~=0.7.0
Requires-Dist: click>=7.1
Requires-Dist: click-didyoumean
Requires-Dist: dandischema==0.10.1
Requires-Dist: etelemetry>=0.2.2
Requires-Dist: fasteners
Requires-Dist: fscacher>=0.3.0
Requires-Dist: hdmf!=3.5.0
Requires-Dist: humanize
Requires-Dist: interleave~=0.1
Requires-Dist: joblib
Requires-Dist: keyring!=23.9.0
Requires-Dist: keyrings.alt
Requires-Dist: packaging
Requires-Dist: platformdirs
Requires-Dist: pycryptodomex
Requires-Dist: pydantic~=2.0
Requires-Dist: pynwb!=1.1.0,!=2.3.0,>=1.0.3
Requires-Dist: nwbinspector!=0.4.32,>=0.4.28
Requires-Dist: pyout!=0.6.0,>=0.5
Requires-Dist: python-dateutil
Requires-Dist: requests~=2.20
Requires-Dist: ruamel.yaml<1,>=0.15
Requires-Dist: semantic-version
Requires-Dist: tenacity
Requires-Dist: yarl~=1.9
Requires-Dist: zarr~=2.10
Requires-Dist: zarr_checksum~=0.4.0
Provides-Extra: extensions
Requires-Dist: allensdk; extra == "extensions"
Provides-Extra: extras
Requires-Dist: duecredit; extra == "extras"
Requires-Dist: fsspec[http]; extra == "extras"
Provides-Extra: style
Requires-Dist: flake8; extra == "style"
Requires-Dist: pre-commit; extra == "style"
Provides-Extra: test
Requires-Dist: anys~=0.2; extra == "test"
Requires-Dist: coverage; extra == "test"
Requires-Dist: opencv-python; extra == "test"
Requires-Dist: pytest; extra == "test"
Requires-Dist: pytest-cov; extra == "test"
Requires-Dist: pytest-mock; extra == "test"
Requires-Dist: pytest-rerunfailures; extra == "test"
Requires-Dist: responses!=0.24.0; extra == "test"
Requires-Dist: vcrpy; extra == "test"
Provides-Extra: tools
Requires-Dist: boto3; extra == "tools"
Provides-Extra: all
Requires-Dist: allensdk; extra == "all"
Requires-Dist: duecredit; extra == "all"
Requires-Dist: fsspec[http]; extra == "all"
Requires-Dist: flake8; extra == "all"
Requires-Dist: pre-commit; extra == "all"
Requires-Dist: anys~=0.2; extra == "all"
Requires-Dist: coverage; extra == "all"
Requires-Dist: opencv-python; extra == "all"
Requires-Dist: pytest; extra == "all"
Requires-Dist: pytest-cov; extra == "all"
Requires-Dist: pytest-mock; extra == "all"
Requires-Dist: pytest-rerunfailures; extra == "all"
Requires-Dist: responses!=0.24.0; extra == "all"
Requires-Dist: vcrpy; extra == "all"
Requires-Dist: boto3; extra == "all"

# LINC Brain Client

[![Tests](https://github.com/lincbrain/linc-cli/workflows/Tests/badge.svg)](https://github.com/lincbrain/linc-cli/actions?query=workflow%3ATests)
[![GitHub release](https://img.shields.io/github/release/lincbrain/linc-cli.svg)](https://GitHub.com/lincbrain/linc-cli/releases/)
[![PyPI version fury.io](https://badge.fury.io/py/lincbrain-cli.svg)](https://pypi.python.org/pypi/lincbrain-cli/)

The [LINC Brain Python client](https://pypi.org/project/lincbrain-cli/) allows you to:

* Download `Datasets` and individual subject folders or files
* Validate data to locally conform to standards
* Organize your data locally before upload
* Upload `Datasets`
* Interact with the LINC Data Platform's web API from Python
* Delete data in the LINC Data Platform
* Perform other auxiliary operations with data or the LINC Data Platform

**Note**: This project is under heavy development. See [the issues log](https://github.com/linc/linc-cli/issues) or
[Work-in-Progress (WiP)](https://github.com/linc/linc-cli/pulls).

## Installation

LINC Brain client releases are available from [PyPI](https://pypi.org/project/lincbrain-cli).
Install them in your Python (native, virtualenv, or conda) environment via

    pip install lincbrain-cli

## CLI Tool

This package provides a command line utility with a basic interface
to help you prepare and upload your data to, or obtain data from, the [LINC Data Platform](http://lincbrain.org).


```bash
$> lincbrain
Usage: lincbrain [OPTIONS] COMMAND [ARGS]...

  A client to support interactions with the LINC Data Platform
  (https://lincbrain.org).

  To see help for a specific command, run

      lincbrain COMMAND --help

  e.g. lincbrain upload --help

Options:
  --version
  -l, --log-level [DEBUG|INFO|WARNING|ERROR|CRITICAL]
                                  Log level (case insensitive).  May be
                                  specified as an integer.  [default: INFO]
  --pdb                           Fall into pdb if errors out
  --help                          Show this message and exit.

Commands:
  delete            Delete datasets and assets from the server.
  digest            Calculate file digests
  download          Download a file or entire folder from the LINC Data Platform.
  instances         List known LINC Data Platform instances that the CLI can...
  ls                List .nwb files and datasets metadata.
  move              Move or rename assets in a local Dataset and/or on...
  organize          (Re)organize files according to the metadata.
  shell-completion  Emit shell script for enabling command completion.
  upload            Upload dataset files to the LINC Data Platform.
  validate          Validate files for NWB and LINC Brain compliance.
  validate-bids     Validate BIDS paths.
```
Run `lincbrain --help` or `lincbrain <subcommand> --help` (e.g. `lincbrain upload --help`) to see manual pages.

## Resources

The LINC Brain ecosystem is forked from the [DANDI Archive project](https://github.com/dandi). Resources there should point
you towards common questions encountered within the LINC Brain project.

* To learn how to interact with the LINC Data Platform (e.g. a forked DANDI archive) and for examples on how to use the DANDI Client in various use cases,
see [the DANDI handbook](https://www.dandiarchive.org/handbook/)
  (specifically the sections on using the CLI to
[download](https://www.dandiarchive.org/handbook/12_download/) and
[upload](https://www.dandiarchive.org/handbook/13_upload/) `Dandisets`).

* To get help:
  - file a feature request or bug report: https://github.com/lincbrain/linc-archive/issues/new
  - contact the LINC team: kabi@mit.edu or akanzer@mit.edu

* To understand how to contribute to the linc-cli repository, see the [DEVELOPMENT.md](./DEVELOPMENT.md) file.
