Skip to content

Notes & limitations

Francesco Palozzi edited this page Jun 6, 2026 · 1 revision

Notes and Limitations


Singleton and Thread Safety

IOController and TranslatorController are stateful singletons. They are not thread-safe: avoid concurrent access from multiple threads without external synchronization.


Single Format Per Session

IOController enforces that all files loaded in the same session share the same format. Loading a file of a different format raises an IllegalArgumentException.

To work with multiple formats sequentially, call clearAllDataStructures() between batches:

io.loadDirectory(Path.of("/data/bpseq/"));
// ... process ...
io.clearAllDataStructures();
 
io.loadDirectory(Path.of("/data/ct/"));
// ... process ...

FASTA Format

FASTA contains only the nucleotide sequence and carries no structural information (bonds). For this reason it cannot be translated into any structural format.


Hidden Files and Subdirectories

loadDirectory ignores:

  • Files whose name starts with . (hidden files)
  • Files inside subdirectories whose name contains a dot Subdirectories are not visited recursively.

Non-Canonical Pairs

Generating non-canonical pair CSV files depends on an external component that writes .csv files to the current working directory (user.dir). Ensure that directory is writable before enabling this option.


File Extension Irrelevance

The format is detected from file content via the ANTLR4 parser, not from the file extension. A .txt file containing BPSEQ content is correctly recognized as BPSEQ.


1-Based Indexing

All position indices in the secondary structure start at 1 (not 0), both internally and in all file formats.


Statistics on Sequence-Less Formats

Methods that compute per-nucleotide or per-bond-type statistics return 0 when the nucleotide sequence is absent (DB NO SEQUENCE, AAS NO SEQUENCE, FASTA). See Structure Statistics for details.


See Also

Clone this wiki locally