import click
from asaplib.io import ConvertStrToList
[docs]def file_output_options(f):
"""Create common options for I/O files"""
f = click.option('--prefix', '-p',
help='Prefix to be used for the output file.',
default=None)(f)
return f
[docs]def output_setup_options(f):
"""Create common options for output results from clustering/KDE analysis"""
f = click.option('--savexyz/--no-savexyz',
help='Save the results to the xyz file',
default=True)(f)
f = click.option('--savetxt/--no-savetxt',
help='Save the results to the txt file',
default=False)(f)
return f
[docs]def desc_options(f):
"""Create common options for computing descriptors"""
f = click.option('--tag',
help='Tag for the descriptors.',
default='cmd-desc')(f)
return f
[docs]def para_options(f):
"""Create common options for parallellization"""
f = click.option('--number_processes', '--nprocess', '-np', type=int,
help='Number of processes when compute the descriptors in parrallel.',
show_default=True, default=1)(f)
return f
[docs]def atomic_to_global_desc_options(f):
"""Create common options for global descriptors constructed based on atomic fingerprints """
f = click.option('--reducer_type', '-r',
help='type of operations to get global descriptors from the atomic soap vectors, e.g. \
[average], [sum], [moment_avg], [moment_sum].',
show_default=True, default='average', type=str)(f)
f = click.option('--zeta', '-z',
help='Moments to take when converting atomic descriptors to global ones.',
default=1, type=int)(f)
f = click.option('--element_wise', '-e',
help='element-wise operation to get global descriptors from the atomic soap vectors',
show_default=True, default=False, is_flag=True)(f)
f = click.option('--peratom', '-pa',
help='Save the per-atom local descriptors.',
show_default=True, default=False, is_flag=True)(f)
return f
[docs]def map_setup_options(f):
"""Create common options for making 2D maps of the data set"""
f = click.option('--peratom',
help='Save the per-atom projection.',
default=False, is_flag=True)(f)
f = click.option('--adjusttext/--no-adjusttext',
help='Adjust the annotation texts so they do not overlap.',
default=False)(f)
f = click.option('--annotate', '-a',
help='Location of tags to annotate the samples.',
default='none', type=str)(f)
f = click.option('--aspect_ratio', '-ar',
help='Aspect ratio of the plot',
show_default=True, default=2, type=float)(f)
f = click.option('--style', '-s',
type=click.Choice(['default', 'journal'], case_sensitive=False),
help='Style of the plot.',
show_default=True, default='default')(f)
return f
[docs]def map_io_options(f):
"""Create common options for making 2D maps of the data set"""
f = click.option('--keepraw/--no-keepraw',
help='Keep the high dimensional descriptor when output XYZ file.',
default=False)(f)
f = click.option('--output', '-o', type=click.Choice(['xyz', 'matrix', 'none', 'chemiscope'], case_sensitive=False),
help='Output file format.',
default='xyz')(f)
f = click.option('--extra-properties', '-ep', type=click.Path(exists=True),
help='Additional properties to be read for each frmae in CSV format.')(f)
return f
[docs]def color_setup_options(f):
"""Create common options for handing color scales"""
f = click.option('--normalized_by_size', '-nbs',
help='Normalize the quantity used for color function by the number of atoms in each frame.',
show_default=True, default=False, is_flag=True)(f)
f = click.option('--colormap', '-cmap',
help='Colormap used. Common options: gnuplot, tab10, viridis, bwr, rainbow.',
show_default=True, default='gnuplot')(f)
f = click.option('--color_from_zero', '-c0',
help='Set the minimum to zero and only plot the excess.',
show_default=True, default=False, is_flag=True)(f)
f = click.option('--color_label', '-clab',
help='The label for the color bar.',
default=None)(f)
f = click.option('--color_column', '-ccol',
help='The column number used in the color file. Starts from 0.',
default=0)(f)
f = click.option('--color', '-c',
help='Location of a file or name of the properties in the XYZ file. \
Used to color the scatter plot for all samples (N floats).',
default='none', type=str)(f)
return f
[docs]def d_reduce_options(f):
"""Create common options for dimensionality reduction"""
f = click.option('--axes', nargs=2, type=click.Tuple([int, int]),
help='Plot the projection along which projection axes.',
default=[0, 1])(f)
f = click.option('--dimension', '-d',
help='Number of the dimensions to keep in the output XYZ file.',
default=10)(f)
f = click.option('--scale/--no-scale',
help='Standard scaling of the coordinates.',
default=True)(f)
return f
[docs]def fit_setup_options(f):
"""Create common options for making 2D maps of the data set"""
f = click.option('--lc_points', '-lcp', type=int,
help='the number of sub-samples to take when compute the learning curve',
show_default=True, default=8)(f)
f = click.option('--learning_curve', '-lc', type=int,
help='the number of points on the learning curve, <= 1 means no learning curve',
show_default=True, default=-1)(f)
f = click.option('--test_ratio', '--test', '-t', type=float,
help='Test ratio.',
show_default=True, default=0.05)(f)
f = click.option('--normalized_by_size', '-nbs',
help='Normalize y by the number of atoms in each frame.',
show_default=True, default=False, is_flag=True)(f)
f = click.option('--y', '-y',
help='Location of a file or name of the properties in the XYZ file',
default='none', type=str)(f)
return f
[docs]def kernel_options(f):
"""Create common options for compute kernel functions"""
f = click.option('--kernel_parameter', '-kp', type=float,
help='Parameter used in the kernel function.',
default=None)(f)
f = click.option('--kernel', '-k',
type=click.Choice(['linear', 'polynomial', 'cosine'], case_sensitive=False),
help='Kernel function for converting design matrix to kernel matrix.',
show_default=True, default='linear')(f)
return f
[docs]def sparsification_options(f):
"""Create common options for sparsification"""
f = click.option('--n_sparse', '-n', type=int,
help='number of the representative samples, set negative if using no sparsification',
show_default=True, default=100)(f)
f = click.option('--sparse_mode', '-s',
type=click.Choice(['random', 'cur', 'fps', 'sequential'], case_sensitive=False),
help='Sparsification method to use.',
show_default=True, default='fps')(f)
return f