rugnux: several stills inputs in one run; inputs are files, never a directory
Every input is a file named on the command line, read in the order given (a shell glob gives them sorted by name); a directory is refused with the glob form to use instead. - Several Jungfraujoch/NXmx masters of stills are read as one run (JFJochMultiReader): their images one after another, the pixel masks combined, the per-image efficiency placed at each input's images. They must share the detector, wavelength (0.1%), distance (0.1 mm) and beam centre (1 px), since stills geometry refinement refines one geometry for all frames; rotation sweeps are refused. The log gives the indexing rate of each input beside the run's (ProcessResult::image_indexed). - SACLA HDF5 / CXI (JFJochCrystFELReader::ReadFiles, ReadCXI, Open) and XTC (JFJochXTCReader::ReadFiles) take the list of files instead of scanning a directory; CanReadCXI and xtc::CanRead accept only a file; ListFiles and xtc::CollectStreams are gone. - Several inputs must be one format, --mode mx, and stored files (no broker, no --simulate-live); one frame of a CBF/marCCD/SMV sweep still names the whole sweep. Validated: two Jungfraujoch lysozyme stills runs together (49,920 frames, known cell) 57.1% indexed (59.3% / 54.9% per run), 1.22 A, CC1/2 0.986, R_split 8.8%, REFMAC R/R-free 0.253/0.269 against 0.257/0.273 for the earlier hand-built combined master. Rotation: 5reo and lyso_x10sa_90deg_1 unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015CeEGgpKdfkCTJb3YNMJcu
This commit is contained in:
1 parent
093069be29
commit
6557ba87f4
18 files changed
+547
-158
No files matched your search
@@ -83,8 +83,6 @@ namespace xtc {
|
||||
|
||||
bool CanRead(const std::string &path) {
|
||||
std::error_code ec;
|
||||
if (std::filesystem::is_directory(path, ec))
|
||||
return !CollectStreams(path).empty();
|
||||
if (!std::filesystem::is_regular_file(path, ec) || !path.ends_with(".xtc") || path.ends_with(".smd.xtc"))
|
||||
return false;
|
||||
File f(fopen(path.c_str(), "rb"));
|
||||
@@ -92,20 +90,6 @@ bool CanRead(const std::string &path) {
|
||||
return f && fread(h, 1, DGRAM_HEADER, f.get()) == DGRAM_HEADER && PlausibleFirstDatagram(h);
|
||||
}
|
||||
|
||||
std::vector<std::string> CollectStreams(const std::string &path) {
|
||||
std::error_code ec;
|
||||
if (!std::filesystem::is_directory(path, ec))
|
||||
return {path};
|
||||
std::vector<std::string> out;
|
||||
for (const auto &e: std::filesystem::directory_iterator(path, ec)) {
|
||||
const std::string p = e.path().string();
|
||||
if (e.is_regular_file() && p.ends_with(".xtc") && !p.ends_with(".smd.xtc"))
|
||||
out.push_back(p);
|
||||
}
|
||||
std::sort(out.begin(), out.end());
|
||||
return out;
|
||||
}
|
||||
|
||||
std::vector<Frame> IndexFrames(const std::string &file) {
|
||||
File f = Open(file);
|
||||
std::vector<Frame> out;
|
||||
|
||||
Reference in new issue
Block a user