Skip to content

Commit 75aa681

Browse files
authored
Merge pull request #65 from simvue-io/dataframe_output
Add dataframe output option to `get_runs`
2 parents 171cf06 + d7347e6 commit 75aa681

File tree

5 files changed

+49
-4
lines changed

5 files changed

+49
-4
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Change log
22

3+
## v0.11.0
4+
5+
* Support optional dataframe output from `get_runs`.
6+
37
## v0.10.1
48

59
* The worker process now no longer gives a long delay when a run has finished (now at most ~1 second).

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
long_description_content_type="text/markdown",
1717
url="https://simvue.io",
1818
platforms=["any"],
19-
install_requires=["dill", "requests", "msgpack", "tenacity", "pyjwt", "psutil", "pydantic", "plotly"],
19+
install_requires=["dill", "requests", "msgpack", "tenacity", "pandas", "pyjwt", "psutil", "pydantic", "plotly"],
2020
package_dir={'': '.'},
2121
packages=["simvue"],
2222
package_data={"": ["README.md"]},

simvue/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
from simvue.client import Client
33
from simvue.handler import Handler
44
from simvue.models import RunInput
5-
__version__ = '0.10.1'
5+
__version__ = '0.11.0'

simvue/client.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
from .serialization import Deserializer
77
from .utilities import get_auth
8+
from .converters import to_dataframe
89

910
CONCURRENT_DOWNLOADS = 10
1011
DOWNLOAD_CHUNK_SIZE = 8192
@@ -57,7 +58,7 @@ def get_run(self, run, system=False, tags=False, metadata=False):
5758
return None
5859

5960

60-
def get_runs(self, filters, system=False, tags=False, metadata=False):
61+
def get_runs(self, filters, system=False, tags=False, metadata=False, format='dict'):
6162
"""
6263
Get runs
6364
"""
@@ -73,7 +74,12 @@ def get_runs(self, filters, system=False, tags=False, metadata=False):
7374
return None
7475

7576
if response.status_code == 200:
76-
return response.json()
77+
if format == 'dict':
78+
return response.json()
79+
elif format == 'dataframe':
80+
return to_dataframe(response.json())
81+
else:
82+
return None
7783

7884
return None
7985

simvue/converters.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
def to_dataframe(data):
2+
"""
3+
Convert runs to dataframe
4+
"""
5+
import pandas as pd
6+
columns = {}
7+
for run in data:
8+
for item in ('name', 'status', 'folder', 'created', 'started', 'ended'):
9+
if item not in columns:
10+
columns[item] = []
11+
if item in run:
12+
columns[item].append(run[item])
13+
else:
14+
columns[item].append()
15+
16+
if 'system' in run:
17+
for section in run['system']:
18+
if section in ('cpu', 'gpu', 'platform'):
19+
for item in run['system'][section]:
20+
if 'system.%s.%s' % (section, item) not in columns:
21+
columns['system.%s.%s' % (section, item)] = []
22+
columns['system.%s.%s' % (section, item)].append(run['system'][section][item])
23+
else:
24+
if 'system.%s' % section not in columns:
25+
columns['system.%s' % section] = []
26+
columns['system.%s' % section].append(run['system'][section])
27+
28+
if 'metadata' in run:
29+
for item in run['metadata']:
30+
if 'metadata.%s' % item not in columns:
31+
columns['metadata.%s' % item] = []
32+
columns['metadata.%s' % item].append(run['metadata'][item])
33+
34+
df = pd.DataFrame(data=columns)
35+
return df

0 commit comments

Comments
 (0)