Coder Social home page Coder Social logo

nnpdf / pineline Goto Github PK

View Code? Open in Web Editor NEW
3.0 4.0 0.0 4.62 MB

Theory pineline for fast predictions

Home Page: https://nnpdf.github.io/pineline/

License: MIT License

CSS 6.83% TypeScript 37.36% JavaScript 1.91% Python 0.03% MDX 53.87%
theory hep-ph physics

pineline's Introduction

Pineline

Pineline - high-energy theory predictions

To install the required node dependencies, run:

npm install

To launch the web server (for local development), run:

npm run dev

Connect to the website

When the server is running, to access the website is not sufficient to connect the URL it outputs, e.g. https://localhost:3000, because the page is mounted on a subdirectory (i.e. it is sufficient, but you will see a 404 page). So, you just have to access the corresponding subdirectory, browsing to something like:

https://localhost:3000/pineline

Requirements

In order to run you need Node.js, i.e. available in most (if not all) Linux distribution through the system package manager, and for MacOS with Homebrew (name of the package can range from node to 'nodejs').

About the Node package manager, the default one is npm, and it should just work. But to have a better experience, and to leverage the lock file present, it is suggested to use pnpm instead (installation instructions on the website).

pineline's People

Contributors

alecandido avatar andreab1997 avatar dependabot[bot] avatar felixhekhorn avatar roystegeman avatar scarlehoff avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

pineline's Issues

Error running eko convolute

When playing around with some of the pineko options I find the following error:

~$ pineko convolute data/grids/200/E906deut_bin_09.pineappl.lz4 data/ekos/200/E906deut_bin_09.tar test 3 3                                                                         
┌───────────────┐
│ Computing ... │
└───────────────┘
   data/grids/200/E906deut_bin_09.pineappl.lz4
 + data/ekos/200/E906deut_bin_09.tar
 = test
 with max_as=3, max_al=3, xir=1.0, xif=1.0
Traceback (most recent call last):
  File "/home/juacrumar/.cache/pypoetry/virtualenvs/pinefarm-HwI1B8mU-py3.10/bin/pineko", line 8, in <module>
    sys.exit(command())
  File "/home/juacrumar/.cache/pypoetry/virtualenvs/pinefarm-HwI1B8mU-py3.10/lib/python3.10/site-packages/click/core.py", line 1130, in __call__
    return self.main(*args, **kwargs)
  File "/home/juacrumar/.cache/pypoetry/virtualenvs/pinefarm-HwI1B8mU-py3.10/lib/python3.10/site-packages/click/core.py", line 1055, in main
    rv = self.invoke(ctx)
  File "/home/juacrumar/.cache/pypoetry/virtualenvs/pinefarm-HwI1B8mU-py3.10/lib/python3.10/site-packages/click/core.py", line 1657, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/juacrumar/.cache/pypoetry/virtualenvs/pinefarm-HwI1B8mU-py3.10/lib/python3.10/site-packages/click/core.py", line 1404, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/juacrumar/.cache/pypoetry/virtualenvs/pinefarm-HwI1B8mU-py3.10/lib/python3.10/site-packages/click/core.py", line 760, in invoke
    return __callback(*args, **kwargs)
  File "/home/juacrumar/.cache/pypoetry/virtualenvs/pinefarm-HwI1B8mU-py3.10/lib/python3.10/site-packages/pineko/cli/convolute.py", line 52, in subcommand
    _grid, _fk, comp = evolve.evolve_grid(
  File "/home/juacrumar/.cache/pypoetry/virtualenvs/pinefarm-HwI1B8mU-py3.10/lib/python3.10/site-packages/pineko/evolve.py", line 133, in evolve_grid
    alphas_values = [op["alphas"] for op in operators["Q2grid"].values()]
  File "/home/juacrumar/.cache/pypoetry/virtualenvs/pinefarm-HwI1B8mU-py3.10/lib/python3.10/site-packages/pineko/evolve.py", line 133, in <listcomp>
    alphas_values = [op["alphas"] for op in operators["Q2grid"].values()]
KeyError: 'alphas'

Am I doing something wrong (pineko theory fks work for the same set of grids and theory)? Or is there a bug somehwere?

Replace stand-alone Page with About

There is "Page" in the navbar, put there as an example of a stand-alone page.

Use that to implement an "About" page, in which the goal of the Pineline and the team working on it are clearly described.

Test pineline in Ubuntu 20.04 and Cent OS 7/8/9

For the school we are going to get a lot of people with access to only one of those systems. We need to make sure that it works and when it doesn't, have a quick workaround ready.

The docker image is fine but docker is not always available.

I know Ubuntu 20.04 is old, but turns out a lot of people is still using it.

(I'm trying my best to avoid conda!)

Also, I didn't put it in the title of the issue but I want to try to create a bottle for homebrew.


For Ubuntu 20.04

The easiest solution (the one that works out of the box) is to use the deadsnakes ppa and install from there python 3.10

add-apt-repository ppa:deadsnakes/ppa
apt update
apt install python3.10-full python3.10-dev
poetry env use python3.10

Note: it might also work with python3.10-minimal but I didn't try.

Installing python by hand also works but then you have to make sure that everything is in the right place so no longer out of the box (almost though, only lz4 was a problem). I'll try to put it nicely as a script than can be copied and pasted since it would also work in other systems.

Update favicon

That color is not used in any other place in the website.

Either use a color coming from the home page picture, or go for a theme color (i.e. either black or white, at most something grayish).

Possibly inconsistent version requirements on `numpy`

On montblanc I tried the following:

cschwan@montblanc runcards $ python3 -m venv env
cschwan@montblanc runcards $ source env/bin/activate
(env) cschwan@montblanc runcards $ pip install 'pineline[full]'
Collecting pineline[full]
  Using cached pineline-0.0.6-py3-none-any.whl (1.2 kB)
  WARNING: pineline 0.0.6 does not provide the extra 'full'
Collecting pineko<0.3.0,>=0.2.5
  Using cached pineko-0.2.5-py3-none-any.whl (18 kB)
Collecting pinefarm[full]<0.3.0,>=0.2.1
  Using cached pinefarm-0.2.1-py3-none-any.whl (53 kB)
  WARNING: pinefarm 0.2.1 does not provide the extra 'full'
Collecting pineappl<0.6.0,>=0.5.7
  Using cached pineappl-0.5.9-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (776 kB)
Collecting eko<0.11.0,>=0.10.2
  Using cached eko-0.10.2-py3-none-any.whl (260 kB)
Collecting appdirs<2.0.0,>=1.4.4
  Using cached appdirs-1.4.4-py2.py3-none-any.whl (9.6 kB)
Collecting rich<13.0.0,>=12.5.1
  Using cached rich-12.6.0-py3-none-any.whl (237 kB)
Collecting pandas<2.0.0,>=1.4.1
  Using cached pandas-1.5.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.2 MB)
Collecting PyYAML<7.0,>=6.0
  Using cached PyYAML-6.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl (701 kB)
Collecting a3b2bbc3ced97675ac3a71df45f55ba<7.0.0,>=6.4.0
  Using cached a3b2bbc3ced97675ac3a71df45f55ba-6.4.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.3 MB)
Collecting tomli<3.0.0,>=2.0.1
  Using cached tomli-2.0.1-py3-none-any.whl (12 kB)
Collecting numpy<2.0.0,>=1.21.0
  Using cached numpy-1.24.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (17.3 MB)
Collecting click<9.0.0,>=8.0.4
  Using cached click-8.1.3-py3-none-any.whl (96 kB)
Collecting more-itertools<9.0.0,>=8.10.0
  Using cached more_itertools-8.14.0-py3-none-any.whl (52 kB)
Collecting requests<3.0.0,>=2.26.0
  Using cached requests-2.28.2-py3-none-any.whl (62 kB)
Collecting yadism[box]<0.13.0,>=0.12.0
  Using cached yadism-0.12.3-py3-none-any.whl (140 kB)
  WARNING: yadism 0.12.3 does not provide the extra 'box'
Collecting sphinxcontrib-bibtex<3.0.0,>=2.4.1
  Using cached sphinxcontrib_bibtex-2.5.0-py3-none-any.whl (39 kB)
Collecting sphinx-rtd-theme<2.0.0,>=1.0.0
  Using cached sphinx_rtd_theme-1.2.0-py2.py3-none-any.whl (2.8 MB)
Collecting pygit2==1.9.2
  Using cached pygit2-1.9.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.5 MB)
Collecting pkgconfig<2.0.0,>=1.5.5
  Using cached pkgconfig-1.5.5-py3-none-any.whl (6.7 kB)
Collecting lhapdf-management<0.3,>=0.2
  Using cached lhapdf_management-0.2-py3-none-any.whl (11 kB)
Collecting Sphinx<5.0.0,>=4.2.0
  Using cached Sphinx-4.5.0-py3-none-any.whl (3.1 MB)
Collecting lz4<4.0.0,>=3.1.3
  Using cached lz4-3.1.10-cp38-cp38-manylinux2010_x86_64.whl (1.8 MB)
Collecting numba<0.56.0,>=0.55.0
  Using cached numba-0.55.2-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (3.4 MB)
Collecting scipy<2.0.0,>=1.7.3
  Using cached scipy-1.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (34.5 MB)
Collecting typing-extensions<5.0,>=4.0.0; python_version < "3.9"
  Using cached typing_extensions-4.5.0-py3-none-any.whl (27 kB)
Collecting pygments<3.0.0,>=2.6.0
  Using cached Pygments-2.14.0-py3-none-any.whl (1.1 MB)
Collecting commonmark<0.10.0,>=0.9.0
  Using cached commonmark-0.9.1-py2.py3-none-any.whl (51 kB)
Collecting pytz>=2020.1
  Using cached pytz-2022.7.1-py2.py3-none-any.whl (499 kB)
Collecting python-dateutil>=2.8.1
  Using cached python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
Collecting charset-normalizer<4,>=2
  Using cached charset_normalizer-3.0.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (195 kB)
Collecting urllib3<1.27,>=1.21.1
  Using cached urllib3-1.26.14-py2.py3-none-any.whl (140 kB)
Collecting certifi>=2017.4.17
  Using cached certifi-2022.12.7-py3-none-any.whl (155 kB)
Collecting idna<4,>=2.5
  Using cached idna-3.4-py3-none-any.whl (61 kB)
Collecting LeProHQ<0.3.0,>=0.2.3
  Using cached LeProHQ-0.2.3-py3-none-any.whl (381 kB)
Collecting pybtex-docutils>=1.0.0
  Using cached pybtex_docutils-1.0.2-py3-none-any.whl (6.3 kB)
Collecting pybtex>=0.24
  Using cached pybtex-0.24.0-py2.py3-none-any.whl (561 kB)
Collecting docutils>=0.8
  Using cached docutils-0.19-py3-none-any.whl (570 kB)
Collecting importlib-metadata>=3.6; python_version < "3.10"
  Using cached importlib_metadata-6.0.0-py3-none-any.whl (21 kB)
Collecting sphinxcontrib-jquery!=3.0.0,>=2.0.0; python_version > "3"
  Using cached sphinxcontrib_jquery-2.0.0-py3-none-any.whl (3.2 kB)
Collecting cffi>=1.9.1
  Using cached cffi-1.15.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (442 kB)
Collecting tqdm
  Using cached tqdm-4.64.1-py2.py3-none-any.whl (78 kB)
Collecting sphinxcontrib-jsmath
  Using cached sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl (5.1 kB)
Collecting sphinxcontrib-htmlhelp>=2.0.0
  Using cached sphinxcontrib_htmlhelp-2.0.1-py3-none-any.whl (99 kB)
Collecting snowballstemmer>=1.1
  Using cached snowballstemmer-2.2.0-py2.py3-none-any.whl (93 kB)
Collecting sphinxcontrib-applehelp
  Using cached sphinxcontrib_applehelp-1.0.4-py3-none-any.whl (120 kB)
Collecting Jinja2>=2.3
  Using cached Jinja2-3.1.2-py3-none-any.whl (133 kB)
Collecting babel>=1.3
  Using cached Babel-2.11.0-py3-none-any.whl (9.5 MB)
Collecting sphinxcontrib-serializinghtml>=1.1.5
  Using cached sphinxcontrib_serializinghtml-1.1.5-py2.py3-none-any.whl (94 kB)
Collecting alabaster<0.8,>=0.7
  Using cached alabaster-0.7.13-py3-none-any.whl (13 kB)
Collecting imagesize
  Using cached imagesize-1.4.1-py2.py3-none-any.whl (8.8 kB)
Collecting sphinxcontrib-qthelp
  Using cached sphinxcontrib_qthelp-1.0.3-py2.py3-none-any.whl (90 kB)
Collecting packaging
  Using cached packaging-23.0-py3-none-any.whl (42 kB)
Collecting sphinxcontrib-devhelp
  Using cached sphinxcontrib_devhelp-1.0.2-py2.py3-none-any.whl (84 kB)
Requirement already satisfied: setuptools in ./env/lib/python3.8/site-packages (from numba<0.56.0,>=0.55.0->eko<0.11.0,>=0.10.2->pineline[full]) (44.0.0)
Collecting llvmlite<0.39,>=0.38.0rc1
  Using cached llvmlite-0.38.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (34.5 MB)
Collecting six>=1.5
  Using cached six-1.16.0-py2.py3-none-any.whl (11 kB)
Collecting latexcodec>=1.0.4
  Using cached latexcodec-2.0.1-py2.py3-none-any.whl (18 kB)
Collecting zipp>=0.5
  Using cached zipp-3.13.0-py3-none-any.whl (6.7 kB)
Collecting pycparser
  Using cached pycparser-2.21-py2.py3-none-any.whl (118 kB)
Collecting MarkupSafe>=2.0
  Using cached MarkupSafe-2.1.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (25 kB)
ERROR: numba 0.55.2 has requirement numpy<1.23,>=1.18, but you'll have numpy 1.24.2 which is incompatible.
ERROR: yadism 0.12.3 has requirement eko<0.13.0,>=0.12.0, but you'll have eko 0.10.2 which is incompatible.
ERROR: sphinx 4.5.0 has requirement docutils<0.18,>=0.14, but you'll have docutils 0.19 which is incompatible.
ERROR: sphinx-rtd-theme 1.2.0 has requirement docutils<0.19, but you'll have docutils 0.19 which is incompatible.
Installing collected packages: appdirs, typing-extensions, pygments, commonmark, rich, pytz, numpy, six, python-dateutil, pandas, lz4, PyYAML, llvmlite, numba, scipy, eko, pineappl, a3b2bbc3ced97675ac3a71df45f55ba, tomli, click, pineko, more-itertools, charset-normalizer, urllib3, certifi, idna, requests, LeProHQ, yadism, latexcodec, pybtex, docutils, pybtex-docutils, sphinxcontrib-jsmath, zipp, importlib-metadata, sphinxcontrib-htmlhelp, snowballstemmer, sphinxcontrib-applehelp, MarkupSafe, Jinja2, babel, sphinxcontrib-serializinghtml, alabaster, imagesize, sphinxcontrib-qthelp, packaging, sphinxcontrib-devhelp, Sphinx, sphinxcontrib-bibtex, sphinxcontrib-jquery, sphinx-rtd-theme, pycparser, cffi, pygit2, pkgconfig, tqdm, lhapdf-management, pinefarm, pineline
Successfully installed Jinja2-3.1.2 LeProHQ-0.2.3 MarkupSafe-2.1.2 PyYAML-6.0 Sphinx-4.5.0 a3b2bbc3ced97675ac3a71df45f55ba-6.4.0 alabaster-0.7.13 appdirs-1.4.4 babel-2.11.0 certifi-2022.12.7 cffi-1.15.1 charset-normalizer-3.0.1 click-8.1.3 commonmark-0.9.1 docutils-0.19 eko-0.10.2 idna-3.4 imagesize-1.4.1 importlib-metadata-6.0.0 latexcodec-2.0.1 lhapdf-management-0.2 llvmlite-0.38.1 lz4-3.1.10 more-itertools-8.14.0 numba-0.55.2 numpy-1.24.2 packaging-23.0 pandas-1.5.3 pineappl-0.5.9 pinefarm-0.2.1 pineko-0.2.5 pineline-0.0.6 pkgconfig-1.5.5 pybtex-0.24.0 pybtex-docutils-1.0.2 pycparser-2.21 pygit2-1.9.2 pygments-2.14.0 python-dateutil-2.8.2 pytz-2022.7.1 requests-2.28.2 rich-12.6.0 scipy-1.10.0 six-1.16.0 snowballstemmer-2.2.0 sphinx-rtd-theme-1.2.0 sphinxcontrib-applehelp-1.0.4 sphinxcontrib-bibtex-2.5.0 sphinxcontrib-devhelp-1.0.2 sphinxcontrib-htmlhelp-2.0.1 sphinxcontrib-jquery-2.0.0 sphinxcontrib-jsmath-1.0.1 sphinxcontrib-qthelp-1.0.3 sphinxcontrib-serializinghtml-1.1.5 tomli-2.0.1 tqdm-4.64.1 typing-extensions-4.5.0 urllib3-1.26.14 yadism-0.12.3 zipp-3.13.0

Then I tried running pinefarm:

(env) cschwan@montblanc runcards $ pinefarm help
Traceback (most recent call last):
  File "/home/cschwan/runcards/env/bin/pinefarm", line 5, in <module>
    from pinefarm import command
  File "/home/cschwan/runcards/env/lib/python3.8/site-packages/pinefarm/__init__.py", line 5, in <module>
    from .cli import command
  File "/home/cschwan/runcards/env/lib/python3.8/site-packages/pinefarm/cli/__init__.py", line 2, in <module>
    from . import configs, info, install, list, merge, run, update
  File "/home/cschwan/runcards/env/lib/python3.8/site-packages/pinefarm/cli/info.py", line 7, in <module>
    from .. import configs, info, tools
  File "/home/cschwan/runcards/env/lib/python3.8/site-packages/pinefarm/info.py", line 6, in <module>
    from .external import integrability, interface, mg5, positivity, vrap, yad
  File "/home/cschwan/runcards/env/lib/python3.8/site-packages/pinefarm/external/__init__.py", line 2, in <module>
    from . import mg5, vrap, yad
  File "/home/cschwan/runcards/env/lib/python3.8/site-packages/pinefarm/external/mg5/__init__.py", line 11, in <module>
    from ... import configs, install, log, tools
  File "/home/cschwan/runcards/env/lib/python3.8/site-packages/pinefarm/install.py", line 16, in <module>
    from .external import vrap, mg5
  File "/home/cschwan/runcards/env/lib/python3.8/site-packages/pinefarm/external/vrap.py", line 24, in <module>
    from ekobox import genpdf
  File "/home/cschwan/runcards/env/lib/python3.8/site-packages/ekobox/__init__.py", line 2, in <module>
    from ekomark import apply
  File "/home/cschwan/runcards/env/lib/python3.8/site-packages/ekomark/__init__.py", line 5, in <module>
    from eko import basis_rotation as br
  File "/home/cschwan/runcards/env/lib/python3.8/site-packages/eko/__init__.py", line 3, in <module>
    from . import output, runner, version
  File "/home/cschwan/runcards/env/lib/python3.8/site-packages/eko/output.py", line 17, in <module>
    from . import interpolation, version
  File "/home/cschwan/runcards/env/lib/python3.8/site-packages/eko/interpolation.py", line 12, in <module>
    import numba as nb
  File "/home/cschwan/runcards/env/lib/python3.8/site-packages/numba/__init__.py", line 42, in <module>
    from numba.np.ufunc import (vectorize, guvectorize, threading_layer,
  File "/home/cschwan/runcards/env/lib/python3.8/site-packages/numba/np/ufunc/__init__.py", line 3, in <module>
    from numba.np.ufunc.decorators import Vectorize, GUVectorize, vectorize, guvectorize
  File "/home/cschwan/runcards/env/lib/python3.8/site-packages/numba/np/ufunc/decorators.py", line 3, in <module>
    from numba.np.ufunc import _internal
SystemError: initialization of _internal failed without raising an exception

Ideas for tutorials for the NNPDF school

Let's track ideas for tutorials in this issue.

Some general points (please add any others that you might think of!)

  1. Make the pipeline easy to use. As mentioned in today's PC, users are lazy. We should embrace that.
  2. The tutorials should end with a few-replicas fit but we don't need to explain the fit. We can just prepare pre-trained fits (I'll take care of that) so that 5 minutes after creating the new data etc the students will se a PDF that looks a bit different because of what they did with the pipeline.
  3. All ekos should also already be prepared. Since potentially there will be student trying to run with very silly computers, let's sacrifice precision and use small ekos (and also small fktables of course).

(rather than having long discussions here, I'd rather treat this like a wiki, if you see something that can be improved in someone's idea just modify the comment, if it is more fundamental it can be discussed of course).

Please feel free to modify the tutorials, specially to add more information, expand some of the steps, etc.

I don't know how much time do we have of course so we might need to prioritize!

Is python3.10 required?

I understand that python 3.10 is required to have pip install pineline succeed. Correct? If yes, maybe this should be mentioned somewhere.

Dependencies updates round

We should update our deps in the pineline packages, in particular:

  • Numpy
  • Numba
  • Scipy
  • LZ4
  • Pytest
  • Pylint
  • Sphinx
  • Click
  • Rich

Add glossary

There are common technical terms that are used all over the website:

  • grids (interpolation, x, Q2, ...)
  • FK tables
  • K-factor
  • Monte Carlo generator
  • ...

A glossary might be beneficial, and we could link words with a custom component.

CI Jupyter

If we have examples, they should work.

Let's find a way to test in the CI the content of our Jupyter notebooks.

Do we need a further repo?

Hello @NNPDF/theory (I added all people involved to the team, to mention all at once).

I created a new repository to host a logo documentation (the logo is just candidate, if you have opinions let's open a dedicated discussion).

I'd like to answer the question in the title, so I will consider both the answers:

  • no: one repo more is by default worse then one repo less, in terms of maintenance and focus, and we already had fktables (now archived) and Pineko, that is the final driver for FkTables creation, so we could use that one
  • yes: the full theory pineline is more then whatever Pineko will be, since the goal of Pineko is strictly to create FkTables, but there are two other ingredients, i.e. runcards (eventually connected to Commondata) and runcardsrunner (that is currently interfacing the actual generators, and streamlining grids production)

Since Pineko will rely on computed grids, I thought that we need a further place to document (even briefly) the overall ecosystem, including things like the Snowmass diagram, and all the pointers to the repo and tools that are involved in this.

The other option would be to use nnpdf main repository and documentation. But one of the goals of the new pineline would be not to be strictly coupled to NNPDF (even though it's clear that the project is born under the aegis of the collaboration, simply can be used even outside), so maybe having dedicated docs is not a bad idea.

However, I'll start collecting material while I produce it, but if your feedback is negative we can decide to move it somewhere else :)

Switch to reusable workflows

At the moment, this repo is not using N3PDF/workflows, but a copy-paste.

This was a temporary and quick solution, since the layout of the folder is rather different, but the workflow should be updated to support also this use case.

Fancy Home

Minimal

  • improve current content too make meaningful and effective (but essentially not the structure)

Feasible

  • add some fancy background (like particles
  • maybe other fancy elements (reference to N3PDF website, authors, ...)

Ambitious

  • it should already contain all the links to components (what currently is inside the sphinx docs)
    • but as fancy buttons, possibly with logos (maybe grey-scale to make them uniform)
  • an idea is to replicate the usual diagram, but making it
    1. consistent with the appearance of the rest of the website
    2. more dynamic (also basic things like highlighting on hover)
    3. navigable through page scroll (like a fixed page, but when you scroll the title goes down/away, and then you zoom all the elements and follow the flow)
  • smooth transition to the rest of the docs

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.