From 3ccfe0257245b8cb465e23a30131f72d874bf7ee Mon Sep 17 00:00:00 2001 From: "etienne.frank" Date: Tue, 4 Sep 2018 08:20:12 +0200 Subject: [PATCH] Sync before JAS --- .gitignore | 113 ++++++++++++++++++++++++ Pipfile | 1 + Pipfile.lock | 105 ++++++++++++++++------ README.md | 4 + __init__.py | 0 explore_data.py | 204 ++++++++++++++++++++++--------------------- utils/__init__.py | 0 utils/create_path.py | 26 ++++++ 8 files changed, 325 insertions(+), 128 deletions(-) create mode 100644 .gitignore create mode 100644 __init__.py create mode 100644 utils/__init__.py create mode 100644 utils/create_path.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..91cf1fa --- /dev/null +++ b/.gitignore @@ -0,0 +1,113 @@ +output_graphs/ + + +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json diff --git a/Pipfile b/Pipfile index 8c82101..76a8c58 100644 --- a/Pipfile +++ b/Pipfile @@ -7,6 +7,7 @@ url = "https://pypi.org/simple" numpy = "*" scipy = "*" matplotlib = "*" +pillow = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index 7295ca6..5167aea 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "3ebcddb3e1f4422f65da836d0abcf6878a307f33665b67cba3f7b9ec416a75a9" + "sha256": "58a3b8790e6fb35c86b8720f60abc2040916ed2b98196b9e3fc284955e1098e0" }, "pipfile-spec": 6, "requires": { @@ -104,6 +104,55 @@ "index": "pypi", "version": "==1.14.3" }, + "pillow": { + "hashes": [ + "sha256:00633bc2ec40313f4daf351855e506d296ec3c553f21b66720d0f1225ca84c6f", + "sha256:03514478db61b034fc5d38b9bf060f994e5916776e93f02e59732a8270069c61", + "sha256:040144ba422216aecf7577484865ade90e1a475f867301c48bf9fbd7579efd76", + "sha256:16246261ff22368e5e32ad74d5ef40403ab6895171a7fc6d34f6c17cfc0f1943", + "sha256:1cb38df69362af35c14d4a50123b63c7ff18ec9a6d4d5da629a6f19d05e16ba8", + "sha256:2400e122f7b21d9801798207e424cbe1f716cee7314cd0c8963fdb6fc564b5fb", + "sha256:2ee6364b270b56a49e8b8a51488e847ab130adc1220c171bed6818c0d4742455", + "sha256:3b4560c3891b05022c464b09121bd507c477505a4e19d703e1027a3a7c68d896", + "sha256:41374a6afb3f44794410dab54a0d7175e6209a5a02d407119c81083f1a4c1841", + "sha256:438a3faf5f702c8d0f80b9f9f9b8382cfa048ca6a0d64ef71b86b563b0ee0359", + "sha256:472a124c640bde4d5468f6991c9fa7e30b723d84ac4195a77c6ab6aea30f2b9c", + "sha256:4d32c8e3623a61d6e29ccd024066cd1ba556555abfb4cd714155020e00107e3f", + "sha256:4d8077fd649ac40a5c4165f2c22fa2a4ad18c668e271ecb2f9d849d1017a9313", + "sha256:62ec7ae98357fcd46002c110bb7cad15fce532776f0cbe7ca1d44c49b837d49d", + "sha256:6c7cab6a05351cf61e469937c49dbf3cdf5ffb3eeac71f8d22dc9be3507598d8", + "sha256:6eca36905444c4b91fe61f1b9933a47a30480738a1dd26501ff67d94fc2bc112", + "sha256:74e2ebfd19c16c28ad43b8a28ff73b904ed382ea4875188838541751986e8c9a", + "sha256:7673e7473a13107059377c96c563aa36f73184c29d2926882e0a0210b779a1e7", + "sha256:81762cf5fca9a82b53b7b2d0e6b420e0f3b06167b97678c81d00470daa622d58", + "sha256:8554bbeb4218d9cfb1917c69e6f2d2ad0be9b18a775d2162547edf992e1f5f1f", + "sha256:9b66e968da9c4393f5795285528bc862c7b97b91251f31a08004a3c626d18114", + "sha256:a00edb2dec0035e98ac3ec768086f0b06dfabb4ad308592ede364ef573692f55", + "sha256:b48401752496757e95304a46213c3155bc911ac884bed2e9b275ce1c1df3e293", + "sha256:b6cf18f9e653a8077522bb3aa753a776b117e3e0cc872c25811cfdf1459491c2", + "sha256:bb8adab1877e9213385cbb1adc297ed8337e01872c42a30cfaa66ff8c422779c", + "sha256:c8a4b39ba380b57a31a4b5449a9d257b1302d8bc4799767e645dcee25725efe1", + "sha256:cee9bc75bff455d317b6947081df0824a8f118de2786dc3d74a3503fd631f4ef", + "sha256:d0dc1313dff48af64517cbbd85e046d6b477fbe5e9d69712801f024dcb08c62b", + "sha256:d5bf527ed83617edd1855a5c923eeeaf68bcb9ac0ceb28e3f19b575b3a424984", + "sha256:df5863a21f91de5ecdf7d32a32f406dd9867ebb35d41033b8bd9607a21887599", + "sha256:e39142332541ed2884c257495504858b22c078a5d781059b07aba4c3a80d7551", + "sha256:e52e8f675ba0b2b417fa98579e7286a41a8e23871f17f4793772f5aa884fea79", + "sha256:e6dd55d5d94b9e36929325dd0c9ab85bfde84a5fc35947c334c32af1af668944", + "sha256:e87cc1acbebf263f308a8494272c2d42016aa33c32bf14d209c81e1f65e11868", + "sha256:ea0091cd4100519cedfeea2c659f52291f535ac6725e2368bcf59e874f270efa", + "sha256:eeb247f4f4d962942b3b555530b0c63b77473c7bfe475e51c6b75b7344b49ce3", + "sha256:f0d4433adce6075efd24fc0285135248b0b50f5a58129c7e552030e04fe45c7f", + "sha256:f1f3bd92f8e12dc22884935a73c9f94c4d9bd0d34410c456540713d6b7832b8c", + "sha256:f42a87cbf50e905f49f053c0b1fb86c911c730624022bf44c8857244fc4cdaca", + "sha256:f5f302db65e2e0ae96e26670818157640d3ca83a3054c290eff3631598dcf819", + "sha256:f7634d534662bbb08976db801ba27a112aee23e597eeaf09267b4575341e45bf", + "sha256:fdd374c02e8bb2d6468a85be50ea66e1c4ef9e809974c30d8576728473a6ed03", + "sha256:fe6931db24716a0845bd8c8915bd096b77c2a7043e6fc59ae9ca364fe816f08b" + ], + "index": "pypi", + "version": "==5.1.0" + }, "pyparsing": { "hashes": [ "sha256:0832bcf47acd283788593e7a0f542407bd9550a55a8a8435214a1960e04bcb04", @@ -118,10 +167,10 @@ }, "python-dateutil": { "hashes": [ - "sha256:3220490fb9741e2342e1cf29a503394fdac874bc39568288717ee67047ff29df", - "sha256:9d8074be4c993fbe4947878ce593052f71dac82932a677d49194d8ce9778002e" + "sha256:1adb80e7a782c12e52ef9a8182bebeb73f1d7e24e374397af06fb4956c8dc5c0", + "sha256:e27001de32f627c22380a688bcc43ce83504a7bc5da472209b4c70f02829f0b8" ], - "version": "==2.7.2" + "version": "==2.7.3" }, "pytz": { "hashes": [ @@ -132,32 +181,32 @@ }, "scipy": { "hashes": [ - "sha256:103fd8253fd3f0df3f50a554abc01b13bee1d70483f23bb03636a74b0a0cbc71", - "sha256:11cddcfc348ef593feb4ffe4b69c18a064eca199602f751d34083838bdc2f05a", - "sha256:164f774de04e546fd10e1894d423b54e36255bb42887e005f0fbfb8eef6736f1", - "sha256:1766acf2d8ff79ed59cae841d4272587af94772f513619dd217226027bd2ab76", - "sha256:200ca3dfebbd0bbacbc0d7389e6eda77428b49793cc1e0e3247f835687d1a6be", - "sha256:232a848a9935c37ffe2cade857296a13680724aef7d4623160dd08f99dbb9d02", - "sha256:3eb28bdc6f40a964761c1cb339e45fef076ea2ca729886e1bce956932ef7e487", - "sha256:3fab61f6ffbc1da9e1f8e813ba235929b5f361c1fdd728d120ead8f78560427c", - "sha256:4a2837b07e77f8e2fc5303f38e224d7fd9f79f8cbf9c60ac72cf98594e1db6b5", - "sha256:4a9f5a3adbfd08dd047de48a6b436bd4dae364913aa5b6349a41e9eaeb774050", - "sha256:544e6f7796b9c131f8f965967e806da187553abf5d7766278b96a2a76abd19a7", - "sha256:76f32095863f7eccecaf5224624d4c7f0f3b922b2cd0d0b0d6f037e4d9c54db6", - "sha256:800abaa55cfad422f00f5b3802403dd634ab9888f560731c09977a3c35e0acae", - "sha256:823a4b1a2eabd09f9e72003c14ceaac63f54d1f99a49f8c1b534f6a73135e995", - "sha256:8739c67842ed9a1c34c62d6cca6301d0ade40d50ef14ba292bd331f0d6c940ba", - "sha256:89c1d2a80760a373e7f12f490446c60a7221b641435a789439e8ddb01f5ab7d4", - "sha256:a3287b438b3c13970c4851a34bbc82db11e4680d1d6cdedd066479ca83028042", - "sha256:be6f0af3f591c100923158f3e3f0f12fa16a0b231616eda407c528e1f9e10014", - "sha256:cc04cf28b9f77255eeb612af41a6f207142f92a082555871f782c773c83b7789", - "sha256:cc85b9d10a5da07a6b27449d17584b1a3d953f7286189f170a6045c6c297b0bc", - "sha256:f26e54dcdeec3daff6ec71854a7b3bba719b78cf07e2d23645ee09d67a5e93df", - "sha256:f2a51f70ef868c03430ed40d8983daa2f38d2e2160a0de4b57b7d9d070912c76", - "sha256:f7c0624de958e2e2e6353813c78aa4f5f3f1ed0a3567fb496b6dad99f55e695e" + "sha256:0611ee97296265af4a21164a5323f8c1b4e8e15c582d3dfa7610825900136bb7", + "sha256:08237eda23fd8e4e54838258b124f1cd141379a5f281b0a234ca99b38918c07a", + "sha256:0e645dbfc03f279e1946cf07c9c754c2a1859cb4a41c5f70b25f6b3a586b6dbd", + "sha256:0e9bb7efe5f051ea7212555b290e784b82f21ffd0f655405ac4f87e288b730b3", + "sha256:108c16640849e5827e7d51023efb3bd79244098c3f21e4897a1007720cb7ce37", + "sha256:340ef70f5b0f4e2b4b43c8c8061165911bc6b2ad16f8de85d9774545e2c47463", + "sha256:3ad73dfc6f82e494195144bd3a129c7241e761179b7cb5c07b9a0ede99c686f3", + "sha256:3b243c77a822cd034dad53058d7c2abf80062aa6f4a32e9799c95d6391558631", + "sha256:404a00314e85eca9d46b80929571b938e97a143b4f2ddc2b2b3c91a4c4ead9c5", + "sha256:423b3ff76957d29d1cce1bc0d62ebaf9a3fdfaf62344e3fdec14619bb7b5ad3a", + "sha256:698c6409da58686f2df3d6f815491fd5b4c2de6817a45379517c92366eea208f", + "sha256:729f8f8363d32cebcb946de278324ab43d28096f36593be6281ca1ee86ce6559", + "sha256:8190770146a4c8ed5d330d5b5ad1c76251c63349d25c96b3094875b930c44692", + "sha256:878352408424dffaa695ffedf2f9f92844e116686923ed9aa8626fc30d32cfd1", + "sha256:8f841bbc21d3dad2111a94c490fb0a591b8612ffea86b8e5571746ae76a3deac", + "sha256:c22b27371b3866c92796e5d7907e914f0e58a36d3222c5d436ddd3f0e354227a", + "sha256:d0cdd5658b49a722783b8b4f61a6f1f9c75042d0e29a30ccb6cacc9b25f6d9e2", + "sha256:d8491d4784aceb1f100ddb8e31239c54e4afab8d607928a9f7ef2469ec35ae01", + "sha256:dfc5080c38dde3f43d8fbb9c0539a7839683475226cf83e4b24363b227dfe552", + "sha256:e24e22c8d98d3c704bb3410bce9b69e122a8de487ad3dbfe9985d154e5c03a40", + "sha256:e7a01e53163818d56eabddcafdc2090e9daba178aad05516b20c6591c4811020", + "sha256:ee677635393414930541a096fc8e61634304bb0153e4e02b75685b11eba14cae", + "sha256:f0521af1b722265d824d6ad055acfe9bd3341765735c44b5a4d0069e189a0f40" ], "index": "pypi", - "version": "==1.0.1" + "version": "==1.1.0" }, "six": { "hashes": [ diff --git a/README.md b/README.md index b432240..b3bc3e5 100644 --- a/README.md +++ b/README.md @@ -1 +1,5 @@ How to run pipenv: https://stackoverflow.com/a/46020794 + +``` +pipenv run python explore_data.py +``` diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/explore_data.py b/explore_data.py index 4a566c8..f89ecb5 100644 --- a/explore_data.py +++ b/explore_data.py @@ -3,16 +3,17 @@ import os from glob import glob from matplotlib import pyplot as plt import numpy as np - +import uuid +from utils.create_path import create_path def convert_matlab_datetime_vector_to_utc(date_vector): - string_time = \ - str(int(date_vector[0])) + "-" + \ - str(int(date_vector[1])) + "-" + \ - str(int(date_vector[2])) + "T" + \ - str(int(date_vector[3])) + ":" + \ - str(int(date_vector[4])) + ":" + \ - str(float(date_vector[5])) + # f'{val:02}' TODO + string_time = str(int(date_vector[0])) + "-" + \ + f'{int(date_vector[1]):02}' + "-" + \ + f'{int(date_vector[2]):02}' + "T" + \ + f'{int(date_vector[3]):02}' + ":" + \ + f'{int(date_vector[4]):02}' + ":" + \ + f'{float(date_vector[5]):06.3f}' return string_time @@ -21,119 +22,123 @@ def filter_mat(mat, test_type): return [x for x in mat if x[0][0] == test_type] -def plot(name, values): +def plot(name, values, path, datetime, filename, current_color): plt.figure(name) - plt.plot(range(len(values)), values) + axe = str(hex(current_color))[2:] + if len(axe) == 1: + axe = "0" + str(axe) + plt.plot(range(len(values)), values, color='#A0'+axe+axe) + + filepath = path + "/" + name + "/" + filename + "/" + str(datetime) + '.png' + create_path(filepath) + plt.savefig(filepath) -def check_length(*items): - base_length = len(items[0]) - for item in items: - if len(item) != base_length: - print(len(item)) - import sys - sys.exit("ERROR") +# def format_temperature(temp: float) -> int: +def format_temperature(temp): + if temp < 6: + return 4 + elif temp < 26: + return 24 + else: + return 43 -def charge_iteration(charge_items): - for item in charge_items: +def charge_iteration(charge_items, filename): + max_len = len(charge_items) + for idx, item in enumerate(charge_items): test_type = item[0][0] # charge impedence discharge - ambiant_temp = item[1][0][0] # temperature: 4 ~24 ~43 + ambiant_temp = format_temperature(item[1][0][0]) # temperature: 4 ~24 ~43 datetime = convert_matlab_datetime_vector_to_utc(item[2][0]) - voltage_measured = item[3][0][0][0][0] # Battery terminal voltage (Volts) - current_measured = item[3][0][0][1][0] # Battery output current (Amps) - temperature_measured = item[3][0][0][2][0] # Battery temperature (degree C) - current_charge = item[3][0][0][3][0] # Current measured at charger (Amps) - voltage_charge = item[3][0][0][4][0] # Voltage measured at charger (Volts) + path = "output_graphs/charges/degree" + str(ambiant_temp) + + voltage_measured = item[3][0][0][0][0] # Battery terminal voltage (Volts) floats + current_measured = item[3][0][0][1][0] # Battery output current (Amps) floats + temperature_measured = item[3][0][0][2][0] # Battery temperature (degree C) floats + current_charge = item[3][0][0][3][0] # Current measured at charger (Amps) floats + voltage_charge = item[3][0][0][4][0] # Voltage measured at charger (Volts) floats # MEH - time = item[3][0][0][5] # Time vector for the cycle (secs) - - plot("voltage_measured", voltage_measured) - plot("current_measured", current_measured) - plot("temperature_measured", temperature_measured) - plot("current_charge", current_charge) - plot("voltage_charge", voltage_charge) - - #check size for plotting - check_length( - voltage_measured, - current_measured, - temperature_measured, - current_charge, - voltage_charge, - ) - - plt.show() - -def discharge_iteration(discharge_items): - for item in discharge_items: + time = item[3][0][0][5] # Time vector for the cycle (secs) floats + + percentage = idx / max_len + current_color = int(255 * percentage) + + plot("voltage_measured", voltage_measured, path, datetime, filename, current_color) + plot("current_measured", current_measured, path, datetime, filename, current_color) + plot("temperature_measured", temperature_measured, path, datetime, filename, current_color) + plot("current_charge", current_charge, path, datetime, filename, current_color) + plot("voltage_charge", voltage_charge, path, datetime, filename, current_color) + + plt.close('all') + + +def discharge_iteration(discharge_items, filename): + max_len = len(discharge_items) + # TODO extract for with maps + for idx, item in enumerate(discharge_items): test_type = item[0][0] # charge impedence discharge - ambiant_temp = item[1][0][0] # temperature: 4 ~24 ~43 + ambiant_temp = format_temperature(item[1][0][0]) # temperature: 4 ~24 ~43 datetime = convert_matlab_datetime_vector_to_utc(item[2][0]) - voltage_measured = item[3][0][0][0][0] # Battery terminal voltage (Volts) - current_measured = item[3][0][0][1][0] # Battery output current (Amps) - temperature_measured = item[3][0][0][2][0] # Battery temperature (degree C) - current_charge = item[3][0][0][3][0] # Current measured at charger (Amps) - voltage_charge = item[3][0][0][4][0] # Voltage measured at charger (Volts) + path = "output_graphs/discharge/degree" + str(ambiant_temp) + + voltage_measured = item[3][0][0][0][0] # Battery terminal voltage (Volts) floats + current_measured = item[3][0][0][1][0] # Battery output current (Amps) flaots + temperature_measured = item[3][0][0][2][0] # Battery temperature (degree C) floats + current_charge = item[3][0][0][3][0] # Current measured at charger (Amps) floats + voltage_charge = item[3][0][0][4][0] # Voltage measured at charger (Volts) floats # MEH - time = item[3][0][0][5][0] # Time vector for the cycle (secs) - capacity = item[3][0][0][6] # Battery capacity (Ahr) for discharge till 2.7V + time = item[3][0][0][5][0] # Time vector for the cycle (secs) floats + capacity = item[3][0][0][6][0] # Battery capacity (Ahr) for discharge till 2.7V float_ - plot("voltage_measured", voltage_measured) - plot("current_measured", current_measured) - plot("temperature_measured", temperature_measured) - plot("current_charge", current_charge) - plot("voltage_charge", voltage_charge) + percentage = idx / max_len + current_color = int(255 * percentage) - #check size for plotting - check_length( - voltage_measured, - current_measured, - temperature_measured, - current_charge, - voltage_charge, - ) + plot("voltage_measured", voltage_measured, path, datetime, filename, current_color) + plot("current_measured", current_measured, path, datetime, filename, current_color) + plot("temperature_measured", temperature_measured, path, datetime, filename, current_color) + plot("current_charge", current_charge, path, datetime, filename, current_color) + plot("voltage_charge", voltage_charge, path, datetime, filename, current_color) - plt.show() + plt.close('all') -def impedance_iteration(impedance_items): - for item in impedance_items: +def impedance_iteration(impedance_items, filename): + max_len = len(impedance_items) + for idx, item in enumerate(impedance_items): test_type = item[0][0] # charge impedence discharge - ambiant_temp = item[1][0][0] # temperature: 4 ~24 ~43 + ambiant_temp = format_temperature(item[1][0][0]) # temperature: 4 ~24 ~43 datetime = convert_matlab_datetime_vector_to_utc(item[2][0]) - sense_current = item[3][0][0][0][0] # Current in sense branch (Amps) - battery_current = item[3][0][0][1][0] # urrent in battery branch (Amps) - current_ratio = item[3][0][0][2][0] # Ratio of the above currents - battery_impedance = item[3][0][0][3] # attery impedance (Ohms) computed from raw data - rectified_impedance = item[3][0][0][4] # alibrated and smoothed battery impedance (Ohms) - re = item[3][0][0][5][0][0] # Estimated electrolyte resistance (Ohms) - rct = item[3][0][0][6][0][0] # Estimated charge transfer resistance (Ohms) - - plot("sense_current", sense_current) - plot("battery_current", battery_current) - plot("current_ratio", current_ratio) - plot("battery_impedance", battery_impedance) - plot("rectified_impedance", rectified_impedance) - - #check size for plotting - check_length( - sense_current, - battery_current, - current_ratio, - battery_impedance, - # rectified_impedance, # WARNING 39 - ) - plt.show() + path = "output_graphs/impedance/degree" + str(ambiant_temp) + + sense_current = item[3][0][0][0][0] # Current in sense branch (Amps)| Complexes + battery_current = item[3][0][0][1][0] # urrent in battery branch (Amps)| Complexes + current_ratio = item[3][0][0][2][0] # Ratio of the above currents| Complexes + battery_impedance = item[3][0][0][3] # attery impedance (Ohms) computed from raw data| Complexes but multiple array of 1 complexe + rectified_impedance = item[3][0][0][4] # alibrated and smoothed battery impedance (Ohms)| Complexes but multiple array of 1 complexe + re = item[3][0][0][5][0][0] # Estimated electrolyte resistance (Ohms)| float_ + rct = item[3][0][0][6][0][0] # Estimated charge transfer resistance (Ohms)| float_ + + percentage = idx / max_len + current_color = int(255 * percentage) + + plot("sense_current", sense_current, path, datetime, filename, current_color) + plot("battery_current", battery_current, path, datetime, filename, current_color) + plot("current_ratio", current_ratio, path, datetime, filename, current_color) + plot("battery_impedance", battery_impedance, path, datetime, filename, current_color) + plot("rectified_impedance", rectified_impedance, path, datetime, filename, current_color) + + plt.close('all') def main(): filepaths = [y for x in os.walk("./data/") for y in glob(os.path.join(x[0], '*.mat'))] + filepaths = sorted(filepaths) - for filepath in filepaths: + # TODO warning for for the [:1] + for filepath in filepaths[:1]: filename = filepath.split("/")[-1].split(".")[0] print(filename) raw_mat = scipy.io.loadmat(filepath) @@ -143,12 +148,11 @@ def main(): charge_items = filter_mat(mat, "charge") discharge_items = filter_mat(mat, "discharge") - charge_iteration(charge_items) - # discharge_iteration(discharge_items) - # impedance_iteration(impedance_items) - - + charge_iteration(charge_items, filename) + discharge_iteration(discharge_items, filename) + impedance_iteration(impedance_items, filename) if __name__ == "__main__": main() + diff --git a/utils/__init__.py b/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/utils/create_path.py b/utils/create_path.py new file mode 100644 index 0000000..7ce2700 --- /dev/null +++ b/utils/create_path.py @@ -0,0 +1,26 @@ +import os + +def get_folders_path(filepath): + currentFolder = os.path.dirname(filepath) + folders = [currentFolder] + + while currentFolder != '': + folders.append(currentFolder) + currentFolder = os.path.dirname(currentFolder) + + return folders + +def create_folder(folder): + if not os.path.exists(folder): + try: + os.makedirs(folder) + except OSError as exc: # Guard against race condition + if exc.errno != errno.EEXIST: + raise + +def create_path(filepath): + dirpath = os.path.dirname(filepath) + + folders = get_folders_path(filepath) + + [create_folder(folder) for folder in folders] -- GitLab