{ "info": { "author": "Art Zemon", "author_email": "art@zemon.name", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering :: Information Analysis", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "================\nMGL EFIS Plotter\n================\n\nThe MGL EFIS Plotter package parses the flight data logs from\nMGL EFIS products, such as the iEFIS.\nIt can read both ``IEFISS.REC`` and ``IEFISBB.DAT`` files.\n\nThe package is intended to be used inside a Jupyter Notebook\nto create graphs. It can also save data as CSV files.\n\nInstallation\n------------\n\nInstall Jupyter Notebook as part of Anaconda_\nor from the Jupyter_ website.\n\n.. _Anaconda: https://www.anaconda.com/\n.. _Jupyter: https://jupyter.org/\n\nInstall mgl_efis_plotter with pip or your favorite Python package manager::\n\n pip install mgl_efis_plotter\n\n\nSample Usage\n------------\n\nJupyter Notebook cell:\n\n.. code-block:: python\n\n from mgl_efis_plotter import *\n\n config = Config()\n flights = create_flights('IEFIS.REC', config)\n\n p = Plot(flights[0])\n # plot pressure altitude vs. density altitude vs. outside air temperature\n p.plot2(['pAltitude', 'densityAltitude', 'oat']).show()\n\nConfiguration\n-------------\n\nHere is the default configuration. You can do one of three things:\n\n1. Use it as-is.\n2. Use it mostly as-is, replacing just a few values.\n3. Replace almost everything, keeping only a few things unchanged.\n\n.. code-block:: python\n\n class Config:\n units = {\n 'airspeed': 'knots', # 'knots' or 'kph'\n 'barometer': 'hg', # 'hg' or 'millibars'\n 'fuel': 'gallons', # 'gallons' or 'liters'\n 'manifoldPressure': 'hg', # 'hg' or 'millibars'\n 'oilPressure': 'psi', # 'psi' or 'millibars'\n 'ambientTemperature': 'c', # 'f' or 'c'\n 'engineTemperature': 'f', # 'f' or 'c'\n }\n\n # set each thermocouple value to one of 'cht' or 'egt' or None (capitalized and without quotation marks)\n # the values that you set here must match the configuration of your RDAC\n thermocouples = {\n 1: 'cht',\n 2: 'egt',\n 3: 'cht',\n 4: 'egt',\n 5: 'cht',\n 6: 'egt',\n 7: 'cht',\n 8: 'egt',\n 9: None,\n 10: None,\n 11: None,\n 12: None,\n }\n\n plot_dimensions = (12, 8) # width & height in inches\n plot_dpi = 100 # dots per inch\n plot_font_size = 14\n\n rolling_window = 16 # bigger numbers make smoother graphs; start with 16\n\n # iEFIS seems to add about 260 seconds to the timestamp at the top of the hour\n new_flight_delta = 300\n\nTo use it as-is, create a cell like this:\n\n.. code-block:: python\n\n config = Config\n\nTo use it mostly as-is, replacing just a few values, create a cell like this:\n\n.. code-block:: python\n\n config = Config\n config.units['barometer'] = 'millibars'\n config.units['fuel'] = 'liters'\n\nReplace almost everything, keeping only a few things unchanged, create a cell like this:\n\n.. code-block:: python\n\n class MyConfig(Config):\n units = {\n 'airspeed': 'kph', # 'knots' or 'kph'\n 'barometer': 'millibars', # 'hg' or 'millibars'\n 'fuel': 'liters', # 'gallons' or 'liters'\n 'manifoldPressure': 'millibars', # 'hg' or 'millibars'\n 'oilPressure': 'millibars', # 'psi' or 'millibars'\n 'ambientTemperature': 'c', # 'f' or 'c'\n 'engineTemperature': 'c', # 'f' or 'c'\n }\n\n # set each thermocouple value to one of 'cht' or 'egt' or None (capitalized and without quotation marks)\n # the values that you set here must match the configuration of your RDAC\n thermocouples = {\n 1: 'cht',\n 2: 'cht',\n 3: 'cht',\n 4: 'cht',\n 5: 'egt',\n 6: 'egt',\n 7: 'egt',\n 8: 'egt',\n 9: None,\n 10: None,\n 11: None,\n 12: None,\n }\n config = MyConfig()\n\nLoad the Flights\n----------------\n\nOnce you have set up your configure, load the flights from your file and print a list of them with a cell like this:\n\n.. code-block:: python\n\n flights = create_flights('IEFIS.REC', config)\n\n for i in range(0, len(flights)):\n print(i, ':', flights[i])\n\nIt will print a list something like this:\n\n.. code-block::\n\n 0 : Flight at 2019-03-31 11:20:44 to 2019-03-31 11:40:48, 5775 messages, timestamps 486,454,570 to 486,455,853\n 1 : Flight at 2019-03-31 12:11:53 to 2019-03-31 12:48:18, 10501 messages, timestamps 486,458,099 to 486,460,433\n 2 : Flight at 2019-03-31 11:20:42 to 2019-03-31 11:20:42, 8 messages, timestamps 486,454,568 to 486,454,568\n\nSelect the flight you want and create a plot object out of it. For example, to work with flight #1, create this cell:\n\n.. code-block:: python\n\n p = Plot(flights[1])\n\nPlot One Attribute\n------------------\n\nPlot one attribute with lines like these examples:\n\n.. code-block:: python\n\n p.plot('asi').show()\n p.plot('asi', 'Airspeed').show()\n p.plot('cht').show()\n\nThe second parameter is optional and is used to label the Y-axis. The two attributes \"cht\" and \"egt\" are special;\nthey display multiple lines on the graph, one per cylinder.\n\nPlot Multiple Attributes\n------------------------\n\nPlot multiple attributes on a single graph with lines line these examples.\nNote that the list of attributes is surrounded by square brackets.\n\n.. code-block:: python\n\n p.plot(['asi', 'groundSpeed']).show()\n p.plot(['asi', 'groundSpeed'], ['Airspeed', 'Ground Speed']).show()\n p.plot(['pAltitude', 'densityAltitude', 'oat']).show()\n\nPut It All Together\n-------------------\n\nHere are a few examples, putting everything together into a single cell.\nNote that you can keep reusing the ``p`` object after you have created it.\n\n.. code-block:: python\n\n from mgl_efis_plotter import *\n\n config = Config()\n flights = create_flights('IEFIS.REC', config)\n\n p = Plot(flights[0])\n\n p.plot('asi').show()\n\n p.plot2(['asi', 'oilTemperature1']).show()\n\n p.plot2(['pAltitude', 'densityAltitude', 'oat']).show()\n\nList All Available Attributes\n-----------------------------\n\nYou can get a list of all of the attributes available for your flight with this line.\n\n.. code-block:: python\n\n p.list_attributes()\n\nSave a Plot to a File\n---------------------\n\nYou can save a plot to a file by replacing ``show()`` with ``save(FILENAME)`` like this:\n\n.. code-block:: python\n\n p.plot('vsi', 'Vertical Speed').save('verticalspeed.png')\n\nExport Data to a CSV File\n-------------------------\n\nYou can export any set of attributes to a CSV file with a cell like this:\n\n.. code-block:: python\n\n p.flight.save_csv('flightdata.csv', ['asi', 'vsi', 'densityAltitude', 'oat', 'rpm', 'manifoldPressure'])\n\nAdvanced Usage\n--------------\n\nThe X-axis of every plot is minutes from the beginning of the flight.\nYou can zoom in on any section of the flight by limiting the X-axis to a range of minutes by adding the ``xlim`` option\nto either ``plot()`` or ``plot2()``.\nHere is an example, zooming in on the timespan beginning 5 minutes after takeoff and ending 10 minutes after takeoff.\n\n.. code-block:: python\n\n p.plot('cht', xlim=(5, 10)).show()\n\nAuthor\n------\n\n| Art Zemon\n| Email: art@zemon.name\n| Blog: https://cheerfulcurmudgeon.com/\n\nCopyright and MIT License\n-------------------------\n\n|copy| Copyright 2019 Art Zemon.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n.. |copy| unicode:: U+000A9 .. COPYRIGHT SIGN\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/azemon/mgl_efis_plotter", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "mgl_efis_plotter", "package_url": "https://pypi.org/project/mgl_efis_plotter/", "platform": "", "project_url": "https://pypi.org/project/mgl_efis_plotter/", "project_urls": { "Homepage": "https://github.com/azemon/mgl_efis_plotter" }, "release_url": "https://pypi.org/project/mgl_efis_plotter/0.2.2/", "requires_dist": null, "requires_python": "", "summary": "MGL EFIS data plotter", "version": "0.2.2" }, "last_serial": 5172726, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "36e3107d96a239fdb2b3647c25d38bc0", "sha256": "bd19369a2ff70a12b1237d775cd55aa1e62a20b445d9862a35b7635fd88c9846" }, "downloads": -1, "filename": "mgl_efis_plotter-0.1.1.tar.gz", "has_sig": false, "md5_digest": "36e3107d96a239fdb2b3647c25d38bc0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9764, "upload_time": "2019-04-03T12:31:29", "url": "https://files.pythonhosted.org/packages/ae/8c/ef38351a5b9fdfa1aa37265b233a6e2845d3c794aeda9f2e3f19ce231c9d/mgl_efis_plotter-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "068705dd88734e2820d910d3a6c9ed4c", "sha256": "c2c6658ce9d90acf189f91213edf6b3dfe30ac99fecf0cb684d729e666fedb83" }, "downloads": -1, "filename": "mgl_efis_plotter-0.1.2.tar.gz", "has_sig": false, "md5_digest": "068705dd88734e2820d910d3a6c9ed4c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11052, "upload_time": "2019-04-04T04:43:14", "url": "https://files.pythonhosted.org/packages/90/b6/c5f1a3ab1aace67085d8ba3d4a4c1cd114c397b63e64dc86ab1bf5c59c13/mgl_efis_plotter-0.1.2.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "276c19a57cdf9ed3d92f45d8a686cb8c", "sha256": "4102395ef0484dd0eda1dc448883d1c9fcef444791ef1e7a1f0bdcaf375197da" }, "downloads": -1, "filename": "mgl_efis_plotter-0.1.4.tar.gz", "has_sig": false, "md5_digest": "276c19a57cdf9ed3d92f45d8a686cb8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 143799, "upload_time": "2019-04-04T15:33:03", "url": "https://files.pythonhosted.org/packages/0a/b4/e27bac1a19d75efa51ffedacb594ce2b599ebf546a49ddd0920179bf5b8c/mgl_efis_plotter-0.1.4.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "822fe6adb7d978a345bd3d61ae520c65", "sha256": "3b9f0afe7279a71f7f7fae2933b3db687e5d0f81e0597434220e0bdfc78d912c" }, "downloads": -1, "filename": "mgl_efis_plotter-0.2.0.tar.gz", "has_sig": false, "md5_digest": "822fe6adb7d978a345bd3d61ae520c65", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16166, "upload_time": "2019-04-05T03:51:17", "url": "https://files.pythonhosted.org/packages/50/2c/04d56c7458adb1ca08be9b34e03bb5f7805f99cac1cb0908a9b555ea85f5/mgl_efis_plotter-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "44a22543900c72a26224fe132b17affd", "sha256": "b3faebef1331a43f464ed91e2d64c450a94b11bcc391a35a5ea23d6dc46d0c74" }, "downloads": -1, "filename": "mgl_efis_plotter-0.2.1.tar.gz", "has_sig": false, "md5_digest": "44a22543900c72a26224fe132b17affd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16193, "upload_time": "2019-04-06T14:21:09", "url": "https://files.pythonhosted.org/packages/05/f2/7bdb9e82a4fca2f3d3ea836a0efe3ab60105d9b6e4a511cad05b8a4fe72c/mgl_efis_plotter-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "4cd37e15bb4c4f99dde0974f77e92477", "sha256": "b7a715424a9d6b8848e72ed0ca91c725c279a73a5eaba8323e0cf15523364b12" }, "downloads": -1, "filename": "mgl_efis_plotter-0.2.2.tar.gz", "has_sig": false, "md5_digest": "4cd37e15bb4c4f99dde0974f77e92477", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16201, "upload_time": "2019-04-22T12:10:15", "url": "https://files.pythonhosted.org/packages/90/9a/a97ee8d5c1ffc299255973786906e0b5ae4b4391411f918ef25d7a019ea9/mgl_efis_plotter-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4cd37e15bb4c4f99dde0974f77e92477", "sha256": "b7a715424a9d6b8848e72ed0ca91c725c279a73a5eaba8323e0cf15523364b12" }, "downloads": -1, "filename": "mgl_efis_plotter-0.2.2.tar.gz", "has_sig": false, "md5_digest": "4cd37e15bb4c4f99dde0974f77e92477", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16201, "upload_time": "2019-04-22T12:10:15", "url": "https://files.pythonhosted.org/packages/90/9a/a97ee8d5c1ffc299255973786906e0b5ae4b4391411f918ef25d7a019ea9/mgl_efis_plotter-0.2.2.tar.gz" } ] }