streaming orchestrator for the unsupervised protein-family clustering pipeline.

the algorithm keeps the same semantics as ProteinFamilyClustering but never holds the whole database in memory. it runs in two passes over the FASTA file plus a set of on-disk intermediate products:

pass 1a : stream the FASTA once to count kmers and select the top-N vocabulary (memory ~ vocabulary size). pass 1b : stream the FASTA a second time, compute each sequence's TF-IDF sparse vector over the fixed vocabulary and append it to a COO file on disk. pass 2a : stream the COO rows in blocks, reduce with randomized SVD, write m x dims embeddings to disk. pass 2b : stream the embeddings in blocks, build an approximate KNN graph, write undirected edges to disk. pass 2c : read the edges back, run Louvain, write the per-row family assignment to disk. pass 2d : stream the original FASTA once, bucket each member sequence into a per-family FASTA file on disk, then run CenterStar MSA per family (only one family resident at a time) and pick the least-edited reference.

every intermediate file lives under StreamingClustering.workDir and is reused when present so a failed run can be resumed instead of restarted.