How to track notebooks?#

!lamin init --storage ./test-notebooks
✅ saved: User(id='DzTjkKse', handle='testuser1', email='testuser1@lamin.ai', name='Test User1', updated_at=2023-09-26 15:21:17)
✅ saved: Storage(id='RqxUgN76', root='/home/runner/work/lamindb/lamindb/docs/faq/test-notebooks', type='local', updated_at=2023-09-26 15:21:17, created_by_id='DzTjkKse')
💡 loaded instance: testuser1/test-notebooks
💡 did not register local instance on hub (if you want, call `lamin register`)

import lamindb as ln

ln.settings.verbosity = "hint"
💡 loaded instance: testuser1/test-notebooks (lamindb 0.54.2)

The following call will create a new run, if there is none in the database, yet.

ln.track()
💡 notebook imports: lamindb==0.54.2
✅ saved: Transform(id='FkCpHEubpDGYxM', name='How to track notebooks?', short_name='notebooks', version='1', type=notebook, updated_at=2023-09-26 15:21:20, created_by_id='DzTjkKse')
✅ saved: Run(id='DtelPkFNoq6JtUQp2kFm', run_at=2023-09-26 15:21:20, transform_id='FkCpHEubpDGYxM', created_by_id='DzTjkKse')
run_id = ln.dev.run_context.run.id

Calling ln.track() when there is a new run in the database will load the latest run:

ln.track()
💡 notebook imports: lamindb==0.54.2
✅ loaded: Transform(id='FkCpHEubpDGYxM', name='How to track notebooks?', short_name='notebooks', version='1', type='notebook', updated_at=2023-09-26 15:21:20, created_by_id='DzTjkKse')
✅ loaded: Run(id='DtelPkFNoq6JtUQp2kFm', run_at=2023-09-26 15:21:20, transform_id='FkCpHEubpDGYxM', created_by_id='DzTjkKse')
ln.Run.filter().df()
transform_id run_at created_by_id reference reference_type
id
DtelPkFNoq6JtUQp2kFm FkCpHEubpDGYxM 2023-09-26 15:21:20 DzTjkKse None None
run_id
'DtelPkFNoq6JtUQp2kFm'
ln.run_context.run.id
'DtelPkFNoq6JtUQp2kFm'
Hide code cell content
# this tests that we're still using the previous run
assert run_id == ln.run_context.run.id

If you’d like to create a new run, pass new_run=True.

ln.track(new_run=True)
💡 notebook imports: lamindb==0.54.2
✅ loaded: Transform(id='FkCpHEubpDGYxM', name='How to track notebooks?', short_name='notebooks', version='1', type='notebook', updated_at=2023-09-26 15:21:20, created_by_id='DzTjkKse')
✅ saved: Run(id='pmaCyNX0hwlsWtFgPSaP', run_at=2023-09-26 15:21:20, transform_id='FkCpHEubpDGYxM', created_by_id='DzTjkKse')
Hide code cell content
assert run_id != ln.run_context.run.id
# test re-initialize notebook if it got renamed
from lamindb.dev._run_context import reinitialize_notebook

transform = ln.Transform(id="FkCpHEubpDGY58", name="My test")

# outside of CI, will expect interactive user input
transform, metadata = reinitialize_notebook(transform, ask_for_new_id=False)

assert not transform.id.startswith("FkCpHEubpD")
!lamin delete --force test-notebooks
!rm -r test-notebooks
💡 deleting instance testuser1/test-notebooks
✅     deleted instance settings file: /home/runner/.lamin/instance--testuser1--test-notebooks.env
✅     instance cache deleted
✅     deleted '.lndb' sqlite file
❗     consider manually deleting your stored data: /home/runner/work/lamindb/lamindb/docs/faq/test-notebooks