Replace manual layer path construction with obilayeredmap::layer_dir
Standardizes layer directory path resolution across obikindex, obikpartitionner, and obikphylo by replacing inline string formatting and join calls with the centralized obilayeredmap::layer_dir utility. This refactoring removes redundant path construction logic while preserving existing iteration bounds, control flow, and public APIs.
This commit is contained in:
@@ -5,6 +5,7 @@
|
||||
|
||||
use obicompactvec::{PersistentBitMatrix, PersistentSparseBitMatrix};
|
||||
use obikindex::KmerIndex;
|
||||
use obilayeredmap::layer_dir;
|
||||
|
||||
fn main() -> anyhow::Result<()> {
|
||||
let sparse_root = std::env::args().nth(1).expect("usage: compare_sparse <sparse_root> <dense_root>");
|
||||
@@ -33,8 +34,10 @@ fn main() -> anyhow::Result<()> {
|
||||
}
|
||||
|
||||
for layer in 0..n_layers {
|
||||
let layer_dir_sparse = part_dir_sparse.join("index").join(format!("layer_{layer}"));
|
||||
let layer_dir_dense = part_dir_dense.join("index").join(format!("layer_{layer}"));
|
||||
let index_dir_sparse = part_dir_sparse.join("index");
|
||||
let index_dir_dense = part_dir_dense.join("index");
|
||||
let layer_dir_sparse = layer_dir(&index_dir_sparse, layer);
|
||||
let layer_dir_dense = layer_dir(&index_dir_dense, layer);
|
||||
|
||||
if !layer_dir_sparse.exists() || !layer_dir_dense.exists() {
|
||||
continue;
|
||||
|
||||
@@ -264,10 +264,8 @@ impl KmerIndex {
|
||||
|
||||
/// Path to the unitigs file for partition `part`, layer `layer`.
|
||||
pub fn layer_unitigs_path(&self, part: usize, layer: usize) -> PathBuf {
|
||||
self.partition.part_dir(part)
|
||||
.join("index")
|
||||
.join(format!("layer_{layer}"))
|
||||
.join("unitigs.bin")
|
||||
let index_dir = self.partition.part_dir(part).join("index");
|
||||
obilayeredmap::layer_dir(&index_dir, layer).join("unitigs.bin")
|
||||
}
|
||||
|
||||
/// Pack all partition matrices into single-file format (presence → .pbmx, counts → .pcmx).
|
||||
@@ -295,7 +293,7 @@ impl KmerIndex {
|
||||
let meta = PartitionMeta::load(&index_dir)
|
||||
.map_err(|e| OKIError::Io(std::io::Error::new(std::io::ErrorKind::Other, e.to_string())))?;
|
||||
for l in 0..meta.n_layers {
|
||||
let layer_dir = index_dir.join(format!("layer_{l}"));
|
||||
let layer_dir = obilayeredmap::layer_dir(&index_dir, l);
|
||||
let presence_dir = layer_dir.join("presence");
|
||||
let counts_dir = layer_dir.join("counts");
|
||||
if presence_dir.exists() {
|
||||
@@ -335,7 +333,7 @@ impl KmerIndex {
|
||||
Err(e) => return Some(OKIError::Io(std::io::Error::new(std::io::ErrorKind::Other, e.to_string()))),
|
||||
};
|
||||
for l in 0..meta.n_layers {
|
||||
let layer_dir = index_dir.join(format!("layer_{l}"));
|
||||
let layer_dir = obilayeredmap::layer_dir(&index_dir, l);
|
||||
let meta_path = layer_dir.join(LayerMeta::FILENAME);
|
||||
if meta_path.exists() { continue; }
|
||||
let unitigs_path = layer_dir.join("unitigs.bin");
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
use std::fs;
|
||||
use std::path::Path;
|
||||
use obilayeredmap::{IndexMode, layer::Layer};
|
||||
use obilayeredmap::{layer_dir, IndexMode, layer::Layer};
|
||||
use obilayeredmap::meta::PartitionMeta;
|
||||
use obisys::{Reporter, Stage, progress_bar};
|
||||
use tracing::info;
|
||||
@@ -72,8 +72,7 @@ fn reindex_partition(index_dir: &Path, target: &IndexMode, block_bits: u8) -> OK
|
||||
}
|
||||
let pm = PartitionMeta::load(index_dir).map_err(olm_to_oki)?;
|
||||
for layer_idx in 0..pm.n_layers {
|
||||
let layer_dir = index_dir.join(format!("layer_{layer_idx}"));
|
||||
reindex_layer(&layer_dir, target, block_bits)?;
|
||||
reindex_layer(&layer_dir(index_dir, layer_idx), target, block_bits)?;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ use std::path::Path;
|
||||
|
||||
use obicompactvec::{LayerMeta, PersistentBitMatrix, PersistentCompactIntMatrix};
|
||||
use obicompactvec::traits::ColumnWeights;
|
||||
use obilayeredmap::layer_dir;
|
||||
use obilayeredmap::meta::PartitionMeta;
|
||||
use rayon::prelude::*;
|
||||
|
||||
@@ -98,7 +99,7 @@ impl KmerIndex {
|
||||
.unwrap_or(0);
|
||||
|
||||
(0..n_layers).fold((0usize, 0u64, 0u64, 0u64), |acc, l| {
|
||||
let lb = layer_bytes(&index_dir.join(format!("layer_{l}")));
|
||||
let lb = layer_bytes(&layer_dir(&index_dir, l));
|
||||
(acc.0 + lb.n_kmers, acc.1 + lb.mphf, acc.2 + lb.evidence, acc.3 + lb.matrix)
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user