| 1 | Jens Allmer | v1 writing | *A component publication of the Internet of Science: `FASTALenFilter` 0.2.0, an atom. Generated from the manifest and the class comment on 2026-10-26; the author completes it and saves new versions. Lines marked FILL IN are the author's.* |
| 2 | Jens Allmer | v1 writing | |
| 3 | Jens Allmer | v1 writing | ## What it does and why |
| 4 | Jens Allmer | v1 writing | |
| 5 | Jens Allmer | v1 writing | Keeps the FASTA records whose sequence length lies within [minLen, maxLen] (inclusive). |
| 6 | Jens Allmer | v1 writing | |
| 7 | Jens Allmer | v1 writing | FILL IN: why this component exists — the problem it solves and what the IoS lacked without it. |
| 8 | Jens Allmer | v1 writing | |
| 9 | Jens Allmer | v1 writing | ## Algorithm |
| 10 | Jens Allmer | v1 writing | |
| 11 | Jens Allmer | v1 writing | FILL IN: the algorithm reference (a citation tag from docs/vision/README.md or a paper); the class comment names none yet. |
| 12 | Jens Allmer | v1 writing | |
| 13 | Jens Allmer | v1 writing | ## Inputs and outputs |
| 14 | Jens Allmer | v1 writing | |
| 15 | Jens Allmer | v1 writing | - input `in`: `FASTA.Entry` — One FASTA record: { header: string (with leading ">"), seq: string (no whitespace) }. |
| 16 | Jens Allmer | v1 writing | - output `out`: `FASTA.Entry` — One FASTA record: { header: string (with leading ">"), seq: string (no whitespace) }. |
| 17 | Jens Allmer | v1 writing | |
| 18 | Jens Allmer | v1 writing | ## Parameters |
| 19 | Jens Allmer | v1 writing | |
| 20 | Jens Allmer | v1 writing | - `minLen` (integer, default 1, min 1): Minimum length |
| 21 | Jens Allmer | v1 writing | - `maxLen` (integer, default -1, min 1, -1 = unlimited): Maximum length (-1: unlimited) |
| 22 | Jens Allmer | v1 writing | |
| 23 | Jens Allmer | v1 writing | ## How it is tested |
| 24 | Jens Allmer | v1 writing | |
| 25 | Jens Allmer | v1 writing | - `tests/unit/apps/graph-to-workflow.test.js` |
| 26 | Jens Allmer | v1 writing | - `tests/unit/apps/presentation-publications.test.js` |
| 27 | Jens Allmer | v1 writing | - `tests/unit/apps/suggest.test.js` |
| 28 | Jens Allmer | v1 writing | - `tests/unit/apps/wfms-server.test.js` |
| 29 | Jens Allmer | v1 writing | - `tests/unit/atomic/fasta/FASTALenFilter.test.js` |
| 30 | Jens Allmer | v1 writing | - `tests/unit/bin/ios-batch.test.js` |
| 31 | Jens Allmer | v1 writing | - `tests/unit/bin/ios-bundle.test.js` |
| 32 | Jens Allmer | v1 writing | - `tests/unit/bin/ios-new.test.js` |
| 33 | Jens Allmer | v1 writing | - `tests/unit/bin/ios-publish-component.test.js` |
| 34 | Jens Allmer | v1 writing | - `tests/unit/runtime/pipeline.test.js` |
| 35 | Jens Allmer | v1 writing | - `tests/unit/runtime/qc.test.js` |
| 36 | Jens Allmer | v1 writing | - `tests/unit/runtime/registry-roots.test.js` |
| 37 | Jens Allmer | v1 writing | - `tests/unit/runtime/registry-workflows.test.js` |
| 38 | Jens Allmer | v1 writing | - `tests/unit/runtime/registry.test.js` |
| 39 | Jens Allmer | v1 writing | - `tests/unit/runtime/workflow-failure.test.js` |
| 40 | Jens Allmer | v1 writing | - `tests/unit/runtime/workflow-subworkflows.test.js` |
| 41 | Jens Allmer | v1 writing | - `tests/unit/runtime/workflow.test.js` |
| 42 | Jens Allmer | v1 writing | - `tests/unit/runtime/WorkflowStage.test.js` |
| 43 | Jens Allmer | v1 writing | - `tests/unit/tools/build-browser.test.js` |
| 44 | Jens Allmer | v1 writing | - `tests/unit/tools/bundler.test.js` |
| 45 | Jens Allmer | v1 writing | - the conformance suite (`tests/conformance/components.test.js`, `tests/conformance/credits.test.js`, `tests/conformance/dead-ends.test.js`, `tests/conformance/maturity.test.js`, `tests/conformance/tasks.test.js`): the component contract for every registered component |
| 46 | Jens Allmer | v1 writing | |
| 47 | Jens Allmer | v1 writing | FILL IN: the positive cases (synthetic data of known truth), the negative controls and the experimental data the tests use. |
| 48 | Jens Allmer | v1 writing | |
| 49 | Jens Allmer | v1 writing | ## Maturity |
| 50 | Jens Allmer | v1 writing | |
| 51 | Jens Allmer | v1 writing | Maturity 1 of 3 (ADR 0012); a reviewer raises it, the credits earn it. Maturity 2 needs a test or test-validation credit by a person who is not an author: independent tests (CONTRIBUTING rules 17, 21); from then on this publication must exist (rule components/publication). |
| 52 | Jens Allmer | v1 writing | |
| 53 | Jens Allmer | v1 writing | ## Credits |
| 54 | Jens Allmer | v1 writing | |
| 55 | Jens Allmer | v1 writing | - Software: Jens Allmer (implementation) |
| 56 | Jens Allmer | v1 writing | |
| 57 | Jens Allmer | v1 writing | ## How to use |
| 58 | Jens Allmer | v1 writing | |
| 59 | Jens Allmer | v1 writing | ``` |
| 60 | Jens Allmer | v1 writing | node bin/ios.js describe FASTALenFilter |
| 61 | Jens Allmer | v1 writing | node bin/ios.js run FASTALenFilter < input > output |
| 62 | Jens Allmer | v1 writing | ``` |
| 63 | Jens Allmer | v1 writing | |
| 64 | Jens Allmer | v1 writing | Other parameters as `--<name> <value>`; `node bin/ios.js describe FASTALenFilter` lists them with their defaults. |
| 65 | Jens Allmer | v1 writing | |
| 66 | Jens Allmer | v1 writing | As a node of a workflow document (`*.workflow.json`, ADR 0011): |
| 67 | Jens Allmer | v1 writing | |
| 68 | Jens Allmer | v1 writing | ```json |
| 69 | Jens Allmer | v1 writing | { "id": "filter", "type": "FASTALenFilter", "params": { "minLen": 1, "maxLen": -1 } } |
| 70 | Jens Allmer | v1 writing | ``` |
| 71 | Jens Allmer | v1 writing | |
| 72 | Jens Allmer | v1 writing | Example workflow: `src/workflows/examples/fasta-length-filter.workflow.json`. |
| 73 | Jens Allmer | v1 writing | |
| 74 | Jens Allmer | v1 writing | ## Results |
| 75 | Jens Allmer | v1 writing | |
| 76 | Jens Allmer | v1 writing | FILL IN: run the example workflow (`node bin/ios.js run-workflow src/workflows/examples/fasta-length-filter.workflow.json --artefacts <dir>`) on a registered dataset, open the result in the builder and drag the figure or table into this article (Manuscript pane); write one paragraph on what it shows. |