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.connectors
now 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.connectors
module 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.connectors
from 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.connectors
module. This module contains thegenerate_study_design_from_config
function to generate anisatools.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 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 oneAssay
per 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.ProductNode
now has an attributeextension
(e.g. a file extension fo aDataFile
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
andisatools.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.models
has been renamed toisatools.create.model
(issue #368)IsaModelAttributeError
has been replaced withAttributeError
. We will favour standard Exceptions whenever applicable.
Bug Fixes:
Fixed typo in NAME_PROPERTY_ASSIGNMENT_ERROR (issue #328)
Silent expansion of
Characteristic
categories fromstr
toOntologyAnnotation
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)
Assigned correct header “Data Transformation Name” for protocol type “sequence analysis data transformation” (commit b8f2f55b4e046f1841ffba7d6fb190c87918375f)
New Documentation:
Creation of a
jupyter-book
based documentation: https://isa-tools.org/isa-cookbook/content/index.htmlThis documentation supercedes the readthedocs based one.
The new documentation contains a number of
jupyter
notebooks showing various features of the isa-api.
isatools v0.11 package¶
This release of
isatools
introduces a major overhaul of the pre-existingcreate
mode 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
,StudyCell
andStudyArm
classes #318, #321Increased flexibility of the sample and assay plans, with the introduction of the
AssayGraph
and the overhaul of theSampleAssayPlan
class, now renamedSampleAndAssayPlan
#329, #333, #296Increased flexibility for Quality Control support through the
QualityControlService
utility 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.v1
is now inisatools.model
. Packagesisatools.validate
,isatools.config
,isatools.schemas
have been removed. Some items fromisatools.convert
andisatools.io
have been split into theisatools.io
orisatools.net
packages, 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.models
currently 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
py2
source 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
Name
column is required to qualify aProtocol REF
has been left blank. Utility functions have been written to detect these anomalies and to assist in correcting them, in theisatools.utils
package. #146 (see detail after bullet points)When converting to ISA JSON in using
UUID
orcounter
Identifier 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 File
columns, and therefore theisatab2*
converters also do not support these #174The SRA/ENA importer in
sra2isatab
relies on XSLT2 processing functionality only available with SAXON, so you must provide the JAR file yourself to use thissra2isatab
converter 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¶
required
constraints on JSON schemas causes validation failure for@id
objects, 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 REF
columns followed by anotherProtocol REF
columns without any materials in between) are not currently supported. It is not recommended to attempt to use such patterns with this version of theisatools
package #111When converting to ISA JSON in using
UUID
orcounter
Identifier Types, some elements are not detected, such asArray_Design_REF
#101The SRA/ENA importer in
sra2isatab
relies 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¶
required
constraints on JSON schemas causes validation failure for@id
objects, meaning some constraints using JSON schemas cannot be used for validation #108When converting to ISA JSON in using
UUID
orcounter
Identifier Types, some elements are not detected, such asArray_Design_REF
#101Protocol REF
columns 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 REF
columns followed by anotherProtocol REF
columns without any materials in between) are not currently supported. It is not recommended to attempt to use such patterns with this version of theisatools
package #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.xml
and 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 REF
columns followed by anotherProtocol REF
columns without any materials in between) are not currently supported. It is not recommended to attempt to use such patterns with this version of theisatools
package #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.