fn main() {
let path = std::env::args().nth(1).expect("输入文件");
let text = std::fs::read_to_string(&path).expect("读输入");
let mut header = String::new();
let mut buf = String::new();
for line in text.lines() {
if let Some(rest) = line.strip_prefix(">>> ") {
header = rest.to_string();
buf.clear();
} else if line == "$$$$" {
let out = match omgkit_io::molblock::read_v2000(&buf) {
Err(e) => format!("<读不了:{e}>"),
Ok(block) => {
let mut m = block.mol;
match omgkit_chem::pipeline::sanitize(&mut m) {
Err(e) => format!("<净化不了:{e}>"),
Ok(()) => {
let _ = omgkit_io::stereo::assign_chirality_2d(
&mut m,
&block.coords,
&block.wedges,
);
let _ = omgkit_io::stereo::assign_bond_stereo_2d(
&mut m,
&block.coords,
&block.unknown_stereo,
);
let _ = omgkit_io::stereo::assign_chirality_3d(&mut m, &block.coords);
let _ = omgkit_io::stereo::assign_bond_stereo_3d(
&mut m,
&block.coords,
&block.unknown_stereo,
);
omgkit_io::canon::canonical_smiles(&m).smiles
}
}
}
};
println!("{header}\t{out}");
buf.clear();
} else {
buf.push_str(line);
buf.push('\n');
}
}
}