Package: vp4jl
IPVPE: Image Processing through Visual Programming Environmentvp4jlis an extension for JupyterLab that offers an interactive node-based visual programming (vp) environment. It allows users to build and execute visual workflows without the need for line-by-line textual coding. Seamlessly integrated within the JupyterLab interface,vp4jlenables you to enhance your JupyterLab environment with vp capabilities, all without modifying your existing setup.****We introduce avisual programming environment used for image processing. This environment is implemented by an extension namedvp4jlthat enables any JupyterLab environment with visual programming (vp) capabilities, all without modifying the existing setup.vp4jlallows users to build and execute visual workflows without the need for line-by-line textual coding.Key Features:(a) Interactive Visual Programming Editor:Rich Built-in Nodes: Power your designs with our diverse suite of nodes, spanning control flow, mathematical operations, variables, function interactions, reroutes, and annotations.Smooth User Interaction: Engage with a user-friendly canvas that allows for effortless zoom, pan, and diverse node operations. Boost your workflow with intuitive menus and a streamlined toolbar. Enhance navigation with a detailed minimap and time-saving shortcut keys.Smart Auto Layout: Ensure elegance and clarity with automatic layout adjustments, guaranteeing optimal node alignment and perfect view fitting.Extensible Node Library with JSON Specifications:(d1), (d2) Robust Node Specification: Introduce new nodes easily with a JSON-based specification, making library extensions a breeze.(e) Intuitive Node-Library Panel: Navigate through an advanced panel that showcases all your installed node libraries. Experience streamlined installation, uninstallation, activation, and deactivation processes.Efficient Backend Library Management: Handle all your node libraries with a dedicated management backend, ensuring smooth operations.Automatic Image Data Transitions via Configurable Knowledge Graph: Effortlessly transition image data using a user-driven knowledge graph, eliminating the need for manual data conversion and ensuring semantic interoperability.Image processing package integrations(f) Seamless Integration within the JupyterLab Interface: Immerse yourself in integration so smooth it feels native to JupyterLab. Enjoy seamless file operations, efficient code execution, and immediate result displays, all within the familiar JupyterLab environment.Computational Documents:(b) Enhanced Jupyter Notebook: Revel in the renowned flexibility and power of Jupyter notebooks, now boosted with visual programming capabilities in the notebook.(c) New Document Format: Introduce a fresh visual programming-supported document formatvp4jl, sitting comfortably alongside a traditional computational notebook.Effortless Visual Programming Integration: Easily equip your JupyterLab environment with visual programming capabilities using our extension, all without altering your existing setup.Requirementsjupyterlab>= 4.0.0b0InstallationThrough the Command Line:To installvp4jlvia pip, execute the command below:pipinstallvp4jlEnsure you have the required version of JupyterLab.Using the Extension Manager in JupyterLab:For those inclined towards a GUI-based installation: after launching JupyterLab, look for the Extension Manager on the left sidebar. Punch invp4jlinto its search bar. Oncevp4jlpops up in the results, hit the adjacent "Install" button. If the Extension Manager isn't visible, check to make sure it's enabled — it might be turned off in certain default setups.DocumentationFor in-depth documentation on usingvp4jl, including basic view and navigation, node operations, JSON-based specification for Node Library, code generation, and so on, please visitour documentation.For DevelopersDevelopment installNote: You will need NodeJS to build the extension package.Thejlpmcommand is JupyterLab's pinned version ofyarnthat is installed with JupyterLab. You may useyarnornpmin lieu ofjlpmbelow.# Clone the repo to your local environment# Install package in development modepipinstall-e".[test]"# Link your development version of the extension with JupyterLabjupyterlabextensiondevelop.--overwrite# Server extension must be manually installed in develop modejupyterserverextensionenablevp4jl# Rebuild extension Typescript source after making changesjlpmbuildYou can watch the source directory and run JupyterLab at the same time in different terminals to watch for changes in the extension's source and automatically rebuild the extension.# Watch the source directory in one terminal, automatically rebuilding when neededjlpmwatch# Run JupyterLab in another terminaljupyterlabWith the watch command running, every saved change will immediately be built locally and available in your running JupyterLab. Refresh JupyterLab to load the change in your browser (you may need to wait several seconds for the extension to be rebuilt).By default, thejlpm buildcommand generates the source maps for this extension to make it easier to debug using the browser dev tools. To also generate source maps for the JupyterLab core extensions, you can run the following command:jupyterlabbuild--minimize=FalseDevelopment uninstall# Server extension must be manually disabled in develop modejupyterserverextensiondisablevp4jl
pipuninstallvp4jlIn development mode, you will also need to remove the symlink created byjupyter labextension developcommand. To find its location, you can runjupyter labextension listto figure out where thelabextensionsfolder is located. Then you can remove the symlink namedvp4jlwithin that folder.Packaging the extensionSeeRELEASETroubleshootIf you are seeing the frontend extension, but it is not working, check
that the server extension is enabled:jupyterserverextensionlistIf the server extension is installed and enabled, but you are not seeing
the frontend extension, check the frontend extension is installed:jupyterlabextensionlistSupport & ContributionIssues: For bug reports and feature requests, please open the GitHub issue.Contributing: Pull requests are welcome. For major changes, please open an issue first to discuss the proposed change.LicenseThis project is licensed under the GNU General Public License v3.0 license.