The LACS (Literature Automated Classification System) pipeline is the core data engine behind ecoSeek’s literature intelligence. It uses PU-learning to classify 36M PubMed abstracts by ecological relevance, feeding the Meilisearch index that powers Emily’s literature retrieval.
┌─────────────────────────────────────────────────────────┐
│ ecoSeek Platform │
│ │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ Emily UI │───▶│ EcoAgent │───▶│ Meilisearch │ │
│ │ (query) │ │ (reason) │ │ pubmed_ecology │ │
│ └──────────┘ └──────────┘ │ (~500K-2M papers)│ │
│ └────────▲─────────┘ │
│ │ │
└───────────────────────────────────────────┼─────────────┘
│
┌───────────────────────────────────────────┼─────────────┐
│ LACS Scoring Pipeline │ │
│ │ │
│ ┌──────────┐ ┌──────────┐ ┌────────┴─────────┐ │
│ │ GBIF 62K │───▶│ LACS │───▶│ Score PubMed │ │
│ │ (pos.) │ │ Model │ │ 36M abstracts │ │
│ └──────────┘ │ train │ │ score >= 0.8 │ │
│ ┌──────────┐ └──────────┘ └──────────────────┘ │
│ │ PubMed │ │
│ │ 30K unl. │ │
│ └──────────┘ │
└─────────────────────────────────────────────────────────┘
The emily/plugins/ecoseek/lacs_classifier.py module provides:
classify_literature tool: Scores abstracts by domain relevancetrain_lacs_model tool: Trains new domain models on HPCThe retrieval layer uses LACS for re-ranking:
pubmed_ecology| Domain | Training Data | Status |
|---|---|---|
| host-parasite | GMPD + ZOVER | Production (existing) |
| niche-modeling | SDM literature | Production (existing) |
| biodiversity | GBIF general | Production (existing) |
| ecology-biodiversity | GBIF 62K + PubMed 30K | NEW — this pipeline |
The scoring pipeline runs entirely on KU HPC (Slurm cluster). No additional infrastructure needed — uses shared scratch filesystem with Parquet shards and DuckDB for aggregation.
See alrobles/ecoseek-litdump/docs/lacs-scoring-pipeline.md for
full technical documentation.
| Metric | Target |
|---|---|
| Training time | ~5 min |
| Scoring throughput | ~100K abstracts/min/job |
| Total scoring time | ~2-4 hours (360 parallel jobs) |
| Precision at 0.8 | ~90% |
| Meilisearch import | ~1-2 hours (streaming) |
| End-to-end | ~3-6 hours |