{ "info": { "author": "Kostis Anagnostopoulos @ European Commission (JRC)", "author_email": "ankostis@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "Intended Audience :: Manufacturing", "Intended Audience :: Science/Research", "License :: OSI Approved :: European Union Public Licence 1.1 (EUPL 1.1)", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: OS Independent", "Operating System :: POSIX", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: Implementation :: CPython", "Topic :: Scientific/Engineering", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "################################################\n*fuefit* fits engine-maps on physical parameters\n################################################\n|dev-status| |build-status| |docs-status| |pypi-status| |downloads-count| |github-issues|\n\n:Release: x.x.x\n:Documentation: https://fuefit.readthedocs.org/\n:Source: https://github.com/ankostis/fuefit\n:PyPI repo: https://pypi.python.org/pypi/fuefit\n:Keywords: automotive, car, cars, consumption, engine, engine-map, fitting, fuel, vehicle, vehicles\n:Copyright: 2014 European Commission (`JRC-IET `_)\n:License: `EUPL 1.1+ `_\n\n*Fuefit* is a python package that calculates fitted fuel-maps from measured engine data-points based on coefficients with physical meaning.\n\n\n.. _before-intro:\n\nIntroduction\n============\n\nOverview\n--------\nThe *Fuefit* calculator was developed to apply a statistical fit on measured engine fuel consumption data \n(engine map). This allows the reduction of the information necessary to describe an engine fuel map \nfrom several hundred points to seven statistically calculated parameters, with limited loss of information. \n\nMore specifically this software works like that:\n\n1) **Accepts engine data as input**, constituting of triplets of RPM, Power and Fuel-Consumption \n or equivalent quantities eg mean piston speed (CM), brake mean effective pressure (BMEP) or Torque, \n fuel mean effective pressure (PMF). \n\n2) **Fits the provided input** to the following formula [#]_ [#]_ [#]_:\n\n .. BMEP = (a + b*CM + c*CM**2)*PMF + (a2 + b2*CM)*PMF**2 + loss0 + loss2*CM**2\n .. math::\n \n \\mathbf{BMEP} = (a + b\\times{\\mathbf{CM}} + c\\times{\\mathbf{CM^2}})\\times{\\mathbf{PMF}} + \n (a2 + b2\\times{\\mathbf{CM}})\\times{\\mathbf{PMF^2}} + loss0 + loss2\\times{\\mathbf{CM^2}}\n\n3) **Recalculates and (optionally) plots engine-maps** based on the coefficients \n that describe the fit: \n\n .. math::\n \n a, b, c, a2, b2, loss0, loss2\n\n\nAn \"execution\" or a \"run\" of a calculation along with the most important pieces of data \nare depicted in the following diagram::\n\n\n .----------------------------. .-----------------------------.\n / Input-Model / / Output(Fitted)-Model /\n /----------------------------/ /-----------------------------/\n / +--engine / / +--engine /\n / | +--... / / | +--fc_map_coeffs /\n / +--params / ____________ / +--measured_eng_points /\n / | +--... / | | / | n p fc bmep ... /\n / +--measured_eng_points /==>| Calculator |==>/ | ... ... ... ... /\n / n p fc / |____________| / +--fitted_eng_points /\n / -- ---- --- / / | n p fc /\n / 0 0.0 0 / / | ... ... ... /\n / 600 42.5 25 / / +--mesh_eng_points /\n / ... ... ... / / n p fc /\n / / / ... ... ... /\n '----------------------------' '-----------------------------'\n\n\nApart from various engine-characteristics under ``/engine`` the table-columns such as `capacity` and `p_rated`, \nthe table under ``/measured_eng_points`` must contain *at least* one column \nfrom each of the following categories (column-headers are case-insensitive):\n\n1. Engine-speed::\n\n N [1/min]\n N_norm [-] : where N_norm = (N \u2013 N_idle) / (N_rated-N_idle)\n CM [m/sec]\n\n2. Load-Power-capability::\n\n P [kW]\n P_norm [-] : where P_norm = P/P_MAX\n T [Nm]\n BMEP [bar]\n\n3. Fuel-consumption::\n\n FC [g/h]\n FC_norm [g/KWh] : where FC_norm = FC[g/h] / P_MAX [kW]\n PMF [bar]\n\n\nThe *Input & fitted data-model* described above are trees of strings and numbers, assembled with:\n\n* sequences,\n* dictionaries,\n* class(``pandas.DataFrame``),\n* class(``pandas.Series``).\n\n\n.. [#] Bastiaan Zuurendonk, Maarten Steinbuch(2005):\n \"Advanced Fuel Consumption and Emission Modeling using Willans line scaling techniques for engines\",\n *Technische Universiteit Eindhoven*, 2005, \n Department Mechanical Engineering, Dynamics and Control Technology Group,\n http://alexandria.tue.nl/repository/books/612441.pdf\n.. [#] Yuan Zou, Dong-ge Li, and Xiao-song Hu (2012): \n \"Optimal Sizing and Control Strategy Design for Heavy Hybrid Electric Truck\", \n *Mathematical Problems in Engineering* Volume 2012, \n Article ID 404073, 15 pages doi:10.1155/2012/404073\n.. [#] Xi Wei (2004): \n \"Modeling and control of a hybrid electric drivetrain for optimum fuel economy, performance and driveability\", \n Dissertation Presented in Partial Fulfillment of the Requirements \n for the Degree Doctor of Philosophy in the Graduate School of The Ohio State University\n\n\n\nQuick-start\n-----------\nThe program runs on **Python-3.3+** and requires *numpy/scipy*, *pandas* and *win32* libraries \nalong with their native backends to be installed.\n \nOn *Windows*/*OS X*, it is recommended to use one of the following \"scientific\" python-distributions, \nas they already include the native libraries and can install without administrative priviledges: \n\n* `WinPython `_ (*Windows* only),\n* `Anaconda `_,\n* `Canopy `_,\n\n\nAssuming you have a working python-environment, open a *command-shell* \n(in *Windows* use program(``cmd.exe``) BUT ensure program(``python.exe``) is in its envvar(``PATH``)) \nand try the following *console-commands*: \n\n:Install:\n .. code-block:: console\n\n $ pip install fuefit\n $ fuefit --winmenus ## Adds StartMenu-items, Windows only.\n \n See: doc(``install``)\n \n:Cmd-line:\n .. code-block:: console\n\n $ fuefit --version\n 0.0.6\n \n $ fuefit --help\n ...\n \n ## Change-directory into the `fuefit/test/` folder in the *sources*.\n $ fuefit -I FuelFit_real.csv header+=0 \\\n -I ./FuelFit.xlsx sheetname+=0 header@=None names:='[\"p\",\"n\",\"fc\"]' \\\n -I ./engine.csv file_frmt=SERIES model_path=/engine header@=None \\\n -m /engine/fuel=petrol \\\n -m /params/plot_maps@=True \\\n -O full_results_model.json \\\n -O fit_coeffs.csv model_path=/engine/fc_map_coeffs index?=false \\\n -O t1.csv model_path=/measured_eng_points index?=false \\\n -O t2.csv model_path=/mesh_eng_points index?=false \\\n\n See: `cmd-line-usage`_\n \n:Excel:\n .. code-block:: console\n\n $ fuefit --excelrun ## Windows & OS X only\n \n See: `excel-usage`_\n\n:Python-code: \n code-block::\n \n >>> import pandas as pd\n >>> from fuefit import datamodel, processor, test\n \n >>> inp_model = datamodel.base_model()\n >>> inp_model.update({...}) ## See \"Python Usage\" below. # doctest: +SKIP\n >>> inp_model['engine_points'] = pd.read_csv('measured.csv') ## Pandas can read Excel, matlab, ... # doctest: +SKIP\n >>> datamodel.set_jsonpointer(inp_model, '/params/plot_maps', True)\n \n >>> datamodel.validade_model(inp_model, additional_properties=False) # doctest: +SKIP \n \n >>> out_model = processor.run(inp_model) # doctest: +SKIP\n \n >>> print(datamodel.resolve_jsonpointer(out_model, '/engine/fc_map_coeffs')) # doctest: +SKIP\n a 164.110667\n b 7051.867419\n c 63015.519469\n a2 0.121139\n b2 -493.301306\n loss0 -1637.894603\n loss2 -1047463.140758\n dtype: float64 \n\n See: `python-usage`_\n\n.. Tip::\n The commands beginning with ``$``, above, imply a *Unix* like operating system with a *POSIX* shell\n (*Linux*, *OS X*). Although the commands are simple and easy to translate in its *Windows* counterparts, \n it would be worthwile to install `Cygwin `_ to get the same environment on *Windows*.\n If you choose to do that, include also the following packages in the *Cygwin*'s installation wizard::\n\n * git, git-completion\n * make, zip, unzip, bzip2\n * openssh, curl, wget\n\n But do not install/rely on cygwin's outdated python environment.\n\n\n\n.. _before-install:\n\nInstall\n=======\nFuefit-x.x.x runs on **Python-3.3+**, and it is distributed on `Wheels `_.\n\n.. Note::\n This project depends on the *numpy/scipy*, *pandas* and *win32* python-packages\n that themselfs require the use of *C* and *Fortran* compilers to build from sources. \n To avoid this hussle, you can choose instead a self-wrapped python distribution like\n *Anaconda/minoconda*, *Winpython*, or *Canopy*.\n\n .. Tip::\n * Under *Windows* you can try the self-wrapped `WinPython `_ distribution,\n a higly active project, that can even compile native libraries using an installations of *Visual Studio*, \n if available (required for instance when upgrading ``numpy/scipy``, ``pandas`` or ``matplotlib`` with command(``pip``)).\n \n Just remember to **Register your WinPython installation** after installation and \n **add your installation into** envvar(``PATH``) (see doc(``faq``)):\n \n * To register it, go to ``Start menu --> All Programs --> WinPython --> WinPython ControlPanel``, and then\n ``Options --> Register Distribution`` .\n * For the path, add or modify the registry string-key ``[HKEY_CURRENT_USER\\Environment] \"PATH\"``.\n \n * An alternative scientific python-environment is the `Anaconda `_ \n cross-platform distribution (*Windows*, *Linux* and *OS X*), or its lighter-weight alternative, \n `miniconda `_.\n \n On this environment you will need to install this project's dependencies manually \n using a combination of program(``conda``) and program(``pip``) commands.\n See file(``requirements/miniconda.txt``), and peek at the example script commands in file(``.travis.yaml``).\n \n * Check for alternative installation instructions on the various python environments and platforms\n at `the pandas site `_.\n\n See doc(``install``) for more details\n\nBefore installing it, make sure that there are no older versions left over. \nSo run this console-command (using program(``cmd.exe``) in windows) until you cannot find \nany project installed:\n\n.. code-block:: console\n\n $ pip uninstall fuefit ## Use `pip3` if both python-2 & 3 are in PATH.\n \n \nYou can install the project directly from the |pypi|_ the \"standard\" way, \nby typing the command(``pip``) in the console:\n\n.. code-block:: console\n\n $ pip install fuefit\n\n\n* If you want to install a *pre-release* version (the version-string is not plain numbers, but \n ends with ``alpha``, ``beta.2`` or something else), use additionally option(``--pre``).\n\n* If you want to upgrade an existing installation along with all its dependencies, \n add also option(``--upgrade``) (or option(``-U``) equivalently), but then the build might take some \n considerable time to finish. Also there is the possibility the upgraded libraries might break \n existing programs(!) so use it with caution, or from within a |virtualenv|_. \n\n* To install an older version issue the console-command:\n \n .. code-block:: console\n \n $ pip install fuefit=1.1.1 ## Use `--pre` if version-string has a build-suffix.\n\n* To install it for different Python environments, repeat the procedure using \n the appropriate program(``python.exe``) interpreter for each environment.\n\n* .. Tip::\n To debug installation problems, you can export a non-empty envvar(``DISTUTILS_DEBUG``) \n and *distutils* will print detailed information about what it is doing and/or \n print the whole command line when an external program (like a C compiler) fails.\n\n\nAfter a successful installation, it is important that you check which version is visible in your envvar(``PATH``),\nso type this console-command:\n\n.. code-block:: console\n\n $ fuefit --version\n 0.0.6\n\n\n\nInstalling from sources (for advanced users familiar with *git*)\n----------------------------------------------------------------\nIf you download the sources you have more options for installation.\nThere are various methods to get hold of them:\n\n* Download and extract a `release-snapshot from github `_.\n* Download and extract a ``sdist`` *source* distribution from |pypi|_.\n* Clone the *git-repository* at *github*. Assuming you have a working installation of `git `_\n you can fetch and install the latest version of the project with the following series of commands:\n \n .. code-block:: console\n \n $ git clone \"https://github.com/ankostis/fuefit.git\" fuefit.git\n $ cd fuefit.git\n $ python setup.py install ## Use `python3` if both python-2 & 3 installed.\n \n\nWhen working with sources, you need to have installed all libraries that the project depends on. \nParticularly for the latest *WinPython* environments (*Windows* / *OS X*) you can install \nthe necessary dependencies with: \n\n.. code-block:: console\n\n $ pip install -r requirements/execution.txt .\n\n\nThe previous command installs a \"snapshot\" of the project as it is found in the sources.\nIf you wish to link the project's sources with your python environment, install the project \nin `development mode `_:\n\n.. code-block:: console\n\n $ python setup.py develop\n\n\n.. Note:: This last command installs any missing dependencies inside the project-folder.\n\n\nAnaconda install\n----------------\nThe installation to *Anaconda* (ie *OS X*) works without any differences from the ``pip`` procedure \ndescribed so far.\n \nTo install it on *miniconda* environment, you need to install first the project's *native* dependencies \n(numpy/scipy), so you need to download the sources (see above). \nThen open a *bash-shell* inside them and type the following commands: \n\n.. code-block:: console\n\n $ coda install `cat requirements/miniconda.txt`\n $ pip install lmfit ## Workaround lmfit-py#149 \n $ python setup.py install\n $ fuefit --version\n 0.0.6\n\n\n\n.. _before-usage:\n\nUsage\n=====\n.. _excel-usage:\n\nExcel usage\n-----------\n.. Attention:: Excel-integration requires Python 3 and *Windows* or *OS X*!\n\nIn *Windows* and *OS X* you may utilize the `xlwings `_ library \nto use Excel files for providing input and output to the program.\n\nTo create the necessary template-files in your current-directory, type this console-command:\n\n.. code-block:: console\n\n $ fuefit --excel\n \n\nType ``fuefit --excel {file_path}`` if you want to specify a different destination path.\n\nIn *windows*/*OS X* you can type ``fuefit --excelrun`` and the files will be created in your home-directory \nand the Excel will immediately open them.\n\n\nWhat the above commands do is to create 2 files:\n\nfile(``FuefitExcelRunner{#}.xlsm``)\n The python-enabled excel-file where input and output data are written, as seen in the screenshot below:\n \n .. docs/xlwings_screenshot.png\n :scale: 50%\n :alt: Screenshot of the `FuefitExcelRunner.xlsm` file.\n \n After opening it the first tie, enable the macros on the workbook, select the python-code at the left and click \n the ``Run Selection as Pyhon`` button; one sheet per vehicle should be created.\n\n The excel-file contains additionally appropriate *VBA* modules allowing you to invoke *Python code* \n present in *selected cells* with a click of a button, and python-functions declared in the python-script, below,\n using the `mypy` namespace. \n \n To add more input-columns, you need to set as column *Headers* the *json-pointers* path of the desired \n model item (see `python-usage`_ below,).\n\nfile(``FuefitExcelRunner{#}.py``) \n Python functions used by the above xls-file for running a batch of experiments. \n \n The particular functions included reads multiple vehicles from the input table with various \n vehicle characteristics and/or experiment coefficients, and then it adds a new worksheet containing \n the cycle-run of each vehicle . \n Of course you can edit it to further fit your needs.\n\n\n.. Note:: You may reverse the procedure described above and run the python-script instead:\n\n .. code-block:: console\n \n $ python FuefitExcelRunner.py\n \n The script will open the excel-file, run the experiments and add the new sheets, but in case any errors occur, \n this time you can debug them, if you had executed the script through `LiClipse `__, \n or *IPython*! \n\n\nSome general notes regarding the python-code from excel-cells:\n\n* An elaborate syntax to reference excel *cells*, *rows*, *columns* or *tables* from python code, and \n to read them as class(``pandas.DataFrame``) is utilized by the Excel .\n Read its syntax at func(``~fuefit.excel.FuefitExcelRunner.resolve_excel_ref``).\n* On each invocation, the predefined VBA module `pandalon` executes a dynamically generated python-script file\n in the same folder where the excel-file resides, which, among others, imports the \"sister\" python-script file.\n You can read & modify the sister python-script to import libraries such as 'numpy' and 'pandas', \n or pre-define utility python functions.\n* The name of the sister python-script is automatically calculated from the name of the Excel-file,\n and it must be valid as a python module-name. Therefore:\n * Do not use non-alphanumeric characters such as spaces(` `), dashes(`-`) and dots(`.`) on the Excel-file.\n * If you rename the excel-file, rename also the python-file, or add this python ``import as mypy```\n* On errors, a log-file is written in the same folder where the excel-file resides, \n for as long as **the message-box is visible, and it is deleted automatically after you click 'ok'!**\n* Read http://docs.xlwings.org/quickstart.html\n\n\n.. _cmd-line-usage:\n\nCmd-line usage\n--------------\nExample command:\n\n.. code-block:: console\n\n fuefit -v\\\n -I fuefit/test/FuelFit.xlsx sheetname+=0 header@=None names:='[\"p\",\"rpm\",\"fc\"]' \\\n -I fuefit/test/engine.csv file_frmt=SERIES model_path=/engine header@=None \\\n -m /engine/fuel=petrol \\\n -O ~t2.csv model_path=/fitted_eng_points index?=false \\\n -O ~t2.csv model_path=/mesh_eng_points index?=false \\\n -O ~t.csv model_path= -m /params/plot_maps@=True\n\n\n.. _python-usage:\n\nPython usage\n------------\nThe most powerful way to interact with the project is through a python REPL (Read-Eval-Print Loop).\nSo fire-up a command(``python``) or command(``ipython``) shell and first try to import the project just to check its version:\n\ncode-block::\n\n >>> import fuefit\n\n >>> fuefit.__version__ ## Check version once more.\n '0.0.6'\n\n >>> fuefit.__file__ ## To check where it was installed. # doctest: +SKIP\n /usr/local/lib/site-package/fuefit-...\n\n\n.. Tip:\n The use of program(``ipython``) interpreter is preffered over plain program(``python``) since the former \n provides various user-friendly facilities, such as pressing kbd(``Tab``) for receiving completions on commands, or \n adding `?` or `??` at the end of commands to view their help *docstrings* and read their source-code.\n \n Additionally you can copy any python listing from this tutorial starting with ``>>>`` and ``...`` \n and paste it directly into the program(``ipython``) interpreter; the prefixes will be removed automatically. \n But in command(``python``) you have to remove them yourself.\n\n\nIf the version was as expected, take the **base-model** and extend it with your engine-data \n(strings and numbers): \n\n.. code-block:: pycon\n\n >>> from fuefit import datamodel, processor\n\n >>> inp_model = datamodel.base_model()\n >>> inp_model.update({\n ... \"engine\": {\n ... \"fuel\": \"diesel\",\n ... \"p_max\": 95,\n ... \"n_idle\": 850,\n ... \"n_rated\": 6500,\n ... \"stroke\": 94.2,\n ... \"capacity\": 2000,\n ... \"bore\": None, ##You do not have to include these,\n ... \"cylinders\": None, ## they are just for displaying some more engine properties.\n ... }\n ... })\n\n >>> import pandas as pd\n >>> df = pd.read_excel('fuefit/test/FuelFit.xlsx', 0, header=None, names=[\"n\",\"p\",\"fc\"])\n >>> inp_model['measured_eng_points'] = df\n\n\nFor information on the accepted model-data, check both its **JSON-schema** at func(``~fuefit.datamodel.model_schema``),\nand the func(``~fuefit.datamodel.base_model``):\n\nNext you have to *validate* it against its *JSON-schema*:\n\n.. code-block:: pycon\n\n >>> datamodel.validate_model(inp_model, additional_properties=False)\n\n\nIf validation is successful, you may then feed this model-tree to the mod(``fuefit.processor``),\nto get back the results:\n\n.. code-block:: pycon\n\n >>> out_model = processor.run(inp_model)\n\n >>> print(datamodel.resolve_jsonpointer(out_model, '/engine/fc_map_coeffs'))\n a 164.110667\n b 7051.867419\n c 63015.519469\n a2 0.121139\n b2 -493.301306\n loss0 -1637.894603\n loss2 -1047463.140758\n dtype: float64\n\n >>> print(out_model['fitted_eng_points'].shape)\n (262, 11)\n\n\n.. Hint::\n You can always check the sample code at the Test-cases and in the cmdline tool mod(``fuefit.__main__``).\n\n\nFitting Parameterization\n^^^^^^^^^^^^^^^^^^^^^^^^\nThe `'lmfit' fitting library `_ can be parameterized by \nsetting/modifying various input-model properties under ``/params/fitting/``.\n\nIn particular under ``/params/fitting/coeffs/`` you can set a dictionary of *coefficient-name* -->\nclass(``lmfit.parameters.Parameter``) such as ``min/max/value``,\nas defined by the *lmfit* library (check the default props under func(``fuefit.datamodel.base_model()``) and the\nexample columns in the *ExcelRunner*).\n\ninfo::\n http://lmfit.github.io/lmfit-py/parameters.html#Parameters\n\n\n\n\n.. _before-contribute:\n\nContribute\n==========\n\nThis project is hosted in **github**. \nTo provide feedback about bugs and errors or questions and requests for enhancements,\nuse `github's Issue-tracker `_.\n\n\n\nSources & Dependencies\n----------------------\nTo get involved with development, you need a POSIX environment to fully build it\n(*Linux*, *OSX*, or *Cygwin* on *Windows*). \n\n.. Admonition:: Liclipse IDE\n :class: note\n\n Within the sources there are two sample files for the comprehensive\n `LiClipse IDE `_:\n \n * file(``eclipse.project``) \n * file(``eclipse.pydevproject``) \n \n Remove the `eclipse` prefix, (but leave the dot(``.``)) and import it as \"existing project\" from \n Eclipse's `File` menu.\n \n Another issue is due to the fact that LiClipse contains its own implementation of *Git*, *EGit*,\n which badly interacts with unix *symbolic-links*, such as the file(``docs/docs``), and it detects\n working-directory changes even after a fresh checkout. To workaround this, Right-click on the above file\n ``Properties --> Team --> Advanced --> Assume Unchanged`` \n\n\nDevelopment team\n----------------\n* Kostis Anagnostopoulos (software design & implementation)\n* Georgios Fontaras (methodology inception, engineering support & validation)\n\nContributing Authors\n^^^^^^^^^^^^^^^^^^^^^\n* Stefanos Tsiakmakis\n* Biagio Ciuffo\n* Alessandro Marotta\n\nAuthors would like to thank experts of the SGS group for providing useful feedback.\n\n\n.. _before-indices:\n\nIndices\n=======\n\n.. _before-footer:\n\nrubric::\n\n CM\n `Mean Piston Speed `_, \n a measure for the engines operating speed [m/sec]\n \n BMEP\n `Brake Mean Effective Pressure `_, \n a valuable measure of an engine's capacity to do work that is independent of engine displacement) [bar]\n \n PMF\n *Available Mean Effective Pressure*, the maximum mean effective pressure calculated based on \n the energy content of the fuel [bar]\n \n JSON-schema\n The `JSON schema `_ is an `IETF draft `_\n that provides a *contract* for what JSON-data is required for a given application and how to interact\n with it. JSON Schema is intended to define validation, documentation, hyperlink navigation, and\n interaction control of JSON data.\n You can learn more about it from this `excellent guide `_,\n and experiment with this `on-line validator `_.\n\n JSON-pointer\n JSON Pointer(rfc(``6901``)) defines a string syntax for identifying a specific value within\n a JavaScript Object Notation (JSON) document. It aims to serve the same purpose as *XPath* from the XML world,\n but it is much simpler.\n\n\n.. _before-replacements:\n\n.. |virtualenv| replace:: *virtualenv* (isolated Python environment)\n.. _virtualenv: http://docs.python-guide.org/en/latest/dev/virtualenvs/\n\n.. |pypi| replace:: *PyPi* repo\n.. _pypi: https://pypi.python.org/pypi/fuefit\n\n.. |build-status| image:: https://travis-ci.org/ankostis/fuefit.svg\n :alt: Integration-build status\n :scale: 100%\n :target: https://travis-ci.org/ankostis/fuefit/builds\n\n.. |docs-status| image:: https://readthedocs.org/projects/fuefit/badge/\n :alt: Documentation status\n :scale: 100%\n :target: https://readthedocs.org/builds/fuefit/\n\n.. |pypi-status| image:: https://pypip.in/v/fuefit/badge.png\n :target: https://pypi.python.org/pypi/fuefit/\n :alt: Latest Version in PyPI\n\n.. |python-ver| image:: https://pypip.in/py_versions/fuefit/badge.svg\n :target: https://pypi.python.org/pypi/fuefit/\n :alt: Supported Python versions\n\n.. |dev-status| image:: https://pypip.in/status/fuefit/badge.svg\n :target: https://pypi.python.org/pypi/fuefit/\n :alt: Development Status\n\n.. |downloads-count| image:: https://pypip.in/download/fuefit/badge.svg?period=week\n :target: https://pypi.python.org/pypi/fuefit/\n :alt: Downloads\n\n.. |github-issues| image:: http://img.shields.io/github/issues/ankostis/fuefit.svg\n :target: https://github.com/ankostis/fuefit/issues\n :alt: Issues count", "description_content_type": null, "docs_url": null, "download_url": "https://github.com/ankostis/fuefit/tarball/v0.0.6", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ankostis/fuefit", "keywords": "automotive,vehicle,vehicles,car,cars,fuel,consumption,engine,engine-map,fitting", "license": "European Union Public Licence 1.1 or later (EUPL 1.1+)", "maintainer": null, "maintainer_email": null, "name": "fuefit", "package_url": "https://pypi.org/project/fuefit/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/fuefit/", "project_urls": { "Download": "https://github.com/ankostis/fuefit/tarball/v0.0.6", "Homepage": "https://github.com/ankostis/fuefit" }, "release_url": "https://pypi.org/project/fuefit/0.0.6/", "requires_dist": null, "requires_python": null, "summary": "*fuefit* fits engine-maps on physical parameters", "version": "0.0.6" }, "last_serial": 3561383, "releases": { "0.0.3-beta.1": [], "0.0.3-beta.2": [ { "comment_text": "", "digests": { "md5": "22f474a9dbe0e5d8be85f882186badfe", "sha256": "8d1303cce8671bd92f6bf81ae46766cf5c1c34b9f4d5448ca234dc90649bfcab" }, "downloads": -1, "filename": "fuefit-0.0.3_beta.2-py3-none-any.whl", "has_sig": false, "md5_digest": "22f474a9dbe0e5d8be85f882186badfe", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 258676, "upload_time": "2014-11-03T19:13:43", "url": "https://files.pythonhosted.org/packages/42/75/a657650737ffac7917c1b7b2e26195b269a843334fa13db4d0907f041be3/fuefit-0.0.3_beta.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1dbe72d5c17e29d530a75105e51f40be", "sha256": "1a4f9cae7b8f6955bf214a610bfa2d444bc9419c1d31bb41b4f24c73663545b9" }, "downloads": -1, "filename": "fuefit-0.0.3-beta.2.zip", "has_sig": false, "md5_digest": "1dbe72d5c17e29d530a75105e51f40be", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 966260, "upload_time": "2014-11-03T19:13:40", "url": "https://files.pythonhosted.org/packages/d2/86/6e45decfa54a8a308830878ad6e4a5064192fbc118fbe0497748a602012e/fuefit-0.0.3-beta.2.zip" } ], "0.0.3-beta.3": [ { "comment_text": "", "digests": { "md5": "d2ba7621a37ee53283ff538bc04db5d0", "sha256": "9d111819f871987dc3b7bec3722fca3b614256961c893150e86fe706e2e8779a" }, "downloads": -1, "filename": "fuefit-0.0.3_beta.3-py3-none-any.whl", "has_sig": false, "md5_digest": "d2ba7621a37ee53283ff538bc04db5d0", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 258690, "upload_time": "2014-11-03T19:43:13", "url": "https://files.pythonhosted.org/packages/d5/2d/beece743dce71a579e104bbd431e77b36f8563f08135a28de3db20a2dd66/fuefit-0.0.3_beta.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "540f9fcbbea60e9eebde0a1aefea0ce3", "sha256": "6e76bb211b1231845dc4c0e3295878b5b2ccac6dcb3e43ee58dd29aa5ea00028" }, "downloads": -1, "filename": "fuefit-0.0.3-beta.3.zip", "has_sig": false, "md5_digest": "540f9fcbbea60e9eebde0a1aefea0ce3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 966291, "upload_time": "2014-11-03T19:43:10", "url": "https://files.pythonhosted.org/packages/7d/7a/8e08a393e7dd17cc9bbc9c6f32e7328cc9043e70a2568cfc0e0215ab9b82/fuefit-0.0.3-beta.3.zip" } ], "0.0.4-alpha.3": [ { "comment_text": "", "digests": { "md5": "efe06d52aad888b0e1f52be7b5c91a24", "sha256": "5376cb7f0489641cf5cfb781c776fbd5ee84d24eec2613abc8ebfdbc2216e07e" }, "downloads": -1, "filename": "fuefit-0.0.4_alpha.3-py3-none-any.whl", "has_sig": false, "md5_digest": "efe06d52aad888b0e1f52be7b5c91a24", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 111291, "upload_time": "2014-11-07T15:19:25", "url": "https://files.pythonhosted.org/packages/27/3b/404a2b34157371930adcc05c4d88af9310f1f4a1b2e2fa0e04925051cf81/fuefit-0.0.4_alpha.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9bbcf1c630ee1134ce977e328c0dd1a1", "sha256": "e138d47ea8832b7b6de4a50f0f36c9db2a42f5e59d0e84739289a3d376dc3c09" }, "downloads": -1, "filename": "fuefit-0.0.4-alpha.3.zip", "has_sig": false, "md5_digest": "9bbcf1c630ee1134ce977e328c0dd1a1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 94966, "upload_time": "2014-11-07T15:19:22", "url": "https://files.pythonhosted.org/packages/87/f7/4ef32178fe637d31a08867e5a7e23ec4efa20f2e6de77e5228255deee6df/fuefit-0.0.4-alpha.3.zip" } ], "0.0.4-alpha.4": [ { "comment_text": "", "digests": { "md5": "957decf0db69b8841f2b2f251af41245", "sha256": "774939840742af48c697bd48887f22bfc229268eb904c91fe2f9aaa6b3aae508" }, "downloads": -1, "filename": "fuefit-0.0.4_alpha.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "957decf0db69b8841f2b2f251af41245", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 124606, "upload_time": "2014-11-10T13:22:39", "url": "https://files.pythonhosted.org/packages/55/4f/831a143544106ee42cb135be096b83e18bf3adb9135c670a59c69d4df2ba/fuefit-0.0.4_alpha.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "603246317f00cec7db6dcc6615fae840", "sha256": "412022b55b10b138ce4edc43606a4b96f0031f4d705df71e7d02fe564098df11" }, "downloads": -1, "filename": "fuefit-0.0.4-alpha.4.zip", "has_sig": false, "md5_digest": "603246317f00cec7db6dcc6615fae840", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 99616, "upload_time": "2014-11-10T13:22:35", "url": "https://files.pythonhosted.org/packages/62/75/78293233c3ba3572ad9a0a14c2508c08cdd2774e0c72b4e3a6c6f48fce61/fuefit-0.0.4-alpha.4.zip" } ], "0.0.4-beta.1": [ { "comment_text": "", "digests": { "md5": "f997b89561140fd1ecab67117981d61b", "sha256": "6bdd4d72ffc49697eef1dc780d51ada6a848485e6510f22378bb3d73641973ca" }, "downloads": -1, "filename": "fuefit-0.0.4_beta.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f997b89561140fd1ecab67117981d61b", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 124600, "upload_time": "2014-11-10T18:02:25", "url": "https://files.pythonhosted.org/packages/ba/43/87297959a3718fc4bb9553886ece59b5f3f93a0d2a7bc8ff72ab593ea1e8/fuefit-0.0.4_beta.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a8bba1bdb3e0a844e09191c0d625a8ae", "sha256": "a71adf3d0a08a34b774997c9deff9e526f2645da2eafea6f8671a53060c752a8" }, "downloads": -1, "filename": "fuefit-0.0.4-beta.1.zip", "has_sig": false, "md5_digest": "a8bba1bdb3e0a844e09191c0d625a8ae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 99564, "upload_time": "2014-11-10T18:02:22", "url": "https://files.pythonhosted.org/packages/3a/37/57cc4e5531eaaac2b6c8f85597382c583aef8ae64b347cb1e74cb8215d22/fuefit-0.0.4-beta.1.zip" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "65b0235d9bec619cc23f6f63dcd0ba3c", "sha256": "ffcba84efec26e57908f72c9e0fb1a6369c84d660c74dd23de517101999351e1" }, "downloads": -1, "filename": "fuefit-0.0.5-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "65b0235d9bec619cc23f6f63dcd0ba3c", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 322421, "upload_time": "2014-11-12T15:50:56", "url": "https://files.pythonhosted.org/packages/29/1f/74d7316a6bcab5f6ca1c58800b4a0f1b75d89f60ade7011588dc53c854c0/fuefit-0.0.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7a0ad23f86e073f19ac2a1c1e3c709e9", "sha256": "800b14ec4b891e83fdf93ffc12b272d2824bb429ab9d0a11bdfdecd287d7d44f" }, "downloads": -1, "filename": "fuefit-0.0.5.tar.gz", "has_sig": true, "md5_digest": "7a0ad23f86e073f19ac2a1c1e3c709e9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1160075, "upload_time": "2014-11-12T15:50:43", "url": "https://files.pythonhosted.org/packages/97/00/f8fd7f4707a4f0b1ae8c2c2d23ef1cf0f21e99c1590d09447642d8c9ebe4/fuefit-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "5cc85b5d681d81a11978d0d1a5263f6d", "sha256": "cb7c39f3cc2b5f05c01740ac2a3ce3987c9f3f84552f462fa0f203155f5dacdd" }, "downloads": -1, "filename": "fuefit-0.0.6-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "5cc85b5d681d81a11978d0d1a5263f6d", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 325305, "upload_time": "2014-12-03T19:29:28", "url": "https://files.pythonhosted.org/packages/20/ab/f82760a78fe815e4455e12c17aa2410be05d18dc35ecceb09cc983649826/fuefit-0.0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "54feaff1fd0e15b8bcf05878a916a3e5", "sha256": "9d19b7d717250c3a8809888f20cb001c7246e51397f5422d935f1181840297f0" }, "downloads": -1, "filename": "fuefit-0.0.6.tar.gz", "has_sig": true, "md5_digest": "54feaff1fd0e15b8bcf05878a916a3e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1164121, "upload_time": "2014-12-03T19:29:19", "url": "https://files.pythonhosted.org/packages/b3/b1/89531ac058df10354da3b3d1700bc2a370d553806f2ef13a021da4f02b4e/fuefit-0.0.6.tar.gz" } ], "0.0.6-alpha.1": [ { "comment_text": "", "digests": { "md5": "f2b8089146a9bc8a06bf039a63f3740f", "sha256": "cf89aff6067db02013a63d414d869381cd205f911c29c9cf09bc298c52a5554d" }, "downloads": -1, "filename": "fuefit-0.0.6_alpha.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f2b8089146a9bc8a06bf039a63f3740f", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 184961, "upload_time": "2014-11-19T15:29:30", "url": "https://files.pythonhosted.org/packages/35/f5/8c1bcb0f32e7db541343035e87b96a794db702f5d3eadaf5bf99527b09b1/fuefit-0.0.6_alpha.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "73565589f7fff673ffe40f926f4459c3", "sha256": "52aa7e6f9fce55835f3e204876a98493724e8856886994271f0c5d7fe97535d8" }, "downloads": -1, "filename": "fuefit-0.0.6-alpha.1.zip", "has_sig": false, "md5_digest": "73565589f7fff673ffe40f926f4459c3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 102787, "upload_time": "2014-11-19T15:29:25", "url": "https://files.pythonhosted.org/packages/de/78/987cf3585c087465fdae76f1609b62305f17aa98a7938099cf941ba66cb3/fuefit-0.0.6-alpha.1.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5cc85b5d681d81a11978d0d1a5263f6d", "sha256": "cb7c39f3cc2b5f05c01740ac2a3ce3987c9f3f84552f462fa0f203155f5dacdd" }, "downloads": -1, "filename": "fuefit-0.0.6-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "5cc85b5d681d81a11978d0d1a5263f6d", "packagetype": "bdist_wheel", "python_version": "3.4", "requires_python": null, "size": 325305, "upload_time": "2014-12-03T19:29:28", "url": "https://files.pythonhosted.org/packages/20/ab/f82760a78fe815e4455e12c17aa2410be05d18dc35ecceb09cc983649826/fuefit-0.0.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "54feaff1fd0e15b8bcf05878a916a3e5", "sha256": "9d19b7d717250c3a8809888f20cb001c7246e51397f5422d935f1181840297f0" }, "downloads": -1, "filename": "fuefit-0.0.6.tar.gz", "has_sig": true, "md5_digest": "54feaff1fd0e15b8bcf05878a916a3e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1164121, "upload_time": "2014-12-03T19:29:19", "url": "https://files.pythonhosted.org/packages/b3/b1/89531ac058df10354da3b3d1700bc2a370d553806f2ef13a021da4f02b4e/fuefit-0.0.6.tar.gz" } ] }