From 098b67b5248e38fc87e670d89ed92b04a40fb12d Mon Sep 17 00:00:00 2001 From: Caitlin Date: Wed, 24 Jul 2024 11:02:50 -0400 Subject: [PATCH 01/11] add faq --- docs/source/index.rst | 3 ++- docs/source/user_guide/faq.rst | 43 ++++++++++++++++++++++++++++++++ docs/source/user_guide/guide.rst | 2 +- 3 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 docs/source/user_guide/faq.rst diff --git a/docs/source/index.rst b/docs/source/index.rst index 2b40cdeca..c04da0d2a 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -3,10 +3,11 @@ Welcome to fastplotlib's documentation! .. toctree:: :caption: User Guide - :maxdepth: 2 + :maxdepth: 1 Guide GPU Info + FAQ .. toctree:: :maxdepth: 1 diff --git a/docs/source/user_guide/faq.rst b/docs/source/user_guide/faq.rst new file mode 100644 index 000000000..69216138f --- /dev/null +++ b/docs/source/user_guide/faq.rst @@ -0,0 +1,43 @@ +fastplotlib FAQ +=============== + +.. dropdown:: What is `fastplotlib`? + + `fastplotlib` is a scientific plotting library built on top of the `pygfx `_ rendering engine + that leverages new graphics APIs and modern GPU hardware to create fast and interactive visualizations. + + +.. dropdown:: What can I do with `fastplotlib`? + + `fastplotlib` allows for: + - interactive visualization via an intuitive and expressive API + - rapid prototyping and algorithm design + - easy exploration and rendering of large-scale data + +.. dropdown:: How does `fastplotlib` relate to `matplotlib`? + + `fastplotlib` is **NOT** related to `matplotlib` in any way. + + These are two completely different libraries with their own APIs and use-cases. The `fastplotlib` library is primarily for *interactive* + visualization that runs on the GPU using WGPU. + +.. dropdown:: How can I learn to use `fastplotlib`? + + We want `fastplotlib` to be easy to learn and use. To get started with the library we recommend taking a look at our `guide `_ and + `examples gallery `_. + + In general, if you are familiar with numpy and array notation you will already have a intuitive understanding of interacting + with your data in `fastplotlib`. If you have any questions, please do not hesitate to post an issue or discussion forum post. + +.. dropdown:: Should I use `fastplotlib` for making publication figures? + + **NO!** `fastplotlib` is not meant for creating *static* publication figures. There are many other libraries that are well-suited + for this task. + +.. dropdown:: How does `fastplotlib` handle data loading? + + `fastplotlib` is a plotting library and **NOT** a data handling or data loading library. These tasks are outside of the scope of + the library. + + In general, if your data is an array-like object, `fastplotlib` should be able to use it. + diff --git a/docs/source/user_guide/guide.rst b/docs/source/user_guide/guide.rst index 4ee374389..df0c54c78 100644 --- a/docs/source/user_guide/guide.rst +++ b/docs/source/user_guide/guide.rst @@ -20,7 +20,7 @@ or install the bleeding edge from Github: What is ``fastplotlib``? ------------------------ -``fastplotlib`` is a cutting-edge plotting library built using the ```pygfx`` `_ rendering engine. +``fastplotlib`` is a cutting-edge plotting library built using the `pygfx `_ rendering engine. The lower-level details of the rendering process (i.e. defining a scene, camera, renderer, etc.) are abstracted away, allowing users to focus on their data. The fundamental goal of ``fastplotlib`` is to provide a high-level, expressive API that promotes large-scale explorative scientific visualization. We want to make it easy and intuitive to produce interactive visualizations that are as performant and vibrant as a modern video game 😄 From 6b2f373f7559e20c2ecbd3929fe1b6c873f484d3 Mon Sep 17 00:00:00 2001 From: Caitlin Date: Tue, 30 Jul 2024 09:09:19 -0400 Subject: [PATCH 02/11] requested changes --- docs/source/user_guide/faq.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/source/user_guide/faq.rst b/docs/source/user_guide/faq.rst index 69216138f..f41b8db82 100644 --- a/docs/source/user_guide/faq.rst +++ b/docs/source/user_guide/faq.rst @@ -12,14 +12,15 @@ fastplotlib FAQ `fastplotlib` allows for: - interactive visualization via an intuitive and expressive API - rapid prototyping and algorithm design - - easy exploration and rendering of large-scale data + - easy exploration and fast rendering of large-scale data .. dropdown:: How does `fastplotlib` relate to `matplotlib`? `fastplotlib` is **NOT** related to `matplotlib` in any way. These are two completely different libraries with their own APIs and use-cases. The `fastplotlib` library is primarily for *interactive* - visualization that runs on the GPU using WGPU. + visualization that runs on the GPU using WGPU. The `fastplotlib` architecture is completely different from `matplotlib`. Using `fastplotlib` + is more akin to using `numpy`. See the "How can I learn to use `fastplotlib`?" section below. .. dropdown:: How can I learn to use `fastplotlib`? @@ -31,12 +32,12 @@ fastplotlib FAQ .. dropdown:: Should I use `fastplotlib` for making publication figures? - **NO!** `fastplotlib` is not meant for creating *static* publication figures. There are many other libraries that are well-suited + No, `fastplotlib` is not meant for creating *static* publication figures. There are many other libraries that are well-suited for this task. .. dropdown:: How does `fastplotlib` handle data loading? - `fastplotlib` is a plotting library and **NOT** a data handling or data loading library. These tasks are outside of the scope of + `fastplotlib` is a plotting library and not a data handling or data loading library. These tasks are outside of the scope of the library. In general, if your data is an array-like object, `fastplotlib` should be able to use it. From a7bd2eb7cb5ff576013e0c6126bb4db054085644 Mon Sep 17 00:00:00 2001 From: Caitlin Date: Thu, 1 Aug 2024 14:09:20 -0400 Subject: [PATCH 03/11] more faq --- docs/source/user_guide/faq.rst | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/source/user_guide/faq.rst b/docs/source/user_guide/faq.rst index f41b8db82..0cc3e7387 100644 --- a/docs/source/user_guide/faq.rst +++ b/docs/source/user_guide/faq.rst @@ -42,3 +42,21 @@ fastplotlib FAQ In general, if your data is an array-like object, `fastplotlib` should be able to use it. +.. dropdown:: What is the scope of `fastplotlib'? + + While the capabilities are very far-reaching, we would like to emphasize that `fastplotlib` is a general-purpose plotting library focused on scientific visualization. + More specifically, we aim to develop the tools necessary for users to build fast and interactive visualizations for a variety of scientific domains (e.g. neuroscience, + astrophysics). If you have a particular feature in mind that you feel is missing, please post an issue and we will respond accordingly letting you know if it fits within + the scope of the project. + +.. dropdown:: What types of PRs are we willing to accept? + + Primarily the features of `fastplotlib` have been developed as they relate to the core-developers research use cases (mostly neuroscience). With that being said, there are many domains in which + we do not have the knowledge to best-implement the tools needed for proper visualization. We welcome all PRs that address these types of missing functionality. We + recommend taking a look at our `Roadmap `_ to get a better idea of what those items might be :D + + Closely related to this, we would love to add more examples to our repo for different types of scientific visualizations. We welcome all PRs that showcase using `fastplotlib` for + your given research domain. + + Lastly, documentation is a critical part of open-source software and makes learning/using our tool much easier. We welcome all PRs that add missing or needed documentation of the + codebase. If you find a piece of the codebase that is confusing or does not have proper documentation, please also feel free to post an issue on the repo! From 095e4f9d09496c5f3b6fea655ede6f6b8f1c1efe Mon Sep 17 00:00:00 2001 From: Caitlin Lewis <69729525+clewis7@users.noreply.github.com> Date: Thu, 8 Aug 2024 16:07:59 -0400 Subject: [PATCH 04/11] Update faq.rst --- docs/source/user_guide/faq.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/user_guide/faq.rst b/docs/source/user_guide/faq.rst index 0cc3e7387..c9d7fff9a 100644 --- a/docs/source/user_guide/faq.rst +++ b/docs/source/user_guide/faq.rst @@ -16,7 +16,7 @@ fastplotlib FAQ .. dropdown:: How does `fastplotlib` relate to `matplotlib`? - `fastplotlib` is **NOT** related to `matplotlib` in any way. + `fastplotlib` is **not** related to `matplotlib` in any way. These are two completely different libraries with their own APIs and use-cases. The `fastplotlib` library is primarily for *interactive* visualization that runs on the GPU using WGPU. The `fastplotlib` architecture is completely different from `matplotlib`. Using `fastplotlib` From c87b98c860959e7b1f0dcab6f316794d13776607 Mon Sep 17 00:00:00 2001 From: Caitlin Date: Tue, 20 Aug 2024 19:17:27 -0400 Subject: [PATCH 05/11] fix intersphinx link, fix typo --- docs/source/conf.py | 2 +- docs/source/user_guide/faq.rst | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 0df47e579..5a78fc596 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -100,7 +100,7 @@ intersphinx_mapping = { "python": ("https://docs.python.org/3", None), "numpy": ("https://numpy.org/doc/stable/", None), - "pygfx": ("https://pygfx.com/stable", None), + "pygfx": ("https://docs.pygfx.org/stable/", None), "wgpu": ("https://wgpu-py.readthedocs.io/en/latest", None), } diff --git a/docs/source/user_guide/faq.rst b/docs/source/user_guide/faq.rst index c9d7fff9a..d1f1ca0b7 100644 --- a/docs/source/user_guide/faq.rst +++ b/docs/source/user_guide/faq.rst @@ -42,7 +42,7 @@ fastplotlib FAQ In general, if your data is an array-like object, `fastplotlib` should be able to use it. -.. dropdown:: What is the scope of `fastplotlib'? +.. dropdown:: What is the scope of `fastplotlib`? While the capabilities are very far-reaching, we would like to emphasize that `fastplotlib` is a general-purpose plotting library focused on scientific visualization. More specifically, we aim to develop the tools necessary for users to build fast and interactive visualizations for a variety of scientific domains (e.g. neuroscience, From 92931c510cd6347bfe4be1e5005622490474d2e9 Mon Sep 17 00:00:00 2001 From: Caitlin Date: Sun, 25 Aug 2024 09:36:15 -0400 Subject: [PATCH 06/11] add more faq questions --- docs/source/user_guide/faq.rst | 45 +++++++++++++++++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/docs/source/user_guide/faq.rst b/docs/source/user_guide/faq.rst index d1f1ca0b7..ad91bbc77 100644 --- a/docs/source/user_guide/faq.rst +++ b/docs/source/user_guide/faq.rst @@ -14,6 +14,13 @@ fastplotlib FAQ - rapid prototyping and algorithm design - easy exploration and fast rendering of large-scale data +.. dropdown:: Do I need a GPU? + + Technically no, you can perform limited software rendering on linux using lavapipe (see drivers link below). + However, `fastplotlib` is intentionally built for realtime rendering using the latest GPU technologies, so we + strongly recommend that you use a GPU. With that being said, an integrated GPU should be sufficient for many + use-cases. + .. dropdown:: How does `fastplotlib` relate to `matplotlib`? `fastplotlib` is **not** related to `matplotlib` in any way. @@ -40,7 +47,8 @@ fastplotlib FAQ `fastplotlib` is a plotting library and not a data handling or data loading library. These tasks are outside of the scope of the library. - In general, if your data is an array-like object, `fastplotlib` should be able to use it. + In general, if your data is an array-like object, `fastplotlib` should be able to use it. However, if you have any problems using your data objects, + please do not hesitate to post an issue! .. dropdown:: What is the scope of `fastplotlib`? @@ -60,3 +68,38 @@ fastplotlib FAQ Lastly, documentation is a critical part of open-source software and makes learning/using our tool much easier. We welcome all PRs that add missing or needed documentation of the codebase. If you find a piece of the codebase that is confusing or does not have proper documentation, please also feel free to post an issue on the repo! + +.. dropdown:: What frameworks does `fastplotlib` support? + + The short answer is that `fastplotlib` can run on anything that `pygfx` runs on. This includes, + - `jupyter lab` using `jupyter_rfb` + - `PyQt` and `PySide` + - `glfw` + - `wxPython` + + Note: Use in Google Colab does not currently work because Colab does not offer support for `jupyter_rfb` + +.. dropdown:: How can I use `fastplotlib` interactively? + + There are multiple ways to use fastplotlib interactively. + + 1. Jupyter + + On jupyter lab the jupyter backend (i.e. jupyter_rfb) is normally selected. This works via client-server rendering. + Images generated on the server are streamed to the client (Jupyter) via a jpeg byte stream. Events (such as mouse or keyboard events) + are then streamed in the opposite direction prompting new images to be generated by the server if necessary. + This remote-frame-buffer approach makes the rendering process very fast. `fastplotlib` viusalizations can be displayed + in cell output or on the side using sidecar. + + A Qt backend can also optionally be used as well. If %gui qt is selected before importing `fastplotlib` then this + backend will be used instead. + + Lastly, users can also force using glfw by specifying this as an argument when instantiating a + Figure (i.e. Figure(canvas="gflw"). + + **Note:** Do not mix between gui backends. For example, if you start the notebook using Qt, do not attempt to + force using another backend such as jupyter_rfb later. + + 2. IPython + + Users can select between using a Qt backend or glfw using the same methods as above. From a7521a5802d9a3040ce1b5fbc1e4a0a67422bb49 Mon Sep 17 00:00:00 2001 From: Caitlin Date: Sun, 25 Aug 2024 09:45:22 -0400 Subject: [PATCH 07/11] small edits and remove dropdowns --- docs/source/user_guide/faq.rst | 37 +++++++++++++++++++++++----------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/docs/source/user_guide/faq.rst b/docs/source/user_guide/faq.rst index ad91bbc77..f70622e14 100644 --- a/docs/source/user_guide/faq.rst +++ b/docs/source/user_guide/faq.rst @@ -1,27 +1,33 @@ fastplotlib FAQ =============== -.. dropdown:: What is `fastplotlib`? +What is `fastplotlib`? +---------------------- `fastplotlib` is a scientific plotting library built on top of the `pygfx `_ rendering engine that leverages new graphics APIs and modern GPU hardware to create fast and interactive visualizations. -.. dropdown:: What can I do with `fastplotlib`? +What can I do with `fastplotlib`? +--------------------------------- `fastplotlib` allows for: + - GPU accelerated visualization - interactive visualization via an intuitive and expressive API - rapid prototyping and algorithm design - easy exploration and fast rendering of large-scale data + - design, develop, evaluate and ship machine learning models -.. dropdown:: Do I need a GPU? +Do I need a GPU? +---------------- - Technically no, you can perform limited software rendering on linux using lavapipe (see drivers link below). + Technically no, you can perform limited software rendering on linux using lavapipe. However, `fastplotlib` is intentionally built for realtime rendering using the latest GPU technologies, so we strongly recommend that you use a GPU. With that being said, an integrated GPU should be sufficient for many use-cases. -.. dropdown:: How does `fastplotlib` relate to `matplotlib`? +How does `fastplotlib` relate to `matplotlib`? +---------------------------------------------- `fastplotlib` is **not** related to `matplotlib` in any way. @@ -29,7 +35,8 @@ fastplotlib FAQ visualization that runs on the GPU using WGPU. The `fastplotlib` architecture is completely different from `matplotlib`. Using `fastplotlib` is more akin to using `numpy`. See the "How can I learn to use `fastplotlib`?" section below. -.. dropdown:: How can I learn to use `fastplotlib`? +How can I learn to use `fastplotlib`? +------------------------------------- We want `fastplotlib` to be easy to learn and use. To get started with the library we recommend taking a look at our `guide `_ and `examples gallery `_. @@ -37,12 +44,14 @@ fastplotlib FAQ In general, if you are familiar with numpy and array notation you will already have a intuitive understanding of interacting with your data in `fastplotlib`. If you have any questions, please do not hesitate to post an issue or discussion forum post. -.. dropdown:: Should I use `fastplotlib` for making publication figures? +Should I use `fastplotlib` for making publication figures? +---------------------------------------------------------- No, `fastplotlib` is not meant for creating *static* publication figures. There are many other libraries that are well-suited for this task. -.. dropdown:: How does `fastplotlib` handle data loading? +How does `fastplotlib` handle data loading? +------------------------------------------- `fastplotlib` is a plotting library and not a data handling or data loading library. These tasks are outside of the scope of the library. @@ -50,14 +59,16 @@ fastplotlib FAQ In general, if your data is an array-like object, `fastplotlib` should be able to use it. However, if you have any problems using your data objects, please do not hesitate to post an issue! -.. dropdown:: What is the scope of `fastplotlib`? +What is the scope of `fastplotlib`? +----------------------------------- While the capabilities are very far-reaching, we would like to emphasize that `fastplotlib` is a general-purpose plotting library focused on scientific visualization. More specifically, we aim to develop the tools necessary for users to build fast and interactive visualizations for a variety of scientific domains (e.g. neuroscience, astrophysics). If you have a particular feature in mind that you feel is missing, please post an issue and we will respond accordingly letting you know if it fits within the scope of the project. -.. dropdown:: What types of PRs are we willing to accept? +What types of PRs are we willing to accept? +------------------------------------------- Primarily the features of `fastplotlib` have been developed as they relate to the core-developers research use cases (mostly neuroscience). With that being said, there are many domains in which we do not have the knowledge to best-implement the tools needed for proper visualization. We welcome all PRs that address these types of missing functionality. We @@ -69,7 +80,8 @@ fastplotlib FAQ Lastly, documentation is a critical part of open-source software and makes learning/using our tool much easier. We welcome all PRs that add missing or needed documentation of the codebase. If you find a piece of the codebase that is confusing or does not have proper documentation, please also feel free to post an issue on the repo! -.. dropdown:: What frameworks does `fastplotlib` support? +What frameworks does `fastplotlib` support? +------------------------------------------- The short answer is that `fastplotlib` can run on anything that `pygfx` runs on. This includes, - `jupyter lab` using `jupyter_rfb` @@ -79,7 +91,8 @@ fastplotlib FAQ Note: Use in Google Colab does not currently work because Colab does not offer support for `jupyter_rfb` -.. dropdown:: How can I use `fastplotlib` interactively? +How can I use `fastplotlib` interactively? +------------------------------------------ There are multiple ways to use fastplotlib interactively. From 4c6e7efec209ef2e1e3fdcd7467796e86200339c Mon Sep 17 00:00:00 2001 From: Caitlin Date: Sat, 31 Aug 2024 16:14:30 -0400 Subject: [PATCH 08/11] requested changes --- docs/source/user_guide/faq.rst | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/docs/source/user_guide/faq.rst b/docs/source/user_guide/faq.rst index f70622e14..ae7023889 100644 --- a/docs/source/user_guide/faq.rst +++ b/docs/source/user_guide/faq.rst @@ -17,14 +17,14 @@ What can I do with `fastplotlib`? - rapid prototyping and algorithm design - easy exploration and fast rendering of large-scale data - design, develop, evaluate and ship machine learning models + - create visualizations for real-time acquisition systems for scientific instruments (cameras, etc.) Do I need a GPU? ---------------- - Technically no, you can perform limited software rendering on linux using lavapipe. - However, `fastplotlib` is intentionally built for realtime rendering using the latest GPU technologies, so we - strongly recommend that you use a GPU. With that being said, an integrated GPU should be sufficient for many - use-cases. + Integrated GPUs, such as those found in modern laptops is sufficient for many use cases. However, you can perform limited software rendering on linux + using lavapipe. With that being said, `fastplotlib` is intentionally built for realtime rendering using the latest GPU technologies, so we + strongly recommend that you use a GPU. How does `fastplotlib` relate to `matplotlib`? ---------------------------------------------- @@ -33,7 +33,11 @@ How does `fastplotlib` relate to `matplotlib`? These are two completely different libraries with their own APIs and use-cases. The `fastplotlib` library is primarily for *interactive* visualization that runs on the GPU using WGPU. The `fastplotlib` architecture is completely different from `matplotlib`. Using `fastplotlib` - is more akin to using `numpy`. See the "How can I learn to use `fastplotlib`?" section below. + is more akin to using `numpy`. + + To expand on this a bit more, the `pygfx` buffer interface is really unlike anything in`matplotlib` and other libraries which is a major reason + why `fastplotlib` can have an array-like API for plotting. We believe that these design choices make it much easier to learn how to use the library + and provide fine-grained control over your visualizations. See the "How can I learn to use `fastplotlib`?" section below. How can I learn to use `fastplotlib`? ------------------------------------- @@ -48,7 +52,7 @@ Should I use `fastplotlib` for making publication figures? ---------------------------------------------------------- No, `fastplotlib` is not meant for creating *static* publication figures. There are many other libraries that are well-suited - for this task. + for this task. However, `fastplotlib` figures can be exported to PNG using ``figure.export()``. How does `fastplotlib` handle data loading? ------------------------------------------- @@ -57,25 +61,25 @@ How does `fastplotlib` handle data loading? the library. In general, if your data is an array-like object, `fastplotlib` should be able to use it. However, if you have any problems using your data objects, - please do not hesitate to post an issue! + please do not hesitate to post an issue! See this `issue `_ for more details. What is the scope of `fastplotlib`? ----------------------------------- While the capabilities are very far-reaching, we would like to emphasize that `fastplotlib` is a general-purpose plotting library focused on scientific visualization. - More specifically, we aim to develop the tools necessary for users to build fast and interactive visualizations for a variety of scientific domains (e.g. neuroscience, - astrophysics). If you have a particular feature in mind that you feel is missing, please post an issue and we will respond accordingly letting you know if it fits within - the scope of the project. + More specifically, we aim to develop the tools necessary for users to build fast and interactive visualizations for a variety of scientific domains including but not limited to + neuroscience, astronomy, biology, computer vision, signal processing, and more. If you have a particular feature in mind that you feel is missing, please post an issue and we will respond + accordingly letting you know if it fits within the scope of the project. What types of PRs are we willing to accept? ------------------------------------------- - Primarily the features of `fastplotlib` have been developed as they relate to the core-developers research use cases (mostly neuroscience). With that being said, there are many domains in which + Primarily the features of `fastplotlib` have been developed as they relate to the core-developers research use cases (mostly neuroscience, algorithm development, and machine learning). With that being said, there are many domains in which we do not have the knowledge to best-implement the tools needed for proper visualization. We welcome all PRs that address these types of missing functionality. We recommend taking a look at our `Roadmap `_ to get a better idea of what those items might be :D Closely related to this, we would love to add more examples to our repo for different types of scientific visualizations. We welcome all PRs that showcase using `fastplotlib` for - your given research domain. + your given research domain! :D Lastly, documentation is a critical part of open-source software and makes learning/using our tool much easier. We welcome all PRs that add missing or needed documentation of the codebase. If you find a piece of the codebase that is confusing or does not have proper documentation, please also feel free to post an issue on the repo! @@ -89,7 +93,8 @@ What frameworks does `fastplotlib` support? - `glfw` - `wxPython` - Note: Use in Google Colab does not currently work because Colab does not offer support for `jupyter_rfb` + Note: Use in Google Colab is not highly functional. We recommend using an inexpensive alternative cloud provider + such as CodeOcean or Lambda Cloud. Kushal has tested these and `fastplotlib` works very well. How can I use `fastplotlib` interactively? ------------------------------------------ From 0e8e43efb9f1207cdecb715b871a4b1d1ca214eb Mon Sep 17 00:00:00 2001 From: Caitlin Lewis Date: Tue, 3 Sep 2024 08:39:20 -0400 Subject: [PATCH 09/11] requested changes --- docs/source/user_guide/faq.rst | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/source/user_guide/faq.rst b/docs/source/user_guide/faq.rst index ae7023889..34800c4b6 100644 --- a/docs/source/user_guide/faq.rst +++ b/docs/source/user_guide/faq.rst @@ -22,9 +22,11 @@ What can I do with `fastplotlib`? Do I need a GPU? ---------------- - Integrated GPUs, such as those found in modern laptops is sufficient for many use cases. However, you can perform limited software rendering on linux - using lavapipe. With that being said, `fastplotlib` is intentionally built for realtime rendering using the latest GPU technologies, so we - strongly recommend that you use a GPU. + Integrated GPUs, such as those found in modern laptops is sufficient for many use cases. + + For the best performance you will require a dedicated GPU. You can think of it like running a game, a more complex visualization or faster rendering will require a better GPU. + + Limited software rendering using just the CPU is supported on linux using lavapipe, but this is mostly only useful for testing purposes. How does `fastplotlib` relate to `matplotlib`? ---------------------------------------------- @@ -51,8 +53,8 @@ How can I learn to use `fastplotlib`? Should I use `fastplotlib` for making publication figures? ---------------------------------------------------------- - No, `fastplotlib` is not meant for creating *static* publication figures. There are many other libraries that are well-suited - for this task. However, `fastplotlib` figures can be exported to PNG using ``figure.export()``. + While `fastplotlib` figures can be exported to PNG using ``figure.export()``, `fastplotlib` is not intended for creating *static* + publication figures. There are many other libraries that are well-suited for this task. How does `fastplotlib` handle data loading? ------------------------------------------- @@ -94,7 +96,7 @@ What frameworks does `fastplotlib` support? - `wxPython` Note: Use in Google Colab is not highly functional. We recommend using an inexpensive alternative cloud provider - such as CodeOcean or Lambda Cloud. Kushal has tested these and `fastplotlib` works very well. + such as CodeOcean or Lambda Cloud. We have tested these and `fastplotlib` works very well. How can I use `fastplotlib` interactively? ------------------------------------------ From 288dd1637d9b107237188866dec644844bfb655a Mon Sep 17 00:00:00 2001 From: Caitlin Date: Tue, 3 Sep 2024 12:43:10 -0400 Subject: [PATCH 10/11] revert commit --- docs/source/user_guide/faq.rst | 35 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/docs/source/user_guide/faq.rst b/docs/source/user_guide/faq.rst index 34800c4b6..f70622e14 100644 --- a/docs/source/user_guide/faq.rst +++ b/docs/source/user_guide/faq.rst @@ -17,16 +17,14 @@ What can I do with `fastplotlib`? - rapid prototyping and algorithm design - easy exploration and fast rendering of large-scale data - design, develop, evaluate and ship machine learning models - - create visualizations for real-time acquisition systems for scientific instruments (cameras, etc.) Do I need a GPU? ---------------- - Integrated GPUs, such as those found in modern laptops is sufficient for many use cases. - - For the best performance you will require a dedicated GPU. You can think of it like running a game, a more complex visualization or faster rendering will require a better GPU. - - Limited software rendering using just the CPU is supported on linux using lavapipe, but this is mostly only useful for testing purposes. + Technically no, you can perform limited software rendering on linux using lavapipe. + However, `fastplotlib` is intentionally built for realtime rendering using the latest GPU technologies, so we + strongly recommend that you use a GPU. With that being said, an integrated GPU should be sufficient for many + use-cases. How does `fastplotlib` relate to `matplotlib`? ---------------------------------------------- @@ -35,11 +33,7 @@ How does `fastplotlib` relate to `matplotlib`? These are two completely different libraries with their own APIs and use-cases. The `fastplotlib` library is primarily for *interactive* visualization that runs on the GPU using WGPU. The `fastplotlib` architecture is completely different from `matplotlib`. Using `fastplotlib` - is more akin to using `numpy`. - - To expand on this a bit more, the `pygfx` buffer interface is really unlike anything in`matplotlib` and other libraries which is a major reason - why `fastplotlib` can have an array-like API for plotting. We believe that these design choices make it much easier to learn how to use the library - and provide fine-grained control over your visualizations. See the "How can I learn to use `fastplotlib`?" section below. + is more akin to using `numpy`. See the "How can I learn to use `fastplotlib`?" section below. How can I learn to use `fastplotlib`? ------------------------------------- @@ -53,8 +47,8 @@ How can I learn to use `fastplotlib`? Should I use `fastplotlib` for making publication figures? ---------------------------------------------------------- - While `fastplotlib` figures can be exported to PNG using ``figure.export()``, `fastplotlib` is not intended for creating *static* - publication figures. There are many other libraries that are well-suited for this task. + No, `fastplotlib` is not meant for creating *static* publication figures. There are many other libraries that are well-suited + for this task. How does `fastplotlib` handle data loading? ------------------------------------------- @@ -63,25 +57,25 @@ How does `fastplotlib` handle data loading? the library. In general, if your data is an array-like object, `fastplotlib` should be able to use it. However, if you have any problems using your data objects, - please do not hesitate to post an issue! See this `issue `_ for more details. + please do not hesitate to post an issue! What is the scope of `fastplotlib`? ----------------------------------- While the capabilities are very far-reaching, we would like to emphasize that `fastplotlib` is a general-purpose plotting library focused on scientific visualization. - More specifically, we aim to develop the tools necessary for users to build fast and interactive visualizations for a variety of scientific domains including but not limited to - neuroscience, astronomy, biology, computer vision, signal processing, and more. If you have a particular feature in mind that you feel is missing, please post an issue and we will respond - accordingly letting you know if it fits within the scope of the project. + More specifically, we aim to develop the tools necessary for users to build fast and interactive visualizations for a variety of scientific domains (e.g. neuroscience, + astrophysics). If you have a particular feature in mind that you feel is missing, please post an issue and we will respond accordingly letting you know if it fits within + the scope of the project. What types of PRs are we willing to accept? ------------------------------------------- - Primarily the features of `fastplotlib` have been developed as they relate to the core-developers research use cases (mostly neuroscience, algorithm development, and machine learning). With that being said, there are many domains in which + Primarily the features of `fastplotlib` have been developed as they relate to the core-developers research use cases (mostly neuroscience). With that being said, there are many domains in which we do not have the knowledge to best-implement the tools needed for proper visualization. We welcome all PRs that address these types of missing functionality. We recommend taking a look at our `Roadmap `_ to get a better idea of what those items might be :D Closely related to this, we would love to add more examples to our repo for different types of scientific visualizations. We welcome all PRs that showcase using `fastplotlib` for - your given research domain! :D + your given research domain. Lastly, documentation is a critical part of open-source software and makes learning/using our tool much easier. We welcome all PRs that add missing or needed documentation of the codebase. If you find a piece of the codebase that is confusing or does not have proper documentation, please also feel free to post an issue on the repo! @@ -95,8 +89,7 @@ What frameworks does `fastplotlib` support? - `glfw` - `wxPython` - Note: Use in Google Colab is not highly functional. We recommend using an inexpensive alternative cloud provider - such as CodeOcean or Lambda Cloud. We have tested these and `fastplotlib` works very well. + Note: Use in Google Colab does not currently work because Colab does not offer support for `jupyter_rfb` How can I use `fastplotlib` interactively? ------------------------------------------ From 4b43d22a0fc4adff7de2c94d7f320f0bbbe17433 Mon Sep 17 00:00:00 2001 From: Caitlin Date: Tue, 3 Sep 2024 12:45:02 -0400 Subject: [PATCH 11/11] should be gtg --- docs/source/user_guide/faq.rst | 37 ++++++++++++++++++++-------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/docs/source/user_guide/faq.rst b/docs/source/user_guide/faq.rst index f70622e14..aa4f3dc87 100644 --- a/docs/source/user_guide/faq.rst +++ b/docs/source/user_guide/faq.rst @@ -17,14 +17,16 @@ What can I do with `fastplotlib`? - rapid prototyping and algorithm design - easy exploration and fast rendering of large-scale data - design, develop, evaluate and ship machine learning models + - create visualizations for real-time acquisition systems for scientific instruments (cameras, etc.) Do I need a GPU? ---------------- - Technically no, you can perform limited software rendering on linux using lavapipe. - However, `fastplotlib` is intentionally built for realtime rendering using the latest GPU technologies, so we - strongly recommend that you use a GPU. With that being said, an integrated GPU should be sufficient for many - use-cases. + Integrated GPUs, such as those found in modern laptops, are sufficient for many use cases. + + For the best performance you will require a dedicated GPU. You can think of it like running a game, a more complex visualization or faster rendering will require a better GPU. + + Limited software rendering using just the CPU is supported on linux using lavapipe, but this is mostly only useful for testing purposes. How does `fastplotlib` relate to `matplotlib`? ---------------------------------------------- @@ -33,7 +35,11 @@ How does `fastplotlib` relate to `matplotlib`? These are two completely different libraries with their own APIs and use-cases. The `fastplotlib` library is primarily for *interactive* visualization that runs on the GPU using WGPU. The `fastplotlib` architecture is completely different from `matplotlib`. Using `fastplotlib` - is more akin to using `numpy`. See the "How can I learn to use `fastplotlib`?" section below. + is more akin to using `numpy`. + + To expand on this a bit more, the `pygfx` buffer interface is really unlike anything in`matplotlib` and other libraries which is a major reason + why `fastplotlib` can have an array-like API for plotting. We believe that these design choices make it much easier to learn how to use the library + and provide fine-grained control over your visualizations. See the "How can I learn to use `fastplotlib`?" section below. How can I learn to use `fastplotlib`? ------------------------------------- @@ -47,8 +53,8 @@ How can I learn to use `fastplotlib`? Should I use `fastplotlib` for making publication figures? ---------------------------------------------------------- - No, `fastplotlib` is not meant for creating *static* publication figures. There are many other libraries that are well-suited - for this task. + While `fastplotlib` figures can be exported to PNG using ``figure.export()``, `fastplotlib` is not intended for creating *static* + publication figures. There are many other libraries that are well-suited for this task. How does `fastplotlib` handle data loading? ------------------------------------------- @@ -57,25 +63,25 @@ How does `fastplotlib` handle data loading? the library. In general, if your data is an array-like object, `fastplotlib` should be able to use it. However, if you have any problems using your data objects, - please do not hesitate to post an issue! + please do not hesitate to post an issue! See this `issue `_ for more details. What is the scope of `fastplotlib`? ----------------------------------- While the capabilities are very far-reaching, we would like to emphasize that `fastplotlib` is a general-purpose plotting library focused on scientific visualization. - More specifically, we aim to develop the tools necessary for users to build fast and interactive visualizations for a variety of scientific domains (e.g. neuroscience, - astrophysics). If you have a particular feature in mind that you feel is missing, please post an issue and we will respond accordingly letting you know if it fits within - the scope of the project. + More specifically, we aim to develop the tools necessary for users to build fast and interactive visualizations for a variety of scientific domains including but not limited to + neuroscience, astronomy, biology, computer vision, signal processing, and more. If you have a particular feature in mind that you feel is missing, please post an issue and we will respond + accordingly letting you know if it fits within the scope of the project. What types of PRs are we willing to accept? ------------------------------------------- - Primarily the features of `fastplotlib` have been developed as they relate to the core-developers research use cases (mostly neuroscience). With that being said, there are many domains in which + Primarily the features of `fastplotlib` have been developed as they relate to the core-developers research use cases (mostly neuroscience, algorithm development, and machine learning). With that being said, there are many domains in which we do not have the knowledge to best-implement the tools needed for proper visualization. We welcome all PRs that address these types of missing functionality. We recommend taking a look at our `Roadmap `_ to get a better idea of what those items might be :D Closely related to this, we would love to add more examples to our repo for different types of scientific visualizations. We welcome all PRs that showcase using `fastplotlib` for - your given research domain. + your given research domain! :D Lastly, documentation is a critical part of open-source software and makes learning/using our tool much easier. We welcome all PRs that add missing or needed documentation of the codebase. If you find a piece of the codebase that is confusing or does not have proper documentation, please also feel free to post an issue on the repo! @@ -89,7 +95,8 @@ What frameworks does `fastplotlib` support? - `glfw` - `wxPython` - Note: Use in Google Colab does not currently work because Colab does not offer support for `jupyter_rfb` + Note: Use in Google Colab is not highly functional. We recommend using an inexpensive alternative cloud provider + such as CodeOcean or Lambda Cloud. We have tested these and `fastplotlib` works very well. How can I use `fastplotlib` interactively? ------------------------------------------ @@ -115,4 +122,4 @@ How can I use `fastplotlib` interactively? 2. IPython - Users can select between using a Qt backend or glfw using the same methods as above. + Users can select between using a Qt backend or glfw using the same methods as above. \ No newline at end of file