signac v1.0.0 Release Notes
Release Date: 2019-02-28 // about 5 years ago-
Highlights
- 👷 Native integration of HDF5 files with the
H5Store
andH5StoreManager
, which are exposed as thejob.data
,job.stores
,project.data
, andproject.stores
properties respectively. - 👷 The newly added
signac.get_job()
function makes it easier to obtain instances ofJob
by calling the function from within a job's workspace directory or by directly providing the path to the job's workspace directory. This is especially useful for interactive work or when accessing jobs which are outside of the current project. - Simplified export of project and job data to pandas dataframes via the
to_dataframe()
function. - 👷 Projects and job search results are displayed nicely in Jupyter Notebooks.
- 👌 Support for compressed Collection files.
➕ Added
- 👍 Official support for Python 3.7.
- The
H5Store
andH5StoreManager
classes, which are useful for storing (numerical) array-like data with an HDF5-backend. These classes are exposed within the root namespace. - 👷 The
job.data
andproject.data
properties which present an instance ofH5Store
to access numerical data within the job workspace and project root directory. - 👷 The
job.stores
andproject.stores
properties, which present an instance ofH5StoreManager
to manage multiple instances ofH5Store
to store numerical array-like data within the project workspace and project root directory. - 👷 The
signac.get_job()
and thesignac.Project.get_job()
functions that allow users to get a job handle by switching into or providing the job's workspace directory. - 👷 The
job
variable is automatically set when opening asignac shell
from within a job's workspace directory. - ➕ Add the
signac shell -c
option which allows the direct specification of Python commands to be executed within the shell. - 👷 Automatic cast of
numpy
arrays to lists when storing them within aJSONDict
, e.g., ajob.statepoint
orjob.document
. - Enable
Collection
class to manage collections stored in compressed files (gzip, zip, etc.). - 👷 Enable deleting of
JSONDict
keys through the attribute interface, e.g.,del job.doc.foo
. - 👷 Pretty HTML representation of instances of
Project
andJobsCursor
targeted at Jupyter Notebooks (requires pandas, automatically enabled when installed). - 👷 The
to_dataframe()
function to export the job state point and document data of aProject
or aJobsCursor
, e.g., the result ofProject.find_jobs()
, as apandas.Dataframe
(requires pandas).
🔄 Changed
- 🗄 Dots (
.
) in keys are no longer allowed forJSONDict
andCollection
keys (previously deprecated). - 👷 The
JSONDict
module is exposed in the root namespace, which is useful for storing text-serializable data with a JSON-backend similar to thejob.statepoint
orjob.document
, etc. - 👷 The
Job.init()
method returns the job to allow one-line job creation and initialization. - 0️⃣ The
search
argument was added to thesignac.get_project()
function, which when True (the default), will cause signac to search for a project within and above a specified root directory, not only within the root directory. The behavior without any arguments remains unchanged.
🛠 Fixed
- 🛠 Fix
Collection.update()
behavior such that existing documents with identical primary key are updated. Previously, aKeyError
would be raised. - 🛠 Fix issue where the
Job.move()
would trigger a confusingDestinationExists
exception when trying to move jobs across devices / file systems. - 🛠 Fix issue that caused failures when the
python-rapidjson
package is installed. Thepython-rapidjson
package is used as the primary JSON-backend when installed. - 🛠 Fix issue where schema with multiple keys would subset incorrectly if the list of jobs or statepoints was provided as an iterator rather than a sequence.
✂ Removed
- ✂ Removes the obsolete and deprecated
core.search_engine
module. - The previously deprecated
Project.find_statepoints()
andProject.find_job_documents()
functions have been removed. - 👷 The
Project.find_jobs()
no longer accepts the obsoleteindex
argument.
- 👷 Native integration of HDF5 files with the