Skip to main content

record-kit

A simple record toolkit generating human-readable data record in experiments.

Installation

pip install record-kit

Usage

Suppose you have an experiment script like this:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--lr', type=float)
args = parser.parse_args()

def train_ml_model():
    for i in range(2):
        epoch, loss, acc = i, 0.1, 0.5

Using record-kit to track these generated data is quite easy:

from record_kit import Recorder, Record             # use Recorder to track experiment data
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--lr', type=float, default=0.1)
args = parser.parse_args()


def train_ml_model():
    for i in range(2):
        epoch, loss, acc = i, 0.1, 0.5
        recorder.add_data(epoch, loss, acc)   # save data


# init Recorder
recorder = Recorder()                              # init Recorder
recorder.set_meta(args)                            # save arguments like hyperparameters
recorder.set_header('epoch', 'loss', 'acc')        # specify table header

# parse record
record = Record(recorder) # or record = Record('path/to/record')
print(record.meta)
print(record.data)

output

{'lr': 0.1}
   epoch  loss  acc
0    0.0  0.10  0.5
1    1.0  0.08  0.9

generated record in ./records/record-timestamp.md

record_example

Record Format

A typical record includes two sections Meta and Data.

# record-20201020-154912
## Meta
| key | value | type |
| :---: | :---: | :---: |
| lr | 0.1 | float |
## Data
| epoch | loss | acc |
| :---: | :---: | :---: |
| 0 | 0.1 | 0.5 |
| 1 | 0.08 | 0.9 |

API

Recorder

Recorder(file_name='record', records_dir='./records', with_timestamp=True)

Initialize a Recorder instance

Recorder.set_meta(dict_like_object)

Add meta info to the record. Note meta info can only be added once. You may use dict or argparse.Namespace(return type of parser.parse_args()) as its parameter.

Recorder.set_header(*args)

Specify header of data table in Data section. The header can only be added once.

Recorder.add(*args)

Add a data line to the table in Data section. The number of parameters in should be consistent with Recorder.set_header(*args)

Record

Record(Recorder_or_path_str)

Load & parse record

Record.meta -> dict

Get meta info of record.

Record.data -> pandas.DataFrame

Get data table of record.

Metadata

Release files for record-kit 0.1.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for record-kit 0.1.10
File Interpreter ABI Platform
record_kit-0.1.10-py3-none-any.whl Python 3 none any Details

Release files / record_kit-0.1.10-py3-none-any.whl

Download URL record_kit-0.1.10-py3-none-any.whl
Size 5.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5e5cfc61dfeb11c5dce0db2a8dd655d762710e5a363116875470721189217ff1
BLAKE2b-256 checksum
How to use checksums
e1768fc0f2baf89024e3daf43f023f73e5b6f02aae605022bea3c0aeba259d07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.10.0

Release history Release notifications | RSS feed

This release

0.1.10 This release

1 release file

0.1.9

1 release file

0.1.8

1 release file

0.1.7

1 release file

0.1.6

1 release file

0.1.5

2 release files

0.1.4

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page