web application for flight log analysis & review

Overview

Flight Review

Build Status

This is a web application for flight log analysis. It allows users to upload ULog flight logs, and analyze them through the browser.

It uses the bokeh library for plotting and the Tornado Web Server.

Flight Review is deployed at https://review.px4.io.

Plot View

3D View

3D View

Installation and Setup

Requirements

Ubuntu

sudo apt-get install sqlite3 fftw3 libfftw3-dev

Note: Under some Ubuntu and Debian environments you might have to install ATLAS

sudo apt-get install libatlas3-base

macOS

macOS already provides SQLite3. Use Homebrew to install fftw:

brew install fftw

Installation

# After git clone, enter the directory
git clone --recursive https://github.com/PX4/flight_review.git
cd flight_review/app
pip install -r requirements.txt
# Note: preferably use a virtualenv

Setup

  • By default the app will load config_default.ini configuration file
  • You can override any setting from config_default.ini with a user config file config_user.ini (untracked)
  • Any setting on config_user.ini has priority over config_default.ini
  • Run setup_db.py to initialize the database.

Note: setup_db.py can also be used to upgrade the database tables, for instance when new entries are added (it automatically detects that).

Usage

For local usage, the server can be started directly with a log file name, without having to upload it first:

cd app
./serve.py -f <file.ulg>

To start the whole web application:

cd app
./serve.py --show

The plot_app directory contains a bokeh server application for plotting. It can be run stand-alone with bokeh serve --show plot_app (or with cd plot_app; bokeh serve --show main.py, to start without the html template).

The whole web application is run with the serve.py script. Run ./serve.py -h for further details.

Interactive Usage

The plotting can also be used interative using a Jupyter Notebook. It requires python knowledge, but provides full control over what and how to plot with immediate feedback.

  • Start the notebook
  • Locate and open the test notebook file testing_notebook.ipynb.
# Launch jupyter notebook
jupyter notebook testing_notebook.ipynb

Implementation

The web site is structured around a bokeh application in app/plot_app (app/plot_app/configured_plots.py contains all the configured plots). This application also handles the statistics page, as it contains bokeh plots as well. The other pages (upload, browse, ...) are implemented as tornado handlers in app/tornado_handlers/.

plot_app/helper.py additionally contains a list of log topics that the plot application can subscribe to. A topic must live in this list in order to be plotted.

Tornado uses a single-threaded event loop. This means all operations should be non-blocking (see also http://www.tornadoweb.org/en/stable/guide/async.html). (This is currently not the case for sending emails).

Reading ULog files is expensive and thus should be avoided if not really necessary. There are two mechanisms helping with that:

  • Loaded ULog files are kept in RAM using an LRU cache with configurable size (when using the helper method). This works from different requests and sessions and from all source contexts.
  • There's a LogsGenerated DB table, which contains extracted data from ULog for faster access.

Caching

In addition to in-memory caching there is also some on-disk caching: KML files are stored on disk. Also the parameters and airframes are cached and downloaded every 24 hours. It is safe to delete these files (but not the cache directory).

Notes about python imports

Bokeh uses dynamic code loading and the plot_app/main.py gets loaded on each session (page load) to isolate requests. This also means we cannot use relative imports. We have to use sys.path.append to include modules in plot_app from the root directory (Eg tornado_handlers.py). Then to make sure the same module is only loaded once, we use import xy instead of import plot_app.xy. It's useful to look at print('\n'.join(sys.modules.keys())) to check this.

Docker usage

This section explains how to work with docker.

Arguments

Edit the .env file according to your setup:

  • PORT - The number of port, what listen service in docker, default 5006
  • USE_PROXY - The set his, if you use reverse proxy (Nginx, ...)
  • DOMAIN - The address domain name for origin, default = *
  • CERT_PATH - The SSL certificate volume path
  • EMAIL - Email for challenging Let's Encrypt DNS

Paths

  • /opt/service/config_user.ini - Path for config
  • /opt/service/data - Folder where stored database
  • .env - Environment variables for nginx and app docker container

Build Docker Image

cd app
docker build -t px4flightreview -f Dockerfile .

Work with docker-compose

Run the following command to start docker container. Please modify the .env and add app/config_user.ini with respective stages.

Uncomment the BOKEH_ALLOW_WS_ORIGIN with your local IP Address when developing, this is for the bokeh application's websocket to work.

Development

docker-compose -f docker-compose.dev.yml up

Test Locally

Test locally with nginx:

docker-compose up

Remember to Change NGINX_CONF to use default_ssl.conf and add the EMAIL for production.

Production

htpasswd -c ./nginx/.htpasswd username
# here to create a .htpasswd for nginx basic authentication
chmod u+x init-letsencrypt.sh
./init-letsencrypt.sh

Contributing

Contributions are welcome! Just open a pull request with detailed description why the changes are needed, or open an issue for bugs, feature requests, etc...

Comments
  • Reorganize the folders to easier to deploy and bug fixes.

    Reorganize the folders to easier to deploy and bug fixes.

    1. Fixed statistics_plots.py line 515 to show nothing when there is no public logs.
    2. Reorganize folder for better management to use docker.
    3. Fix the Dockerfile to use ubuntu:focal which failed to build pyfftw due to the unsupported python3.6,required python3.7.
    4. Added gcc,g++,build_essential for building numpy and others python package that need to build in docker.

    I'm trying to reorganize the folders to include the docker nginx for docker deployment.

    opened by luvwinnie 18
  • HTTP Error 500 (again)

    HTTP Error 500 (again)

    Going to logs.px4.io and uploading an .ulg file will result in "HTTP Error 500 ".

    The file can be visualized just fine by running it locally with ./serve.py -f file.ulg, but using ./serve.py --show and uploading the file to the presented browser window will also result in the same "HTTP Error 500". Using ./serve.py --show will result in the following output from the terminal:

    (flightreview) locus@DX68:~/Git/flight_review/app$ ./serve.py --show
    Error when handling POST data <class 'KeyError'> 'email'
    ERROR:tornado.access:500 POST /upload (127.0.0.1) 54.56ms
    

    Feeding the file into ulog_info file.ulg results in the following output:

    Logging start time: 0:09:39, duration: 0:13:11
    Dropouts: count: 66, total duration: 13.2 s, max: 949 ms, mean: 200 ms
    SW Version: v1.10.1
    Info Messages:
     sys_mcu: STM32F42x, rev. 3
     sys_name: PX4
     sys_os_name: NuttX
     sys_os_ver: 427238133be2b0ecd068a11e886ee8fdbc31f6dc
     sys_os_ver_release: 119341311
     sys_toolchain: GNU GCC
     sys_toolchain_ver: 7.2.1 20170904 (release) [ARM/embedded-7-branch revision 255204]
     sys_uuid: 000100000000313538333036510c004a0022
     time_ref_utc: 0
     ver_hw: PX4_FMU_V3
     ver_hw_subtype: V30
     ver_sw: e0f016c2b3db160284bbaaadaf70bef84592d81e
     ver_sw_release: 17433087
     ver_vendor_sw_release: 255
    Info Multiple Messages: [perf_counter_postflight: 1], [perf_counter_preflight: 1], [perf_top_postflight: 1], [perf_top_preflight: 1]
    
    Name (multi id, message size in bytes)    number of data points, total bytes
     actuator_controls_0 (0, 48)                 7615     365520
     actuator_outputs (0, 76)                    7607     578132
     actuator_outputs (1, 76)                    7602     577752
     battery_status (0, 83)                      1549     128567
     cpuload (0, 16)                              777      12432
     ekf2_innovations (0, 164)                   3843     630252
     ekf2_timestamps (0, 22)                   174935    3848570
     ekf_gps_drift (0, 21)                         30        630
     estimator_status (0, 271)                   3844    1041724
     home_position (0, 47)                          2         94
     input_rc (0, 69)                            3839     264891
     manual_control_setpoint (0, 67)             3842     257414
     mission_result (0, 32)                        84       2688
     position_setpoint_triplet (0, 344)            84      28896
     radio_status (0, 17)                           1         17
     rate_ctrl_status (0, 24)                    3839      92136
     safety (0, 12)                               776       9312
     sensor_combined (0, 44)                   176934    7785096
     sensor_preflight (0, 20)                       6        120
     sensor_selection (0, 24)                       1         24
     system_power (0, 23)                        1548      35604
     telemetry_status (0, 47)                     858      40326
     trajectory_setpoint (0, 76)                 3834     291384
     vehicle_air_data (0, 24)                   57756    1386144
     vehicle_angular_velocity (0, 28)           35166     984648
     vehicle_attitude (0, 41)                   14838     608358
     vehicle_attitude_setpoint (0, 58)           7594     440452
     vehicle_command (0, 52)                       23       1196
     vehicle_global_position (0, 68)             3844     261392
     vehicle_gps_position (0, 99)                3890     385110
     vehicle_land_detected (0, 17)                795      13515
     vehicle_local_position (0, 155)             7606    1178930
     vehicle_local_position_setpoint (0, 76)     7582     576232
     vehicle_magnetometer (0, 20)               35383     707660
     vehicle_rates_setpoint (0, 32)             35113    1123616
     vehicle_status (0, 52)                       800      41600
     vehicle_status_flags (0, 39)                 800      31200
    

    A similar problem has been reported 4 years ago here.

    The code I've used for testing was the master at the time of writing this report.

    The log file does not look corrupt to my untrained eye, but I might very well be wrong. Though, this problem does occur to all logs I've tried, including some logs from last year that I'm positive have worked before.

    I've tried running the code to see whether I could find any useful information, but as you might have noticed I'm at my wits end. I can analyze the logs using ./serve.py -f file.ulg just fine, but I have a sneaking suspicion that I might not be the only one who currently has problems using logs.px4.io.

    opened by Decclo 9
  • Browse Page - Sort

    Browse Page - Sort

    There is an implementation of an other usefull function on browse page.

    Sorting is done by sqlite queries, so results can be sorted only by colums which are saved in DB. We added a new colum with Datetime of start of flight.

    But there is an Python error -> I really dont know, how to call Super class init metod coreclty with multiple parents..

    opened by slimonslimon 9
  • Map overview

    Map overview

    This Improvement of Browse page add small pre-generated image of map with GPS track. It can improve orientation in logs on browse page. Overview image is generated when user visits plot_app page for first time and the image is saved in data/img direcotry.

    opened by slimonslimon 9
  • python: tidy dependency management

    python: tidy dependency management

    This commit introduces Pipenv into the workflow allowing for deterministic releases due to dependency pinning

    • plus the unintended consequence of updating README documentation
    opened by mrpollo 9
  • Extend for flight testing uploads

    Extend for flight testing uploads

    This adds a separate tab on the upload page, for flight testing with additional fields like weather & flight rating. It looks like this: flight_review_upload

    @dogmaphobic: can you please extend QGC to add these fields? @sanderux @LorenzMeier @kd0aij Any suggestions for additional fields/changes?

    opened by bkueng 9
  • Add velocity setpoint in web plot of velocity state?

    Add velocity setpoint in web plot of velocity state?

    Dear @bkueng could we please also get the velocity setpoint ploted in the velocity graph of flight review? https://review.px4.io/plot_app?log=bcbf6e41-dc35-4291-8711-39e994561a30#Nav-Velocity

    Because it's hard to interpret the graph without setpoint and as a result @Stifael and me usually default to downloaing the log and using our profile in flightplot just to analyze velocity.

    opened by MaEtUgR 8
  • Enable SSL on webinterface

    Enable SSL on webinterface

    @bkueng This service carries sensitive information. I think it should only be provided over SSL. You can generate a free certificate with letsencrypt. An auto-renewal and easy installer is found here: https://certbot.eff.org/all-instructions/

    /cc @LorenzMeier

    opened by sanderux 7
  • Airspeed plot disappeared for PX4 v1.10 (and earlier)

    Airspeed plot disappeared for PX4 v1.10 (and earlier)

    Recently the plot for airspeed / groundspeed has disappeared on flightlogs using PX4 v1.10.2 and older. Here's a sample SITL log (flown with Gazebo's standard VTOL on v1.10.2) : https://logs.px4.io/plot_app?log=7ea35ca1-e508-40c1-85be-5497b472b978

    I believe it is this commit that introduced changes on which airspeed topic is plotted: https://github.com/PX4/flight_review/commit/bda9fc9e174fbf17bc656c48b20f4b2bda2c486c But I don't understand why it doesn't work. L343-346 should keep the compatibility I'd thought.

    @jinchengde @bkueng can you look into this please? Thanks :)

    opened by ThomasRigi 6
  • Bug: Log Times Can Be Incorrect

    Bug: Log Times Can Be Incorrect

    I've noticed that on all of the flight logs I have submitted, the vehicle flight time and units of the plots seem to be incorrect.

    See an example here: https://logs.px4.io/plot_app?log=7c57fa9a-0ee1-4916-80d7-fae18554a8fe

    The tool says the flight time is over 3 hours. image

    This is confirmed by the timing in the plots:

    image

    As I was the pilot and confirmed by flightplotlib however, the flight time was actually much less than that:

    image

    It would appear the web tool is treating the minutes like hours.

    opened by keenanjohnson 6
  • Log upload email

    Log upload email

    A few suggested changes to the email sent by Flight Review:

    • Add the title to the subject
    • Add the description to the body

    This will make searching and archiving easier

    opened by sanderux 6
  • README: Make database setup more visible / mandatory

    README: Make database setup more visible / mandatory

    Description

    When I first tried to execute the web app, I noticed the log upload wasn't working, since in the README, it wasn't so obvious that it was a necessary step, as it was occluded by the optional user settings description.

    Solution

    Move the Database setup step upwards and make it necessary (hard to miss)

    opened by junwoo091400 0
  • Accept any scipy version over 1.8.1

    Accept any scipy version over 1.8.1

    Description

    I noticed that when executing pip install -r requirements.txt, my Scipy 1.9.3 package got downgraded, due to hard constraint in the requirements file. This doesn't seem necessary since Scipy isn't such a crucial package in general as mentioned here: https://github.com/PX4/flight_review/issues/233#issuecomment-1089857342

    Solution

    Remove hard constraint on SciPy version, and accept install any version over 1.8.1 (and don't downgrade system package if already installed and is version higher than 1.8.1)

    opened by junwoo091400 0
  • Correct Raw Gyro (FIFO) plot y-axis label units and add sublime project files to .gitignore.

    Correct Raw Gyro (FIFO) plot y-axis label units and add sublime project files to .gitignore.

    Hello,

    This PR simply corrects the Raw Gyro (FIFO) y-axis label and adds sublime project files to the .gitignore file.

    Let me know if you have any questions on this PR. Thanks!

    -Mark

    opened by mcsauder 0
  • RROR: Could not build wheels for scipy which use PEP 517 and cannot be installed directly

    RROR: Could not build wheels for scipy which use PEP 517 and cannot be installed directly

    on m1 chip arm64-ubuntu20.04, cant be solve by sudo apt install python3-scipy:

    RROR: Could not build wheels for scipy which use PEP 517 and cannot be installed directly
    parallels@ubuntu-linux-20-04-desktop:~/flight_review/app$ sudo apt-cache search scipy
    gvb - visual simulator of 1 and 2-dimensional vibrations
    mayavi2 - scientific visualization package for 2-D and 3-D data
    python-fluids-doc - Python fluid dynamics and engineering design library documentation
    python-guiqwt-doc - efficient 2D data-plotting library - Documentation
    python-lmfit-doc - Least-Squares Minimization with Constraints (Documentation)
    python-scipy-doc - scientific library for Python - documentation
    python3-astroml - Python 3 Machine Learning library for astronomy
    python3-duecredit - Publications (and donations) tracer
    python3-fastcluster - Fast hierarchical clustering routines for Python 3
    python3-fluids - Python 3 fluid dynamics and engineering design library
    python3-guiqwt - efficient 2D data-plotting library - Python 3
    python3-lmfit - Least-Squares Minimization with Constraints (Python 3)
    python3-pykdtree - Fast kd-tree implementation with OpenMP-enabled queries (Python 3 version)
    python3-qutip - python package for simulating the dynamics of open quantum systems
    python3-scipy - scientific tools for Python 3
    python3-scipy-dbg - scientific tools for Python 3 - debugging symbols
    python3-seaborn - statistical visualization library for Python3
    python3-sparse - multidimensional sparse arrays for Python
    r-cran-fastcluster - Fast hierarchical clustering routines for GNU R
    r-cran-rspectra - GNU R solvers for large-scale eigenvalue and SVD problems
    sagemath - Open Source Mathematical Software
    sagemath-common - Open Source Mathematical Software - architecture-independent files
    sagemath-doc - Open Source Mathematical Software - documentation
    sagemath-jupyter - Open Source Mathematical Software - Jupyter kernel
    stimfit - Program for viewing and analyzing electrophysiological data
    stimfit-dbg - Debug symbols for stimfit
    parallels@ubuntu-linux-20-04-desktop:~/flight_review/app$ sudo apt install python3-scipy
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following additional packages will be installed:
      liblbfgsb0 python3-decorator python3-numpy
    Suggested packages:
      gfortran python-numpy-doc python3-pytest python3-numpy-dbg python-scipy-doc
    The following NEW packages will be installed:
      liblbfgsb0 python3-decorator python3-numpy python3-scipy
    0 upgraded, 4 newly installed, 0 to remove and 46 not upgraded.
    Need to get 13.5 MB of archives.
    After this operation, 62.7 MB of additional disk space will be used.
    Do you want to continue? [Y/n] 
    Get:1 https://mirrors.ustc.edu.cn/ubuntu-ports focal/universe arm64 liblbfgsb0 arm64 3.0+dfsg.3-7build1 [25.6 kB]
    Get:2 https://mirrors.ustc.edu.cn/ubuntu-ports focal/main arm64 python3-decorator all 4.4.2-0ubuntu1 [10.3 kB]
    Get:3 https://mirrors.ustc.edu.cn/ubuntu-ports focal/main arm64 python3-numpy arm64 1:1.17.4-5ubuntu3 [3,234 kB]
    Get:4 https://mirrors.ustc.edu.cn/ubuntu-ports focal/universe arm64 python3-scipy arm64 1.3.3-3build1 [10.2 MB]
    Fetched 13.5 MB in 1s (9,186 kB/s)        
    Selecting previously unselected package liblbfgsb0:arm64.
    (Reading database ... 235389 files and directories currently installed.)
    Preparing to unpack .../liblbfgsb0_3.0+dfsg.3-7build1_arm64.deb ...
    Unpacking liblbfgsb0:arm64 (3.0+dfsg.3-7build1) ...
    Selecting previously unselected package python3-decorator.
    Preparing to unpack .../python3-decorator_4.4.2-0ubuntu1_all.deb ...
    Unpacking python3-decorator (4.4.2-0ubuntu1) ...
    Selecting previously unselected package python3-numpy.
    Preparing to unpack .../python3-numpy_1%3a1.17.4-5ubuntu3_arm64.deb ...
    Unpacking python3-numpy (1:1.17.4-5ubuntu3) ...
    Selecting previously unselected package python3-scipy.
    Preparing to unpack .../python3-scipy_1.3.3-3build1_arm64.deb ...
    Unpacking python3-scipy (1.3.3-3build1) ...
    Setting up python3-decorator (4.4.2-0ubuntu1) ...
    Setting up python3-numpy (1:1.17.4-5ubuntu3) ...
    Setting up liblbfgsb0:arm64 (3.0+dfsg.3-7build1) ...
    Setting up python3-scipy (1.3.3-3build1) ...
    Processing triggers for libc-bin (2.31-0ubuntu9.7) ...
    parallels@ubuntu-linux-20-04-desktop:~/flight_review/app$ pip install -r requirements.txt
    Defaulting to user installation because normal site-packages is not writeable
    Collecting bokeh==2.1.1
      Using cached bokeh-2.1.1-py3-none-any.whl
    Requirement already satisfied: jinja2 in /home/parallels/.local/lib/python3.8/site-packages (from -r requirements.txt (line 2)) (3.0.3)
    Collecting jupyter
      Using cached jupyter-1.0.0-py2.py3-none-any.whl (2.7 kB)
    Collecting pyfftw
      Using cached pyFFTW-0.13.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB)
    Collecting pylint
      Using cached pylint-2.13.5-py3-none-any.whl (437 kB)
    Requirement already satisfied: pyulog>=0.9 in /home/parallels/.local/lib/python3.8/site-packages (from -r requirements.txt (line 6)) (0.9.0)
    Requirement already satisfied: requests in /usr/lib/python3/dist-packages (from -r requirements.txt (line 7)) (2.22.0)
    Requirement already satisfied: scipy==1.3.3 in /usr/lib/python3/dist-packages (from -r requirements.txt (line 8)) (1.3.3)
    Collecting simplekml
      Using cached simplekml-1.3.6-py3-none-any.whl
    Collecting smopy
      Using cached smopy-0.0.8-py3-none-any.whl (6.4 kB)
    Requirement already satisfied: PyYAML>=3.10 in /usr/lib/python3/dist-packages (from bokeh==2.1.1->-r requirements.txt (line 1)) (5.3.1)
    Requirement already satisfied: numpy>=1.11.3 in /home/parallels/.local/lib/python3.8/site-packages (from bokeh==2.1.1->-r requirements.txt (line 1)) (1.22.3)
    Requirement already satisfied: pillow>=4.0 in /usr/lib/python3/dist-packages (from bokeh==2.1.1->-r requirements.txt (line 1)) (7.0.0)
    Collecting tornado>=5.1
      Using cached tornado-6.1-cp38-cp38-manylinux2014_aarch64.whl (427 kB)
    Requirement already satisfied: packaging>=16.8 in /home/parallels/.local/lib/python3.8/site-packages (from bokeh==2.1.1->-r requirements.txt (line 1)) (21.3)
    Collecting typing-extensions>=3.7.4
      Using cached typing_extensions-4.2.0-py3-none-any.whl (24 kB)
    Requirement already satisfied: python-dateutil>=2.1 in /usr/lib/python3/dist-packages (from bokeh==2.1.1->-r requirements.txt (line 1)) (2.7.3)
    Requirement already satisfied: MarkupSafe>=2.0 in /home/parallels/.local/lib/python3.8/site-packages (from jinja2->-r requirements.txt (line 2)) (2.1.0)
    Collecting jupyter-console
      Using cached jupyter_console-6.4.3-py3-none-any.whl (22 kB)
    Collecting qtconsole
      Using cached qtconsole-5.3.0-py3-none-any.whl (120 kB)
    Collecting ipykernel
      Using cached ipykernel-6.13.0-py3-none-any.whl (131 kB)
    Collecting nbconvert
      Using cached nbconvert-6.5.0-py3-none-any.whl (561 kB)
    Collecting ipywidgets
      Using cached ipywidgets-7.7.0-py2.py3-none-any.whl (123 kB)
    Collecting notebook
      Using cached notebook-6.4.11-py3-none-any.whl (9.9 MB)
    Collecting mccabe<0.8,>=0.6
      Using cached mccabe-0.7.0-py2.py3-none-any.whl (7.3 kB)
    Collecting astroid<=2.12.0-dev0,>=2.11.2
      Using cached astroid-2.11.3-py3-none-any.whl (250 kB)
    Collecting isort<6,>=4.2.5
      Using cached isort-5.10.1-py3-none-any.whl (103 kB)
    Collecting platformdirs>=2.2.0
      Using cached platformdirs-2.5.2-py3-none-any.whl (14 kB)
    Requirement already satisfied: tomli>=1.1.0 in /home/parallels/.local/lib/python3.8/site-packages (from pylint->-r requirements.txt (line 5)) (2.0.1)
    Collecting dill>=0.2
      Using cached dill-0.3.4-py2.py3-none-any.whl (86 kB)
    Requirement already satisfied: matplotlib in /home/parallels/.local/lib/python3.8/site-packages (from smopy->-r requirements.txt (line 10)) (3.5.1)
    Requirement already satisfied: six in /usr/lib/python3/dist-packages (from smopy->-r requirements.txt (line 10)) (1.14.0)
    Requirement already satisfied: setuptools>=20.0 in /home/parallels/.local/lib/python3.8/site-packages (from astroid<=2.12.0-dev0,>=2.11.2->pylint->-r requirements.txt (line 5)) (62.1.0)
    Collecting wrapt<2,>=1.11
      Using cached wrapt-1.14.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (81 kB)
    Collecting lazy-object-proxy>=1.4.0
      Using cached lazy_object_proxy-1.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (60 kB)
    Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /home/parallels/.local/lib/python3.8/site-packages (from packaging>=16.8->bokeh==2.1.1->-r requirements.txt (line 1)) (3.0.7)
    Collecting traitlets>=5.1.0
      Using cached traitlets-5.1.1-py3-none-any.whl (102 kB)
    Collecting debugpy>=1.0
      Using cached debugpy-1.6.0-py2.py3-none-any.whl (4.1 MB)
    Collecting matplotlib-inline>=0.1
      Using cached matplotlib_inline-0.1.3-py3-none-any.whl (8.2 kB)
    Collecting jupyter-client>=6.1.12
      Using cached jupyter_client-7.2.2-py3-none-any.whl (130 kB)
    Collecting nest-asyncio
      Using cached nest_asyncio-1.5.5-py3-none-any.whl (5.2 kB)
    Requirement already satisfied: psutil in /home/parallels/.local/lib/python3.8/site-packages (from ipykernel->jupyter->-r requirements.txt (line 3)) (5.9.0)
    Collecting ipython>=7.23.1
      Using cached ipython-8.2.0-py3-none-any.whl (750 kB)
    Collecting widgetsnbextension~=3.6.0
      Using cached widgetsnbextension-3.6.0-py2.py3-none-any.whl (1.6 MB)
    Collecting nbformat>=4.2.0
      Using cached nbformat-5.3.0-py3-none-any.whl (73 kB)
    Collecting ipython-genutils~=0.2.0
      Using cached ipython_genutils-0.2.0-py2.py3-none-any.whl (26 kB)
    Collecting jupyterlab-widgets>=1.0.0
      Using cached jupyterlab_widgets-1.1.0-py3-none-any.whl (245 kB)
    Requirement already satisfied: pygments in /usr/lib/python3/dist-packages (from jupyter-console->jupyter->-r requirements.txt (line 3)) (2.3.1)
    Collecting prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0
      Using cached prompt_toolkit-3.0.29-py3-none-any.whl (381 kB)
    Requirement already satisfied: fonttools>=4.22.0 in /home/parallels/.local/lib/python3.8/site-packages (from matplotlib->smopy->-r requirements.txt (line 10)) (4.30.0)
    Requirement already satisfied: cycler>=0.10 in /home/parallels/.local/lib/python3.8/site-packages (from matplotlib->smopy->-r requirements.txt (line 10)) (0.11.0)
    Requirement already satisfied: kiwisolver>=1.0.1 in /home/parallels/.local/lib/python3.8/site-packages (from matplotlib->smopy->-r requirements.txt (line 10)) (1.3.2)
    Collecting pandocfilters>=1.4.1
      Using cached pandocfilters-1.5.0-py2.py3-none-any.whl (8.7 kB)
    Collecting beautifulsoup4
      Using cached beautifulsoup4-4.11.1-py3-none-any.whl (128 kB)
    Collecting pygments
      Using cached Pygments-2.11.2-py3-none-any.whl (1.1 MB)
    Collecting mistune<2,>=0.8.1
      Using cached mistune-0.8.4-py2.py3-none-any.whl (16 kB)
    Collecting nbclient>=0.5.0
      Using cached nbclient-0.6.0-py3-none-any.whl (70 kB)
    Collecting jupyter-core>=4.7
      Using cached jupyter_core-4.10.0-py3-none-any.whl (87 kB)
    Collecting tinycss2
      Using cached tinycss2-1.1.1-py3-none-any.whl (21 kB)
    Requirement already satisfied: entrypoints>=0.2.2 in /usr/lib/python3/dist-packages (from nbconvert->jupyter->-r requirements.txt (line 3)) (0.3)
    Collecting defusedxml
      Using cached defusedxml-0.7.1-py2.py3-none-any.whl (25 kB)
    Collecting jupyterlab-pygments
      Using cached jupyterlab_pygments-0.2.2-py2.py3-none-any.whl (21 kB)
    Collecting bleach
      Using cached bleach-5.0.0-py3-none-any.whl (160 kB)
    Collecting terminado>=0.8.3
      Using cached terminado-0.13.3-py3-none-any.whl (14 kB)
    Collecting pyzmq>=17
      Using cached pyzmq-22.3.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.8 MB)
    Collecting prometheus-client
      Using cached prometheus_client-0.14.1-py3-none-any.whl (59 kB)
    Collecting Send2Trash>=1.8.0
      Using cached Send2Trash-1.8.0-py3-none-any.whl (18 kB)
    Collecting argon2-cffi
      Using cached argon2_cffi-21.3.0-py3-none-any.whl (14 kB)
    Collecting qtpy>=2.0.1
      Using cached QtPy-2.0.1-py3-none-any.whl (65 kB)
    Collecting backcall
      Using cached backcall-0.2.0-py2.py3-none-any.whl (11 kB)
    Requirement already satisfied: decorator in /usr/lib/python3/dist-packages (from ipython>=7.23.1->ipykernel->jupyter->-r requirements.txt (line 3)) (4.4.2)
    Collecting pickleshare
      Using cached pickleshare-0.7.5-py2.py3-none-any.whl (6.9 kB)
    Collecting stack-data
      Using cached stack_data-0.2.0-py3-none-any.whl (21 kB)
    Requirement already satisfied: pexpect>4.3 in /usr/lib/python3/dist-packages (from ipython>=7.23.1->ipykernel->jupyter->-r requirements.txt (line 3)) (4.6.0)
    Collecting jedi>=0.16
      Using cached jedi-0.18.1-py2.py3-none-any.whl (1.6 MB)
    Collecting python-dateutil>=2.1
      Downloading python_dateutil-2.8.2-py2.py3-none-any.whl (247 kB)
         ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 247.7/247.7 KB 408.7 kB/s eta 0:00:00
    Requirement already satisfied: jsonschema>=2.6 in /home/parallels/.local/lib/python3.8/site-packages (from nbformat>=4.2.0->ipywidgets->jupyter->-r requirements.txt (line 3)) (4.4.0)
    Collecting fastjsonschema
      Using cached fastjsonschema-2.15.3-py3-none-any.whl (22 kB)
    Collecting wcwidth
      Using cached wcwidth-0.2.5-py2.py3-none-any.whl (30 kB)
    Collecting ptyprocess
      Using cached ptyprocess-0.7.0-py2.py3-none-any.whl (13 kB)
    Collecting argon2-cffi-bindings
      Using cached argon2_cffi_bindings-21.2.0-cp36-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (80 kB)
    Collecting soupsieve>1.2
      Using cached soupsieve-2.3.2.post1-py3-none-any.whl (37 kB)
    Collecting webencodings
      Using cached webencodings-0.5.1-py2.py3-none-any.whl (11 kB)
    Collecting parso<0.9.0,>=0.8.0
      Using cached parso-0.8.3-py2.py3-none-any.whl (100 kB)
    Requirement already satisfied: attrs>=17.4.0 in /home/parallels/.local/lib/python3.8/site-packages (from jsonschema>=2.6->nbformat>=4.2.0->ipywidgets->jupyter->-r requirements.txt (line 3)) (21.4.0)
    Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /home/parallels/.local/lib/python3.8/site-packages (from jsonschema>=2.6->nbformat>=4.2.0->ipywidgets->jupyter->-r requirements.txt (line 3)) (0.18.1)
    Requirement already satisfied: importlib-resources>=1.4.0 in /home/parallels/.local/lib/python3.8/site-packages (from jsonschema>=2.6->nbformat>=4.2.0->ipywidgets->jupyter->-r requirements.txt (line 3)) (5.4.0)
    Collecting cffi>=1.0.1
      Using cached cffi-1.15.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (448 kB)
    Collecting pure-eval
      Using cached pure_eval-0.2.2-py3-none-any.whl (11 kB)
    Collecting executing
      Using cached executing-0.8.3-py2.py3-none-any.whl (16 kB)
    Collecting asttokens
      Using cached asttokens-2.0.5-py2.py3-none-any.whl (20 kB)
    Collecting pycparser
      Using cached pycparser-2.21-py2.py3-none-any.whl (118 kB)
    Requirement already satisfied: zipp>=3.1.0 in /home/parallels/.local/lib/python3.8/site-packages (from importlib-resources>=1.4.0->jsonschema>=2.6->nbformat>=4.2.0->ipywidgets->jupyter->-r requirements.txt (line 3)) (3.7.0)
    Installing collected packages: webencodings, wcwidth, simplekml, Send2Trash, pure-eval, ptyprocess, pickleshare, mistune, ipython-genutils, fastjsonschema, executing, backcall, wrapt, typing-extensions, traitlets, tornado, tinycss2, soupsieve, pyzmq, python-dateutil, pygments, pyfftw, pycparser, prompt-toolkit, prometheus-client, platformdirs, parso, pandocfilters, nest-asyncio, mccabe, lazy-object-proxy, jupyterlab-widgets, jupyterlab-pygments, isort, dill, defusedxml, debugpy, bleach, asttokens, terminado, stack-data, qtpy, matplotlib-inline, jupyter-core, jedi, cffi, bokeh, beautifulsoup4, astroid, smopy, pylint, nbformat, jupyter-client, ipython, argon2-cffi-bindings, nbclient, ipykernel, argon2-cffi, qtconsole, nbconvert, jupyter-console, notebook, widgetsnbextension, ipywidgets, jupyter
    Successfully installed Send2Trash-1.8.0 argon2-cffi-21.3.0 argon2-cffi-bindings-21.2.0 astroid-2.11.3 asttokens-2.0.5 backcall-0.2.0 beautifulsoup4-4.11.1 bleach-5.0.0 bokeh-2.1.1 cffi-1.15.0 debugpy-1.6.0 defusedxml-0.7.1 dill-0.3.4 executing-0.8.3 fastjsonschema-2.15.3 ipykernel-6.13.0 ipython-8.2.0 ipython-genutils-0.2.0 ipywidgets-7.7.0 isort-5.10.1 jedi-0.18.1 jupyter-1.0.0 jupyter-client-7.2.2 jupyter-console-6.4.3 jupyter-core-4.10.0 jupyterlab-pygments-0.2.2 jupyterlab-widgets-1.1.0 lazy-object-proxy-1.7.1 matplotlib-inline-0.1.3 mccabe-0.7.0 mistune-0.8.4 nbclient-0.6.0 nbconvert-6.5.0 nbformat-5.3.0 nest-asyncio-1.5.5 notebook-6.4.11 pandocfilters-1.5.0 parso-0.8.3 pickleshare-0.7.5 platformdirs-2.5.2 prometheus-client-0.14.1 prompt-toolkit-3.0.29 ptyprocess-0.7.0 pure-eval-0.2.2 pycparser-2.21 pyfftw-0.13.0 pygments-2.11.2 pylint-2.13.5 python-dateutil-2.8.2 pyzmq-22.3.0 qtconsole-5.3.0 qtpy-2.0.1 simplekml-1.3.6 smopy-0.0.8 soupsieve-2.3.2.post1 stack-data-0.2.0 terminado-0.13.3 tinycss2-1.1.1 tornado-6.1 traitlets-5.1.1 typing-extensions-4.2.0 wcwidth-0.2.5 webencodings-0.5.1 widgetsnbextension-3.6.0 wrapt-1.14.0
    
    
    opened by mengchaoheng 0
  • Scipy install is broken

    Scipy install is broken

    Running pip install -r requirements.txt in a new venv (tested on python 3.10.0 and 3.9.5) causes some gcc compiler error, looks like it's compiling numpy for scipy 1.3.3. It spams a few 1000 lines from gcc and ends with:

    error: legacy-install-failure
          
          × Encountered error while trying to install package.
          ╰─> numpy
          
          note: This is an issue with the package mentioned above, not pip.
          hint: See above for output from the failure.
          [end of output]
    

    Removing the version pin for scipy seems to work (but obveously might cause other problems).

    opened by eduardkieser 2
Owner
PX4 Drone Autopilot
Professional Open Source Autopilot Stack
PX4 Drone Autopilot
Log visualizer for whirl-framework

Lumberjack Log visualizer for whirl-framework Установка pip install -r requirements.txt Как пользоваться python3 lumberjack.py -l <путь до лога> -o <

Vladimir Malinovskii 2 Dec 19, 2022
VDLdraw - Batch plot the log files exported from VisualDL using Matplotlib

VDLdraw Batch plot the log files exported from VisualDL using Matplotlib. At pre

Yizhou Chen 5 Sep 26, 2022
Backend app for visualizing CANedge log files in Grafana (directly from local disk or S3)

CANedge Grafana Backend - Visualize CAN/LIN Data in Dashboards This project enables easy dashboard visualization of log files from the CANedge CAN/LIN

null 13 Dec 15, 2022
Sentiment Analysis application created with Python and Dash, hosted at socialsentiment.net

Social Sentiment Dash Application Live-streaming sentiment analysis application created with Python and Dash, hosted at SocialSentiment.net. Dash Tuto

Harrison 456 Dec 25, 2022
This is a web application to visualize various famous technical indicators and stocks tickers from user

Visualizing Technical Indicators Using Python and Plotly. Currently facing issues hosting the application on heroku. As soon as I am able to I'll like

null 4 Aug 4, 2022
BrowZen correlates your emotional states with the web sites you visit to give you actionable insights about how you spend your time browsing the web.

BrowZen BrowZen correlates your emotional states with the web sites you visit to give you actionable insights about how you spend your time browsing t

Nick Bild 36 Sep 28, 2022
An application that allows you to design and test your own stock trading algorithms in an attempt to beat the market.

StockBot is a Python application for designing and testing your own daily stock trading algorithms. Installation Use the

Ryan Cullen 280 Dec 19, 2022
Application for viewing pokemon regional variants.

Pokemon Regional Variants Application Application for viewing pokemon regional variants. Run The Source Code Download Python https://www.python.org/do

Michael J Bailey 4 Oct 8, 2021
A gui application to visualize various sorting algorithms using pure python.

Sorting Algorithm Visualizer A gui application to visualize various sorting algorithms using pure python. Language : Python 3 Libraries required Tkint

Rajarshi Banerjee 19 Nov 30, 2022
It's an application to calculate I from v and r. It can also plot a graph between V vs I.

Ohm-s-Law-Visualizer It's an application to calculate I from v and r using Ohm's Law. It can also plot a graph between V vs I. Story I'm doing my Unde

Sihab Sahariar 1 Nov 20, 2021
Function Plotter: a simple application with GUI to plot mathematical functions

Function-Plotter Function Plotter is a simple application with GUI to plot mathe

Mohamed Nabawe 4 Jan 3, 2022
Tools for exploratory data analysis in Python

Dora Exploratory data analysis toolkit for Python. Contents Summary Setup Usage Reading Data & Configuration Cleaning Feature Selection & Extraction V

Nathan Epstein 599 Dec 25, 2022
3D plotting and mesh analysis through a streamlined interface for the Visualization Toolkit (VTK)

PyVista Deployment Build Status Metrics Citation License Community 3D plotting and mesh analysis through a streamlined interface for the Visualization

PyVista 1.6k Jan 8, 2023
3D plotting and mesh analysis through a streamlined interface for the Visualization Toolkit (VTK)

PyVista Deployment Build Status Metrics Citation License Community 3D plotting and mesh analysis through a streamlined interface for the Visualization

PyVista 692 Feb 18, 2021
Python package for hypergraph analysis and visualization.

The HyperNetX library provides classes and methods for the analysis and visualization of complex network data. HyperNetX uses data structures designed to represent set systems containing nested data and/or multi-way relationships. The library generalizes traditional graph metrics to hypergraphs.

Pacific Northwest National Laboratory 304 Dec 27, 2022
Domain Connectivity Analysis Tools to analyze aggregate connectivity patterns across a set of domains during security investigations

DomainCAT (Domain Connectivity Analysis Tool) Domain Connectivity Analysis Tool is used to analyze aggregate connectivity patterns across a set of dom

DomainTools 34 Dec 9, 2022
Squidpy is a tool for the analysis and visualization of spatial molecular data.

Squidpy is a tool for the analysis and visualization of spatial molecular data. It builds on top of scanpy and anndata, from which it inherits modularity and scalability. It provides analysis tools that leverages the spatial coordinates of the data, as well as tissue images if available.

Theis Lab 251 Dec 19, 2022
📊📈 Serves up Pandas dataframes via the Django REST Framework for use in client-side (i.e. d3.js) visualizations and offline analysis (e.g. Excel)

???? Serves up Pandas dataframes via the Django REST Framework for use in client-side (i.e. d3.js) visualizations and offline analysis (e.g. Excel)

wq framework 1.2k Jan 1, 2023
Exploratory analysis and data visualization of aircraft accidents and incidents in Brazil.

Exploring aircraft accidents in Brazil Occurrencies with aircraft in Brazil are investigated by the Center for Investigation and Prevention of Aircraf

Augusto Herrmann 5 Dec 14, 2021