Giter VIP home page Giter VIP logo

mountaintools's Introduction

MountainTools

A collection of tools for creating shareable and reproducible scientific workflows. It is used by SpikeForest.

MountainTools provides

  • A formal method for defining well-defined Python procedures that operate on input parameters and files and produce output files. These are known as Processors.
  • Automatic execution of Processors inside singularity containers
  • Automatic caching of results from Processor runs
  • Job management, batching, and queing mechanisms for Processor runs
  • Parallelization capabilities and automated running of processing batches on compute clusters
  • Functions for storing files, text, and objects (JSON-serializable Python dicts) in local and remote databases
  • Content-addressible storage databases (kacheries)
  • A key/value storage database (pairio)
  • Tools for working with sha1:// and sha1dir:// URIs

The Python package is installable via

pip install mountaintools

and comprises the following modules:

  • mlprocessors - utilities for MountainTools Processors, jobs, batches, parallelization, and running batches on a compute cluster
  • mountainclient - for working with sha1:// and sha1dir:// URIs, accessing the local MountainTools databases, and interacting with remote kacheries (content-addressible storage databases).
  • vdomr - for building GUIs using a mix of Python and JavaScript that may be run in notebooks, in the browser, or on the desktop. This will eventually be separated out and maintained as its own Python package.

This repository also contains JavaScript / NodeJS code for running pairio and kachery servers.

Installation

To install mountaintools the easiest approach is to use pip. Open your terminal emulator and type in the following command:

pip install mountaintools

Note: Depending on your environment you might need to substitute pip with pip3 as mountaintools works only with Python 3.

For information on using mountaintools see mountainclient, mlprocessors, and vdomr.

mountaintools's People

Contributors

magland avatar wysota avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

stjordanis

mountaintools's Issues

fix mountainclient docs

@wysota

mt.login() and mt.configRemote*() have been deprecated.

Instead use mt.configDownloadFrom()

In addition to getting/setting to pairio (formerly cairio) mountainclient now interacts with kachery servers for remote content upload/download

Also we will need to document how to set kachery upload/download tokens. For example, create a ~/.mountaintools/kachery_tokens file with the following content

spikeforest.kbucket download *******secret-token***********
spikeforest.kbucket upload ******secret-token************
http://some-ip-or-host download ******secret-token************

create unit test for kachery server

Witold, I have in mind a particular way I think this should be done. I can provide more details, but here's an outline:

  1. Make a class similar to the following one that starts and stops a local kachery server via a "with" statement: https://github.com/flatironinstitute/mountaintools/blob/master/mlprocessors/localcomputeresource.py

  2. Use the mountainclient to test read and write to that server in a test function that will be called by pytest.

Will need to worry about location of temporary directories for back-end server files, etc, that needs to get cleared out with each test. Keeping it simple.

document source code of mountainclient.py

This is partially done, but things need to be updated. Also questions will arise and revisions / renaming may need to take place.

Let's only document the methods of the MountainClient class. Also, let's move any other (helper) classes in mountainclient.py into separate files.

pip install -r requirements.txt fails without wheel installed

If I do pip install -r requirements.txt on clean venv then I get an installation error. The error can be fixed by preinstalling wheel (pip install wheel before the former command).

Virtualenv was created by python3 -m venv venvdirname on a regular ubuntu installation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.