GithubHelp home page GithubHelp logo

Support JupyterLab about czml3 HOT 40 OPEN

poliastro avatar poliastro commented on May 27, 2024
Support JupyterLab

from czml3.

Comments (40)

dfreeman06 avatar dfreeman06 commented on May 27, 2024 3

Started work here starting from a JupyterLab extension cookiecutter: https://github.com/dfreeman06/czml3/tree/gh61_support_jupyterlab with strong assistance from @bollwyvl.

image

The webpack integrates with the cesium source directly but takes care to keep the various modules loading asynchronously so try and keep the bundles separated. Currently there is a rough wrapper around the Cesium Viewer, Clock, Camera, and CZMLDataSource. But it should not be too much effort to pull in the data sources.

This also is using the main Cesium.d.ts typings to generate the entity json schema (CZML json spec) which could be used to help address #81.

I would love to get a PR back here so it would be great to get some more eyes on it and find the right path to integrate.

from czml3.

petrushy avatar petrushy commented on May 27, 2024 2

Hi, was playing a bit with this, would like to get the old CesiumWidget up and running again.. Did a test with c137.js and cookiecutter widget, now showing the widget nothing else. https://github.com/petrushy/CesiumWidget3/tree/c137_version

I would however like to transition to the "official" cesium where all steps are reproducable, but c137.js was indeed very smooth to get running.

from czml3.

jonmmease avatar jonmmease commented on May 27, 2024 1

Hi @astrojuanlu, thanks for reaching out. Sorry to say that I can't share the code, but that said it wasn't very far along. Most of the time spent was in tinkering to try to get cesium building as an ipywidget. Sounds like a webpack-cesium would make that much easier!

In terms of the widget itself, all that I got working was a proof-of-concept where I made a Python/JavaScript model that stored a single lat/lon/altitude coordinate. Updating that coordinate from python triggered the Cesium API to move the sphere around the earth.

Had I stuck with it, I was picturing adopting the approach that bqplot uses (https://github.com/bloomberg/bqplot), where you create a matching hierarchy of nested Python and JavaScript models. But that idea is as far as I got. Hope that helps a little. Good luck!

from czml3.

jonmmease avatar jonmmease commented on May 27, 2024 1

... if @jonmmease doesn't beat us to it :)

No risk of that for the foreseeable future πŸ™‚

from czml3.

TJKoury avatar TJKoury commented on May 27, 2024 1

@astrojuanlu It will not change the need to pack it up, or mess with our implementation. The issue is not dependency management, it is trying to load external resources like workers at runtime as if they were compile time assets.

from czml3.

TJKoury avatar TJKoury commented on May 27, 2024 1

It's open source now, Apache 2.0 licensed:

Github - c137.js

from czml3.

TJKoury avatar TJKoury commented on May 27, 2024 1

@astrojuanlu Sounds good, let us know if there's anything on our end that we can do to help.

from czml3.

bollwyvl avatar bollwyvl commented on May 27, 2024 1

@dfreeman06 you're a madman 🀯 glad you got it out there, happy to help move it forward.

unless the implementation shown is entirely different than the one we looked at the other day, here are some big ticket items to consider:

  • replaces the attrs parameter system with ipywidgets and traitlets
    • it might be possible to emulate the existing API, but there would be new primitives, as described
    • more importantly, it becomes possible to get live data back from cesium (e.g. camera position, selections)
    • it might eventually be possible to integrate with other widget-based geometry systems such as pythreejs, jupyter-cadquery and ipyleaflet
      • this could be particularly interesting for large datasets, as some of the above already work over the binary buffer system that, at its core, efficiently bridges numpy arrays to the browser
  • increases complexity of the build
    • there is some dark magic in the .d.ts->schema.json as well as webpack stuff in general
    • we've been using doit to handle these inter-language dependencies
  • ties more closely to the jupyterlab/lumino stack, but this includes
  • unlike the RISE work, which has to deal with the very ill-tempered reveal.js, modern cesiumjs (~1.90) is very hygenic aside from one window-level global URL, which can be forgiven)
    • what you're seeing in that screenshot are not iframes, but rather all in-dom, which is what enables properly sharing cameras, etc.
      • there is some complexity when rendering the same viewer twice, but we'll be able to figure something out
    • confidently upgrading to a new cesium would be a matter of re-solving the js packages and re-building

from czml3.

astrojuanlu avatar astrojuanlu commented on May 27, 2024 1

This is awesome, thanks a lot @dfreeman06 and @bollwyvl! Happy to review whenever you're ready to submit a PR.

from czml3.

bollwyvl avatar bollwyvl commented on May 27, 2024 1

from czml3.

GorgiAstro avatar GorgiAstro commented on May 27, 2024

According to this post, it could be necessary to get a webpack of Cesium: jupyterlab/jupyterlab#5566

A new webpack of Cesium will come soon: DigitalArsenal/webpack-cesium#7

from czml3.

astrojuanlu avatar astrojuanlu commented on May 27, 2024

Oh wow, Jon Mease already worked on it 😳 perhaps we'll have more luck this time!

from czml3.

GorgiAstro avatar GorgiAstro commented on May 27, 2024

Yes, but I could not find where he published his ipywidget. Maybe we can ask him in a chat or by tagging him here?

from czml3.

astrojuanlu avatar astrojuanlu commented on May 27, 2024

Hi @jonmmease! We noticed your comment from a couple of years ago about making a Cesium widget. @GorgiAstro found that there will be a new version of webpack-cesium soon. Do you have any code you can share so we can pick up from there and perhaps finish the work? Or do you think we should start from scratch?

from czml3.

TJKoury avatar TJKoury commented on May 27, 2024

@jonmmease @astrojuanlu We have a new build that works great, and will be kept up to date with the latest in core Cesium.

As I am sure you are aware, the packing process is non-trivial, and in our case represents a significant investment to maintain. We are trying to keep it open for community use but have not decided on a licensing model yet.

Would any of the companies represented on this project consider sponsoring the work?

from czml3.

astrojuanlu avatar astrojuanlu commented on May 27, 2024

Thanks for chiming in @TJKoury! That's great news.

Would any of the companies represented on this project consider sponsoring the work?

poliastro and czml3 are a community effort, unfortunately the only support we can offer is integrating webpack-cesium in czml3 and try to make it work for a broader audience.

from czml3.

TJKoury avatar TJKoury commented on May 27, 2024

@astrojuanlu Understood. How do you think the community would respond to a 'non-commercial' license?

from czml3.

astrojuanlu avatar astrojuanlu commented on May 27, 2024

@TJKoury It's a good question. There are many forms of "non-commercial" licensing, for example what Qt does. If you decide use a copyleft license, we'll have to evaluate how to use it from czml3 (MIT, hence non-copyleft) without infringing the terms (and I might need a lawyer for this...). Other than that, I don't know how that can affect adoption.

from czml3.

TJKoury avatar TJKoury commented on May 27, 2024

Also, we are about to release a commercial package for the library behind Celestrak Orbit Viz.

from czml3.

TJKoury avatar TJKoury commented on May 27, 2024

After some consideration, I think we will probably just release it under MIT and ask for donations.

from czml3.

astrojuanlu avatar astrojuanlu commented on May 27, 2024

After some consideration, I think we will probably just release it under MIT and ask for donations.

That's great news :) Let me suggest https://opencollective.com/ for the donations part in case you don't know it. Looking forward for the release πŸ’ͺ

from czml3.

TJKoury avatar TJKoury commented on May 27, 2024

Here it is, C137.js.

Decided to go with CC BY 4.0 as freeware, since source-wise it is already open.

Left some crypto addresses at the bottom if people are feeling generous.

from czml3.

astrojuanlu avatar astrojuanlu commented on May 27, 2024

Awesome @TJKoury, thanks a lot! We'll soon try to figure out how to use, if @jonmmease doesn't beat us to it :)

from czml3.

TJKoury avatar TJKoury commented on May 27, 2024

It should be fairly straightforward, use an es6 import any bundler will take care of the rest. Let me know if you have any issues.

from czml3.

astrojuanlu avatar astrojuanlu commented on May 27, 2024

Seems like JupyterLab 3.0 and webpack 5.0 will change some things? See lengthy discussion at jupyterlab/jupyterlab#7468, keyword "Module Federation" https://module-federation.github.io/

from czml3.

astrojuanlu avatar astrojuanlu commented on May 27, 2024

I edited the first comment to add some extra information.

from czml3.

astrojuanlu avatar astrojuanlu commented on May 27, 2024

That's great news @petrushy ! I think it's pointless to have two widgets, so one option would be that we remove our widget.py from czml3 and we lend a hand with the maintenance of CesiumWidget3, what do you think?

from czml3.

TJKoury avatar TJKoury commented on May 27, 2024

Thanks for the vote of confidence @petrushy, and make sure to check out our soon-to-be decentralized notebook app, mapshot.app. Still in beta but you get the idea.

from czml3.

petrushy avatar petrushy commented on May 27, 2024

@astrojuanlu I am very happy to collaborate on this, the one currently in czml is working but does not fully meet the needs of a widget for other purposes. I am thinking to also add a bit of higher level easy-plotting for quick visualizations.

@TJKoury , sorry I may express myself unclear, I do not see a future using closed source, your package is very nice and the example was a quick confirmation of that, but we need unfortunately to have transparency of the full process of the items that goes into it.

from czml3.

TJKoury avatar TJKoury commented on May 27, 2024

@petrushy No problem! The source is available, it’s just the build process that is proprietary. Seems like this project does not have issues using libraries built with closed-source IDE’s or operating systems, but if this is where you draw the line I understand.

from czml3.

astrojuanlu avatar astrojuanlu commented on May 27, 2024

Thanks a lot @TJKoury !

By the way, this discussion is very relevant: jupyter/notebook#6210 basically we are in the same situation as many other extensions. Doing what czml3 does in Classic Notebook is easy, but it turns out that doing it in JupyterLab requires an entirely different set of skills. I added my two cents to that discussion, and it looks like there are some ideas to make tinkering with JupyterLab easier. But if we want this migration to happen in the short term, we will have to bite the bullet and figure out how to do it. Undoubtedly, having c137.js open sourced makes everything easier.

from czml3.

petrushy avatar petrushy commented on May 27, 2024

It's open source now, Apache 2.0 licensed:

Many Thanks!!!

from czml3.

astrojuanlu avatar astrojuanlu commented on May 27, 2024

PSA: I'm learning webpack. I might tackle this myself πŸ˜‰

from czml3.

astrojuanlu avatar astrojuanlu commented on May 27, 2024

Inspiration: damianavila/RISE#605

from czml3.

SidharajYadav avatar SidharajYadav commented on May 27, 2024

how i contribute
please guide me

from czml3.

TJKoury avatar TJKoury commented on May 27, 2024

Some of those issues are alleviated if you swap out our single-file open source distro, c137.js, for Cesium. We made it in part to deal with the issues you mentioned. You can clone the repo and use the build process with the Cesium code, if you want to customize.

from czml3.

TJKoury avatar TJKoury commented on May 27, 2024

Makes sense, let us know if you have any questions about the parts of the build process you may decide to use.

from czml3.

petrushy avatar petrushy commented on May 27, 2024

Looks great!

from czml3.

Related Issues (20)

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.