{ "info": { "author": "Damien Tavan", "author_email": "damien.tavan@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Operating System :: Microsoft :: Windows", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering" ], "description": "=====\r\nPyBPS\r\n=====\r\n\r\n.. image:: https://img.shields.io/badge/python-2.7,_3.6-blue.svg\r\n\r\nPyBPS is a simulation manager that provides a framework for running parametric simulation jobs in an efficient way.\r\nIt includes modules to:\r\n\r\n* **Pre-process parametric simulation jobs** (prepare simulation input files with a specific set of parameters)\r\n\r\n* **Run simulation jobs in parallel**, making the most of available processors to run the parametric jobs faster\r\n\r\n* **Post-process simulation jobs**, by extracting results directly from simulation output files\r\n\r\n* **Store simulation parameters and results** in an SQlite database and a set of CSV files for subsequent analysis\r\n\r\n* **Produce a simulation run summary**, including execution times of all simulated jobs, warnings and errors.\r\n\r\nThe package uses ``pandas`` DataFrames to handle data, which opens a lot of possibilities in terms of data analysis.\r\nUsers can therefore leverage all of the power of the ``pandas`` package to analyze simulation results.\r\nUsing ``pandas`` also makes it very straightforward to plot results using the ``matplotlib`` package.\r\n\r\n\r\nInstallation\r\n============\r\n\r\nTo install PyBPS, use pip::\r\n\r\n $ pip install pybps\r\n\r\nIf you have an earlier version of PyBPS already installed that you want to upgrade, just use::\r\n\r\n $ pip install pybps --upgrade\r\n\r\nThis will also upgrade PyBPS dependencies.\r\n\r\nAdditionally, you will need to install ``jupyter notebook`` and ``matplotlib`` to view and run the tutorial notebook::\r\n\r\n $ pip install jupyter matplotlib\r\n\r\n\r\nConfiguration\r\n=============\r\n\r\nPrior to using PyBPS, you first have to configure simulation tools options in the ``config.ini`` file located at the root of the ``pybps`` directory (usually ``C:\\Python27\\Lib\\site-packages\\pybps``).\r\n\r\nAlternatively, you can also include a ``config.ini`` file in your project directory with a project specific configuration. PyBPS will override default configuration settings whenever a custom ``config.ini`` file is found in the project directory.\r\n\r\nCurrently, PyBPS works on Windows with the following building performance simulation tools:\r\n\r\n* `TRNSYS v17 `_\r\n\r\n* `DAYSIM v3.1b `_\r\n\r\nMost of the configuration options should be left to their default value. However, the user should revise the following options:\r\n\r\nSimulation tool installation directory\r\n--------------------------------------\r\n::\r\n\r\n [TRNSYS]\r\n Install_Dir = C:\\TRNSYS17 # Default installation directory for TRNSYS v17\r\n\r\n [DAYSIM]\r\n Install_Dir = C:\\DAYSIM # Default installation directory for DAYSIM\r\n\r\n**IMPORTANT:** If your DAYSIM install directory is different from the one above, you will also have to modify the ``DAYSIMPATH`` in the batch script ``pybps_daysim-exe.bat`` found in ``C:\\Python27\\Scripts``\r\n\r\nSimulation result file extensions\r\n----------------------------------\r\n\r\nSimulation result files are files that might require post-processing and that will be exported to CSV and/or SQlite database.\r\n::\r\n\r\n [TRNSYS]\r\n ResultFile_Extensions = .out, .month # Default extensions for TRNSYS output files\r\n\r\n [DAYSIM]\r\n ResultFile_Extensions = .el.htm, .DA # Default extensions for DAYSIM output files\r\n\r\nIn the current version of PyBPS, when working with TRNSYS, for the simulation results to be parsed automatically you must output monthly integrated results with a ``Type46``. All the results should go to a unique output file.\r\nFuture version of PyBPS will support additional TRNSYS output formats.\r\n\r\nSimulation log file extensions\r\n-------------------------------\r\n\r\nLog files are files that are just kept for reference.\r\n::\r\n\r\n [TRNSYS]\r\n LogFile_Extensions = .log # Default extensions for TRNSYS log files\r\n\r\n [DAYSIM]\r\n LogFile_Extensions = _active.intgain.csv # Default extensions for DAYSIM log files\r\n\r\nActually, DAYSIM does not produce log files, but since this field can't be left empty, just put here the extensions of files that won't need post-processing.\r\n\r\nTemplate files search string\r\n----------------------------\r\n\r\nUsed to identify which files are templates, that is, files containing parameter search strings to be replaced by real values.\r\nTemplate filenames should contain the specified string.\r\n::\r\n\r\n TemplateFile_SearchString = _Template # Example: Model_Template.dck\r\n\r\nParameter sample files search string\r\n------------------------------------\r\n\r\nUsed to identify which file contains the parameter sample, that is, file containing real values for all parameters found in template files.\r\nSample filenames should contain the specified string.\r\n::\r\n\r\n SampleFile_SearchString = _Samples # Example: Model_Sample.csv\r\n\r\n\r\nPrerequisites\r\n=============\r\n\r\nIn addition to the necessary configuration options commented above, there is a set of prerequisites to ensure PyBPS can work properly with your building simulation project.\r\n\r\nTemplate Files\r\n--------------\r\n\r\nTemplate files have to be properly identified by putting the search string specified in ``config.ini`` in their filename.\r\nFor example, the template file for the ``3Dbuilding.dck`` project would be ``3Dbuilding_Template.dck``.\r\n\r\nTo properly work as a template file, it should contain parameter search strings in place of actual parameters that should be replaced by PyBPS in each simulation job.\r\n**It is a requirement of PyBPS that all parameter search strings should be strings of characters with a leading $ sign.**\r\nValid parameter search strings would look like::\r\n\r\n $ORIENTATION # Valid search string for ORIENTATION parameter\r\n $HEAT_SETPOINT # Valid search string for HEAT_SETPOINT parameter\r\n\r\nSample File\r\n-----------\r\n\r\nFor every single parameter search string defined in the template files, there should be a corresponding column with values in the sample file.\r\n\r\nSample files should always be CSV files and be properly identified by putting the search string specified in ``config.ini`` in their filename.\r\nFor example, the sample file for the ``3Dbuilding.dck`` project would be ``3Dbuilding_Sample.csv`` and would contain the following information::\r\n\r\n ORIENTATION,HEAT_SETPOINT\r\n 0,20\r\n 0,21\r\n 180,20\r\n 180,21\r\n ...\r\n\r\n\r\nUsage\r\n=====\r\n\r\nShell Script\r\n------------\r\n\r\nThe simplest way to start using PyBPS is by way of the shell script.\r\n\r\nJust open a command line window and call ``run-pybps.py`` followed by the path to the BPS project directory. It should look like this::\r\n\r\n $ run-pybps.py C:\\My_BPS_Project\\\r\n\r\nThe script accepts optional arguments to control the number of local threads/processors to be used in simulation run and to calculate to total execution time.\r\nFor example, calling the script with the following arguments will limit to 2 threads/processors and returns the batch execution run time::\r\n\r\n $ run-pybps.py --ncore 2 --stopwatch C:\\My_BPS_Project\\\r\n\r\n\r\nPackage\r\n-------\r\n\r\nIf you are already proficient with Python programming, you can get more control over the simulation workflow by directly using the methods of the ``PyBPS`` package in your own script.\r\nThe best way to start is probably by having a look at the ``run-pybps.py`` script mentioned above.\r\nAnyway, here is a quick guide to the main methods and functions contained in the ``PyBPS`` package.\r\n\r\nTo get started, it is necessary to import the ``BPSProject`` class definition::\r\n\r\n From pybps import BPSProject\r\n\r\nAn instance of the ``BPSProject`` class should then be created, giving the path to the simulation project directory as an argument::\r\n\r\n path_to_bps_project = 'C:\\BPS_PROJECT'\r\n bpsproj = BPSProject(path_to_bps_project)\r\n\r\nDuring the instance creation process, the given directory is analyzed and all of the information necessary to run the simulation jobs is stored in the new instance: paths to simulation input files, details about simulation tool to be used, parameter sample, etc...\r\nOnce the new instance has been created, class methods can be used to manage the parametric simulation jobs.\r\nFor example, simulation jobs identified from the parameter sample can (and should) be added using the following method::\r\n\r\n\t bpsproj.add_jobs()\r\n\r\nThis step creates instances of a ``BPSJob`` class for each one of the identified simulation jobs.\r\nAdditional functions can be written by the user to modify the parameter sample prior to adding jobs to the simulation project.\r\nFor example, it is possible to have several simulation input files listed in the project directory and select a different input file in each job based on specific parameter values.\r\n\r\nA particular job can be manage using the following methods::\r\n\r\n\t bpsproj.jobs[0].prepare() # Copy all simulation files to a temp directory where the first job will be run\r\n\t bpsproj.jobs[0].preprocess() # Create simulation input files with set of parameters for first job\r\n\t bpsproj.jobs[0].run() # Run the first job\r\n\t bpsproj.jobs[0].close() # Copy result and log files to results dir, get job run summary and delete temp dir\r\n\r\nThe decision of which result and log files should be copied to the *Results* directory depends on the files extensions specified in the *ResultFile_Extensions* and *LogFile_Extensions* keywords of the ``config.ini`` file.\r\n\r\nIn general, it is more common to run all simulation jobs at once.\r\nCalling the ``run`` method without arguments launches simulation jobs in parallel using all available processors::\r\n\r\n\t bpsproj.run()\r\n\r\nYou can also limit the number of threads/processors used to prevent PyBPS from eating up all of the available computing resources::\r\n\r\n\t bpsproj.run(ncore=2) # limits the current run to 2 threads/processors\r\n\r\nWhen all simulation jobs have been run, all of the information related to the current simulation project (job parameters, results and run summaries) can be stored in ``pandas`` DataFrames::\r\n\r\n\t bpsproj.jobs2df()\r\n\t bpsproj.results2df()\r\n\t bpsproj.runsum2df()\r\n\r\nOnce our simulation project data is in DataFrames, it can be stored in an SQlite database and/or CSV files::\r\n\r\n\t bpsproj.save2db()\r\n\t bpsproj.save2csv()\r\n\r\n\r\n\r\nLicense\r\n=======\r\n\r\nThis software is licensed under the ``3-clause BSD license``. See the ``LICENSE`` file in the top distribution directory for the full license text.\r\n\r\n\r\nContributors\r\n============\r\n\r\nPyBPS is open to contributions! Feel free to fork `the repository `_ on github to start making your changes.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://github.com/dtavan/pybps", "keywords": "building performance simulation parametric TRNSYS DAYSIM", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "pybps", "package_url": "https://pypi.org/project/pybps/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/pybps/", "project_urls": { "Homepage": "http://github.com/dtavan/pybps" }, "release_url": "https://pypi.org/project/pybps/0.2.5/", "requires_dist": null, "requires_python": null, "summary": "A parametric simulation manager for building performance simulation projects", "version": "0.2.5" }, "last_serial": 2990301, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "0c1868a6e5ec8cad6c494ace8b4c4b25", "sha256": "381ac1a250e596c53c3df5d21b5950c516ac96e981491fa53ba94fdffde8eec8" }, "downloads": -1, "filename": "pybps-0.1.0.zip", "has_sig": false, "md5_digest": "0c1868a6e5ec8cad6c494ace8b4c4b25", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29910, "upload_time": "2013-04-17T16:24:00", "url": "https://files.pythonhosted.org/packages/58/76/ad196cbe88feff62100c0cd1e490549553c61f680f5871c781ab6ac02b0d/pybps-0.1.0.zip" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "28c69f128c3ad2be7486907e8fb96bd3", "sha256": "732b7417cc42fd6e5eb930e33fdde4d31c371f15c62b169e1acc8e99041d1c6a" }, "downloads": -1, "filename": "pybps-0.1.1.zip", "has_sig": false, "md5_digest": "28c69f128c3ad2be7486907e8fb96bd3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30482, "upload_time": "2013-06-27T11:37:10", "url": "https://files.pythonhosted.org/packages/6b/f8/98c4f94aa8d7808db72aef1cdddfd72a4db1d6e1b4657694e052be41c9bd/pybps-0.1.1.zip" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "8cc89a97d3bea2525c858adc92e9dcc9", "sha256": "50792ac5470f05c5fee7f489c711d777e77cf014927ecd30dff04d869842f111" }, "downloads": -1, "filename": "pybps-0.1.2.zip", "has_sig": false, "md5_digest": "8cc89a97d3bea2525c858adc92e9dcc9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33854, "upload_time": "2013-07-12T14:17:17", "url": "https://files.pythonhosted.org/packages/2f/d4/6a37b1830b31165a09dbfec68daebd9834efb89765f2e81fd7479de99aae/pybps-0.1.2.zip" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "9e1de4ce0ce3c5c4cbd80c8d63093920", "sha256": "60178722b97abb49be8f65acbc314a9c8dfd5b6204506e9b923e8e796dd9c38e" }, "downloads": -1, "filename": "pybps-0.1.3.zip", "has_sig": false, "md5_digest": "9e1de4ce0ce3c5c4cbd80c8d63093920", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34709, "upload_time": "2013-10-04T13:35:43", "url": "https://files.pythonhosted.org/packages/35/12/1ab001de5a219561c23f0bb868a40c5713d0bbe655bde1a1aae5a21933c3/pybps-0.1.3.zip" } ], "0.1dev": [ { "comment_text": "", "digests": { "md5": "56ae6b3abeebe383583f7efa6083311b", "sha256": "895ee297ba4357256204a8c96fb9814ec1be0cbf97e0d1732b0307b9d1fd1536" }, "downloads": -1, "filename": "pybps-0.1dev.zip", "has_sig": false, "md5_digest": "56ae6b3abeebe383583f7efa6083311b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29790, "upload_time": "2013-04-11T15:23:07", "url": "https://files.pythonhosted.org/packages/3b/c1/6221dd17158ef7363af455a3136d6b185dd6acdb8e564b1efa065f9246bf/pybps-0.1dev.zip" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "9ed6917cd6243f1bd38074ea59ecdfc4", "sha256": "b0fa3a0a660bc9618b1edfecf53c72e600938a3ee2bd98de8b8481caf4e7b54a" }, "downloads": -1, "filename": "pybps-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9ed6917cd6243f1bd38074ea59ecdfc4", "packagetype": "bdist_wheel", "python_version": "any", "requires_python": null, "size": 29792, "upload_time": "2017-04-12T12:58:54", "url": "https://files.pythonhosted.org/packages/96/93/f5a6a39c99b6f2bf3f03392c804bf5925d2748ef41297280bc05725b7a83/pybps-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4e373d2ff45a6262493cb7cfcb97717e", "sha256": "cb306f75a16a01706ae4b5a4324b949b70ca8306a31284203d69a706390dffd0" }, "downloads": -1, "filename": "pybps-0.2.0.zip", "has_sig": false, "md5_digest": "4e373d2ff45a6262493cb7cfcb97717e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34501, "upload_time": "2017-04-12T12:58:32", "url": "https://files.pythonhosted.org/packages/af/b7/b1c7e1345fe2f91214d27f4ed1e93c7964b06417ffecc980545c407b9eb2/pybps-0.2.0.zip" } ], "0.2.1": [], "0.2.2": [ { "comment_text": "", "digests": { "md5": "eaeff7b4e8d100a665cefcdaf99b2d6c", "sha256": "c59d2e7ac242823f916e491e942f6500a09b0c36ee2f0c20aedbbf51150239c9" }, "downloads": -1, "filename": "pybps-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "eaeff7b4e8d100a665cefcdaf99b2d6c", "packagetype": "bdist_wheel", "python_version": "any", "requires_python": null, "size": 30621, "upload_time": "2017-06-27T16:09:36", "url": "https://files.pythonhosted.org/packages/ee/25/78a8321638c2df4d7245965ec81e2715e6ab78e6a7c928e326944c7dead9/pybps-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0b86ea0879278af6d016eb3b76760ec4", "sha256": "374e6b19c3954a537cf93384abd040fec98aba307ec097e94ca8dd8e0d8fe2a8" }, "downloads": -1, "filename": "pybps-0.2.2.zip", "has_sig": false, "md5_digest": "0b86ea0879278af6d016eb3b76760ec4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34341, "upload_time": "2017-06-27T16:09:22", "url": "https://files.pythonhosted.org/packages/8d/a8/d8dd40e9d9bdf64db693d752643b4a244a98a503d79c9be28a6f73657fdf/pybps-0.2.2.zip" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "a523d7c0efe068ee183dbcda54794b40", "sha256": "2c86b8874dd7d53158470892af1b7f4271c8c69a873aafb0d5a2674711928dd3" }, "downloads": -1, "filename": "pybps-0.2.3.zip", "has_sig": false, "md5_digest": "a523d7c0efe068ee183dbcda54794b40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34456, "upload_time": "2017-06-27T18:24:41", "url": "https://files.pythonhosted.org/packages/9e/47/00931b420f451f1cbd6214f369382636cda751d21d127587b5b0250e757a/pybps-0.2.3.zip" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "9792ce946ec0a45111dc806672bf8622", "sha256": "9fac1d959cd13008bd46bbf7fd0f5ad8d1e7691f02febffab2e7bc229e31036b" }, "downloads": -1, "filename": "pybps-0.2.4.zip", "has_sig": false, "md5_digest": "9792ce946ec0a45111dc806672bf8622", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34458, "upload_time": "2017-06-30T15:47:03", "url": "https://files.pythonhosted.org/packages/69/db/f3f4b6197c314a365e00f781bc9b09cfbe8bd41a08116801176feb828a56/pybps-0.2.4.zip" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "5c9e4e1081f6a3ab9a652b1827d5b7fa", "sha256": "3d9b27806d05633297132fdef07361882028fb2c05af71fa1719a3fb42a5ec71" }, "downloads": -1, "filename": "pybps-0.2.5.zip", "has_sig": false, "md5_digest": "5c9e4e1081f6a3ab9a652b1827d5b7fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34436, "upload_time": "2017-06-30T16:24:42", "url": "https://files.pythonhosted.org/packages/6f/bf/f0552ba7efba7e765ae45dfadd1d89f35faa1a088268c3180f59a323dd1c/pybps-0.2.5.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5c9e4e1081f6a3ab9a652b1827d5b7fa", "sha256": "3d9b27806d05633297132fdef07361882028fb2c05af71fa1719a3fb42a5ec71" }, "downloads": -1, "filename": "pybps-0.2.5.zip", "has_sig": false, "md5_digest": "5c9e4e1081f6a3ab9a652b1827d5b7fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 34436, "upload_time": "2017-06-30T16:24:42", "url": "https://files.pythonhosted.org/packages/6f/bf/f0552ba7efba7e765ae45dfadd1d89f35faa1a088268c3180f59a323dd1c/pybps-0.2.5.zip" } ] }