molstar
Version:
A comprehensive macromolecular library.
59 lines (58 loc) • 2.22 kB
JavaScript
#!/usr/bin/env node
/**
* Copyright (c) 2018-2019 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* Taken/adapted from DensityServer (https://github.com/dsehnal/DensityServer)
*
* @author David Sehnal <david.sehnal@gmail.com>
* @author Alexander Rose <alexander.rose@weirdbyte.de>
*/
import * as argparse from 'argparse';
import { pack } from './pack/main';
import { VERSION } from './pack/version';
function getConfig(args) {
const config = {
blockSizeInMB: args.blockSizeInMB,
format: args.format,
outputFilename: args.output
};
switch (args.mode) {
case 'em':
config.input = [
{ name: 'em', filename: args.inputEm }
];
config.isPeriodic = false;
break;
case 'xray':
config.input = [
{ name: '2Fo-Fc', filename: args.input2fofc },
{ name: 'Fo-Fc', filename: args.inputFofc }
];
config.isPeriodic = true;
break;
}
return config;
}
const parser = new argparse.ArgumentParser({
add_help: true,
description: `VolumeServer Packer ${VERSION}, (c) 2018-2019, Mol* contributors`
});
const subparsers = parser.add_subparsers({
title: 'Packing modes',
dest: 'mode'
});
function addGeneralArgs(parser) {
parser.add_argument('output', { help: `Output path.` });
parser.add_argument('--blockSizeInMB', { default: 96, help: `Maximum block size.`, metavar: 'SIZE' });
parser.add_argument('--format', { default: 'ccp4', help: `Input file format.` });
}
const xrayParser = subparsers.add_parser('xray', { add_help: true });
xrayParser.add_argument('input2fofc', { help: `Path to 2fofc file.`, metavar: '2FOFC' });
xrayParser.add_argument('inputFofc', { help: `Path to fofc file.`, metavar: 'FOFC' });
addGeneralArgs(xrayParser);
const emParser = subparsers.add_parser('em', { add_help: true });
emParser.add_argument('inputEm', { help: `Path to EM density file.`, metavar: 'EM' });
addGeneralArgs(emParser);
const args = parser.parse_args();
const config = getConfig(args);
pack(config.input, config.blockSizeInMB, config.isPeriodic, config.outputFilename, config.format);