Release Notes¶
List of ISA-API changes and fixes:
isatools v0.13 package¶
Enhancements and Cleanup:
significant optimisation of
isatab.dump()via reworking the study/assay graph implementation. This can improve up to 3 or 4 orders of magnitude the writing to ISA-tab for datasets with thousands of samples (PR #403). An additional tweak has been implemented to compute only once the study/assay process graph (8c2d09da6599dc89e3f6cfe8719c125c50fa3690)All the major objects of the ISA models are now
Commentable(PR #395)isatools.create.connectorsnow supports both strings and Ontology Annotations for Subject Type and Sample Type (PR #405)CI is now migrated from Travis CI to GitHub CI (issue #404)
Extension to documentation (new notebook documenting roundrip)
Breaking changes:
Changes to the
isatools.create.connectorsmodule to align it with the Datascriptor study JSON config. Now the Datascriptor study config has a “design” property holding all the study design information (PR #405)
Bug Fixes:
all names for protocols in studies generated by
isatools.create.connectorsfrom Datascriptor study configs are unique (issue #398)identifiers for studies and investigations are coerced to strings (commit 7e9f468d633b54d356c136fdf1f0ea765d33279d)
isatools v0.12 package¶
Features:
Added the
isatools.create.connectorsmodule. This module contains thegenerate_study_design_from_configfunction to generate anisatools.create.StudyDesignfrom a JSON configuration document containing metadata about the study design, including sampling and assay plan. These JSON documents can be generated by the Datascriptor application.(issues #355, #356, #377)Added support for observational variables to
isatools.create.model.StudyArm(with the parametersource_characteristics) (PR #367)StudyDesign.generate_isa_study()now generates oneAssayper assay type (viaStudyDesign._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.ProductNodenow has an attributeextension(e.g. a file extension fo aDataFilenode) (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.constantsandisatools.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 75%. 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.modelshas been renamed toisatools.create.model(issue #368)IsaModelAttributeErrorhas been replaced withAttributeError. We will favour standard Exceptions whenever applicable.
Bug Fixes:
Fixed typo in NAME_PROPERTY_ASSIGNMENT_ERROR (issue #328)
Silent expansion of
Characteristiccategories fromstrtoOntologyAnnotationnow 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
OntologyAnnotationids (issue #381)Fixed raising of an error when correctly setting a comment value (issue #360)
Assigned correct header “Data Transformation Name” for protocol type “sequence analysis data transformation” (commit b8f2f55b4e046f1841ffba7d6fb190c87918375f)
New Documentation:
Creation of a
jupyter-bookbased documentation: https://isa-tools.org/isa-cookbook/content/index.htmlThis documentation supercedes the readthedocs based one.
The new documentation contains a number of
jupyternotebooks showing various features of the isa-api.
isatools v0.11 package¶
This release of
isatoolsintroduces a major overhaul of the pre-existingcreatemode for the generation of ISA documents from study design metadata. We have also introduced some (mostly) minor fixes to the core ISA API, enforcing a stricter validation on some objects.Among the most noteworthy changes there are:
Support of complex longitudinal study designs with the introduction of
Element,Treatment,StudyCellandStudyArmclasses #318, #321Increased flexibility of the sample and assay plans, with the introduction of the
AssayGraphand the overhaul of theSampleAssayPlanclass, now renamedSampleAndAssayPlan#329, #333, #296Increased flexibility for Quality Control support through the
QualityControlServiceutility classReworked serialization to JSON/deserialization from JSON of all the study design objects #313
Check added when submitting quantitative Parameter Values: only numerical values are allowed #347
For more information on the known issues with this release, please check the documentation at http://isatools.readthedocs.org
isatools v0.10 package¶
Various updates to the Create Mode for Metabolomics templating, found in
isatools.create.models, and updates to address various general issues.
isatools v0.9 package¶
Various API packages have been refactored and moved.
isatools.model.v1is now inisatools.model. Packagesisatools.validate,isatools.config,isatools.schemashave been removed. Some items fromisatools.convertandisatools.iohave been split into theisatools.ioorisatools.netpackages, where the latter has been created to distinguish parts of the ISA API that require network accessIssue #153 is still outstanding since version 0.4, as per below; new issue #235 where missing `Protocol REF`s are sometimes incorrectly inserted on loading ISA-Tab
New ISA creation functionality from planning objects in
isatools.create.modelscurrently only support a limited number of technology types (DNA microarray, DNA sequencing, mass spectrometry, and NMR)SRA/ENA importer and Biocrates importer relies on XSLT2 processing only available with SAXON and requires .jar file to run
It has been decided to stop work on retrofitting support for Python 2.7 and focus on keeping up to date with the current and future Python versions
isatools v0.8 package¶
Issues #153 is still outstanding, as per below; new issue #208 (ISA-Tab validation issue)
SRA/ENA importer and Biocrates importer relies on XSLT2 processing only available with SAXON and requires .jar file to run
isatools v0.7 package¶
Issues #101, #153 are still outstanding, as per below
SRA/ENA importer and Biocrates importer relies on XSLT2 processing only available with SAXON and requires .jar file to run
isatools v0.6 package¶
Issues #146, #101, #153 are still outstanding, as per below
SRA/ENA importer and Biocrates importer relies on XSLT2 processing only available with SAXON and requires .jar file to run
We are aware that there may be some performance issues when loading and writing ISA-Tab documents with several thousand samples. This has been worked on and there is ongoing efforts to improve on the current performance of ISA-Tab I/O
isatools v0.5 package¶
All issues inherited from v0.4 (see below)
Currently only Python 3.4 and 3.5 is supported. Python 2.7 support is present in the
py2source branch on Github.
isatools v0.4 package¶
For certain of ISA-Tab table files, the ISA-Tab parser cannot disambiguate between process instances where a
Namecolumn is required to qualify aProtocol REFhas been left blank. Utility functions have been written to detect these anomalies and to assist in correcting them, in theisatools.utilspackage. #146 (see detail after bullet points)When converting to ISA JSON in using
UUIDorcounterIdentifier Types, some elements are not detected, such asArray_Design_REF#101The ISA-Tab parser does not support reading
Protein Assignment File,Peptide Assignment File,Post Translational Modification Assignment Filecolumns, and therefore theisatab2*converters also do not support these #174The SRA/ENA importer in
sra2isatabrelies on XSLT2 processing functionality only available with SAXON, so you must provide the JAR file yourself to use thissra2isatabconverter does not support SRA pools #153The legacy functionality (marked in the documentation) relies on Java 1.6
To check for possible erroneous pooling events in an ISA-Tab archive, you can try something like:
>>> from isatools import utils
>>> utils.detect_isatab_process_pooling('tests/data/tab/MTBLS1/')
INFO: Converting ISA-Tab to ISA JSON...
INFO: Converting ISAtab to ISAjson for tests/data/tab/MTBLS1/
INFO: ... conversion finished.
Checking s_MTBLS1.txt
Checking a_mtbls1_metabolite_profiling_NMR_spectroscopy.txt
Possible process pooling detected on: #process/Extraction1
Possible process pooling detected on: #process/ADG_normalized_data.xlsx
[{'a_mtbls1_metabolite_profiling_NMR_spectroscopy.txt': ['#process/Extraction1', '#process/ADG_normalized_data.xlsx']}]
>>>
In this case, #process/Extraction1 is the pooling that we did not
expect. This is a pooling on a single Extraction. From manual
inspection of the ISA-Tab file
a_mtbls1_metabolite_profiling_NMR_spectroscopy.txt we can then confirm
that values are entirely missing from Extract Name, causing the parser
to think the experimental graph converges on one process node. To
rectify this, individual values should be put into this Name column.
We can try fix erroneous pooling by filling out an empty Name column
with a corresponding Protocol REF by doing the following:
>>> utils.insert_distinct_parameter(open('tests/data/tab/MTBLS1/a_mtbls1_metabolite_profiling_NMR_spectroscopy.txt', 'r+'), 'Extraction')
Are you sure you want to add a column of hash values in Extract Name? Y/(N)
>? Y
If successful, this will fill out the empty column with 8 character-long UUIDs (e.g. 4078cb03).
Please be aware that these utility functions
detect_isatab_process_pooling() and insert_distinct_parameter() are
there to help you manually fix your ISA-Tabs, not to automatically fix
them for you. We wil address this issue in more depth in following
releases.
isatools v0.3 package¶
requiredconstraints on JSON schemas causes validation failure for@idobjects, meaning some constraints using JSON schemas cannot be used for validation #108Chained processes (i.e. a process followed by another process without any intermediate inputs and outputs, in ISAtab a
Protocol REFcolumns followed by anotherProtocol REFcolumns without any materials in between) are not currently supported. It is not recommended to attempt to use such patterns with this version of theisatoolspackage #111When converting to ISA JSON in using
UUIDorcounterIdentifier Types, some elements are not detected, such asArray_Design_REF#101The SRA/ENA importer in
sra2isatabrelies on XSLT2 processing functionality only available with SAXON, so you must provide the JAR file yourself to use thisThe legacy functionality (marked in the documentation) relies on Java 1.6
isatools v0.2 package¶
requiredconstraints on JSON schemas causes validation failure for@idobjects, meaning some constraints using JSON schemas cannot be used for validation #108When converting to ISA JSON in using
UUIDorcounterIdentifier Types, some elements are not detected, such asArray_Design_REF#101Protocol REFcolumns must be present in order for the ISA-Tab to JSON conversion to pick up processes in the process sequences #111Characteristics and Factor Values declared in assay tables in ISAtab are associated to Sample objects only. This means that when writing from Python objects, or converting from ISA JSON, to ISAtab these columns appear at the study table.
Chained processes (i.e. a process followed by another process without any intermediate inputs and outputs, in ISAtab a
Protocol REFcolumns followed by anotherProtocol REFcolumns without any materials in between) are not currently supported. It is not recommended to attempt to use such patterns with this version of theisatoolspackage #111For experimental graph patterns to work, should follow relatively simple patterns. e.g. Straight Sample -> … -> Materials -> … -> Data paths (per assay), or simple splitting and pooling. See test package code for examples of what works.
No ISA JSON configurations have been included that correspond with the following default XML configurations:
clinical_chemistry.xmland most are as yet untested.
isatools v0.1 package¶
Characteristics and Factor Values declared in assay tables in ISAtab are associated to Sample objects only. This means that when writing from Python objects, or converting from ISA JSON, to ISAtab these columns appear at the study table.
Chained processes (i.e. a process followed by another process without any intermediate inputs and outputs, in ISAtab a
Protocol REFcolumns followed by anotherProtocol REFcolumns without any materials in between) are not currently supported. It is not recommended to attempt to use such patterns with this version of theisatoolspackage #111For experimental graph patterns to work, should follow relatively simple patterns. e.g. Straight Sample -> … -> Materials -> … -> Data paths (per assay), or simple splitting and pooling. See test package code for examples of what works.
For a full up-to-date list of issues, or to report an issue or ask a question, please see the issue tracker.