<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.docking.org/index.php?action=history&amp;feed=atom&amp;title=ZINC15%3AModel_building</id>
	<title>ZINC15:Model building - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.docking.org/index.php?action=history&amp;feed=atom&amp;title=ZINC15%3AModel_building"/>
	<link rel="alternate" type="text/html" href="http://wiki.docking.org/index.php?title=ZINC15:Model_building&amp;action=history"/>
	<updated>2026-04-16T17:47:07Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>http://wiki.docking.org/index.php?title=ZINC15:Model_building&amp;diff=10776&amp;oldid=prev</id>
		<title>Frodo: asdf</title>
		<link rel="alternate" type="text/html" href="http://wiki.docking.org/index.php?title=ZINC15:Model_building&amp;diff=10776&amp;oldid=prev"/>
		<updated>2018-06-29T20:38:29Z</updated>

		<summary type="html">&lt;p&gt;asdf&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash --norc&lt;br /&gt;
USAGE=&amp;quot;${0} [OPTIONS] &amp;lt;SOURCE_FILE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  Options:&lt;br /&gt;
    -a, --adition-items &amp;lt;ITEMS_FILE&amp;gt; - A tab-delimited file of additional&lt;br /&gt;
                                       supplier code to sub_id mappigns to&lt;br /&gt;
                                       load&lt;br /&gt;
    -n, --name &amp;lt;CATALOG_NAME&amp;gt; - The catalog name to use&lt;br /&gt;
                                [default: basename of SOURCE_FILE]&lt;br /&gt;
    -f, --filter-mode &amp;lt;MODE&amp;gt; - Filtering rule list to use&lt;br /&gt;
                               [default: preliminary]&lt;br /&gt;
    -t, --tautomerize-mode &amp;lt;MODE&amp;gt; - Tautomerization rules to use&lt;br /&gt;
                                    [default: default]&lt;br /&gt;
    -v, --validate-mode &amp;lt;MODE&amp;gt; - Filtering rule list to use&lt;br /&gt;
                                 [default: strict]&lt;br /&gt;
    --num-stereocenters - Max number of ambiguous stereocenters to enumerate&lt;br /&gt;
    -s, --stereo-templates &amp;lt;TEMPLATES&amp;gt; - Special stereoisomer temperating rules use&lt;br /&gt;
                                         [default: default]&lt;br /&gt;
    -P, --skip-preprocessing - Skip the preprocessing step. Raw source file&lt;br /&gt;
                               will be passed to expansion&lt;br /&gt;
    -E, --skip-expansion - Skip expansion step. Preprocessing result will be&lt;br /&gt;
                           passed to resolution&lt;br /&gt;
    -R, --skip-resolution - Skip resolution step. Expansion result will be&lt;br /&gt;
                            passed as new substances to creation&lt;br /&gt;
    -C, --skip-creation - Skip creation step. Previous resolutions will be&lt;br /&gt;
                          passed to loading step&lt;br /&gt;
    -L, --skip-loading - Skip loading step. Existing catalog items will be&lt;br /&gt;
                         passed to depletion&lt;br /&gt;
    -D, --skip-depletion - Skip depletion step.&lt;br /&gt;
&lt;br /&gt;
    Loading pipeline:&lt;br /&gt;
&lt;br /&gt;
    1. Preprocessing: Filtering and neutralization&lt;br /&gt;
    2. Expansion: Stereo (RS &amp;amp; EZ) expansion for up to 2 (default)&lt;br /&gt;
                  centers, then explicit assignment. Special handling of&lt;br /&gt;
                  sterols and attempted early resolution of compounds with&lt;br /&gt;
                  a high number of centers&lt;br /&gt;
    3. Resolution: Find and separate out existing substances in ZINC&lt;br /&gt;
    4. Creation: Add substances determined to be new into ZINC&lt;br /&gt;
    5. Loading: Add and update catalog item (catalog_content/catalog_substance)&lt;br /&gt;
                mappings in ZINC&lt;br /&gt;
    6. Depletion: Final pass of marking old catalog contents as depleted&lt;br /&gt;
&amp;quot;&lt;br /&gt;
&lt;br /&gt;
set -e&lt;br /&gt;
&lt;br /&gt;
SOURCE_FILE=&amp;quot;&amp;quot;&lt;br /&gt;
ADDITIONAL_MAPPINGS=&amp;quot;&amp;quot;&lt;br /&gt;
CATALOG_NAME=&amp;quot;${CATALOG_NAME}&amp;quot;&lt;br /&gt;
FILTER_MODE=&amp;quot;${FILTER_MODE-preliminary}&amp;quot;&lt;br /&gt;
VALIDATE_MODE=&amp;quot;${VALIDATE_MODE-strict}&amp;quot;&lt;br /&gt;
ZINC_MAX_ENUMERABLE_STEREO_CENTERS=&amp;quot;${ZINC_MAX_ENUMERABLE_STEREO_CENTERS-2}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
RUN_PREPROCESSING=&amp;#039;yes&amp;#039;&lt;br /&gt;
RUN_STEREO_EXPANSION=&amp;#039;yes&amp;#039;&lt;br /&gt;
RUN_RESOLUTION=&amp;#039;yes&amp;#039;&lt;br /&gt;
RUN_CREATION=&amp;#039;yes&amp;#039;&lt;br /&gt;
RUN_LOADING=&amp;#039;yes&amp;#039;&lt;br /&gt;
RUN_DEPLETION=&amp;#039;yes&amp;#039;&lt;br /&gt;
&lt;br /&gt;
while [[ &amp;quot;$#&amp;quot; &amp;gt; 0 ]] ; do&lt;br /&gt;
    ARG=&amp;quot;${1}&amp;quot;&lt;br /&gt;
    VALUE=&amp;quot;${2}&amp;quot;&lt;br /&gt;
    shift 1&lt;br /&gt;
    case &amp;quot;${ARG}&amp;quot; in&lt;br /&gt;
        -h|--help)&lt;br /&gt;
            echo &amp;quot;${USAGE}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
            exit 0&lt;br /&gt;
            ;;&lt;br /&gt;
        -a|--addition-items)&lt;br /&gt;
            ADDITIONAL_MAPPINGS=&amp;quot;${VALUE}&amp;quot;&lt;br /&gt;
            shift 1&lt;br /&gt;
            ;;&lt;br /&gt;
        -n|--name)&lt;br /&gt;
            CATALOG_NAME=&amp;quot;${VALUE}&amp;quot;&lt;br /&gt;
            shift 1&lt;br /&gt;
            ;;&lt;br /&gt;
        -f|--filter)&lt;br /&gt;
            FILTER_MODE=&amp;quot;${VALUE}&amp;quot;&lt;br /&gt;
            shift 1&lt;br /&gt;
            ;;&lt;br /&gt;
        -v|--validate)&lt;br /&gt;
            VALIDATE_MODE=&amp;quot;${VALUE}&amp;quot;&lt;br /&gt;
            shift 1&lt;br /&gt;
            ;;&lt;br /&gt;
        --num-stereocenters)&lt;br /&gt;
            ZINC_MAX_ENUMERABLE_STEREO_CENTERS=&amp;quot;${VALUE}&amp;quot;&lt;br /&gt;
            shift 1&lt;br /&gt;
            ;;&lt;br /&gt;
        -P|--skip-preprocessing)&lt;br /&gt;
            RUN_PREPROCESSING=&amp;quot;no&amp;quot;&lt;br /&gt;
            ;;&lt;br /&gt;
        -E|--skip-expansion)&lt;br /&gt;
            RUN_STEREO_EXPANSION=&amp;quot;no&amp;quot;&lt;br /&gt;
            ;;&lt;br /&gt;
        -R|--skip-resolution)&lt;br /&gt;
            RUN_RESOLUTION=&amp;quot;no&amp;quot;&lt;br /&gt;
            ;;&lt;br /&gt;
        -C|--skip-creation)&lt;br /&gt;
            RUN_CREATION=&amp;quot;no&amp;quot;&lt;br /&gt;
            ;;&lt;br /&gt;
        -L|--skip-loading)&lt;br /&gt;
            RUN_LOADING=&amp;quot;no&amp;quot;&lt;br /&gt;
            ;;&lt;br /&gt;
        -D|--skip-depletion)&lt;br /&gt;
            RUN_DEPLETION=&amp;quot;no&amp;quot;&lt;br /&gt;
            ;;&lt;br /&gt;
        *)&lt;br /&gt;
            if [ ! -z &amp;quot;${SOURCE_FILE}&amp;quot; -o &amp;quot;${SOURCE_FILE:0:2}&amp;quot; == &amp;quot;--&amp;quot; ] ; then&lt;br /&gt;
                echo &amp;quot;Unexpected argument: ${ARG}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
                exit -1&lt;br /&gt;
            else&lt;br /&gt;
                SOURCE_FILE=&amp;quot;${ARG}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
            fi&lt;br /&gt;
    esac&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;${SOURCE_FILE}&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Source file required. Exiting.&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    exit -1&lt;br /&gt;
else&lt;br /&gt;
    SOURCE_FILE=&amp;quot;$( readlink -f &amp;quot;${SOURCE_FILE}&amp;quot; )&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;${CATALOG_NAME}&amp;quot; ] ; then&lt;br /&gt;
    CATALOG_NAME=&amp;quot;${SOURCE_FILE}&amp;quot;&lt;br /&gt;
    CATALOG_NAME=&amp;quot;$( basename &amp;quot;${CATALOG_NAME}&amp;quot; .ism )&amp;quot;&lt;br /&gt;
    CATALOG_NAME=&amp;quot;$( basename &amp;quot;${CATALOG_NAME}&amp;quot; .smi )&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ -z &amp;quot;${ZINC_CONFIG_ENV}&amp;quot; ] ; then&lt;br /&gt;
    export ZINC_CONFIG_ENV=&amp;quot;admin&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
if [ -z &amp;quot;${ZINC_CONFIG_SETUP_SKIP}&amp;quot; ] ; then&lt;br /&gt;
    export ZINC_CONFIG_SETUP_SKIP=&amp;quot;blueprints errorhandlers&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Catalog:      ${CATALOG_NAME}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo &amp;quot;Contents:     ${SOURCE_FILE}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo &amp;quot;Filtering:    ${FILTER_MODE}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo &amp;quot;Validation:   ${VALIDATE_MODE}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo &amp;quot;Steps:&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo &amp;quot;  Preproccessing   - ${RUN_PREPROCESSING}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo &amp;quot;  Expansion        - ${RUN_STEREO_EXPANSION}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo &amp;quot;  Resolution       - ${RUN_RESOLUTION}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo &amp;quot;  Creation         - ${RUN_CREATION}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo &amp;quot;  Loading          - ${RUN_LOADING}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo &amp;quot;  Depletion        - ${RUN_DEPLETION}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Setup commands&lt;br /&gt;
ZINC_FILTER=&amp;quot;${ZINC_FILTER-zincload-filter ${FILTER_MODE}}&amp;quot;&lt;br /&gt;
ZINC_VALIDATE=&amp;quot;${ZINC_VALIDATE-zincload-filter ${VALIDATE_MODE}}&amp;quot;&lt;br /&gt;
ZINC_CANONICALIZE=&amp;quot;${ZINC_CANONICALIZE-zincload-inchi --standardize --inchi-options=/RecMet}&amp;quot;&lt;br /&gt;
ZINC_NEUTRALIZE=&amp;quot;${ZINC_NEUTRALIZE-neutralize.sh}&amp;quot;&lt;br /&gt;
ZINC_TAUTOMERIZE=&amp;quot;${ZINC_TAUTOMERIZE-zincload-tautomerize --rules=default}&amp;quot;&lt;br /&gt;
ZINC_STEREO_SEPARATE=&amp;quot;${ZINC_STEREO_SEPARATE-zincload-ambiguitysplit}&amp;quot;&lt;br /&gt;
ZINC_STEREO_EXPAND_COMMAND=&amp;quot;${ZINC_STEREO_EXPAND_COMMAND-zincload-expandcenters --headers}&amp;quot;&lt;br /&gt;
ZINC_STEREO_DEFAULT_EXPAND=&amp;quot;${ZINC_STEREO_DEFAULT_EXPAND-${ZINC_STEREO_EXPAND_COMMAND} --limit=${ZINC_MAX_ENUMERABLE_STEREO_CENTERS} --assign-with=RE --templates=default}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ZINC_ANNOTATE=&amp;quot;${ZINC_ANNOTATE-zincload-inchi --header --inchikey}&amp;quot;&lt;br /&gt;
ZINC_IDENTIFY=&amp;quot;${ZINC_IDENTIFY-zinc-manage admin substances resolve --headers -f smiles,name,inchikey}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ZINC_CREATE=&amp;quot;${ZINC_CREATE-zinc-manage admin substances load -s SMILES -n Name -c supplier_code -z sub_id_fk -k inchikey --catalog=${CATALOG_NAME} --reactivity -C 100}&amp;quot;&lt;br /&gt;
ZINC_LOAD=&amp;quot;${ZINC_LOAD-zinc-manage admin catalogs load --header -C 1000}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${RUN_DEPLETION}&amp;quot; != &amp;#039;yes&amp;#039; ] ; then&lt;br /&gt;
    ZINC_LOAD=&amp;quot;${ZINC_LOAD} --no-depletion&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
SOURCE_FILE=&amp;quot;$( readlink -f &amp;quot;${SOURCE_FILE}&amp;quot; )&amp;quot;&lt;br /&gt;
CATALOG_DIR=&amp;quot;$( pwd )/${CATALOG_NAME}&amp;quot;&lt;br /&gt;
LOG_DIR=&amp;quot;${CATALOG_DIR}/logs&amp;quot;&lt;br /&gt;
&lt;br /&gt;
RAW_FILE=&amp;quot;00-${CATALOG_NAME}-raw.ism&amp;quot;&lt;br /&gt;
EXTRA_MAPPINGS=&amp;quot;${CATALOG_DIR}/01-${CATALOG_NAME}-extra-mappings.tsv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Step 1) Initial Preprocessing&lt;br /&gt;
###############################&lt;br /&gt;
STEP_1_INPUT=&amp;quot;10-${CATALOG_NAME}-to-process.ism&amp;quot;&lt;br /&gt;
EXTRACTED_FILE=&amp;quot;11-${CATALOG_NAME}-extracted.ism&amp;quot;&lt;br /&gt;
FILTERED_FILE=&amp;quot;12-${CATALOG_NAME}-filtered.ism&amp;quot;&lt;br /&gt;
CANONICAL_FILE=&amp;quot;13-${CATALOG_NAME}-canonical.ism&amp;quot;&lt;br /&gt;
NEUTRALIZED_FILE=&amp;quot;14-${CATALOG_NAME}-neutralized.ism&amp;quot;&lt;br /&gt;
TAUTOMERIZED_FILE=&amp;quot;15-${CATALOG_NAME}-tautomerized.ism&amp;quot;&lt;br /&gt;
VERIFY_FILE=&amp;quot;16-${CATALOG_NAME}-verified.ism&amp;quot;&lt;br /&gt;
DISTINCT_FILE=&amp;quot;17-${CATALOG_NAME}-distinct.ism&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
FILTER_LOG=&amp;quot;${LOG_DIR}/${CATALOG_NAME}.filtered&amp;quot;&lt;br /&gt;
TAUTOMER_LOG=&amp;quot;${LOG_DIR}/${CATALOG_NAME}.tautomerized&amp;quot;&lt;br /&gt;
VERIFY_LOG=&amp;quot;${LOG_DIR}/${CATALOG_NAME}.verified&amp;quot;&lt;br /&gt;
&lt;br /&gt;
STEP_1_OUTPUT=&amp;quot;18-${CATALOG_NAME}-processed.ism&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Step 2) Stereo Expansion (and some early substance resolution for combinatorial reduction)&lt;br /&gt;
#####################################################################################&lt;br /&gt;
STEP_2_INPUT=&amp;quot;20-${CATALOG_NAME}-unexpanded.ism&amp;quot;&lt;br /&gt;
&lt;br /&gt;
STEREO_DIR=&amp;quot;21-${CATALOG_NAME}-stereo-processing&amp;quot;&lt;br /&gt;
STEREO_RAW=&amp;quot;00-${CATALOG_NAME}-unprocessed.ism&amp;quot;&lt;br /&gt;
STEREO_SEPARATE_DIR=&amp;quot;10-extractions&amp;quot;&lt;br /&gt;
&lt;br /&gt;
UNAMBIGUOUS_LABEL=&amp;quot;unambiguous&amp;quot;&lt;br /&gt;
ENUMERABLE_LABEL=&amp;quot;enumerable&amp;quot;&lt;br /&gt;
AMBIGUOUS_LABEL=&amp;quot;ambiguous&amp;quot;&lt;br /&gt;
&lt;br /&gt;
DEFAULT_CHEMOTYPE=&amp;quot;default&amp;quot;&lt;br /&gt;
SPECIAL_CHEMOTYPE=&amp;quot;special&amp;quot;&lt;br /&gt;
&lt;br /&gt;
STEREO_EXTRACTED_UNAMBIGUOUS_PREFIX=&amp;quot;${STEREO_SEPARATE_DIR}/${UNAMBIGUOUS_LABEL}&amp;quot;&lt;br /&gt;
STEREO_EXTRACTED_ENUMERABLE_PREFIX=&amp;quot;${STEREO_SEPARATE_DIR}/${ENUMERABLE_LABEL}&amp;quot;&lt;br /&gt;
STEREO_EXTRACTED_AMBIGUOUS_PREFIX=&amp;quot;${STEREO_SEPARATE_DIR}/${AMBIGUOUS_LABEL}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
STEREO_UNAMBIGUOUS=&amp;quot;21-${UNAMBIGUOUS_LABEL}.ism&amp;quot;&lt;br /&gt;
STEREO_ENUMERABLE=&amp;quot;22-${ENUMERABLE_LABEL}.ism&amp;quot;&lt;br /&gt;
STEREO_ENUMERATED=&amp;quot;23-enumerated.ism&amp;quot;&lt;br /&gt;
&lt;br /&gt;
STEREO_AMBIGUOUS=&amp;quot;30-${AMBIGUOUS_LABEL}.ism&amp;quot;&lt;br /&gt;
STEREO_AMBIGUOUS_CHECK=&amp;quot;31-${AMBIGUOUS_LABEL}-to-check.ism&amp;quot;&lt;br /&gt;
STEREO_AMBIGUOUS_NEW=&amp;quot;32-${AMBIGUOUS_LABEL}-new.ism&amp;quot;&lt;br /&gt;
STEREO_AMBIGUOUS_FOUND=&amp;quot;33-${AMBIGUOUS_LABEL}-found.tsv&amp;quot;&lt;br /&gt;
STEREO_AMBIGUOUS_EXPANDED=&amp;quot;34-expanded.ism&amp;quot;&lt;br /&gt;
&lt;br /&gt;
STEREO_PICKED=&amp;quot;50-picked.ism&amp;quot;&lt;br /&gt;
&lt;br /&gt;
STEP_2_OUTPUT_A=&amp;quot;22-early-mappings.tsv&amp;quot;&lt;br /&gt;
STEP_2_OUTPUT_B=&amp;quot;23-selected-compounds.ism&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Step 3) Substance Resolutions&lt;br /&gt;
#######################&lt;br /&gt;
STEP_3_INPUT=&amp;quot;30-to-resolve.ism&amp;quot;&lt;br /&gt;
RESOLUTION_ANNOTATED=&amp;quot;31-annotated-to-resolve.ism&amp;quot;&lt;br /&gt;
RESOLUTION_NEW=&amp;quot;32-new.ism&amp;quot;&lt;br /&gt;
RESOLUTION_FOUND=&amp;quot;33-found.tsv&amp;quot;&lt;br /&gt;
STEP_3_OUTPUT_A=&amp;quot;34-substances-to-create.ism&amp;quot;&lt;br /&gt;
STEP_3_OUTPUT_B=&amp;quot;35-existing-mappings-to-load.tsv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Step 4) Substance Creation&lt;br /&gt;
############################&lt;br /&gt;
STEP_4_INPUT=&amp;quot;40-substances-to-create.ism&amp;quot;&lt;br /&gt;
SUBSTANCES_ANNOTATED=&amp;quot;41-substances-to-create-annotated.ism&amp;quot;&lt;br /&gt;
SUBSTANCES_ORGANIZED=&amp;quot;42-substances-to-create-organized.ism&amp;quot;&lt;br /&gt;
CREATED_SUBSTANCES=&amp;quot;43-new-substances.ism&amp;quot;&lt;br /&gt;
CREATION_MAPPINGS=&amp;quot;44-created-mappings.tsv&amp;quot;&lt;br /&gt;
CREATION_FAILURES=&amp;quot;45-creation-failures.ism&amp;quot;&lt;br /&gt;
STEP_4_OUTPUT=&amp;quot;46-new-mappings-to-load.tsv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Step 5) Item Mapping Loading&lt;br /&gt;
##############################&lt;br /&gt;
MAPPINGS_DIR=&amp;quot;50-${CATALOG_NAME}-items&amp;quot;&lt;br /&gt;
STEP_5_INPUT_A=&amp;quot;${MAPPINGS_DIR}/10-22-stereo-ambiguous-found.tsv&amp;quot;&lt;br /&gt;
STEP_5_INPUT_B=&amp;quot;${MAPPINGS_DIR}/20-02-existing-substances-found.tsv&amp;quot;&lt;br /&gt;
STEP_5_INPUT_C=&amp;quot;${MAPPINGS_DIR}/30-created.tsv&amp;quot;&lt;br /&gt;
STEP_5_INPUT_D=&amp;quot;${MAPPINGS_DIR}/00-provided-mappings.tsv&amp;quot;&lt;br /&gt;
STEP_5_OUTPUT=&amp;quot;51-${CATALOG_NAME}-updated-contents-ids.tsv&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;1) Active Preprocessing Stages&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo -e &amp;quot;\tZINC_FILTER=${ZINC_FILTER}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo -e &amp;quot;\tZINC_CANONICALIZE=${ZINC_CANONICALIZE}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo -e &amp;quot;\tZINC_NEUTRALIZE=${ZINC_NEUTRALIZE}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo -e &amp;quot;\tZINC_TAUTOMERIZE=${ZINC_TAUTOMERIZE}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo -e &amp;quot;\tZINC_VALIDATE=${ZINC_VALIDATE}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo &amp;quot;&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;2) Active Expansion Stages&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo -e &amp;quot;\tZINC_STEREO_SEPARATE=${ZINC_STEREO_SEPARATE}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo -e &amp;quot;\tZINC_STEREO_EXPAND_COMMAND=${ZINC_STEREO_EXPAND_COMMAND}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo -e &amp;quot;\tZINC_STEREO_DEFAULT_EXPAND=${ZINC_STEREO_DEFAULT_EXPAND}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo &amp;quot;&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;3) Active Resolution Stages&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo -e &amp;quot;\tZINC_ANNOTATE=${ZINC_ANNOTATE}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo -e &amp;quot;\tZINC_IDENTIFY=${ZINC_IDENTIFY}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;4) Active Creation Stages&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo -e &amp;quot;\tZINC_CREATE=${ZINC_CREATE}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;5) Active Loading Stages&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
echo -e &amp;quot;\tZINC_LOAD=${ZINC_LOAD}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Step 0: Setup&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
mkdir -pv &amp;quot;${CATALOG_DIR}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
mkdir -pv &amp;quot;${LOG_DIR}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
pushd &amp;quot;${CATALOG_DIR}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
&lt;br /&gt;
[ ! -e &amp;quot;${RAW_FILE}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
cat &amp;quot;${SOURCE_FILE}&amp;quot; | sed &amp;quot;s/\s+/\t/&amp;quot; &amp;gt; &amp;quot;${RAW_FILE}&amp;quot;&lt;br /&gt;
echo &amp;quot;$( wc -l &amp;quot;${RAW_FILE}&amp;quot; | sed &amp;#039;s/^\s//g&amp;#039; | cut -d\  -f1 ) entries in source catalog&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Step 1: Initial Preprocessing&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
[ ! -e &amp;quot;${STEP_1_INPUT}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
ln -sv &amp;quot;${RAW_FILE}&amp;quot; &amp;quot;${STEP_1_INPUT}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
if [ ! -e &amp;quot;${STEP_1_INPUT}&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;Input does not exist. Skipping step 1&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
elif [ &amp;quot;${RUN_PREPROCESSING}&amp;quot; == &amp;#039;yes&amp;#039; ] ; then&lt;br /&gt;
    [ -e &amp;quot;${STEP_1_INPUT}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    awk &amp;#039;{print $1, $2}&amp;#039; \&lt;br /&gt;
        &amp;lt; &amp;quot;${STEP_1_INPUT}&amp;quot; \&lt;br /&gt;
        &amp;gt; &amp;quot;${EXTRACTED_FILE}&amp;quot;&lt;br /&gt;
    [ -e &amp;quot;${EXTRACTED_FILE}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    $ZINC_FILTER \&lt;br /&gt;
        &amp;quot;${EXTRACTED_FILE}&amp;quot; \&lt;br /&gt;
        &amp;quot;${FILTERED_FILE}&amp;quot; \&lt;br /&gt;
        --log=&amp;quot;${FILTER_LOG}&amp;quot; 2&amp;gt;&amp;amp;1 \&lt;br /&gt;
            | tee &amp;quot;${LOG_DIR}/12-filter.log&amp;quot;&lt;br /&gt;
    [ -e &amp;quot;${FILTERED_FILE}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    $ZINC_CANONICALIZE \&lt;br /&gt;
        &amp;quot;${FILTERED_FILE}&amp;quot; \&lt;br /&gt;
        &amp;quot;${CANONICAL_FILE}&amp;quot; \&lt;br /&gt;
            | tee &amp;quot;${LOG_DIR}/13-canonical.log&amp;quot;&lt;br /&gt;
    [ -e &amp;quot;${CANONICAL_FILE}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    $ZINC_NEUTRALIZE \&lt;br /&gt;
        &amp;quot;${CANONICAL_FILE}&amp;quot; \&lt;br /&gt;
        &amp;quot;${NEUTRALIZED_FILE}&amp;quot; 2&amp;gt;&amp;amp;1 \&lt;br /&gt;
            | tee &amp;quot;${LOG_DIR}/14-neutralize.log&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    [ -e &amp;quot;${NEUTRALIZED_FILE}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    $ZINC_TAUTOMERIZE \&lt;br /&gt;
        &amp;quot;${NEUTRALIZED_FILE}&amp;quot; \&lt;br /&gt;
        &amp;quot;${TAUTOMERIZED_FILE}&amp;quot; \&lt;br /&gt;
        --log=&amp;quot;${TAUTOMER_LOG}&amp;quot; 2&amp;gt;&amp;amp;1 \&lt;br /&gt;
            | tee &amp;quot;${LOG_DIR}/15-tautomerize.log&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    [ -e &amp;quot;${TAUTOMERIZED_FILE}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    $ZINC_VALIDATE \&lt;br /&gt;
        &amp;quot;${TAUTOMERIZED_FILE}&amp;quot; \&lt;br /&gt;
        &amp;quot;${VERIFY_FILE}&amp;quot; \&lt;br /&gt;
        --log=&amp;quot;${VERIFY_LOG}&amp;quot; 2&amp;gt;&amp;amp;1 \&lt;br /&gt;
            | tee &amp;quot;${LOG_DIR}/16-verify.log&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    sort -k 2 &amp;quot;${VERIFY_FILE}&amp;quot; \&lt;br /&gt;
            | uniq &amp;gt; &amp;quot;${DISTINCT_FILE}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    ln -svfn &amp;quot;${DISTINCT_FILE}&amp;quot; &amp;quot;${STEP_1_OUTPUT}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Skipping preprocessing by request&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    [ ! -e &amp;quot;${STEP_1_OUTPUT}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    ln -sv &amp;quot;${STEP_1_INPUT}&amp;quot; &amp;quot;${STEP_1_OUTPUT}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Step 2: Stereo Ambiguity Separation&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
[ ! -e &amp;quot;${STEP_2_INPUT}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
ln -sv &amp;quot;${STEP_1_OUTPUT}&amp;quot; &amp;quot;${STEP_2_INPUT}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
if [ ! -e &amp;quot;${STEP_2_INPUT}&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;No input available. Skipping step 2&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
elif [ &amp;quot;${RUN_STEREO_EXPANSION}&amp;quot; == &amp;#039;yes&amp;#039; ] ; then&lt;br /&gt;
    mkdir -pv &amp;quot;${STEREO_DIR}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    pushd &amp;quot;${STEREO_DIR}&amp;quot;&lt;br /&gt;
    ln -svfn &amp;quot;../${STEP_2_INPUT}&amp;quot; &amp;quot;${STEREO_RAW}&amp;quot;&lt;br /&gt;
    mkdir -pv &amp;quot;${STEREO_SEPARATE_DIR}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
&lt;br /&gt;
    [ -e &amp;quot;${STEREO_RAW}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    $ZINC_STEREO_SEPARATE \&lt;br /&gt;
        &amp;quot;${STEREO_RAW}&amp;quot; \&lt;br /&gt;
        --max-enumerable &amp;quot;${ZINC_MAX_ENUMERABLE_STEREO_CENTERS}&amp;quot; \&lt;br /&gt;
        --output-dir &amp;quot;${STEREO_SEPARATE_DIR}&amp;quot; \&lt;br /&gt;
        --extension ism \&lt;br /&gt;
        --prefix &amp;quot;&amp;quot; \&lt;br /&gt;
        --unambiguous-suffix &amp;quot;${UNAMBIGUOUS_LABEL}&amp;quot; \&lt;br /&gt;
        --enumerable-suffix &amp;quot;${ENUMERABLE_LABEL}&amp;quot; \&lt;br /&gt;
        --ambiguous-suffix &amp;quot;${AMBIGUOUS_LABEL}&amp;quot; 2&amp;gt;&amp;amp;1 \&lt;br /&gt;
            | tee &amp;quot;${LOG_DIR}/10-split-stereo.log&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;  Step 2.1) Handling all unambiguous and enumerable compounds&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    EXTRACTED_UNAMBIGUOUS=( $( find &amp;quot;${STEREO_SEPARATE_DIR}&amp;quot; -name &amp;quot;${UNAMBIGUOUS_LABEL}-*.ism&amp;quot; ) )&lt;br /&gt;
    EXTRACTED_ENUMERABLE=( $( find &amp;quot;${STEREO_SEPARATE_DIR}&amp;quot; -name &amp;quot;${ENUMERABLE_LABEL}-*.ism&amp;quot; ) )&lt;br /&gt;
    EXTRACTED_AMBIGUOUS=( $( find &amp;quot;${STEREO_SEPARATE_DIR}&amp;quot; -name &amp;quot;${AMBIGUOUS_LABEL}-*.ism&amp;quot; ) )&lt;br /&gt;
&lt;br /&gt;
    # Write one header and ignore others&lt;br /&gt;
    echo -e &amp;quot;SMILES\tName&amp;quot; &amp;gt; &amp;quot;${STEREO_UNAMBIGUOUS}&amp;quot;&lt;br /&gt;
    if [ &amp;quot;${#EXTRACTED_UNAMBIGUOUS[@]}&amp;quot; -gt 0 ] ; then&lt;br /&gt;
        for STEREO_FILE in &amp;quot;${EXTRACTED_UNAMBIGUOUS[@]}&amp;quot;; do&lt;br /&gt;
            cat &amp;quot;${STEREO_FILE}&amp;quot; &amp;gt;&amp;gt; &amp;quot;${STEREO_UNAMBIGUOUS}&amp;quot;&lt;br /&gt;
        done&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    echo -e &amp;quot;SMILES\tName&amp;quot; &amp;gt; &amp;quot;${STEREO_ENUMERABLE}&amp;quot;&lt;br /&gt;
    if [ &amp;quot;${#EXTRACTED_ENUMERABLE[@]}&amp;quot; -gt 0 ] ; then&lt;br /&gt;
        for STEREO_FILE in &amp;quot;${EXTRACTED_ENUMERABLE[@]}&amp;quot;; do&lt;br /&gt;
            cat &amp;quot;${STEREO_FILE}&amp;quot; &amp;gt;&amp;gt; &amp;quot;${STEREO_ENUMERABLE}&amp;quot;&lt;br /&gt;
        done&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    echo -e &amp;quot;SMILES\tName&amp;quot; &amp;gt; &amp;quot;${STEREO_AMBIGUOUS}&amp;quot;&lt;br /&gt;
    if [ &amp;quot;${#EXTRACTED_AMBIGUOUS[@]}&amp;quot; -gt 0 ] ; then&lt;br /&gt;
        for STEREO_FILE in &amp;quot;${EXTRACTED_AMBIGUOUS[@]}&amp;quot;; do&lt;br /&gt;
            cat &amp;quot;${STEREO_FILE}&amp;quot; &amp;gt;&amp;gt; &amp;quot;${STEREO_AMBIGUOUS}&amp;quot;&lt;br /&gt;
        done&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    [ -e &amp;quot;${STEREO_ENUMERABLE}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    $ZINC_STEREO_DEFAULT_EXPAND \&lt;br /&gt;
        &amp;quot;${STEREO_ENUMERABLE}&amp;quot; \&lt;br /&gt;
        &amp;quot;${STEREO_ENUMERATED}&amp;quot; 2&amp;gt;&amp;amp;1 \&lt;br /&gt;
            | tee &amp;quot;${LOG_DIR}/10-12-enumerable-expansion.log&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;  Step 2.2) Handling ambiguous compounds&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    #[ -e &amp;quot;${STEREO_SEPARATE_DIR}/${AMBIGUOUS_LABEL}-${DEFAULT_CHEMOTYPE}.ism&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    #$ZINC_ANNOTATE \&lt;br /&gt;
    #    &amp;quot;${STEREO_SEPARATE_DIR}/${AMBIGUOUS_LABEL}-${DEFAULT_CHEMOTYPE}.ism&amp;quot; \&lt;br /&gt;
    #    &amp;quot;${STEREO_AMBIGUOUS}&amp;quot; 2&amp;gt;&amp;amp;1 \&lt;br /&gt;
    #        | tee &amp;quot;${LOG_DIR}/10-20-annotate-ambiguous-default.log&amp;quot;  1&amp;gt;&amp;amp;2&lt;br /&gt;
    #[ -e &amp;quot;${STEREO_AMBIGUOUS}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    #$ZINC_IDENTIFY \&lt;br /&gt;
    #    &amp;quot;${STEREO_AMBIGUOUS}&amp;quot; \&lt;br /&gt;
    #    &amp;quot;${STEREO_AMBIGUOUS_NEW}&amp;quot; \&lt;br /&gt;
    #    &amp;quot;${STEREO_AMBIGUOUS_FOUND}&amp;quot; 2&amp;gt;&amp;amp;1 \&lt;br /&gt;
    #        | tee &amp;quot;${LOG_DIR}/10-21-resolve-ambiguous-stereo.log&amp;quot;  1&amp;gt;&amp;amp;2&lt;br /&gt;
    [ -e &amp;quot;${STEREO_AMBIGUOUS}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    $ZINC_STEREO_DEFAULT_EXPAND \&lt;br /&gt;
        &amp;quot;${STEREO_AMBIGUOUS}&amp;quot; \&lt;br /&gt;
        &amp;quot;${STEREO_AMBIGUOUS_EXPANDED}&amp;quot; 2&amp;gt;&amp;amp;1 \&lt;br /&gt;
            | tee &amp;quot;${LOG_DIR}/10-23-ambiguous-expansion.log&amp;quot;  1&amp;gt;&amp;amp;2&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;  Step 2.3) Handling ambiguous sterols&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    echo &amp;quot;Skipping: Sterols and Glucose now handled inline&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    #[ -e &amp;quot;${STEREO_SEPARATE_DIR}/${AMBIGUOUS_LABEL}-${SPECIAL_CHEMOTYPE}.ism&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    #$ZINC_STEREO_STEROL_EXPAND \&lt;br /&gt;
    #    &amp;quot;${STEREO_SEPARATE_DIR}/${AMBIGUOUS_LABEL}-${SPECIAL_CHEMOTYPE}.ism&amp;quot; \&lt;br /&gt;
    #    &amp;quot;${STEREO_SPECIAL_EXPANSIONS}&amp;quot; 2&amp;gt;&amp;amp;1 \&lt;br /&gt;
    #        | tee &amp;quot;${LOG_DIR}/10-30-expand-ambiguous-sterols.log&amp;quot;  1&amp;gt;&amp;amp;2&lt;br /&gt;
    #[ -e &amp;quot;${STEREO_SPECIAL_EXPANSIONS}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    #$ZINC_STEROL_PICK \&lt;br /&gt;
    #    &amp;quot;${STEREO_SPECIAL_EXPANSIONS}&amp;quot; \&lt;br /&gt;
    #    &amp;quot;${STEREO_SPECIAL_PICKED}&amp;quot; 2&amp;gt;&amp;amp;1 \&lt;br /&gt;
    #        | tee &amp;quot;${LOG_DIR}/10-31-pick-expanded-sterols.log&amp;quot;  1&amp;gt;&amp;amp;2&lt;br /&gt;
&lt;br /&gt;
    echo &amp;quot;  Step 2.4) Consolidation of selected stereoisomers&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    echo -e &amp;quot;SMILES\tName&amp;quot; &amp;gt; &amp;quot;${STEREO_PICKED}&amp;quot;&lt;br /&gt;
    for PICKED in \&lt;br /&gt;
            &amp;quot;${STEREO_UNAMBIGUOUS}&amp;quot; \&lt;br /&gt;
            &amp;quot;${STEREO_ENUMERATED}&amp;quot; \&lt;br /&gt;
            &amp;quot;${STEREO_AMBIGUOUS_EXPANDED}&amp;quot; ; do&lt;br /&gt;
        if [ -e &amp;quot;${PICKED}&amp;quot; ] ; then&lt;br /&gt;
            tail -n +2 &amp;quot;${PICKED}&amp;quot; &amp;gt;&amp;gt; &amp;quot;${STEREO_PICKED}&amp;quot;&lt;br /&gt;
        fi&lt;br /&gt;
    done&lt;br /&gt;
&lt;br /&gt;
    popd 1&amp;gt;&amp;amp;2&lt;br /&gt;
    ln -svfn &amp;quot;${STEREO_DIR}/${STEREO_AMBIGUOUS_FOUND}&amp;quot; &amp;quot;${STEP_2_OUTPUT_A}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    ln -svfn &amp;quot;${STEREO_DIR}/${STEREO_PICKED}&amp;quot; &amp;quot;${STEP_2_OUTPUT_B}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Skipping stereo expansion by request&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    [ ! -e &amp;quot;${STEP_2_OUTPUT_A}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    touch &amp;quot;${STEP_2_OUTPUT_A}&amp;quot;  # Nothing found&lt;br /&gt;
    [ ! -e &amp;quot;${STEP_2_OUTPUT_B}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    ln -sv &amp;quot;${STEP_2_INPUT}&amp;quot; &amp;quot;${STEP_2_OUTPUT_B}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Step 3: Resolution&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
[ ! -e &amp;quot;${STEP_3_INPUT}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
ln -sv &amp;quot;${STEP_2_OUTPUT_B}&amp;quot; &amp;quot;${STEP_3_INPUT}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
if [ ! -e &amp;quot;${STEP_3_INPUT}&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;No input available. Skipping step 3&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
elif [ &amp;quot;${RUN_RESOLUTION}&amp;quot; == &amp;#039;yes&amp;#039; ] ; then&lt;br /&gt;
    [ -e &amp;quot;${STEP_3_INPUT}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    $ZINC_ANNOTATE \&lt;br /&gt;
        &amp;quot;${STEP_3_INPUT}&amp;quot; \&lt;br /&gt;
        &amp;quot;${RESOLUTION_ANNOTATED}&amp;quot; 2&amp;gt;&amp;amp;1 \&lt;br /&gt;
            | tee &amp;quot;${LOG_DIR}/30-resolution-annotation.log&amp;quot;  1&amp;gt;&amp;amp;2&lt;br /&gt;
    [ -e &amp;quot;${RESOLUTION_ANNOTATED}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    $ZINC_IDENTIFY \&lt;br /&gt;
        &amp;quot;${RESOLUTION_ANNOTATED}&amp;quot; \&lt;br /&gt;
        &amp;quot;${RESOLUTION_NEW}&amp;quot; \&lt;br /&gt;
        &amp;quot;${RESOLUTION_FOUND}&amp;quot; 2&amp;gt;&amp;amp;1 \&lt;br /&gt;
            | tee &amp;quot;${LOG_DIR}/31-resolution.log&amp;quot;  1&amp;gt;&amp;amp;2&lt;br /&gt;
&lt;br /&gt;
    ln -svfn &amp;quot;${RESOLUTION_NEW}&amp;quot; &amp;quot;${STEP_3_OUTPUT_A}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    ln -svfn &amp;quot;${RESOLUTION_FOUND}&amp;quot; &amp;quot;${STEP_3_OUTPUT_B}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Skipping resolution by request&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    [ ! -e &amp;quot;${STEP_3_OUTPUT_A}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    ln -sv &amp;quot;${STEP_3_INPUT}&amp;quot; &amp;quot;${STEP_3_OUTPUT_A}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    [ ! -e &amp;quot;${STEP_3_OUTPUT_B}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    touch &amp;quot;${STEP_3_OUTPUT_B}&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Step 4: Creating new substances&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
[ ! -e &amp;quot;${STEP_4_INPUT}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
ln -sv &amp;quot;${STEP_3_OUTPUT_A}&amp;quot; &amp;quot;${STEP_4_INPUT}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
if [ ! -e &amp;quot;${STEP_4_INPUT}&amp;quot; ] ; then&lt;br /&gt;
    echo &amp;quot;No input available. Skipping step 4&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
elif [ &amp;quot;${RUN_CREATION}&amp;quot; == &amp;#039;yes&amp;#039; ] ; then&lt;br /&gt;
    [ -e &amp;quot;${STEP_4_INPUT}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    $ZINC_ANNOTATE \&lt;br /&gt;
        &amp;quot;${STEP_4_INPUT}&amp;quot; \&lt;br /&gt;
        &amp;quot;${SUBSTANCES_ANNOTATED}&amp;quot; 2&amp;gt;&amp;amp;1 \&lt;br /&gt;
            | tee &amp;quot;${LOG_DIR}/41-creation-annotation.log&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    head -n 1 &amp;quot;${SUBSTANCES_ANNOTATED}&amp;quot; &amp;gt; &amp;quot;${SUBSTANCES_ORGANIZED}&amp;quot;&lt;br /&gt;
    tail -n +2 &amp;quot;${SUBSTANCES_ANNOTATED}&amp;quot; | sort -k 3 &amp;gt;&amp;gt; &amp;quot;${SUBSTANCES_ORGANIZED}&amp;quot;&lt;br /&gt;
    [ -e &amp;quot;${SUBSTANCES_ORGANIZED}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    $ZINC_CREATE \&lt;br /&gt;
        &amp;quot;${SUBSTANCES_ORGANIZED}&amp;quot; \&lt;br /&gt;
        &amp;quot;${CREATION_MAPPINGS}&amp;quot; \&lt;br /&gt;
        &amp;quot;${CREATION_FAILURES}&amp;quot; 2&amp;gt;&amp;amp;1 \&lt;br /&gt;
            | tee &amp;quot;${LOG_DIR}/42-creation.log&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    ln -svfn &amp;quot;${CREATION_MAPPINGS}&amp;quot; &amp;quot;${STEP_4_OUTPUT}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Skipping substance creation by request&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    [ ! -e &amp;quot;${CREATION_MAPPINGS}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    touch &amp;quot;${CREATION_MAPPINGS}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    [ ! -e &amp;quot;${STEP_4_OUTPUT}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    ln -sv &amp;quot;${CREATION_MAPPINGS}&amp;quot; &amp;quot;${STEP_4_OUTPUT}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Step 5: Updating Catalog Mappings&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
mkdir -pv &amp;quot;${MAPPINGS_DIR}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
[ ! -e &amp;quot;${STEP_5_INPUT_A}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
ln -svfn &amp;quot;../${STEP_2_OUTPUT_A}&amp;quot; &amp;quot;${STEP_5_INPUT_A}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
[ ! -e &amp;quot;${STEP_5_INPUT_B}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
ln -svfn &amp;quot;../${STEP_3_OUTPUT_B}&amp;quot; &amp;quot;${STEP_5_INPUT_B}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
[ ! -e &amp;quot;${STEP_5_INPUT_C}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
ln -svfn &amp;quot;../${STEP_4_OUTPUT}&amp;quot; &amp;quot;${STEP_5_INPUT_C}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
STEP_5_INPUTS=( &amp;quot;${STEP_5_INPUT_A}&amp;quot; &amp;quot;${STEP_5_INPUT_B}&amp;quot; &amp;quot;${STEP_5_INPUT_C}&amp;quot; )&lt;br /&gt;
&lt;br /&gt;
if [ ! -z &amp;quot;${ADDITIONAL_MAPPINGS}&amp;quot; ] ; then&lt;br /&gt;
    ln -svfn &amp;quot;${ADDITIONAL_MAPPINGS}&amp;quot; &amp;quot;${STEP_5_INPUT_D}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    STEP_5_INPUTS=( &amp;quot;${STEP_5_INPUTS[@]}&amp;quot; &amp;quot;${STEP_5_INPUT_D}&amp;quot; )&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if [ &amp;quot;${RUN_LOADING}&amp;quot; == &amp;#039;yes&amp;#039; ] ; then&lt;br /&gt;
    CATALOG_LOADING_INPUTS=()&lt;br /&gt;
    for INPUT in &amp;quot;${STEP_5_INPUTS[@]}&amp;quot; ; do&lt;br /&gt;
        if [ -e &amp;quot;${INPUT}&amp;quot; ] ; then&lt;br /&gt;
            CATALOG_LOADING_INPUTS=( &amp;quot;${CATALOG_LOADING_INPUTS[@]}&amp;quot; &amp;quot;${INPUT}&amp;quot; )&lt;br /&gt;
        fi&lt;br /&gt;
    done&lt;br /&gt;
    [ &amp;quot;${#CATALOG_LOADING_INPUTS[@]}&amp;quot; -gt 0 ] &amp;amp;&amp;amp; \&lt;br /&gt;
    $ZINC_LOAD \&lt;br /&gt;
        &amp;quot;${CATALOG_NAME}&amp;quot; \&lt;br /&gt;
        &amp;quot;${CATALOG_LOADING_INPUTS[@]}&amp;quot; \&lt;br /&gt;
        -o &amp;quot;${STEP_5_OUTPUT}&amp;quot; 2&amp;gt;&amp;amp;1 \&lt;br /&gt;
            | tee &amp;quot;${LOG_DIR}/51-loading.log&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
else&lt;br /&gt;
    echo &amp;quot;Skipping catalog item mapping loading by request&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
    [ ! -e &amp;quot;${STEP_5_OUTPUT}&amp;quot; ] &amp;amp;&amp;amp; \&lt;br /&gt;
    touch &amp;quot;${STEP_5_OUTPUT}&amp;quot; 1&amp;gt;&amp;amp;2&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
popd 1&amp;gt;&amp;amp;2&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Frodo</name></author>
	</entry>
</feed>