Developement version
Source:CHANGELOG.md
NEW FEATURES
- Add a
lamin_settings()
function that displays information from runninglamin settings
(PR #201) - Add a
laminr_status()
function that returns alaminr_status
object with information useful for debugging. This has pretty print output. (PRs #201, #215) - Add a
get_current_lamin_settings()
function that returns the current LaminDB settings as an R list (PR #210, fixes #207) - Add
LAMINR_LAMINDB_VERSION
andLAMINR_LAMINDB_OPTIONS
environment variables to control the version of Python lamindb that is installed (PR #194)
MAJOR CHANGES
- Isolate functions that made CLI calls so they do not interfere with the main session/environment (PR #201)
- Require instance modules before importing
lamindb
so they should be available (PR #201) - Save a simplified R environment file when
ln$finish()
is called instead of a {pak} lockfile (PR #213, related to #195, #205)
MINOR CHANGES
- Add an alert if an instance module is not available with importing lamindb (PR #201)
- Add a status message to
require_module()
, can be suppressed withsilent = TRUE
(PR #201) - Add wrapping for the
lamindb.models.sqlrecord.Registry
class (PR #203) - Remove {nanoparquet} as a suggested dependency, loading Parquet files now requires {arrow} (PR #203)
- Increase {reticulate} dependency to
>=1.41.0
to make sure thepy_require()
functionality is available (PR #208) - Add a minimal requirement for
scipy>=1.7
to avoid an issue where {reticulate} attempted and failed to installscipy==1.6
(PR #209, fixes #206)
BUG FIXES
- Handle missing setting values in
lamin_settings()
(PR #202) - Handle list columns when creating artifacts from data frames (PR #203)
laminr v1.1.0
NEW FEATURES
- Add tracking of the R environment using {pak} lockfiles (PR #179)
- Allow setting of object slots (PR #188)
- Enable the
view_lineage()
functionality to properly display lineage graphs (PR #180)
MINOR CHANGES
- Update reticulate dependency to >= 1.38.0 (PR #158)
- Use {rmarkdown} instead of {quarto} for articles (PR #159)
- Improve inheritance of arguments when wrapping and overwriting Python functions (PR #191)
BUG FIXES
- Fix an issue that was preventing
lamin_connect()
from being run multiple times with the same instance (PR #176) - Properly clear and delete temporary instances created using
lamin_init_temp()
(PR #189)
DOCUMENTATION
- Update the feel and structure of the documentation website (PR #159, PR #160, PR #161, PR #163, PR #172, PR #175)
- Update the content of the introduction article to match the main documentation site (PR #188)
- Update the welcome vignette to point to the main LaminDB documentation website (PR #190)
laminr v1.0.0
LaminR now has feature parity with LaminDB (PR #146).
Migration guide:
- Run
install_lamindb()
, which will ensurelamindb >= 1.2
in the Python environment used byreticulate
. - Replace
db <- connect()
withln <- import_module("lamindb")
and see the table below. Theln
object is largely similar to thedb
object in {laminr} < v1 and matcheslamindb
’s Python API up to replacing.
with$
.
What | Before | After |
---|---|---|
Connect to the default LaminDB instance | db <- connect() |
ln <- import_module("lamindb") |
Start tracking | db$track() |
ln$track() |
Get an artifact from another instance | new_instance <- connect("another/instance"); new_instance$Artifact$get(...) |
ln$Artifact$using("another/instance")$get(...) |
Create an artifact from a path | db$Artifact$from_path(path) |
ln$Artifact(path) |
Finish tracking | db$finish() |
ln$finish() |
See the updated “Get started” vignette for more information.
User-facing changes:
- Add an
import_module()
function to import Python modules with additional functionality, e.g.,import_module("lamindb")
for lamindb - Add functions for accessing more
lamin
CLI commands - Add a new “Introduction” vignette that replicates the code from the Python lamindb introduction guide
Internal changes:
- Add an internal
wrap_python()
function to wrap Python objects while replacing Python methods with R methods as needed, leaving most work to {reticulate} - Update the internal
check_requires()
function to handle Python packages - Add custom
cache()
/load()
methods to theArtifact
class - Add custom
track()
/finish()
methods to the lamindb module
laminr v0.3.1
This release improves the UX for setting up the Python environment and adds functions to allow access to CLI functionality from R.
NEW FUNCTIONALITY
- Add a
install_lamindb()
function to help with setting up the default Python environment (PR #129). - Add
lamin_login()
andlamin_connect()
functions to allow access to CLI functionality from R (PR #129).
laminr v0.3.0
This release contains mostly UX improvements:
- Support for interacting with private LaminDB instances
- Support for interacting with TileDB-SOMA / CELLxGENE Census
- Improved UX for tracking and finishing runs
NEW FUNCTIONALITY
- Allow tracking of artifacts loaded for non-default instances (PR #124).
- Interact with TileDB-SOMA stores (PR #117). Add a
open()
method to theArtifact
class to connect to TileDB-SOMA stores.
laminr v0.2.0
This release adds support for creating new artifacts in a LaminDB instance.
NEW FUNCTIONALITY
- Add support for more loaders (PR #81).
Currently supported:.csv
,.h5ad
,.html
,.jpg
,.json
,.parquet
,.png
,.rds
,.svg
,.tsv
,.yaml
. - Add a
from_df()
method to theRegistry
class to create new artifacts from data frames (PR #78) - Create
TemporaryRecord
classes for new artifacts before they have been saved to the database (PR #78) - Add a
delete()
method to theRecord
class (PR #78) - Add
track()
andfinish()
methods to theInstance
class (PR #83) - Add a
from_path()
method to theRegistry
class to create new artifacts from paths (PR #85) - Add a
from_anndata()
method to theRegistry
class to create new artifacts fromAnnData
objects (PR #85) - Add RStudio add-in for saving a notebook (PR #90).
MAJOR CHANGES
- Running
connect(slug = NULL)
now connects to the default instance that is allowed to create records. The default instance must be changed using the Lamin CLI. (PR #78) - User setting are stored in a global option the first time
connect()
is run (PR #78)
MINOR CHANGES
- Adjusted argument order in
Instance$track()
and improved Python error handling (PR #89)
laminr v0.1.0
First CRAN release of the LaminDB API client for R. This release focuses on connecting to a LaminDB instance, fetching an individual record from the instance, and fetching related data for that record.
Features:
- Connect to a LaminDB instance
- Auto-generate modules and classes from the instance schema
- Fetch a record
- Fetch a record’s related data
- Fetch record summary table
- Cache S3 artifact
- Load AnnData artifact
For more information, please visit the package website.
NEW FUNCTIONALITY
- Query instance settings from Lamin Hub (PR #8).
- Read user settings from env file created by lamin Python package (PR #2, PR #8).
- Add
to_string()
andprint()
methods to theRecord
class and (incomplete)describe()
method to theArtifact()
class (PR #22). - Add
to_string()
andprint()
methods to remaining classes (PR #31) - Add
InstanceAPI$get_records()
andRegistry$df()
methods (PR #54) - Add a
RelatedRecords
class andRelatedRecords$df()
method (PR #59)
MAJOR CHANGES
Refactored the internal class data structures for better modularity and extensibility (PR #8).
-
Added GitHub actions to the project (PR #11):
- Standard R-CMD-check workflow.
- Linting action.
- Commands for roxygenizing (
/document
) and restyling the source code (/style
).
Allow unauthenticated users to connect to an instance if they ran
lamin connect <instance>
beforehand (PR #19).
MINOR CHANGES
- Do not complain when foreign keys are not found in a record, but also do not complain when they are (PR #13).
- Define a current user and current instance with lamin-cli prior to testing and generating documentation in the CI (PR #23).
- Add progress bars to
Artifact$cache()
(PR #58) - Remove link tables from object print output (PR #55)
- Improve checking for suggested packages and provide installation instructions if missing (PR #56)
- Add the status code to API error messages (PR #70)
- Adjust colours in print output (PR #69)
- Modify
Registry
print output to separate relational fields by module (PR #71)
TESTING
- Add a simple unit test which queries laminlabs/lamindata (PR #27).
- Added unit test for the InstanceAPI class (PR #30).
- Add a regular expression to the API test for missing records (PR #70)
DOCUMENTATION
- Update
README
with new set up instructions and simplify (PR #14). - Add a
pkgdown
website to the project (PR #13). - Further simplify the
README
, and move the detailed usage description to a separate vignette (PR #13). - Generate vignettes using Quarto (PR #13).
- Add vignette to showcase laminr usage (PR #18).
- Replace all mentions of
lamin load
withlamin connect
(PR #29). - Improve the
README
(PR #29). - Set Python requirements to
lamindb[aws]
for now (PR #33). Will be changed tolamin_cli
once laminlabs/lamin-cli#90 is solved. - Improve documentation for installing suggested dependencies and what they are required for (PR #56).
- Update the README to give a better overview of the package (PR #67).
- Rename the
usage
vignette tolaminr
and added an overview of the core concepts of LaminDB (PR #67). - Update the
architecture
vignette to relate the class structure of the package to the core concepts (PR #67). - Add a
development
vignette to document the list of current, planned and unplanned functionality (PR #67). - Add vignettes to document registries in the core, bionty, and wetlab modules (PR #67).
BUG FIXES
- Fixed the parsing of the env files in
~/.lamin
due to changes in the lamindb-setup Python package (PR #12). - Return
NULL
when a record’s related field is empty (PR #28). - Add alternative error message when no message is returned from the API (PR #30).
- Handle when error detail returned by the API is a list (PR #59)
- Manually install OpenBLAS on macOS (PR #62).
- Switch to Python 3.12 for being able to install scipy on macOS (PR #66).