Giter Site home page Giter Site logo

maayanlab / appyter-catalog Goto Github PK

View Code? Open in Web Editor NEW
32.0 5.0 44.0 214.09 MB

A catalog of appyter notebooks

Home Page: https://appyters.maayanlab.cloud/

License: Other

Jupyter Notebook 60.95% Python 8.78% Makefile 0.05% Dockerfile 0.04% HTML 0.06% JavaScript 25.00% R 0.06% PLpgSQL 0.18% Shell 0.02% Svelte 1.28% Jinja 2.42% CSS 0.84% FreeMarker 0.31%

appyter-catalog's Introduction

appyter-catalog's People

Contributors

ahamedt avatar alextsigh avatar avimaayan avatar chrlsdai avatar cindyxio avatar cyoon23 avatar danieljstein avatar dependabot[bot] avatar diamantido avatar ekropiwnicki avatar erwinerdem avatar giacomomarino avatar grogalskyj avatar homjason avatar ing-s avatar jchpan avatar jeevangelista avatar lachmann12 avatar lucasrgoldman avatar maxim-k avatar meganwojciechowicz avatar mjjeon avatar mrkerwinchen avatar nahmed12 avatar nicolemoiseyev avatar serena-zhang avatar skylar73 avatar sxie04 avatar thereidfleish avatar u8sand avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

appyter-catalog's Issues

Visual glitch when going from 2 cols to 3 cols with macy

image

How to reproduce:
Make a search that results in 2 columns and then delete the search entirely.

Thoughts:
Since it resolves after a resize, I imagine we just need to detect this and trigger the same function resize triggers.

Migrate templates properly to jupyter-template==v0.2.1

jupyter-template==v0.2.1 introduces a few breaking changes, specifically being more careful about input sanitation, .value or .safe_value should no longer be called explicitly. In the case that it is, you end up with double quotes.

Validate_merge improvements

  • Execute appyter with defaults
    • Would catch things like missing requirements.txt files, obvious syntax errors, and broken examples.
  • enforce versioning on PRs

Dynamic appyter-catalog appyter injection

Currently, we construct a static docker-compose with a static ui page. One convenient modification was made when we added traefik which allows us to detect new containers and mount them without needing to stop the ingest. It would be very convenient if the same could be done with the catalog -- that-is, appyters (which have their catalog metadata in a predictable place in each of the docker images) can be automatically added/removed from the catalog when the docker container gets added or removed.

Technically all we'd have to do is detect updates to the docker containers and re-construct public/appyters.json which can be done with

docker ps -q \                   # list all docker containers
  | xargs -I'{}' \               # execute for each docker container
      docker exec -it '{}' \     # run in container
        cat /app/appyter.json \  # produce appyter metadata
      2> /dev/null \             # ignore missing file in non-appyter containers
      | jq -rcs \                # collect json into a compact list
  > static/appyters.json         # update appyters.json

fetch with {cache: 'no-cache'} will still allow us to cache public/appyters.json

Process Leak and/or docker memory limits

We were basically out of memory this morning, there were several long-lived high memory usage processes running which I ended up killing because they made updating of anything impossible. We should:

  • investigate whether or not processes can get orphaned (process leak)
  • potentially limit individual containers from using all the systems memory

Enrichr_Consensus_Terms: Add sleep() for enrichment

Ideally, addList and enrich (cell [10]) should contain sleep() for a few seconds (identical to this), as enrichment for long lists and retrieving results for big libraries take long time and it instantaneous results retrieval will fail.

Starting the catalog throws an error

Attempting to start the catalog throws the following error:

charlesdai@Charle-PC:~/Projects/appyter-catalog$ make start
( make pull || make build ) && docker-compose up -d
make[1]: Entering directory '/home/charlesdai/Projects/appyter-catalog'
docker-compose pull
make[1]: docker-compose: Command not found
Makefile:42: recipe for target 'pull' failed
make[1]: *** [pull] Error 127
make[1]: Leaving directory '/home/charlesdai/Projects/appyter-catalog'
make[1]: Entering directory '/home/charlesdai/Projects/appyter-catalog'
cd app && npm i && npm run build && cd .. && docker-compose build app && touch app/.build
npm WARN [email protected] requires a peer of [email protected] - 3 but none is installed. You must install peer dependencies yourself.
npm WARN [email protected] requires a peer of popper.js@^1.16.0 but none is installed. You must install peer dependencies yourself.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

audited 828 packages in 4.252s

25 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities


> [email protected] build /home/charlesdai/Projects/appyter-catalog/app
> parcel build --no-cache public/index.html

🚨  /home/charlesdai/Projects/appyter-catalog/app/public/appyters.json: Unexpected token: punc (;)
    at Z.get (/home/charlesdai/Projects/appyter-catalog/app/node_modules/terser/dist/bundle.min.js:1:525)
    at Object.errorToJson (/home/charlesdai/Projects/appyter-catalog/app/node_modules/@parcel/utils/src/errorUtils.js:9:20)
    at Pipeline.process (/home/charlesdai/Projects/appyter-catalog/app/node_modules/parcel-bundler/src/Pipeline.js:29:26)
    at async Object.run (/home/charlesdai/Projects/appyter-catalog/app/node_modules/parcel-bundler/src/worker.js:15:12)
    at async Bundler.loadAsset (/home/charlesdai/Projects/appyter-catalog/app/node_modules/parcel-bundler/src/Bundler.js:577:19)
    at async /home/charlesdai/Projects/appyter-catalog/app/node_modules/parcel-bundler/src/Bundler.js:610:13
    at async Promise.all (index 12)
    at async Bundler.loadAsset (/home/charlesdai/Projects/appyter-catalog/app/node_modules/parcel-bundler/src/Bundler.js:599:21)
    at async /home/charlesdai/Projects/appyter-catalog/app/node_modules/parcel-bundler/src/Bundler.js:610:13
    at async Promise.all (index 3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] build: `parcel build --no-cache public/index.html`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/charlesdai/.npm/_logs/2020-06-24T20_37_35_688Z-debug.log
Makefile:20: recipe for target 'app/.build' failed
make[1]: *** [app/.build] Error 1
make[1]: Leaving directory '/home/charlesdai/Projects/appyter-catalog'
Makefile:46: recipe for target 'start' failed
make: *** [start] Error 2

Improve resiliency with execution service

Currently, many of our notebooks use tons of RAM. As it is, our server has 15G of ram and multiple notebooks running at once can easily consume all resources. To improve the resiliency of this system, we'll likely need to trigger containers as jobs and let an orchestration system like kubernetes (perhaps even locally) execute them when there are resources available / kill jobs if they use too much memory.

The simplest way to start making this a reality is to setup an execution service where we send jobs to be executed. It is up to the execution service how exactly / when it gets dispatched.

Add counters to each appyter

Add counter for card clicks
Add counter for times the appyter was executed
Add counter for the number of downloads
Add a likes button and a counter for number of likes (that one is a maybe)

As we accumulate more and more appyters, it would be great to help user to decide which ones they should use...

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.