Legality check¶
Checks a DNA sequence, record, or data set for compliance with rules such as alphabet, length, gap, quality, and metadata, and returns a structured list of questions.
Whenever an error is found, the is_valid of the returned result is False; all issues are still stored in the structured issues.
1) Validate sequences and datasets¶
- Purpose: Check alphabet, illegal symbols, empty sequences, length, gap, ambiguous base ratio, record metadata, PHRED quality, empty set and duplicate ID in one go, and return an itemized issue report to filter out or correct invalid data before analysis.
-
Method: Evaluate each configured rule and collect issues; errors set is_valid=False while warnings alone do not.
-
API:
dnakit.validate(value[required], config[optional]); single input returnsValidationReport, collective input returnsDatasetValidationReport. Configuration type isdnakit.ValidationConfigordnakit.DatasetValidationConfig. - Input: Ordinary users can directly input
DNA. When there is only one record, useValidationConfigand return a single report; when it contains multiple records, you can useDatasetValidationConfig, or you can directly passValidationConfigas the rule for each record. Old core objects are still compatible. - Output: A single input returns
ValidationReport; a collection returnsDatasetValidationReport. Both expose validity and issues. - Example code:
from dnakit import DNA, ValidationConfig, validate
single = validate(
DNA("ACGN", alphabet="iupac"),
config=ValidationConfig(alphabet="strict"),
)
print(single.is_valid)
print([issue.code for issue in single.issues])
records = DNA(
[
{"sequence": "ACGT", "id": "valid"},
{"sequence": "AC", "id": "short"},
]
)
collection = validate(records, config=ValidationConfig(min_length=3))
print(collection.is_valid)
print([issue.code for issue in collection.issues])
- Example output: