Features:
- Added the `isatools.create.connectors` module. This module contains the `generate_study_design_from_config` function to generate an `isatools.create.StudyDesign` from a JSON configuration document containing metadata about the study design, including sampling and assay plan. These JSON documents can be generated by the [Datascriptor](https://gitlab.com/datascriptor/datascriptor) application.(issues #355, 356, 377)
- Added support for observational variables to `isatools.create.model.StudyArm` (with the parameter `source_characteristics`) (PR 367)
- `StudyDesign.generate_isa_study()`now generates one `Assay` per assay type (via `StudyDesign._generate_samples()`). (issue 369, 373)
- The names of the assay nodes (extract, labelled, extract, protocol node, and data file) (issue 370, 373)
- `isatools.create.model.ProductNode` now has an attribute `extension` (e.g. a file extension fo a `DataFile` node) (issue 378)
Enhancements and Cleanup:
- Introduced support for (built-in, non-configurable) synonyms in protocol types. Protocol types have also been made case insensitive. (issue 382)
- Refactored constants and error messages for the create mode, introducing the modules `isatools.create.constants` and `isatools.create.errors` (issue 342, 368)
- Removed asterisk imports (`*`) from all the core modules (issue 368)
- Removed leftover `print()` statements (issue 374)
- overall test coverage increased from 67% to 76%. The increase is due both to an increase in the number of tests and the removal of some deprecated, experimental or spurious modules.
Breaking changes:
- `isatools.create.models` has been renamed to `isatools.create.model` (issue 368)
- `IsaModelAttributeError` has been replaced with `AttributeError`. We will favour standard Exceptions whenever applicable.
Bug Fixes:
- Fixed typo in NAME_PROPERTY_ASSIGNMENT_ERROR (issue 328)
- Silent expansion of `Characteristic` categories from `str` to `OntologyAnnotation` now supported. You can assign a string to a characteristic category and it will be automatically wrapped into an ontology annotation. (issue 332)
- Fixed duplicated in `OntologyAnnotation` ids (issue 381)
- Fixed raising of an error when correctly setting a comment value (issue 360)