changeset 1:0a5e0df17054 draft default tip

Uploaded
author chrisb
date Fri, 06 May 2016 08:05:48 -0400
parents 89592faa2875
children
files get_data/cfg_array/.README_CFG_array.md.swp get_data/kegg_glycan/.idea/kegg_glycan.iml get_data/kegg_glycan/.idea/misc.xml get_data/kegg_glycan/.idea/modules.xml get_data/kegg_glycan/.idea/workspace.xml get_data/kegg_glycan/2 get_data/kegg_glycan/KEGGnotes.md get_data/kegg_glycan/README_KEGG.md get_data/kegg_glycan/db.output get_data/kegg_glycan/findKEGG.py get_data/kegg_glycan/findKEGG.pyc get_data/kegg_glycan/findKEGG.xml get_data/kegg_glycan/found_entries.txt get_data/kegg_glycan/getkcfKEGG.pyc get_data/kegg_glycan/kcf.output get_data/kegg_glycan/linkKEGG.py get_data/kegg_glycan/linkKEGG.pyc get_data/kegg_glycan/linkKEGG.xml get_data/kegg_glycan/linked_entries.txt get_data/kegg_glycan/plus get_data/kegg_glycan/test-data/shiga-toxin-example-AND get_data/kegg_glycan/test-data/shiga-toxin-example-AND-broken get_data/kegg_glycan/test-data/shiga-toxin-example-OR get_data/kegg_glycan/test-data/shiga-toxin-example-OR-broken get_data/kegg_glycan/test_findKEGG.py get_data/kegg_glycan/test_findKEGG.pyc get_data/kegg_glycan/test_getkcfKEGG.pyc get_data/kegg_glycan/test_linkKEGG.py get_data/kegg_glycan/test_linkKEGG.pyc
diffstat 28 files changed, 1367 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
Binary file get_data/cfg_array/.README_CFG_array.md.swp has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_data/kegg_glycan/.idea/kegg_glycan.iml	Fri May 06 08:05:48 2016 -0400
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+  <component name="TestRunnerService">
+    <option name="projectConfiguration" value="Nosetests" />
+    <option name="PROJECT_TEST_RUNNER" value="Nosetests" />
+  </component>
+</module>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_data/kegg_glycan/.idea/misc.xml	Fri May 06 08:05:48 2016 -0400
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectLevelVcsManager" settingsEditedManually="false">
+    <OptionsSetting value="true" id="Add" />
+    <OptionsSetting value="true" id="Remove" />
+    <OptionsSetting value="true" id="Checkout" />
+    <OptionsSetting value="true" id="Update" />
+    <OptionsSetting value="true" id="Status" />
+    <OptionsSetting value="true" id="Edit" />
+    <ConfirmationsSetting value="0" id="Add" />
+    <ConfirmationsSetting value="0" id="Remove" />
+  </component>
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 2.7.5 (/usr/bin/python2.7)" project-jdk-type="Python SDK" />
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_data/kegg_glycan/.idea/modules.xml	Fri May 06 08:05:48 2016 -0400
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/kegg_glycan.iml" filepath="$PROJECT_DIR$/.idea/kegg_glycan.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_data/kegg_glycan/.idea/workspace.xml	Fri May 06 08:05:48 2016 -0400
@@ -0,0 +1,477 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ChangeListManager">
+    <list default="true" id="f9cd5c5d-2d50-4e30-b473-a89d14fa8c92" name="Default" comment="" />
+    <ignored path="kegg_glycan.iws" />
+    <ignored path=".idea/workspace.xml" />
+    <ignored path=".idea/dataSources.local.xml" />
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <option name="TRACKING_ENABLED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="ChangesViewManager" flattened_view="true" show_ignored="false" />
+  <component name="CoverageDataManager">
+    <SUITE FILE_PATH="coverage/kegg_glycan$Nosetest_SimpleUnitTest_test_bad_db.coverage" NAME="Nosetest SimpleUnitTest.test_bad_db Coverage Results" MODIFIED="1462440058620" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
+    <SUITE FILE_PATH="coverage/kegg_glycan$Nosetests_in_test_findKEGG.coverage" NAME="Nosetests in test_findKEGG Coverage Results" MODIFIED="1462439970167" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
+    <SUITE FILE_PATH="coverage/kegg_glycan$Nosetest_SimpleUnitTest_test_unfindable_entry.coverage" NAME="Nosetest SimpleUnitTest.test_unfindable_entry Coverage Results" MODIFIED="1462440121507" SOURCE_PROVIDER="com.intellij.coverage.DefaultCoverageFileProvider" RUNNER="coverage.py" COVERAGE_BY_TEST_ENABLED="true" COVERAGE_TRACING_ENABLED="false" WORKING_DIRECTORY="$PROJECT_DIR$" />
+  </component>
+  <component name="CreatePatchCommitExecutor">
+    <option name="PATCH_PATH" value="" />
+  </component>
+  <component name="ExecutionTargetManager" SELECTED_TARGET="default_target" />
+  <component name="FavoritesManager">
+    <favorites_list name="kegg_glycan" />
+  </component>
+  <component name="FileEditorManager">
+    <leaf>
+      <file leaf-file-name="test_findKEGG.py" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/test_findKEGG.py">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="255">
+              <caret line="45" column="22" selection-start-line="45" selection-start-column="22" selection-end-line="45" selection-end-column="22" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
+  </component>
+  <component name="IdeDocumentHistory">
+    <option name="CHANGED_PATHS">
+      <list>
+        <option value="$PROJECT_DIR$/test_findKEGG.py" />
+      </list>
+    </option>
+  </component>
+  <component name="JsBuildToolGruntFileManager" detection-done="true" />
+  <component name="JsBuildToolPackageJson" detection-done="true" />
+  <component name="JsGulpfileManager">
+    <detection-done>true</detection-done>
+  </component>
+  <component name="ProjectFrameBounds">
+    <option name="x" value="-1" />
+    <option name="y" value="28" />
+    <option name="width" value="1922" />
+    <option name="height" value="1019" />
+  </component>
+  <component name="ProjectLevelVcsManager" settingsEditedManually="false">
+    <OptionsSetting value="true" id="Add" />
+    <OptionsSetting value="true" id="Remove" />
+    <OptionsSetting value="true" id="Checkout" />
+    <OptionsSetting value="true" id="Update" />
+    <OptionsSetting value="true" id="Status" />
+    <OptionsSetting value="true" id="Edit" />
+    <ConfirmationsSetting value="0" id="Add" />
+    <ConfirmationsSetting value="0" id="Remove" />
+  </component>
+  <component name="ProjectView">
+    <navigator currentView="ProjectPane" proportions="" version="1">
+      <flattenPackages />
+      <showMembers />
+      <showModules />
+      <showLibraryContents />
+      <hideEmptyPackages />
+      <abbreviatePackageNames />
+      <autoscrollToSource />
+      <autoscrollFromSource />
+      <sortByType />
+      <manualOrder />
+      <foldersAlwaysOnTop value="true" />
+    </navigator>
+    <panes>
+      <pane id="Scratches" />
+      <pane id="ProjectPane">
+        <subPane>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="kegg_glycan" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+          </PATH>
+          <PATH>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="kegg_glycan" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
+            </PATH_ELEMENT>
+            <PATH_ELEMENT>
+              <option name="myItemId" value="kegg_glycan" />
+              <option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
+            </PATH_ELEMENT>
+          </PATH>
+        </subPane>
+      </pane>
+      <pane id="Scope" />
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
+    <property name="WebServerToolWindowFactoryState" value="false" />
+  </component>
+  <component name="RunManager" selected="Python tests.Nosetest SimpleUnitTest.test_unfindable_entry">
+    <configuration default="false" name="Nosetests in test_findKEGG" type="tests" factoryName="Nosetests" temporary="true" nameIsGenerated="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="kegg_glycan" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/test_findKEGG.py" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="PARAMS" value="" />
+      <option name="USE_PARAM" value="false" />
+      <method />
+    </configuration>
+    <configuration default="false" name="Nosetest SimpleUnitTest.test_bad_db" type="tests" factoryName="Nosetests" temporary="true" nameIsGenerated="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="kegg_glycan" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/test_findKEGG.py" />
+      <option name="CLASS_NAME" value="SimpleUnitTest" />
+      <option name="METHOD_NAME" value="test_bad_db" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_METHOD" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="PARAMS" value="" />
+      <option name="USE_PARAM" value="false" />
+      <method />
+    </configuration>
+    <configuration default="false" name="Nosetest SimpleUnitTest.test_unfindable_entry" type="tests" factoryName="Nosetests" temporary="true" nameIsGenerated="true">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <option name="IS_MODULE_SDK" value="true" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="kegg_glycan" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/test_findKEGG.py" />
+      <option name="CLASS_NAME" value="SimpleUnitTest" />
+      <option name="METHOD_NAME" value="test_unfindable_entry" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_METHOD" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="PARAMS" value="" />
+      <option name="USE_PARAM" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="DjangoTestsConfigurationType" factoryName="Django tests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="kegg_glycan" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="TARGET" value="" />
+      <option name="SETTINGS_FILE" value="" />
+      <option name="CUSTOM_SETTINGS" value="false" />
+      <option name="USE_OPTIONS" value="false" />
+      <option name="OPTIONS" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="JavascriptDebugType" factoryName="JavaScript Debug">
+      <method />
+    </configuration>
+    <configuration default="true" type="PyBehaveRunConfigurationType" factoryName="Behave">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="kegg_glycan" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="ADDITIONAL_ARGS" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="PyLettuceRunConfigurationType" factoryName="Lettuce">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="kegg_glycan" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="ADDITIONAL_ARGS" value="" />
+      <method />
+    </configuration>
+    <configuration default="true" type="PythonConfigurationType" factoryName="Python">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="kegg_glycan" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="Tox" factoryName="Tox">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <module name="kegg_glycan" />
+      <method />
+    </configuration>
+    <configuration default="true" type="js.build_tools.gulp" factoryName="Gulp.js">
+      <method />
+    </configuration>
+    <configuration default="true" type="js.build_tools.npm" factoryName="npm">
+      <command value="run-script" />
+      <scripts />
+      <node-interpreter value="project" />
+      <envs />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Attests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="kegg_glycan" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Doctests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="kegg_glycan" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Nosetests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="kegg_glycan" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="PARAMS" value="" />
+      <option name="USE_PARAM" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="Unittests">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="kegg_glycan" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="PUREUNITTEST" value="true" />
+      <option name="PARAMS" value="" />
+      <option name="USE_PARAM" value="false" />
+      <method />
+    </configuration>
+    <configuration default="true" type="tests" factoryName="py.test">
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs />
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="" />
+      <option name="IS_MODULE_SDK" value="false" />
+      <option name="ADD_CONTENT_ROOTS" value="true" />
+      <option name="ADD_SOURCE_ROOTS" value="true" />
+      <module name="kegg_glycan" />
+      <EXTENSION ID="PythonCoverageRunConfigurationExtension" enabled="false" sample_coverage="true" runner="coverage.py" />
+      <option name="SCRIPT_NAME" value="" />
+      <option name="CLASS_NAME" value="" />
+      <option name="METHOD_NAME" value="" />
+      <option name="FOLDER_NAME" value="" />
+      <option name="TEST_TYPE" value="TEST_SCRIPT" />
+      <option name="PATTERN" value="" />
+      <option name="USE_PATTERN" value="false" />
+      <option name="testToRun" value="" />
+      <option name="keywords" value="" />
+      <option name="params" value="" />
+      <option name="USE_PARAM" value="false" />
+      <option name="USE_KEYWORD" value="false" />
+      <method />
+    </configuration>
+    <list size="3">
+      <item index="0" class="java.lang.String" itemvalue="Python tests.Nosetests in test_findKEGG" />
+      <item index="1" class="java.lang.String" itemvalue="Python tests.Nosetest SimpleUnitTest.test_bad_db" />
+      <item index="2" class="java.lang.String" itemvalue="Python tests.Nosetest SimpleUnitTest.test_unfindable_entry" />
+    </list>
+    <recent_temporary>
+      <list size="3">
+        <item index="0" class="java.lang.String" itemvalue="Python tests.Nosetest SimpleUnitTest.test_unfindable_entry" />
+        <item index="1" class="java.lang.String" itemvalue="Python tests.Nosetest SimpleUnitTest.test_bad_db" />
+        <item index="2" class="java.lang.String" itemvalue="Python tests.Nosetests in test_findKEGG" />
+      </list>
+    </recent_temporary>
+  </component>
+  <component name="ShelveChangesManager" show_recycled="false">
+    <option name="remove_strategy" value="false" />
+  </component>
+  <component name="SvnConfiguration">
+    <configuration />
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="f9cd5c5d-2d50-4e30-b473-a89d14fa8c92" name="Default" comment="" />
+      <created>1462439789911</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1462439789911</updated>
+    </task>
+    <servers />
+  </component>
+  <component name="TestHistory">
+    <history-entry file="Nosetest_SimpleUnitTest_test_bad_db - 2016.05.05 at 11h 20m 59s.xml">
+      <configuration name="Nosetest SimpleUnitTest.test_bad_db" configurationId="tests" />
+    </history-entry>
+    <history-entry file="Nosetest_SimpleUnitTest_test_unfindable_entry - 2016.05.05 at 11h 21m 07s.xml">
+      <configuration name="Nosetest SimpleUnitTest.test_unfindable_entry" configurationId="tests" />
+    </history-entry>
+    <history-entry file="Nosetest_SimpleUnitTest_test_unfindable_entry - 2016.05.05 at 11h 22m 02s.xml">
+      <configuration name="Nosetest SimpleUnitTest.test_unfindable_entry" configurationId="tests" />
+    </history-entry>
+    <history-entry file="Nosetests_in_test_findKEGG - 2016.05.05 at 11h 16m 44s.xml">
+      <configuration name="Nosetests in test_findKEGG" configurationId="tests" />
+    </history-entry>
+    <history-entry file="Nosetests_in_test_findKEGG - 2016.05.05 at 11h 19m 33s.xml">
+      <configuration name="Nosetests in test_findKEGG" configurationId="tests" />
+    </history-entry>
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="-1" y="28" width="1922" height="1019" extended-state="6" />
+    <editor active="false" />
+    <layout>
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
+      <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
+      <window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.5749168" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+    </layout>
+  </component>
+  <component name="Vcs.Log.UiProperties">
+    <option name="RECENTLY_FILTERED_USER_GROUPS">
+      <collection />
+    </option>
+    <option name="RECENTLY_FILTERED_BRANCH_GROUPS">
+      <collection />
+    </option>
+  </component>
+  <component name="VcsContentAnnotationSettings">
+    <option name="myLimit" value="2678400000" />
+  </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager />
+    <watches-manager />
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/test_findKEGG.py">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="255">
+          <caret line="45" column="22" selection-start-line="45" selection-start-column="22" selection-end-line="45" selection-end-column="22" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+  </component>
+</project>
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_data/kegg_glycan/2	Fri May 06 08:05:48 2016 -0400
@@ -0,0 +1,54 @@
+
+from KEGG searches as follows should work
+
+
+/find/genes/shiga+toxin	  	for keywords "shiga" and "toxin"
+/find/genes/"shiga toxin"	  	for keywords "shiga toxin"
+
+these do not function on all databases esp. enzyme
+
+http://rest.kegg.jp/find/enzyme/deoxy+1.1.1 AND works
+http://rest.kegg.jp/find/enzyme/"deoxy%201.1.1" OR does not work
+http://rest.kegg.jp/find/enzyme/"deoxy 1.1.1" OR does not work
+
+0
+http://rest.kegg.jp/find/enzyme/ec:2.4.99.1+ec:2.4.99.6 AND works but return nothing as no overlap
+http://rest.kegg.jp/find/enzyme/"ec:2.4.99.1 ec:2.4.99.6" OR doesn't work
+http://rest.kegg.jp/find/enzyme/ec:2.4.99.  works
+
+ ../../../virtualpy/bin/python findKEGG.py  -d enzyme -q 2.4.99.1+2.4.99.6 . works but return None in python. which breaks file writing. rather fix this.
+
+
+
+
+
+# updated notes on KEGG behaviour
+
+True for release  Release 78.0+/05-05, May 16 (see http://rest.kegg.jp/info/genes)
+
+multiple complex queries are not recommended.
+
+Using the shiga toxin example from http://www.genome.jp/kegg/rest/keggapi.html
+/find/genes/shiga+toxin	  	for keywords "shiga" and "toxin"
+/find/genes/"shiga toxin"	  	for keywords "shiga toxin"
+
+## AND example
+/find/genes/shiga+toxin	  	for keywords "shiga" and "toxin"
+http://rest.kegg.jp/find/genes/shiga+toxin
+
+## OR example
+/find/genes/"shiga toxin"	  	for keywords "shiga toxin"
+http://rest.kegg.jp/find/genes/"shiga%20toxin"
+
+## BROKEN AND
+http://rest.kegg.jp/find/genes/"shiga+toxin"
+If query is in put in quotes.
+ this result is the same as OR.
+
+## BROKEN OR
+http://rest.kegg.jp/find/genes/shiga%20toxin
+If query is not placed in quotations.
+ this result is the same as AND.
+
+# Recommendation 
+Do not combine AND with OR queries
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_data/kegg_glycan/KEGGnotes.md	Fri May 06 08:05:48 2016 -0400
@@ -0,0 +1,51 @@
+
+# notes on KEGG behaviour
+
+Tested with  Release 78.0+/05-05, May 16 (see http://rest.kegg.jp/info/genes)
+
+*Recommendation 1 - Do not combine AND with OR queries*
+multiple complex queries are not recommended.
+
+*OR's on certain db's e.g. glycan, enzyme do not always return correctly*
+
+## Shiga toxin behaviour test
+Using the shiga toxin example from http://www.genome.jp/kegg/rest/keggapi.html
+/find/genes/shiga+toxin	  	for keywords "shiga" and "toxin"
+/find/genes/"shiga toxin"	  	for keywords "shiga toxin"
+
+results in test-data
+ - test-data/shiga-toxin-example-AND
+ - test-data/shiga-toxin-example-AND-broken
+ - test-data/shiga-toxin-example-OR
+ - test-data/shiga-toxin-example-OR-broken
+
+
+### AND example
+/find/genes/shiga+toxin	  	for keywords "shiga" and "toxin"
+http://rest.kegg.jp/find/genes/shiga+toxin
+
+### OR example
+/find/genes/"shiga toxin"	  	for keywords "shiga toxin"
+http://rest.kegg.jp/find/genes/"shiga%20toxin"
+
+### BROKEN AND
+http://rest.kegg.jp/find/genes/"shiga+toxin"
+If query is in put in quotes.
+ this result is the same as OR.
+
+### BROKEN OR
+http://rest.kegg.jp/find/genes/shiga%20toxin
+If query is not placed in quotations.
+ this result is the same as AND.
+
+## Enzyme tests
+
+http://rest.kegg.jp/find/enzyme/deoxy+1.1.1 AND works
+http://rest.kegg.jp/find/enzyme/"deoxy%201.1.1" OR does not work
+http://rest.kegg.jp/find/enzyme/"deoxy 1.1.1" OR does not work
+
+0
+http://rest.kegg.jp/find/enzyme/ec:2.4.99.1+ec:2.4.99.6 AND works but return nothing as no overlap
+http://rest.kegg.jp/find/enzyme/"ec:2.4.99.1 ec:2.4.99.6" OR doesn't work
+http://rest.kegg.jp/find/enzyme/ec:2.4.99.  works
+
--- a/get_data/kegg_glycan/README_KEGG.md	Wed Mar 23 14:35:56 2016 -0400
+++ b/get_data/kegg_glycan/README_KEGG.md	Fri May 06 08:05:48 2016 -0400
@@ -20,6 +20,9 @@
 findKEGG.py -d $dbname -q $searchpattern -o $output
 ```
 
+## Known Issues
+Yes, the and/or functionality of the KEGG rest API (Release 78.0+/05-05, May 16 ) does not always function as expected. This has been resolved in the code. More details,  [KEGGnotes.md ](KEGGnotes.md)
+
 ## Help
 ```
 ../../virtualpy/bin/activate
@@ -31,7 +34,7 @@
 
 ```
 ../../virtualpy/bin/activate
-python  test_findKEGG.py
+nosetests  test_findKEGG.py
 ```
 
 # 2. getkcfKEGG,py
@@ -67,7 +70,7 @@
 
 ```
 ../../virtualpy/bin/activate
-python  test_getkcfKEGG.py
+nosetests  test_getkcfKEGG.py
 ```
 
 # 3. linkKEGG.py
@@ -101,6 +104,6 @@
 
 ```
 ../../virtualpy/bin/activate
-python  test_linkKEGG.py
+nosetests  test_linkKEGG.py
 ```
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_data/kegg_glycan/db.output	Fri May 06 08:05:48 2016 -0400
@@ -0,0 +1,83 @@
+ENTRY       G10495                      Glycan
+NAME        1,4-alpha-D-Glucan;
+            1,4-alpha-Glucan;
+            Amylose;
+            Maltodextrin
+COMPOSITION (Glc)1 (*)2
+CLASS       Polysaccharide
+REMARK      Same as: C00718 C01935 D02329
+REACTION    R06049 R06050 R06051 R06052 R06069 R06158 R06159 R06160 
+            R06184 R06185 R06186 R06243
+ENZYME      2.4.1.1         2.4.1.2         2.4.1.4         2.4.1.11        
+            2.4.1.18        2.4.1.21        2.4.1.25        3.2.1.2         
+            3.2.1.33        3.2.1.54        5.4.99.15
+DBLINKS     GlycomeDB: 12100
+NODE        3
+            1   *           8     0
+            2   Glc         0     0
+            3   *          -8     0
+EDGE        2
+            1     2:a1    1    
+            2     3       2:4  
+BRACKET     1  -4.0   2.0  -4.0  -2.0
+            1   5.0  -2.0   5.0   2.0
+            1 n
+///
+ENTRY       G10608                      Glycan
+NAME        UDP-D-glucose;
+            UDP-glucose;
+            Uridine diphosphate glucose
+COMPOSITION (UDP-Glc)1
+REMARK      Same as: C00029
+REACTION    R06020 R06023 R06036 R06043 R06045 R06051 R06062 R06073 
+            R06181 R06226 R06275 R09315 R09316
+ENZYME      2.4.1.11        2.4.1.12        2.4.1.13        2.4.1.14        
+            2.4.1.15        2.4.1.34        2.4.1.53        2.4.1.80        
+            2.4.1.183       2.4.1.188       2.4.1.-
+NODE        1
+            1   UDP-Glc  -0.3     0
+EDGE        0
+///
+ENTRY       G10619                      Glycan
+NAME        UDP;
+            Uridine 5'-diphosphate
+COMPOSITION (UDP)1
+REMARK      Same as: C00015
+REACTION    R05901 R05902 R05903 R05907 R05908 R05909 R05910 R05912 
+            R05915 R05916 R05925 R05926 R05927 R05928 R05929 R05930 
+            R05931 R05932 R05933 R05934 R05935 R05936 R05938 R05939 
+            R05941 R05946 R05948 R05952 R05953 R05956 R05960 R05962 
+            R05964 R05965 R05970 R05971 R05974 R05975 R05977 R05978 
+            R05983 R05985 R05986 R05987 R05989 R05991 R05992 R06006 
+            R06011 R06013 R06014 R06016 R06020 R06021 R06023 R06028 
+            R06029 R06033 R06036 R06043 R06045 R06051 R06055 R06062 
+            R06067 R06068 R06072 R06073 R06083 R06097 R06129 R06130 
+            R06145 R06167 R06168 R06169 R06172 R06173 R06174 R06181 
+            R06182 R06187 R06189 R06190 R06191 R06192 R06193 R06197 
+            R06198 R06210 R06214 R06226 R06234 R06275 R06276 R06277 
+            R06278 R07131 R07609 R07610 R07611 R07614 R07615 R07616 
+            R07617 R07619 R07621 R07622 R07623 R07624 R07625 R07628 
+            R09290 R09296 R09299 R09304 R09315 R09316 R09320 R10138 
+            R10139
+ENZYME      2.4.1.11        2.4.1.12        2.4.1.13        2.4.1.14        
+            2.4.1.15        2.4.1.16        2.4.1.22        2.4.1.34        
+            2.4.1.37        2.4.1.38        2.4.1.40        2.4.1.41        
+            2.4.1.43        2.4.1.45        2.4.1.47        2.4.1.53        
+            2.4.1.62        2.4.1.70        2.4.1.79        2.4.1.80        
+            2.4.1.86        2.4.1.87        2.4.1.88        2.4.1.90        
+            2.4.1.92        2.4.1.101       2.4.1.102       2.4.1.122       
+            2.4.1.123       2.4.1.133       2.4.1.134       2.4.1.135       
+            2.4.1.138       2.4.1.141       2.4.1.143       2.4.1.144       
+            2.4.1.145       2.4.1.146       2.4.1.147       2.4.1.148       
+            2.4.1.149       2.4.1.150       2.4.1.155       2.4.1.163       
+            2.4.1.164       2.4.1.165       2.4.1.167       2.4.1.174       
+            2.4.1.175       2.4.1.183       2.4.1.187       2.4.1.188       
+            2.4.1.198       2.4.1.201       2.4.1.206       2.4.1.212       
+            2.4.1.222       2.4.1.223       2.4.1.224       2.4.1.225       
+            2.4.1.226       2.4.1.227       2.4.1.228       2.4.1.244       
+            2.4.1.255       2.4.1.274       2.4.1.275       2.4.1.-         
+            2.4.2.24        2.4.2.26        2.4.2.38        2.4.2.-
+NODE        1
+            1   UDP      -0.4   0.3
+EDGE        0
+///
--- a/get_data/kegg_glycan/findKEGG.py	Wed Mar 23 14:35:56 2016 -0400
+++ b/get_data/kegg_glycan/findKEGG.py	Fri May 06 08:05:48 2016 -0400
@@ -1,6 +1,6 @@
 __author__ = 'cbarnett'
 __license__ = "MIT"
-__version__ = "0.3"
+__version__ = "0.4"
 # http://www.kegg.jp/kegg/rest/keggapi.html
 
 
@@ -16,8 +16,18 @@
         raise IOError("no db given")
     if query == [] or query == "" or query is None:
         raise IOError("no query given")
-    query = query.replace('\n', ' ')  # in case of new lines
-    query = query.replace('\r', ' ')  # in case of new lines
+    query = query.replace('\n', '+')  # in case of new lines, assume this means the user want to "AND"
+    query = query.replace('\r', '+')  # in case of new lines, assume this means the user want to "AND"
+    query = query.replace('ec: ', 'ec:')  # in case of ec: spaces - e.g. issue "ec: 2.4.99.1" spaces are ok usually as allows for combination searching "2.4.99.1 2.4.99.6"
+    
+    import re
+    p = re.compile(' *\+ *') # ensure no unneccesary space in an AND query, otherwise incorrect behaviour from KEGG
+    queryfix = p.subn('+', query)
+    query=queryfix[0]
+
+    if ' ' in query:
+        query='"'+query+'"' # if spaces, query must be placed in quotes, otherwise incorrect behaviour from KEGG
+    query = query.replace(' ', '%20')  # previous behaviour was ignoring text after a space, rather convert to '%20' and pass on to KEGG REST service
     uri = 'http://rest.kegg.jp/find/'
     fulluri = uri + db + "/" + query
     try:
@@ -25,7 +35,7 @@
     except Exception as e:
         raise urllib2.HTTPError(e.url, e.code, e.msg, e.hdrs, e.fp)
     if str(response.strip()) == "":
-        return None
+        return "" # change return from None to "" for easily writing to file
     return response
 
 
Binary file get_data/kegg_glycan/findKEGG.pyc has changed
--- a/get_data/kegg_glycan/findKEGG.xml	Wed Mar 23 14:35:56 2016 -0400
+++ b/get_data/kegg_glycan/findKEGG.xml	Fri May 06 08:05:48 2016 -0400
@@ -1,4 +1,4 @@
-<tool id="glytools_kegg_find" name="GAP Find KEGG glycans " version="0.3.1">
+<tool id="glytools_kegg_find" name="GAP Find KEGG glycans " version="0.4.0">
     <description> using the KEGG  database</description>
     <requirements>
         <requirement type="package" version="1.0">python_for_glycan_tools</requirement>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_data/kegg_glycan/found_entries.txt	Fri May 06 08:05:48 2016 -0400
@@ -0,0 +1,19 @@
+ec:1.1.1.133	dTDP-4-dehydrorhamnose reductase; dTDP-4-keto-L-rhamnose reductase; dTDP-4-ketorhamnose reductase; TDP-4-keto-rhamnose reductase; thymidine diphospho-4-ketorhamnose reductase; dTDP-6-deoxy-L-mannose:NADP+ 4-oxidoreductase; dTDP-6-deoxy-beta-L-mannose:NADP+ 4-oxidoreductase
+ec:1.1.1.340	1-deoxy-11beta-hydroxypentalenate dehydrogenase; 1-deoxy-11beta-hydroxypentalenic acid dehydrogenase; ptlF (gene name); penF (gene name)
+ec:1.14.11.35	1-deoxypentalenic acid 11beta-hydroxylase; ptlH (gene name); sav2991 (gene name); pntH (gene name)
+ec:2.3.1.202	UDP-4-amino-4,6-dideoxy-N-acetyl-beta-L-altrosamine N-acetyltransferase; PseH
+ec:2.4.1.27	DNA beta-glucosyltransferase; T4-HMC-beta-glucosyl transferase; T4-beta-glucosyl transferase; T4 phage beta-glucosyltransferase; UDP glucose-DNA beta-glucosyltransferase; uridine diphosphoglucose-deoxyribonucleate beta-glucosyltransferase
+ec:2.4.1.28	glucosyl-DNA beta-glucosyltransferase; T6-glucosyl-HMC-beta-glucosyl transferase; T6-beta-glucosyl transferase; uridine diphosphoglucose-glucosyldeoxyribonucleate beta-glucosyltransferase
+ec:2.4.1.335	dolichyl N-acetyl-alpha-D-glucosaminyl phosphate 3-beta-D-2,3-diacetamido-2,3-dideoxy-beta-D-glucuronosyltransferase; AglC; UDP-Glc-2,3-diNAcA glycosyltransferase
+ec:2.6.1.87	UDP-4-amino-4-deoxy-L-arabinose aminotransferase; UDP-(beta-L-threo-pentapyranosyl-4''-ulose diphosphate) aminotransferase; UDP-4-amino-4-deoxy-L-arabinose---oxoglutarate aminotransferase; UDP-Ara4O aminotransferase; UDP-L-Ara4N transaminase
+ec:2.6.1.92	UDP-4-amino-4,6-dideoxy-N-acetyl-beta-L-altrosamine transaminase; PseC
+ec:2.7.7.7	DNA-directed DNA polymerase; DNA polymerase I; DNA polymerase II; DNA polymerase III; DNA polymerase alpha; DNA polymerase beta; DNA polymerase gamma; DNA nucleotidyltransferase (DNA-directed); DNA nucleotidyltransferase (DNA-directed); deoxyribonucleate nucleotidyltransferase; deoxynucleate polymerase; deoxyribonucleic acid duplicase; deoxyribonucleic acid polymerase; deoxyribonucleic duplicase; deoxyribonucleic polymerase; deoxyribonucleic polymerase I; DNA duplicase; DNA nucleotidyltransferase; DNA polymerase; DNA replicase; DNA-dependent DNA polymerase; duplicase; Klenow fragment; sequenase; Taq DNA polymerase; Taq Pol I; Tca DNA polymerase
+ec:3.1.6.9	chondro-4-sulfatase; chondroitin-4-sulfatase; 4-deoxy-beta-D-gluc-4-enuronosyl-(1,3)-N-acetyl-D-galactosamine-4-sulfate 4-sulfohydrolase
+ec:3.1.6.10	chondro-6-sulfatase; 4-deoxy-beta-D-gluc-4-enuronosyl-(1,3)-N-acetyl-D-galactosamine-6-sulfate 6-sulfohydrolase
+ec:3.2.1.52	beta-N-acetylhexosaminidase; hexosaminidase; beta-acetylaminodeoxyhexosidase; N-acetyl-beta-D-hexosaminidase; N-acetyl-beta-hexosaminidase; beta-hexosaminidase; beta-acetylhexosaminidinase; beta-D-N-acetylhexosaminidase; beta-N-acetyl-D-hexosaminidase; beta-N-acetylglucosaminidase; hexosaminidase A; N-acetylhexosaminidase; beta-D-hexosaminidase
+ec:3.2.1.92	peptidoglycan beta-N-acetylmuramidase; exo-beta-N-acetylmuramidase; exo-beta-acetylmuramidase; beta-2-acetamido-3-O-(D-1-carboxyethyl)-2-deoxy-D-glucoside acetamidodeoxyglucohydrolase
+ec:3.2.1.96	mannosyl-glycoprotein endo-beta-N-acetylglucosaminidase; N,N'-diacetylchitobiosyl beta-N-acetylglucosaminidase; endo-beta-N-acetylglucosaminidase; mannosyl-glycoprotein endo-beta-N-acetylglucosamidase; di-N-acetylchitobiosyl beta-N-acetylglucosaminidase; endo-beta-acetylglucosaminidase; endo-beta-(1->4)-N-acetylglucosaminidase; mannosyl-glycoprotein 1,4-N-acetamidodeoxy-beta-D-glycohydrolase; endoglycosidase S; endo-N-acetyl-beta-D-glucosaminidase; endo-N-acetyl-beta-glucosaminidase; endo-beta-N-acetylglucosaminidase D; endo-beta-N-acetylglucosaminidase F; endo-beta-N-acetylglucosaminidase H; endo-beta-N-acetylglucosaminidase L; glycopeptide-D-mannosyl-4-N-(N-acetyl-D-glucosaminyl)2-asparagine 1,4-N-acetyl-beta-glucosaminohydrolase; endoglycosidase H
+ec:3.5.1.105	chitin disaccharide deacetylase; chitobiose amidohydolase; COD; chitin oligosaccharide deacetylase; chitin oligosaccharide amidohydolase; 2-(acetylamino)-4-O-[2-(acetylamino)-2-deoxy-beta-D-glucopyranosyl]-2-deoxy-D-glucopyranose acetylhydrolase
+ec:3.6.1.57	UDP-2,4-diacetamido-2,4,6-trideoxy-beta-L-altropyranose hydrolase; PseG; UDP-6-deoxy-AltdiNAc hydrolase; Cj1312; UDP-2,4-bis(acetamido)-2,4,6-trideoxy-beta-L-altropyranose hydrolase
+ec:4.1.2.20	2-dehydro-3-deoxyglucarate aldolase; 2-keto-3-deoxyglucarate aldolase; alpha-keto-beta-deoxy-D-glucarate aldolase; 2-dehydro-3-deoxy-D-glucarate tartronate-semialdehyde-lyase; 2-dehydro-3-deoxy-D-glucarate tartronate-semialdehyde-lyase (pyruvate-forming)
+ec:4.2.1.115	UDP-N-acetylglucosamine 4,6-dehydratase (configuration-inverting); FlaA1; UDP-N-acetylglucosamine 5-inverting 4,6-dehydratase; PseB; UDP-N-acetylglucosamine hydro-lyase (inverting; UDP-2-acetamido-2,6-dideoxy-beta-L-arabino-hex-4-ulose-forming)
Binary file get_data/kegg_glycan/getkcfKEGG.pyc has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_data/kegg_glycan/kcf.output	Fri May 06 08:05:48 2016 -0400
@@ -0,0 +1,22 @@
+ENTRY       G10495                      Glycan
+NODE        3
+            1   *           8     0
+            2   Glc         0     0
+            3   *          -8     0
+EDGE        2
+            1     2:a1    1    
+            2     3       2:4  
+BRACKET     1  -4.0   2.0  -4.0  -2.0
+            1   5.0  -2.0   5.0   2.0
+            1 n
+///
+ENTRY       G10608                      Glycan
+NODE        1
+            1   UDP-Glc  -0.3     0
+EDGE        0
+///
+ENTRY       G10619                      Glycan
+NODE        1
+            1   UDP      -0.4   0.3
+EDGE        0
+///
--- a/get_data/kegg_glycan/linkKEGG.py	Wed Mar 23 14:35:56 2016 -0400
+++ b/get_data/kegg_glycan/linkKEGG.py	Fri May 06 08:05:48 2016 -0400
@@ -1,6 +1,6 @@
 __author__ = 'cbarnett'
 __license__ = "MIT"
-__version = "0.3"
+__version = "0.3.1"
 # http://www.kegg.jp/kegg/rest/keggapi.html
 
 
@@ -13,6 +13,15 @@
     import urllib2
 
     uri = 'http://rest.kegg.jp/link/'
+
+    import re
+    p = re.compile(' *\+ *') # ensure no unneccessary space in an AND query
+    sdbfix = p.subn('+', sourcedb)
+    sourcedb=sdbfix[0]
+
+    if ' ' in sourcedb:
+        sourcedb = sourcedb.replace(' ', '%20')  # previous behaviour was ignoring text after a space, rather convert to '%20' and pass on to KEGG REST service
+
     fulluri = uri + targetdb + "/" + sourcedb
     try:
         response = urllib2.urlopen(fulluri).read()
Binary file get_data/kegg_glycan/linkKEGG.pyc has changed
--- a/get_data/kegg_glycan/linkKEGG.xml	Wed Mar 23 14:35:56 2016 -0400
+++ b/get_data/kegg_glycan/linkKEGG.xml	Fri May 06 08:05:48 2016 -0400
@@ -1,4 +1,4 @@
-<tool id="glytools_kegg_link" name="GAP Cross-reference with KEGG databases " version="0.3.1">
+<tool id="glytools_kegg_link" name="GAP Cross-reference with KEGG databases " version="0.3.2">
     <description> searches KEGG for related database entries</description>
     <requirements>
         <requirement type="package" version="1.0">python_for_glycan_tools</requirement>
@@ -34,7 +34,7 @@
  <tests>
     <test>
       <param name="targetdb" value="glycan" />
-      <param name="source" value="ec:2.4.1.11"" />
+      <param name="source" value="ec:2.4.1.11" />
       <output name="output" file="link_test1.txt" />     
   </test>
   </tests>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_data/kegg_glycan/plus	Fri May 06 08:05:48 2016 -0400
@@ -0,0 +1,21 @@
+ec:1.1.1.125	2-deoxy-D-gluconate 3-dehydrogenase; 2-deoxygluconate dehydrogenase
+ec:1.1.1.126	2-dehydro-3-deoxy-D-gluconate 6-dehydrogenase; 2-keto-3-deoxy-D-gluconate dehydrogenase; 2-keto-3-deoxygluconate dehydrogenase
+ec:1.1.1.127	2-dehydro-3-deoxy-D-gluconate 5-dehydrogenase; 2-keto-3-deoxygluconate 5-dehydrogenase; 2-keto-3-deoxy-D-gluconate dehydrogenase; 2-keto-3-deoxygluconate (nicotinamide adenine dinucleotide (phosphate)) dehydrogenase; 2-keto-3-deoxy-D-gluconate (3-deoxy-D-glycero-2,5-hexodiulosonic acid) dehydrogenase
+ec:1.1.1.133	dTDP-4-dehydrorhamnose reductase; dTDP-4-keto-L-rhamnose reductase; dTDP-4-ketorhamnose reductase; TDP-4-keto-rhamnose reductase; thymidine diphospho-4-ketorhamnose reductase; dTDP-6-deoxy-L-mannose:NADP+ 4-oxidoreductase; dTDP-6-deoxy-beta-L-mannose:NADP+ 4-oxidoreductase
+ec:1.1.1.134	dTDP-6-deoxy-L-talose 4-dehydrogenase (NADP+); thymidine diphospho-6-deoxy-L-talose dehydrogenase; TDP-6-deoxy-L-talose dehydrogenase; dTDP-6-deoxy-L-talose dehydrogenase (4-reductase); dTDP-6-deoxy-L-talose:NADP+ 4-oxidoreductase
+ec:1.1.1.135	GDP-6-deoxy-D-talose 4-dehydrogenase; guanosine diphospho-6-deoxy-D-talose dehydrogenase; GDP-6-deoxy-D-talose:NAD(P)+ 4-oxidoreductase
+ec:1.1.1.136	UDP-N-acetylglucosamine 6-dehydrogenase; uridine diphosphoacetylglucosamine dehydrogenase; UDP-acetylglucosamine dehydrogenase; UDP-2-acetamido-2-deoxy-D-glucose:NAD oxidoreductase; UDP-GlcNAc dehydrogenase; WbpA; WbpO
+ec:1.1.1.187	GDP-4-dehydro-D-rhamnose reductase; GDP-4-keto-6-deoxy-D-mannose reductase; GDP-4-keto-D-rhamnose reductase; guanosine diphosphate-4-keto-D-rhamnose reductase; GDP-6-deoxy-D-mannose:NAD(P)+ 4-oxidoreductase; GDP-6-deoxy-alpha-D-mannose:NAD(P)+ 4-oxidoreductase
+ec:1.1.1.235	8-oxocoformycin reductase; 8-ketodeoxycoformycin reductase
+ec:1.1.1.266	dTDP-4-dehydro-6-deoxyglucose reductase; dTDP-4-keto-6-deoxyglucose reductase; dTDP-D-fucose:NADP+ oxidoreductase; Fcf1; dTDP-6-deoxy-D-xylo-hex-4-ulopyranose reductase
+ec:1.1.1.267	1-deoxy-D-xylulose-5-phosphate reductoisomerase; DXP-reductoisomerase; 1-deoxy-D-xylulose-5-phosphate isomeroreductase; 2-C-methyl-D-erythritol 4-phosphate (MEP) synthase
+ec:1.1.1.271	GDP-L-fucose synthase; GDP-4-keto-6-deoxy-D-mannose-3,5-epimerase-4-reductase; GDP-L-fucose:NADP+ 4-oxidoreductase (3,5-epimerizing)
+ec:1.1.1.281	GDP-4-dehydro-6-deoxy-D-mannose reductase; GDP-4-keto-6-deoxy-D-mannose reductase [ambiguous]; GDP-6-deoxy-D-lyxo-4-hexulose reductase; Rmd; GDP-6-deoxy-D-mannose:NAD(P)+ 4-oxidoreductase (D-rhamnose-forming); GDP-6-deoxy-alpha-D-mannose:NAD(P)+ 4-oxidoreductase (D-rhamnose-forming)
+ec:1.1.1.329	2-deoxy-scyllo-inosamine dehydrogenase; neoA (gene name); kanK (gene name, ambiguous); kanE (gene name, ambiguous)
+ec:1.1.1.335	UDP-N-acetyl-2-amino-2-deoxyglucuronate dehydrogenase; WlbA; WbpB
+ec:1.1.1.339	dTDP-6-deoxy-L-talose 4-dehydrogenase (NAD+); tll (gene name)
+ec:1.1.1.340	1-deoxy-11beta-hydroxypentalenate dehydrogenase; 1-deoxy-11beta-hydroxypentalenic acid dehydrogenase; ptlF (gene name); penF (gene name)
+ec:1.1.1.344	dTDP-6-deoxy-L-talose 4-dehydrogenase [NAD(P)+]; tal (gene name)
+ec:1.1.1.364	dTDP-4-dehydro-6-deoxy-alpha-D-gulose 4-ketoreductase; dTDP-4-dehydro-6-deoxygulose reductase; tylD (gene name); gerKI (gene name); chmD (gene name); mydI (gene name)
+ec:1.1.1.384	dTDP-3,4-didehydro-2,6-dideoxy-alpha-D-glucose 3-reductase; KijD10; dTDP-4-keto-2,6-dideoxy-D-glucose 3-oxidoreductase; dTDP-4-dehydro-2,6-dideoxy-alpha-D-glucose 3-oxidoreductase
+ec:1.1.1.389	2-dehydro-3-deoxy-L-galactonate 5-dehydrogenase
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_data/kegg_glycan/test-data/shiga-toxin-example-AND	Fri May 06 08:05:48 2016 -0400
@@ -0,0 +1,103 @@
+ece:Z1464	stx2A; shiga-like toxin II A subunit encoded by bacteriophage BP-933W; K11006 shiga toxin subunit A
+ece:Z1465	stx2B; shiga-like toxin II B subunit encoded by bacteriophage BP-933W; K11007 shiga toxin subunit B
+ece:Z3343	stx1B; shiga-like toxin 1 subunit B encoded within prophage CP-933V; K11007 shiga toxin subunit B
+ece:Z3344	stx1A; shiga-like toxin 1 subunit A encoded within prophage CP-933V; K11006 shiga toxin subunit A
+ecs:ECs1205	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+ecs:ECs1206	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+ecs:ECs2973	Shiga toxin I subunit B; K11007 shiga toxin subunit B
+ecs:ECs2974	Shiga toxin I subunit A; K11006 shiga toxin subunit A
+ecf:ECH74115_2905	shigatoxin 2, subunit B; K11007 shiga toxin subunit B
+ecf:ECH74115_2906	shiga toxin subunit A; K11006 shiga toxin subunit A
+ecf:ECH74115_3532	shiga toxin 2 B subunit; K11007 shiga toxin subunit B
+ecf:ECH74115_3533	shiga toxin subunit A; K11006 shiga toxin subunit A
+etw:ECSP_2722	stx2cB; Shiga-like toxin II subunit B precursor; K11007 shiga toxin subunit B
+etw:ECSP_2723	stx2A1; Shiga-like toxin II subunit A precursor; K11006 shiga toxin subunit A
+etw:ECSP_3252	stx2B; shiga toxin II subunit B; K11007 shiga toxin subunit B
+etw:ECSP_3253	stx2A2; shiga toxin II subunit A; K11006 shiga toxin subunit A
+elx:CDCO157_1154	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+elx:CDCO157_1155	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+elx:CDCO157_2738	Shiga toxin I subunit B precursor; K11007 shiga toxin subunit B
+elx:CDCO157_2739	Shiga toxin I subunit A precursor; K11006 shiga toxin subunit A
+eoj:ECO26_1599	Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+eoj:ECO26_1600	Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+eoi:ECO111_2429	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+eoi:ECO111_2430	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+eoi:ECO111_3361	Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+eoi:ECO111_3362	Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+eoh:ECO103_2844	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+eoh:ECO103_2845	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+eoh:ECO103_5197	Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+eoh:ECO103_5198	Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+eso:O3O_09170	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+eso:O3O_09165	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+esm:O3M_16105	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+esm:O3M_16110	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+esl:O3K_16130	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+esl:O3K_16135	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+ecoo:ECRM13514_3144	stx2B; Shiga-like toxin II subunit B precursor; K11007 shiga toxin subunit B
+ecoo:ECRM13514_3145	stx2A; Shiga-like toxin II subunit A precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+ecoh:ECRM13516_2315	stx2B; Shiga-like toxin II subunit B precursor; K11007 shiga toxin subunit B
+ecoh:ECRM13516_2316	stx2A; Shiga-like toxin II subunit A precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+stm:STM0284	shiga-like toxin A subunit
+seo:STM14_0332	putative Shiga-like toxin A subunit
+sev:STMMW_02891	putative shiga-like toxin A subunit
+sem:STMDT12_C02790	putative Shiga-like toxin A subunit
+sej:STMUK_0287	putative Shiga-like toxin A subunit
+setu:STU288_13325	putative shiga-like toxin A subunit
+setc:CFSAN001921_15985	Shiga toxin A subunit
+send:DT104_02831	sciR; shiga-like toxin a subunit, type VI secretion system SciR protein flags: precursor
+seni:CY43_01420	Shiga toxin A subunit
+seen:SE451236_07435	Shiga toxin A subunit
+spt:SPA2480	putative shiga-like toxin A subunit
+sek:SSPA2315	shiga-like toxin A subunit
+sei:SPC_0292	putative shiga-like toxin A subunit
+sec:SCH_0277	putative shiga-like toxin A subunit
+shb:SU5_0926	SciR Shiga-like toxin A subunit
+senh:CFSAN002069_07720	Shiga toxin A subunit
+seeh:SEEH1578_10515	putative shiga-like toxin A subunit
+seec:CFSAN002050_07960	Shiga toxin A subunit
+sene:IA1_01505	Shiga toxin A subunit
+senc:SEET0819_08350	Shiga toxin A subunit
+sdy:SDY_1389	stxA; Shiga toxin subunit A; K11006 shiga toxin subunit A
+sdy:SDY_1390	stxB; Shiga toxin subunit B; K11007 shiga toxin subunit B
+sdz:Asd1617_01826	Shiga toxin subunit A (EC:3.2.2.22); K11006 shiga toxin subunit A
+ebi:EbC_13780	Putative shiga-like toxin A subunit
+psos:POS17_2009	P9; putative Shiga-like toxin alpha subunit
+ssab:SSABA_v1c03870	hypothetical protein; K11006 shiga toxin subunit A
+ssab:SSABA_v1c09020	hypothetical protein; K11006 shiga toxin subunit A
+calt:Cal6303_2132	ribosome-inactivating protein; K11006 shiga toxin subunit A
+vg:22277199	PI30_gp34; Shigella phage POCJ13; shiga toxin A-chain precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+vg:22277200	PI30_gp35; Shigella phage POCJ13; shiga toxin I subunit B precursor; K11007 shiga toxin subunit B
+vg:1262301	APSE-1_07; Endosymbiont phage APSE-1; P7; K11007 shiga toxin subunit B
+vg:1481747	stx1A, Stx1_p142; Escherichia Stx1 converting phage; Shiga toxin1 subunit A; K11006 shiga toxin subunit A
+vg:1481748	stx1B, Stx1_p143; Escherichia Stx1 converting phage; Shiga toxin1 subunit B; K11007 shiga toxin subunit B
+vg:1481767	stx2A, Stx2II_p143; Stx2 converting phage II; Shiga toxin2 subunit A; K11006 shiga toxin subunit A
+vg:1481768	stx2B, Stx2II_p144; Stx2 converting phage II; Shiga toxin2 subunit B; K11007 shiga toxin subunit B
+vg:26228052	AS349_gp84; Escherichia phage PA2; shiga-like toxin II subunit A precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+vg:26228100	AS349_gp83; Escherichia phage PA2; shiga-like toxin II subunit B precursor; K11007 shiga toxin subunit B
+vg:26516496	stx2A, AU085_gp42; Enterobacteria phage VT2phi_272; Shiga toxin 2 A subunit; K11006 shiga toxin subunit A
+vg:26516448	stx2B, AU085_gp41; Enterobacteria phage VT2phi_272; Shiga toxin 2 B subunit; K11007 shiga toxin subunit B
+vg:26516283	stxB, phi191_00011, AU083_gp11; Escherichia phage phi191; shiga toxin subunit B precursor; K11007 shiga toxin subunit B
+vg:26516284	stxA, phi191_00012, AU083_gp12; Escherichia phage phi191; shiga toxin subunit A precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+vg:26519429	AU154_gp39; Shigella phage Ss-VASD; Stx1 A subunit; K11006 shiga toxin subunit A
+vg:26519430	AU154_gp40; Shigella phage Ss-VASD; Stx1 B subunit; K11007 shiga toxin subunit B
+vg:1261950	stxA2, L0103, sltIIA, stx2A, 933Wp40; Enterobacteria phage 933W; Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:1262010	stxB2, L0104, sltIIB, stx2B, 933Wp41; Enterobacteria phage 933W; Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+vg:2641645	stxA1, phi4795p38, PBV4795_ORF40; Enterobacteria phage BP-4795; Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+vg:2641657	stxB1, phi4795p39, PBV4795_ORF41; Enterobacteria phage BP-4795; Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+vg:929695	stxA2e, P27p25; Enterobacteria phage phiP27; shiga toxin 2e A-subunit; K11006 shiga toxin subunit A
+vg:929727	stxB2e, P27p26; Enterobacteria phage phiP27; shiga toxin 2e B-subunit; K11007 shiga toxin subunit B
+vg:4397483	stx2A, Stx2-86_gp01; Stx2-converting phage 86; shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:4397484	stx2B, Stx2-86_gp02; Stx2-converting phage 86; shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+vg:6159405	stx2A, pMIN27_41; Enterobacteria phage Min27; ORF44; K11006 shiga toxin subunit A
+vg:6159351	stx2B, pMIN27_42; Enterobacteria phage Min27; ORF45; K11007 shiga toxin subunit B
+vg:6973138	Stx2-1717_gp41; Stx2-converting phage 1717; verocytotoxin 2 variant 2c subunit A; K11006 shiga toxin subunit A
+vg:6972909	stx2cB, Stx2-1717_gp42; Stx2-converting phage 1717; verocytotoxin 2 variant 2c subunit B; K11007 shiga toxin subunit B
+vg:6973079	YYZ_gp39; Enterobacteria phage YYZ-2008; Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+vg:6973080	YYZ_gp40; Enterobacteria phage YYZ-2008; Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+vg:13828571	stx2A, D300_gp43; Escherichia phage P13374; shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:13828535	stx2B, D300_gp42; Escherichia phage P13374; shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+vg:14005228	F366_gp36; Escherichia phage TL-2011c; Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:14005229	F366_gp37; Escherichia phage TL-2011c; Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+vg:1262249	stx2A, VT2-Sap42; Enterobacteria phage VT2-Sakai; Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:1262250	stx2B, VT2-Sap43; Enterobacteria phage VT2-Sakai; Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_data/kegg_glycan/test-data/shiga-toxin-example-AND-broken	Fri May 06 08:05:48 2016 -0400
@@ -0,0 +1,88 @@
+ece:Z1464	stx2A; shiga-like toxin II A subunit encoded by bacteriophage BP-933W; K11006 shiga toxin subunit A
+ece:Z1465	stx2B; shiga-like toxin II B subunit encoded by bacteriophage BP-933W; K11007 shiga toxin subunit B
+ece:Z3343	stx1B; shiga-like toxin 1 subunit B encoded within prophage CP-933V; K11007 shiga toxin subunit B
+ece:Z3344	stx1A; shiga-like toxin 1 subunit A encoded within prophage CP-933V; K11006 shiga toxin subunit A
+ecs:ECs1205	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+ecs:ECs1206	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+ecs:ECs2973	Shiga toxin I subunit B; K11007 shiga toxin subunit B
+ecs:ECs2974	Shiga toxin I subunit A; K11006 shiga toxin subunit A
+ecf:ECH74115_2905	shigatoxin 2, subunit B; K11007 shiga toxin subunit B
+ecf:ECH74115_2906	shiga toxin subunit A; K11006 shiga toxin subunit A
+ecf:ECH74115_3532	shiga toxin 2 B subunit; K11007 shiga toxin subunit B
+ecf:ECH74115_3533	shiga toxin subunit A; K11006 shiga toxin subunit A
+etw:ECSP_2722	stx2cB; Shiga-like toxin II subunit B precursor; K11007 shiga toxin subunit B
+etw:ECSP_2723	stx2A1; Shiga-like toxin II subunit A precursor; K11006 shiga toxin subunit A
+etw:ECSP_3252	stx2B; shiga toxin II subunit B; K11007 shiga toxin subunit B
+etw:ECSP_3253	stx2A2; shiga toxin II subunit A; K11006 shiga toxin subunit A
+elx:CDCO157_1154	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+elx:CDCO157_1155	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+elx:CDCO157_2738	Shiga toxin I subunit B precursor; K11007 shiga toxin subunit B
+elx:CDCO157_2739	Shiga toxin I subunit A precursor; K11006 shiga toxin subunit A
+eoj:ECO26_1599	Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+eoj:ECO26_1600	Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+eoi:ECO111_2429	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+eoi:ECO111_2430	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+eoi:ECO111_3361	Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+eoi:ECO111_3362	Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+eoh:ECO103_2844	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+eoh:ECO103_2845	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+eoh:ECO103_5197	Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+eoh:ECO103_5198	Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+eso:O3O_09170	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+eso:O3O_09165	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+esm:O3M_16105	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+esm:O3M_16110	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+esl:O3K_16130	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+esl:O3K_16135	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+ecoo:ECRM13514_3144	stx2B; Shiga-like toxin II subunit B precursor; K11007 shiga toxin subunit B
+ecoo:ECRM13514_3145	stx2A; Shiga-like toxin II subunit A precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+ecoh:ECRM13516_2315	stx2B; Shiga-like toxin II subunit B precursor; K11007 shiga toxin subunit B
+ecoh:ECRM13516_2316	stx2A; Shiga-like toxin II subunit A precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+setc:CFSAN001921_15985	Shiga toxin A subunit
+seni:CY43_01420	Shiga toxin A subunit
+seen:SE451236_07435	Shiga toxin A subunit
+senh:CFSAN002069_07720	Shiga toxin A subunit
+seec:CFSAN002050_07960	Shiga toxin A subunit
+sene:IA1_01505	Shiga toxin A subunit
+senc:SEET0819_08350	Shiga toxin A subunit
+sdy:SDY_1389	stxA; Shiga toxin subunit A; K11006 shiga toxin subunit A
+sdy:SDY_1390	stxB; Shiga toxin subunit B; K11007 shiga toxin subunit B
+sdz:Asd1617_01826	Shiga toxin subunit A (EC:3.2.2.22); K11006 shiga toxin subunit A
+ssab:SSABA_v1c03870	hypothetical protein; K11006 shiga toxin subunit A
+ssab:SSABA_v1c09020	hypothetical protein; K11006 shiga toxin subunit A
+calt:Cal6303_2132	ribosome-inactivating protein; K11006 shiga toxin subunit A
+vg:22277199	PI30_gp34; Shigella phage POCJ13; shiga toxin A-chain precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+vg:22277200	PI30_gp35; Shigella phage POCJ13; shiga toxin I subunit B precursor; K11007 shiga toxin subunit B
+vg:1262301	APSE-1_07; Endosymbiont phage APSE-1; P7; K11007 shiga toxin subunit B
+vg:1481747	stx1A, Stx1_p142; Escherichia Stx1 converting phage; Shiga toxin1 subunit A; K11006 shiga toxin subunit A
+vg:1481748	stx1B, Stx1_p143; Escherichia Stx1 converting phage; Shiga toxin1 subunit B; K11007 shiga toxin subunit B
+vg:1481767	stx2A, Stx2II_p143; Stx2 converting phage II; Shiga toxin2 subunit A; K11006 shiga toxin subunit A
+vg:1481768	stx2B, Stx2II_p144; Stx2 converting phage II; Shiga toxin2 subunit B; K11007 shiga toxin subunit B
+vg:26228052	AS349_gp84; Escherichia phage PA2; shiga-like toxin II subunit A precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+vg:26228100	AS349_gp83; Escherichia phage PA2; shiga-like toxin II subunit B precursor; K11007 shiga toxin subunit B
+vg:26516496	stx2A, AU085_gp42; Enterobacteria phage VT2phi_272; Shiga toxin 2 A subunit; K11006 shiga toxin subunit A
+vg:26516448	stx2B, AU085_gp41; Enterobacteria phage VT2phi_272; Shiga toxin 2 B subunit; K11007 shiga toxin subunit B
+vg:26516283	stxB, phi191_00011, AU083_gp11; Escherichia phage phi191; shiga toxin subunit B precursor; K11007 shiga toxin subunit B
+vg:26516284	stxA, phi191_00012, AU083_gp12; Escherichia phage phi191; shiga toxin subunit A precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+vg:26519429	AU154_gp39; Shigella phage Ss-VASD; Stx1 A subunit; K11006 shiga toxin subunit A
+vg:26519430	AU154_gp40; Shigella phage Ss-VASD; Stx1 B subunit; K11007 shiga toxin subunit B
+vg:1261950	stxA2, L0103, sltIIA, stx2A, 933Wp40; Enterobacteria phage 933W; Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:1262010	stxB2, L0104, sltIIB, stx2B, 933Wp41; Enterobacteria phage 933W; Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+vg:2641645	stxA1, phi4795p38, PBV4795_ORF40; Enterobacteria phage BP-4795; Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+vg:2641657	stxB1, phi4795p39, PBV4795_ORF41; Enterobacteria phage BP-4795; Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+vg:929695	stxA2e, P27p25; Enterobacteria phage phiP27; shiga toxin 2e A-subunit; K11006 shiga toxin subunit A
+vg:929727	stxB2e, P27p26; Enterobacteria phage phiP27; shiga toxin 2e B-subunit; K11007 shiga toxin subunit B
+vg:4397483	stx2A, Stx2-86_gp01; Stx2-converting phage 86; shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:4397484	stx2B, Stx2-86_gp02; Stx2-converting phage 86; shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+vg:6159405	stx2A, pMIN27_41; Enterobacteria phage Min27; ORF44; K11006 shiga toxin subunit A
+vg:6159351	stx2B, pMIN27_42; Enterobacteria phage Min27; ORF45; K11007 shiga toxin subunit B
+vg:6973138	Stx2-1717_gp41; Stx2-converting phage 1717; verocytotoxin 2 variant 2c subunit A; K11006 shiga toxin subunit A
+vg:6972909	stx2cB, Stx2-1717_gp42; Stx2-converting phage 1717; verocytotoxin 2 variant 2c subunit B; K11007 shiga toxin subunit B
+vg:6973079	YYZ_gp39; Enterobacteria phage YYZ-2008; Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+vg:6973080	YYZ_gp40; Enterobacteria phage YYZ-2008; Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+vg:13828571	stx2A, D300_gp43; Escherichia phage P13374; shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:13828535	stx2B, D300_gp42; Escherichia phage P13374; shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+vg:14005228	F366_gp36; Escherichia phage TL-2011c; Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:14005229	F366_gp37; Escherichia phage TL-2011c; Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+vg:1262249	stx2A, VT2-Sap42; Enterobacteria phage VT2-Sakai; Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:1262250	stx2B, VT2-Sap43; Enterobacteria phage VT2-Sakai; Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_data/kegg_glycan/test-data/shiga-toxin-example-OR	Fri May 06 08:05:48 2016 -0400
@@ -0,0 +1,88 @@
+ece:Z1464	stx2A; shiga-like toxin II A subunit encoded by bacteriophage BP-933W; K11006 shiga toxin subunit A
+ece:Z1465	stx2B; shiga-like toxin II B subunit encoded by bacteriophage BP-933W; K11007 shiga toxin subunit B
+ece:Z3343	stx1B; shiga-like toxin 1 subunit B encoded within prophage CP-933V; K11007 shiga toxin subunit B
+ece:Z3344	stx1A; shiga-like toxin 1 subunit A encoded within prophage CP-933V; K11006 shiga toxin subunit A
+ecs:ECs1205	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+ecs:ECs1206	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+ecs:ECs2973	Shiga toxin I subunit B; K11007 shiga toxin subunit B
+ecs:ECs2974	Shiga toxin I subunit A; K11006 shiga toxin subunit A
+ecf:ECH74115_2905	shigatoxin 2, subunit B; K11007 shiga toxin subunit B
+ecf:ECH74115_2906	shiga toxin subunit A; K11006 shiga toxin subunit A
+ecf:ECH74115_3532	shiga toxin 2 B subunit; K11007 shiga toxin subunit B
+ecf:ECH74115_3533	shiga toxin subunit A; K11006 shiga toxin subunit A
+etw:ECSP_2722	stx2cB; Shiga-like toxin II subunit B precursor; K11007 shiga toxin subunit B
+etw:ECSP_2723	stx2A1; Shiga-like toxin II subunit A precursor; K11006 shiga toxin subunit A
+etw:ECSP_3252	stx2B; shiga toxin II subunit B; K11007 shiga toxin subunit B
+etw:ECSP_3253	stx2A2; shiga toxin II subunit A; K11006 shiga toxin subunit A
+elx:CDCO157_1154	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+elx:CDCO157_1155	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+elx:CDCO157_2738	Shiga toxin I subunit B precursor; K11007 shiga toxin subunit B
+elx:CDCO157_2739	Shiga toxin I subunit A precursor; K11006 shiga toxin subunit A
+eoj:ECO26_1599	Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+eoj:ECO26_1600	Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+eoi:ECO111_2429	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+eoi:ECO111_2430	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+eoi:ECO111_3361	Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+eoi:ECO111_3362	Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+eoh:ECO103_2844	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+eoh:ECO103_2845	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+eoh:ECO103_5197	Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+eoh:ECO103_5198	Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+eso:O3O_09170	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+eso:O3O_09165	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+esm:O3M_16105	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+esm:O3M_16110	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+esl:O3K_16130	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+esl:O3K_16135	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+ecoo:ECRM13514_3144	stx2B; Shiga-like toxin II subunit B precursor; K11007 shiga toxin subunit B
+ecoo:ECRM13514_3145	stx2A; Shiga-like toxin II subunit A precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+ecoh:ECRM13516_2315	stx2B; Shiga-like toxin II subunit B precursor; K11007 shiga toxin subunit B
+ecoh:ECRM13516_2316	stx2A; Shiga-like toxin II subunit A precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+setc:CFSAN001921_15985	Shiga toxin A subunit
+seni:CY43_01420	Shiga toxin A subunit
+seen:SE451236_07435	Shiga toxin A subunit
+senh:CFSAN002069_07720	Shiga toxin A subunit
+seec:CFSAN002050_07960	Shiga toxin A subunit
+sene:IA1_01505	Shiga toxin A subunit
+senc:SEET0819_08350	Shiga toxin A subunit
+sdy:SDY_1389	stxA; Shiga toxin subunit A; K11006 shiga toxin subunit A
+sdy:SDY_1390	stxB; Shiga toxin subunit B; K11007 shiga toxin subunit B
+sdz:Asd1617_01826	Shiga toxin subunit A (EC:3.2.2.22); K11006 shiga toxin subunit A
+ssab:SSABA_v1c03870	hypothetical protein; K11006 shiga toxin subunit A
+ssab:SSABA_v1c09020	hypothetical protein; K11006 shiga toxin subunit A
+calt:Cal6303_2132	ribosome-inactivating protein; K11006 shiga toxin subunit A
+vg:22277199	PI30_gp34; Shigella phage POCJ13; shiga toxin A-chain precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+vg:22277200	PI30_gp35; Shigella phage POCJ13; shiga toxin I subunit B precursor; K11007 shiga toxin subunit B
+vg:1262301	APSE-1_07; Endosymbiont phage APSE-1; P7; K11007 shiga toxin subunit B
+vg:1481747	stx1A, Stx1_p142; Escherichia Stx1 converting phage; Shiga toxin1 subunit A; K11006 shiga toxin subunit A
+vg:1481748	stx1B, Stx1_p143; Escherichia Stx1 converting phage; Shiga toxin1 subunit B; K11007 shiga toxin subunit B
+vg:1481767	stx2A, Stx2II_p143; Stx2 converting phage II; Shiga toxin2 subunit A; K11006 shiga toxin subunit A
+vg:1481768	stx2B, Stx2II_p144; Stx2 converting phage II; Shiga toxin2 subunit B; K11007 shiga toxin subunit B
+vg:26228052	AS349_gp84; Escherichia phage PA2; shiga-like toxin II subunit A precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+vg:26228100	AS349_gp83; Escherichia phage PA2; shiga-like toxin II subunit B precursor; K11007 shiga toxin subunit B
+vg:26516496	stx2A, AU085_gp42; Enterobacteria phage VT2phi_272; Shiga toxin 2 A subunit; K11006 shiga toxin subunit A
+vg:26516448	stx2B, AU085_gp41; Enterobacteria phage VT2phi_272; Shiga toxin 2 B subunit; K11007 shiga toxin subunit B
+vg:26516283	stxB, phi191_00011, AU083_gp11; Escherichia phage phi191; shiga toxin subunit B precursor; K11007 shiga toxin subunit B
+vg:26516284	stxA, phi191_00012, AU083_gp12; Escherichia phage phi191; shiga toxin subunit A precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+vg:26519429	AU154_gp39; Shigella phage Ss-VASD; Stx1 A subunit; K11006 shiga toxin subunit A
+vg:26519430	AU154_gp40; Shigella phage Ss-VASD; Stx1 B subunit; K11007 shiga toxin subunit B
+vg:1261950	stxA2, L0103, sltIIA, stx2A, 933Wp40; Enterobacteria phage 933W; Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:1262010	stxB2, L0104, sltIIB, stx2B, 933Wp41; Enterobacteria phage 933W; Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+vg:2641645	stxA1, phi4795p38, PBV4795_ORF40; Enterobacteria phage BP-4795; Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+vg:2641657	stxB1, phi4795p39, PBV4795_ORF41; Enterobacteria phage BP-4795; Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+vg:929695	stxA2e, P27p25; Enterobacteria phage phiP27; shiga toxin 2e A-subunit; K11006 shiga toxin subunit A
+vg:929727	stxB2e, P27p26; Enterobacteria phage phiP27; shiga toxin 2e B-subunit; K11007 shiga toxin subunit B
+vg:4397483	stx2A, Stx2-86_gp01; Stx2-converting phage 86; shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:4397484	stx2B, Stx2-86_gp02; Stx2-converting phage 86; shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+vg:6159405	stx2A, pMIN27_41; Enterobacteria phage Min27; ORF44; K11006 shiga toxin subunit A
+vg:6159351	stx2B, pMIN27_42; Enterobacteria phage Min27; ORF45; K11007 shiga toxin subunit B
+vg:6973138	Stx2-1717_gp41; Stx2-converting phage 1717; verocytotoxin 2 variant 2c subunit A; K11006 shiga toxin subunit A
+vg:6972909	stx2cB, Stx2-1717_gp42; Stx2-converting phage 1717; verocytotoxin 2 variant 2c subunit B; K11007 shiga toxin subunit B
+vg:6973079	YYZ_gp39; Enterobacteria phage YYZ-2008; Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+vg:6973080	YYZ_gp40; Enterobacteria phage YYZ-2008; Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+vg:13828571	stx2A, D300_gp43; Escherichia phage P13374; shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:13828535	stx2B, D300_gp42; Escherichia phage P13374; shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+vg:14005228	F366_gp36; Escherichia phage TL-2011c; Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:14005229	F366_gp37; Escherichia phage TL-2011c; Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+vg:1262249	stx2A, VT2-Sap42; Enterobacteria phage VT2-Sakai; Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:1262250	stx2B, VT2-Sap43; Enterobacteria phage VT2-Sakai; Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/get_data/kegg_glycan/test-data/shiga-toxin-example-OR-broken	Fri May 06 08:05:48 2016 -0400
@@ -0,0 +1,103 @@
+ece:Z1464	stx2A; shiga-like toxin II A subunit encoded by bacteriophage BP-933W; K11006 shiga toxin subunit A
+ece:Z1465	stx2B; shiga-like toxin II B subunit encoded by bacteriophage BP-933W; K11007 shiga toxin subunit B
+ece:Z3343	stx1B; shiga-like toxin 1 subunit B encoded within prophage CP-933V; K11007 shiga toxin subunit B
+ece:Z3344	stx1A; shiga-like toxin 1 subunit A encoded within prophage CP-933V; K11006 shiga toxin subunit A
+ecs:ECs1205	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+ecs:ECs1206	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+ecs:ECs2973	Shiga toxin I subunit B; K11007 shiga toxin subunit B
+ecs:ECs2974	Shiga toxin I subunit A; K11006 shiga toxin subunit A
+ecf:ECH74115_2905	shigatoxin 2, subunit B; K11007 shiga toxin subunit B
+ecf:ECH74115_2906	shiga toxin subunit A; K11006 shiga toxin subunit A
+ecf:ECH74115_3532	shiga toxin 2 B subunit; K11007 shiga toxin subunit B
+ecf:ECH74115_3533	shiga toxin subunit A; K11006 shiga toxin subunit A
+etw:ECSP_2722	stx2cB; Shiga-like toxin II subunit B precursor; K11007 shiga toxin subunit B
+etw:ECSP_2723	stx2A1; Shiga-like toxin II subunit A precursor; K11006 shiga toxin subunit A
+etw:ECSP_3252	stx2B; shiga toxin II subunit B; K11007 shiga toxin subunit B
+etw:ECSP_3253	stx2A2; shiga toxin II subunit A; K11006 shiga toxin subunit A
+elx:CDCO157_1154	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+elx:CDCO157_1155	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+elx:CDCO157_2738	Shiga toxin I subunit B precursor; K11007 shiga toxin subunit B
+elx:CDCO157_2739	Shiga toxin I subunit A precursor; K11006 shiga toxin subunit A
+eoj:ECO26_1599	Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+eoj:ECO26_1600	Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+eoi:ECO111_2429	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+eoi:ECO111_2430	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+eoi:ECO111_3361	Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+eoi:ECO111_3362	Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+eoh:ECO103_2844	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+eoh:ECO103_2845	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+eoh:ECO103_5197	Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+eoh:ECO103_5198	Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+eso:O3O_09170	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+eso:O3O_09165	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+esm:O3M_16105	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+esm:O3M_16110	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+esl:O3K_16130	Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+esl:O3K_16135	Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+ecoo:ECRM13514_3144	stx2B; Shiga-like toxin II subunit B precursor; K11007 shiga toxin subunit B
+ecoo:ECRM13514_3145	stx2A; Shiga-like toxin II subunit A precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+ecoh:ECRM13516_2315	stx2B; Shiga-like toxin II subunit B precursor; K11007 shiga toxin subunit B
+ecoh:ECRM13516_2316	stx2A; Shiga-like toxin II subunit A precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+stm:STM0284	shiga-like toxin A subunit
+seo:STM14_0332	putative Shiga-like toxin A subunit
+sev:STMMW_02891	putative shiga-like toxin A subunit
+sem:STMDT12_C02790	putative Shiga-like toxin A subunit
+sej:STMUK_0287	putative Shiga-like toxin A subunit
+setu:STU288_13325	putative shiga-like toxin A subunit
+setc:CFSAN001921_15985	Shiga toxin A subunit
+send:DT104_02831	sciR; shiga-like toxin a subunit, type VI secretion system SciR protein flags: precursor
+seni:CY43_01420	Shiga toxin A subunit
+seen:SE451236_07435	Shiga toxin A subunit
+spt:SPA2480	putative shiga-like toxin A subunit
+sek:SSPA2315	shiga-like toxin A subunit
+sei:SPC_0292	putative shiga-like toxin A subunit
+sec:SCH_0277	putative shiga-like toxin A subunit
+shb:SU5_0926	SciR Shiga-like toxin A subunit
+senh:CFSAN002069_07720	Shiga toxin A subunit
+seeh:SEEH1578_10515	putative shiga-like toxin A subunit
+seec:CFSAN002050_07960	Shiga toxin A subunit
+sene:IA1_01505	Shiga toxin A subunit
+senc:SEET0819_08350	Shiga toxin A subunit
+sdy:SDY_1389	stxA; Shiga toxin subunit A; K11006 shiga toxin subunit A
+sdy:SDY_1390	stxB; Shiga toxin subunit B; K11007 shiga toxin subunit B
+sdz:Asd1617_01826	Shiga toxin subunit A (EC:3.2.2.22); K11006 shiga toxin subunit A
+ebi:EbC_13780	Putative shiga-like toxin A subunit
+psos:POS17_2009	P9; putative Shiga-like toxin alpha subunit
+ssab:SSABA_v1c03870	hypothetical protein; K11006 shiga toxin subunit A
+ssab:SSABA_v1c09020	hypothetical protein; K11006 shiga toxin subunit A
+calt:Cal6303_2132	ribosome-inactivating protein; K11006 shiga toxin subunit A
+vg:22277199	PI30_gp34; Shigella phage POCJ13; shiga toxin A-chain precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+vg:22277200	PI30_gp35; Shigella phage POCJ13; shiga toxin I subunit B precursor; K11007 shiga toxin subunit B
+vg:1262301	APSE-1_07; Endosymbiont phage APSE-1; P7; K11007 shiga toxin subunit B
+vg:1481747	stx1A, Stx1_p142; Escherichia Stx1 converting phage; Shiga toxin1 subunit A; K11006 shiga toxin subunit A
+vg:1481748	stx1B, Stx1_p143; Escherichia Stx1 converting phage; Shiga toxin1 subunit B; K11007 shiga toxin subunit B
+vg:1481767	stx2A, Stx2II_p143; Stx2 converting phage II; Shiga toxin2 subunit A; K11006 shiga toxin subunit A
+vg:1481768	stx2B, Stx2II_p144; Stx2 converting phage II; Shiga toxin2 subunit B; K11007 shiga toxin subunit B
+vg:26228052	AS349_gp84; Escherichia phage PA2; shiga-like toxin II subunit A precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+vg:26228100	AS349_gp83; Escherichia phage PA2; shiga-like toxin II subunit B precursor; K11007 shiga toxin subunit B
+vg:26516496	stx2A, AU085_gp42; Enterobacteria phage VT2phi_272; Shiga toxin 2 A subunit; K11006 shiga toxin subunit A
+vg:26516448	stx2B, AU085_gp41; Enterobacteria phage VT2phi_272; Shiga toxin 2 B subunit; K11007 shiga toxin subunit B
+vg:26516283	stxB, phi191_00011, AU083_gp11; Escherichia phage phi191; shiga toxin subunit B precursor; K11007 shiga toxin subunit B
+vg:26516284	stxA, phi191_00012, AU083_gp12; Escherichia phage phi191; shiga toxin subunit A precursor (EC:3.2.2.22); K11006 shiga toxin subunit A
+vg:26519429	AU154_gp39; Shigella phage Ss-VASD; Stx1 A subunit; K11006 shiga toxin subunit A
+vg:26519430	AU154_gp40; Shigella phage Ss-VASD; Stx1 B subunit; K11007 shiga toxin subunit B
+vg:1261950	stxA2, L0103, sltIIA, stx2A, 933Wp40; Enterobacteria phage 933W; Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:1262010	stxB2, L0104, sltIIB, stx2B, 933Wp41; Enterobacteria phage 933W; Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+vg:2641645	stxA1, phi4795p38, PBV4795_ORF40; Enterobacteria phage BP-4795; Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+vg:2641657	stxB1, phi4795p39, PBV4795_ORF41; Enterobacteria phage BP-4795; Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+vg:929695	stxA2e, P27p25; Enterobacteria phage phiP27; shiga toxin 2e A-subunit; K11006 shiga toxin subunit A
+vg:929727	stxB2e, P27p26; Enterobacteria phage phiP27; shiga toxin 2e B-subunit; K11007 shiga toxin subunit B
+vg:4397483	stx2A, Stx2-86_gp01; Stx2-converting phage 86; shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:4397484	stx2B, Stx2-86_gp02; Stx2-converting phage 86; shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+vg:6159405	stx2A, pMIN27_41; Enterobacteria phage Min27; ORF44; K11006 shiga toxin subunit A
+vg:6159351	stx2B, pMIN27_42; Enterobacteria phage Min27; ORF45; K11007 shiga toxin subunit B
+vg:6973138	Stx2-1717_gp41; Stx2-converting phage 1717; verocytotoxin 2 variant 2c subunit A; K11006 shiga toxin subunit A
+vg:6972909	stx2cB, Stx2-1717_gp42; Stx2-converting phage 1717; verocytotoxin 2 variant 2c subunit B; K11007 shiga toxin subunit B
+vg:6973079	YYZ_gp39; Enterobacteria phage YYZ-2008; Shiga toxin 1 subunit A; K11006 shiga toxin subunit A
+vg:6973080	YYZ_gp40; Enterobacteria phage YYZ-2008; Shiga toxin 1 subunit B; K11007 shiga toxin subunit B
+vg:13828571	stx2A, D300_gp43; Escherichia phage P13374; shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:13828535	stx2B, D300_gp42; Escherichia phage P13374; shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+vg:14005228	F366_gp36; Escherichia phage TL-2011c; Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:14005229	F366_gp37; Escherichia phage TL-2011c; Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
+vg:1262249	stx2A, VT2-Sap42; Enterobacteria phage VT2-Sakai; Shiga toxin 2 subunit A; K11006 shiga toxin subunit A
+vg:1262250	stx2B, VT2-Sap43; Enterobacteria phage VT2-Sakai; Shiga toxin 2 subunit B; K11007 shiga toxin subunit B
--- a/get_data/kegg_glycan/test_findKEGG.py	Wed Mar 23 14:35:56 2016 -0400
+++ b/get_data/kegg_glycan/test_findKEGG.py	Fri May 06 08:05:48 2016 -0400
@@ -41,9 +41,10 @@
             m = fk.find_entries_in_KEGG("john", "glucose")
 
     def test_unfindable_entry(self):
-        """should return None"""
+        """should return an empty string"""
         m = fk.find_entries_in_KEGG("glycan", "sally")
-        self.assertIsNone(m)
+        emptystring=""
+        self.assertItemsEqual(m,emptystring,"Expected Empty String for non-existent entry")
 
     def test_find_example(self):
         m = fk.find_entries_in_KEGG("glycan", "glucose")
@@ -52,9 +53,123 @@
 
     def test_query_has_newlines(self):
         """
-        should be fine and return entries
+        Assume a new line query is an AND query. 
+        """
+        m = fk.find_entries_in_KEGG("glycan", "glucose\nUDP")
+        self.assertIsNotNone(m)
+        print m
+        self.assertIn("UDP-D-glucose", m)
+
+    def test_query_has_newlines_and_a_space(self):
+        """
+        glucose\\n UDP. OR's should pass 
         """
         m = fk.find_entries_in_KEGG("glycan", "glucose\n UDP")
         self.assertIsNotNone(m)
         self.assertIn("UDP-D-glucose", m)
 
+    def test_gene_specific_or(self):
+        """
+        test "shiga toxin" returns. 
+         /find/genes/"shiga toxin" for keywords "shiga toxin"
+        """
+        m = fk.find_entries_in_KEGG("genes","shiga toxin")
+        self.assertIsNotNone(m)
+        #. not matching to all entries - that is silly, the db get updated!
+        self.assertIn("shiga", m)
+        self.assertIn("toxin", m)
+        self.assertNotIn("stm:STM0284",m) # should not be found in the OR query
+
+    def test_gene_specific_and(self):
+        """
+        test "shiga+toxin" returns. it should
+         /find/genes/shiga+toxin  	for keywords "shiga" and "toxin"
+        """
+        m = fk.find_entries_in_KEGG("genes","shiga+toxin")
+        self.assertIsNotNone(m)
+        #. not matching to all entries - that is silly, the db get updated!
+        self.assertIn("shiga", m)
+        self.assertIn("toxin", m)
+        self.assertIn("stm:STM0284",m) # should be found in the AND query
+
+    def test_enzyme_specific_1(self):
+        """
+        test 2.4.99.1 returns
+        """
+        m = fk.find_entries_in_KEGG("enzyme","2.4.99.1")
+        self.assertIsNotNone(m)
+        #. not matching to all entries - that is silly, the db get updated!
+        self.assertIn("2.4.99.1", m)
+
+    def test_enzyme_specific_2(self):
+        """
+        test 2.4.99.6 returns
+        """
+        m = fk.find_entries_in_KEGG("enzyme","2.4.99.6")
+        self.assertIsNotNone(m)
+        #. not matching to all entries - that is silly, the db get updated!
+        self.assertIn("2.4.99.6", m)
+
+    def test_enzyme_specific_3(self):
+        """
+        test ec: 2.4.99.6 with space (tests stripping space functionality)
+        """
+        m = fk.find_entries_in_KEGG("enzyme","ec: 2.4.99.6")
+        self.assertIsNotNone(m)
+        #. not matching to all entries - that is silly, the db get updated!
+        self.assertIn("2.4.99.6", m)
+
+    def test_enzyme_specific_4(self):
+        """
+        test ec: 2.4.99. , should return 2.4.99.*
+        """
+        m = fk.find_entries_in_KEGG("enzyme","ec: 2.4.99.")
+        self.assertIsNotNone(m)
+        #. not matching to all entries - that is silly, the db get updated!
+        self.assertIn("2.4.99.1", m)
+        self.assertIn("2.4.99.6", m)
+        self.assertIn("2.4.99.11", m)
+
+    def test_enzyme_specific_5(self):
+        """
+        test ec: 2.4.99.1+2.4.99.6 . AND function, so returns nothing here. Do not expect an enzyme to be doubly classified. 
+        """
+        m = fk.find_entries_in_KEGG("enzyme","2.4.99.1+2.4.99.6")
+        self.assertIsNotNone(m)
+        emptystring=""
+        self.assertItemsEqual(m,emptystring,"Expected Empty String for non-existent entry")
+
+    def test_enzyme_specific_6(self):
+        """
+        test ec: 2.4.99.1 2.4.99.6 . OR function, should return something but does not (KEGG FAILURE?).
+         note that trying this without "" will return the AND function result which is incorrect.
+        """
+        m = fk.find_entries_in_KEGG("enzyme","2.4.99.1 2.4.99.6")
+        self.assertIsNotNone(m)
+        #self.assertIn("2.4.99.1", m)
+        emptystring=""
+        print m
+        self.assertItemsEqual(m,emptystring,"Expected Empty String for non-existent entry")
+
+
+    def test_enzyme_specific_7(self):
+        """
+        test deoxy+1.1.1. . AND function, that should return something
+        """
+        m = fk.find_entries_in_KEGG("enzyme","deoxy+1.1.1")
+        self.assertIsNotNone(m)
+        print m
+        self.assertIn("deoxy", m)
+        self.assertIn("1.1.1", m)
+
+    def test_enzyme_specific_8(self):
+        """
+        test deoxy 1.1.1. . OR function. should return deoxy or 1.1.1. but does not (KEGG FAILURE?). i
+         note that trying this without "" will return the AND function result which is incorrect.
+        """
+        m = fk.find_entries_in_KEGG("enzyme","deoxy 1.1.1")
+        self.assertIsNotNone(m)
+        emptystring=""
+        print m
+        self.assertItemsEqual(m,emptystring,"Expected Empty String for non-existent entry")
+
Binary file get_data/kegg_glycan/test_findKEGG.pyc has changed
Binary file get_data/kegg_glycan/test_getkcfKEGG.pyc has changed
--- a/get_data/kegg_glycan/test_linkKEGG.py	Wed Mar 23 14:35:56 2016 -0400
+++ b/get_data/kegg_glycan/test_linkKEGG.py	Fri May 06 08:05:48 2016 -0400
@@ -40,3 +40,76 @@
         m = lk.linked_entries_from_kegg("br", "gl:G10496")
         self.assertEquals(m,"")
 
+    def test_enzyme_glycan_search_1(self):
+         """
+         test  "2.4.99.1 ec: " returns
+         """
+         m = lk.linked_entries_from_kegg("glycan", "2.4.99.1 ec:")
+         self.assertIn("2.4.99.1", m)
+ 
+ 
+    def test_enzyme_glycan_search_2(self):
+         """
+         test  "2.4.99.1 ec: 2.4.99.6" returns
+         """
+         m = lk.linked_entries_from_kegg("glycan", "2.4.99.1 ec: 2.4.99.6" )
+         self.assertIn("2.4.99.1", m)
+         self.assertIn("2.4.99.6", m)
+ 
+    def test_enzyme_glycan_search_3(self):
+         """
+         test  "2.4.99.1 ec:2.4.99.6" returns
+         """
+         m = lk.linked_entries_from_kegg("glycan", "2.4.99.1 ec:2.4.99.6" )
+         self.assertIn("2.4.99.1", m)
+         self.assertIn("2.4.99.6", m)
+ 
+    def test_enzyme_glycan_search_4(self):
+         """
+         test  "2.4.99.1+2.4.99.6" returns. This time '+' is or.
+         """
+         m = lk.linked_entries_from_kegg("glycan", "2.4.99.1+2.4.99.6" )
+         self.assertIn("2.4.99.1", m)
+         self.assertIn("2.4.99.6", m)
+ 
+    def test_enzyme_glycan_search_4b(self):
+         """
+         test  "2.4.99.1+ 2.4.99.6" returns. This time '+' is or.
+         """
+         m = lk.linked_entries_from_kegg("glycan", "2.4.99.1+ 2.4.99.6" )
+         self.assertIn("2.4.99.1", m)
+         self.assertIn("2.4.99.6", m)
+ 
+    def test_enzyme_glycan_search_5(self):
+         """
+         test  "2.4.99.1 2.4.99.6" returns. Space also means or for the link db. 
+         """
+         m = lk.linked_entries_from_kegg("glycan", "2.4.99.1 2.4.99.6" )
+         self.assertIn("2.4.99.1", m)
+         self.assertIn("2.4.99.6", m)
+ 
+ 
+    def test_enzyme_glycan_search_6(self):
+         """
+         test  "2.4.99.1+nana+2.4.99.6" returns. strangely when inserting junk it still works.
+         """
+         m = lk.linked_entries_from_kegg("glycan", "2.4.99.1+nana+2.4.99.6" )
+         self.assertIn("2.4.99.1", m)
+         self.assertIn("2.4.99.6", m)
+ 
+    def test_enzyme_glycan_search_6b(self):
+         """
+         test  "2.4.99.1 nana 2.4.99.6" returns. strangely when inserting junk it still works.
+         """
+         m = lk.linked_entries_from_kegg("glycan", "2.4.99.1+nana+2.4.99.6" )
+         self.assertIn("2.4.99.1", m)
+         self.assertIn("2.4.99.6", m)
+ 
+    def test_enzyme_glycan_search_7(self):
+         """
+         test  "\"2.4.99.1\""  is a bad request as it includes quotes. 
+         """
+         from urllib2 import HTTPError
+         with self.assertRaises(HTTPError):
+             m = lk.linked_entries_from_kegg("glycan", "\"2.4.99.1\"" )
+ 
Binary file get_data/kegg_glycan/test_linkKEGG.pyc has changed