Package: shapeshifter-cli
# shapeshifter-cliThe official command-line interface for the [shapeshifter](https://github.com/srp33/ShapeShifter) Python module.From the command-line you can easily take advantage of ShapeShifter's features, such as:* Transformation of tabular data sets from one format to another.* Querying large data sets to filter out useful data.* Selection of additional columns/features to include in the resulting data set.* Option to gzip resulting data sets, as well as the ability to read gzipped files.And coming soon:* Merging multiple data files of various types into a single file. Type `shapeshiftmerge --help` or `ssm --help` to help test it out!## Install```bashpip3 install shapeshifter-cli```## Basic UseTo view instructions for use at any time, simply type the command `shapeshift --help` or `ss --help` into the terminal at any time.Doing so will bring up the following:```bash$ shapeshift --helpusage: shapeshift [-h] [-i File_Type] [-o File_Type] [-t] [-f "FILTER"][-c COLUMNS] [-a] [-g] [-s SET_INDEX]input_file output_fileImport, filter, and transform data into a format of your choice!positional arguments:input_file            Data file to be imported, filtered, and/or transformedoutput_file           File path to which results are exportedoptional arguments:-h, --help            show this help message and exit-i File_Type, --input_file_type File_TypeType of file to be imported. If not specified, filetype will be determined by the file extension given.Available choices are: CSV, TSV, JSON, Excel, HDF5,Parquet, MsgPack, Stata, Pickle, SQLite, ARFF, GCT,Kallisto, GEO, Salmon-o File_Type, --output_file_type File_TypeType of file to which results are exported. If notspecified, file type will be determined by the fileextension given. Available choices are: CSV, TSV,JSON, Excel, HDF5, Parquet, MsgPack, Stata, Pickle,SQLite, ARFF, GCT, RMarkdown, JupyterNotebook-t, --transpose       Transpose index and columns in the output file-f "FILTER", --filter "FILTER"Filter data using python logical syntax. Your filtermust be surrounded by quotes. For example: -f"ColumnName1 > 12.5 and (ColumnName2 == 'x' orColumnName2 =='y')"-c COLUMNS, --columns COLUMNSList of additional column names to include in theoutput file. Column names must be seperated by commasand without spaces. For example: -cColumnName1,ColumnName2,ColumnName3-a, --all_columns     Includes all columns in the output file. Overrides the"--columns" flag-g, --gzip            Gzips the output file-s SET_INDEX, --set_index SET_INDEXSets the given column to become the index column,where appropriate. If not set, the default index willbe 'Sample'```There are only two required arguments when using the `shapeshift` command: the path to the file you wish to read,and the path to a file you wish to produce. For example, if you had an Excel file called "input_file.xlsx" and yousimply wanted to convert it to a TSV file called "output_file.tsv", you would enter`shapeshift input_file.xlsx output_file.tsv` into the terminal to execute the conversion.ShapeShifter automatically infers both the format of the input file and the format of the file you wish to create, basedon the extension on the file path. If for some reason the extensions are irregular or missing, you can specify theformat of the input file using the `--input_file_type` flag, followed by the name of the file type,and specify the format of the output file using the `--output_file_type` flag, followed by the name of the file type.Applying filters during the transformation uses the `--filter` flag, followed by a string query in double quotations.Syntax for such a query uses basic Python logical syntax, as shown by the following example:`--filter "ColumnName1 > 12.5 and (ColumnName2 == 'x' or ColumnName2 =='y')"`Applying filters means that only those columns that are filtered on (in the above example, ColumnName1 and ColumnName2)will appear in the output file. If you wish to include additional columns, you can do so with the `--columns` flagfollowed by a list of comma-separated column names. If you wish to include all columns in the output, you can simplyuse the `--all_columns` flag.## Currently Supported Formats#### Input Formats:* CSV* TSV* JSON* Excel* HDF5* Parquet* MsgPack* Stata* Pickle* SQLite* ARFF* GCT* Kallisto* GEO#### Output Formats:* CSV* TSV* JSON* Excel* HDF5* Parquet* MsgPack* Stata* Pickle* SQLite* ARFF* GCT* RMarkdown* JupyterNotebook## Future Formats to SupportWe are working hard to expand ShapeShifter to work with even more file formats! Expect the following formats to beincluded in future releases:* Fixed-width files (fwf)* Genomic Data Commons clinical XML