From 218f568ece1ed2c3e934d8c035bdccff35d0c28d Mon Sep 17 00:00:00 2001 From: shirey Date: Wed, 28 Aug 2024 11:17:25 -0400 Subject: [PATCH 1/2] added 404 and 504 response codes --- search-api-spec.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/search-api-spec.yaml b/search-api-spec.yaml index d561b31a..b59716e6 100644 --- a/search-api-spec.yaml +++ b/search-api-spec.yaml @@ -908,12 +908,12 @@ paths: $ref: '#/components/schemas/SearchResponse' '303': description: If the total response payload exceeds 10 MB, the response is returned via an S3 bucket. A 303 HTTP response code will be returned with the redirect URL where the query can be retrieved. - '400': - description: Bad request. A JSON body and appropriate Content-Type header are required in request '401': description: A valid globus token in the `Authorization` header (Bearer scheme) is required in request '403': description: The globus token used in the `Authorization` header doesn't have the right group access permission + '404': + description: Bad request or no data found. A JSON body and appropriate Content-Type header are required in request, additionally if no data has been found based on the query when the produce-clt-manifest=true option is used. '504': description: There is a maximum query and response time of 30 seconds. If the query response takes 30 seconds or longer, a 504 HTTP response code will be returned. From 953bfb388a9d04e57bb96650da5549e7b798ec5d Mon Sep 17 00:00:00 2001 From: shirey Date: Wed, 28 Aug 2024 11:32:50 -0400 Subject: [PATCH 2/2] Add Jupyter notebook example for param search and download --- .gitignore | 3 + ...rameter Search and Download Tutorial.ipynb | 190 ++++++++++++++++++ 2 files changed, 193 insertions(+) create mode 100644 examples/Parameter Search and Download Tutorial.ipynb diff --git a/.gitignore b/.gitignore index fadfe6db..099ec724 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,6 @@ scripts/fresh_indices/fresh_indices.ini # The file holding the user's token, stream into the fresh_indices.sh script scripts/fresh_indices/token_holder + +examples/*.out +examples/.ipynb_checkpoints/**/* \ No newline at end of file diff --git a/examples/Parameter Search and Download Tutorial.ipynb b/examples/Parameter Search and Download Tutorial.ipynb new file mode 100644 index 00000000..2e93873e --- /dev/null +++ b/examples/Parameter Search and Download Tutorial.ipynb @@ -0,0 +1,190 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "51ba76c1", + "metadata": {}, + "source": [ + "# Parameter Search and Download Tutorial\n", + "\n", + "### Overview\n", + "The combination of the [RESTful parameterized search](https://docs.hubmapconsortium.org/index.html) and the [HuBMAP Command Line Transfer Tool](https://docs.hubmapconsortium.org/clt/index.html) provides for an easy way to programatically query HuBMAP data and download the results of the query.\n", + "\n", + "### Description\n", + "Below is an example of how to use the [RESTful parameterized search endpoint](https://docs.hubmapconsortium.org/index.html) to query for datasets with specific attributes and produce a manifest of datasets to download and how to use the manifest to download all of the data for the referenced Datasets. The parameterized search feature shown in this example is a simple query mechanism that allows quick querying of data via a single RESTful URL call where queried attributes are constrained to exact string matches of a limited set of attributes, where the query is an \"AND\" filtered query with all attribute matches as terms in the \"AND\" clause, for example the query `/param-search/datasets?status=Published&dataset_type=CODEX` will return all datasets that are \"Published AND a result of a CODEX assay\". If more complex queries are desired use the standard `/search` endpoint which is documented in the [HuBMAP Search API Endpoints](https://smart-api.info/ui/7aaf02b838022d564da776b03f357158).\n", + "\n", + "This example uses the Python Requests library to send the parameter search query and retrieve the results. If Requests hasn't been installed run `pip install requests` in the environment that this notbook is running in. A version of this example using the command line `curl` command can be found in the [Example Query and Download page](https://docs.hubmapconsortium.org/param-search/data-query-download-example.html)" + ] + }, + { + "cell_type": "markdown", + "id": "bc4ad256", + "metadata": {}, + "source": [ + "\n", + "### Example Query and Download\n", + "\n", + "The following query will return all CODEX (`dataset_type=CODEX`) Datasets run on a Keyence BZ-X800 machine (`metadata.metadata.acquisition_instrument_model=BZ-X800`) where tissue from a spleen was used (`origin_samples.organ=SP`). See the [RESTful parameterized search page](https://docs.hubmapconsortium.org/index.html) for further information on querying dataset, organ (`origin_samples.organ` represents the organ in the query and `SP` is the organ code (organ code list available [here](https://docs.hubmapconsortium.org/schema-sample.html#organ-attribute-values)) and dataset metadata fields.\n", + "\n", + "```\n", + "GET https://search.api.hubmapconsortium.org/v3/param-search/datasets?dataset_type=CODEX&metadata.metadata.acquisition_instrument_model=BZ-X800&origin_samples.organ=SP\n", + "```\n", + "\n", + "#### Producing a CLT manifest file\n", + "\n", + "As is, if this query is submitted via HTTP GET it will produce a json Response with an array of dataset objects which match the query. Adding the `produce-clt-manifest=true` option to this query will instead prduce a list of Dataset IDs pointing to the Datasets that match this query in a format that will be directly usable by the [HuBMAP Command Line Transfer Tool](.https://docs.hubmapconsortium.org/clt/index.html).\n", + "\n", + "```\n", + "GET https://search.api.hubmapconsortium.org/v3/param-search/datasets?dataset_type=CODEX&metadata.metadata.acquisition_instrument_model=BZ-X800&origin_samples.organ=SP&produce-clt-manifest=true\n", + "```\n", + "\n", + "#### Make the query request and get the manifest information\n", + "The code below, does the request as specified above with a lot of error checking" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0473e6d0", + "metadata": {}, + "outputs": [], + "source": [ + "#imports\n", + "import os\n", + "import requests\n", + "\n", + "#run the query, get the results, report any errors\n", + "query_url = 'https://search.api.hubmapconsortium.org/v3/param-search/datasets?dataset_type=CODEX&metadata.metadata.acquisition_instrument_model=BZ-X800&origin_samples.organ=SP&produce-clt-manifest=true'\n", + "try:\n", + " manifest_text = None\n", + " \n", + " #make request and grap the HTTP response code\n", + " response = requests.get(query_url)\n", + " response_code = response.status_code\n", + " \n", + " #per API docs, /param-search/ can send several response codes\n", + " #handle all of those cases\n", + " if response_code == 200:\n", + " manifest_text = response.text\n", + " #if the response size is > 10MB, a redirect to an S3 bucket is sent\n", + " #retrieve the manifext information from the S3 bucket\n", + " elif response_code == 303:\n", + " next_url = response.text\n", + " next_response = requests.get(next_url)\n", + " if next_response.status_code == 200:\n", + " manifest_text = next_response.text\n", + " else:\n", + " print(f\"Unable to retrieve from redirect {next_response.status_code}: {next_response.text}\")\n", + " print(f\"Redirect URL: {next_url}\")\n", + " #we'll get a 404 if the URL is wrong OR IF NO DATA HAS BEEN found when the produce-clt-manifest option has been used\n", + " elif response_code == 404:\n", + " print(\"Endpoint not found or no data matching this query.\")\n", + " #if the query times out\n", + " elif response_code == 504:\n", + " print(\"The query timed out after 30 seconds\")\n", + " else:\n", + " print(f\"Unable to retrieve query {response_code}: {response.text}\")\n", + "except Exception as err:\n", + " print(f\"An unexpected error occurred: {err}\")\n", + "\n", + "if not manifest_text is None:\n", + " print(\"Success\")\n", + "else:\n", + " print(\"Fail\")" + ] + }, + { + "cell_type": "markdown", + "id": "1cc5a4bc", + "metadata": {}, + "source": [ + "### Write the manifest file" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "8ce54ede", + "metadata": {}, + "outputs": [], + "source": [ + "#if manifest information was retrieved write the manifext file otherwise print an error message\n", + "if not manifest_text is None:\n", + " fname = \"dataset_download_manifest.out\"\n", + " with open(fname, 'w') as file: \n", + " file.write(manifest_text)\n", + " print(f\"manifest file written at: {os.path.abspath(fname)}\")\n", + "else:\n", + " print(\"ERROR: No manifext information found. File not written\")\n" + ] + }, + { + "cell_type": "markdown", + "id": "462e565d", + "metadata": {}, + "source": [ + "### Use the HuBMAP CLT to download the file" + ] + }, + { + "attachments": { + "globus-properties.png": { + "image/png": "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gNcoaOohiUW/RUAEREAEREAEIMAaRr31oLIgAiIgAiIgAiKQSsAvZuSfjAiIgAiIgAiIgAgkCXhBQd96SGLRbxEQAREQAREQAQj4bz1oC2cVBhEQAREQAREQgWIENO9QjIzui4AIiIAIiIAIWItej1QpEAEREAEREAERSCPgX4/Me/vmtIB0TwREQAREQAREoPkIsI5RGoXmyzfFWAREQAREQATqRqBFGoW6sVZAIiACIiACItB0BFr0emTT5ZkiLAIiIAIiIAJ1IaCvR9YFswIRAREQAREQgeYk4PdRkEahOTNPsRYBERABERCBehDQPgr1oKwwREAEREAERKBJCeijUE2acYq2CIiACIiACNSDQCsbLuX95sNnU6fWI+4KQwREQAREoAQBtcdmzcygEeKuqYcSlUyPRUAEREAERKCzEvAbLuWtTeisMJVuERABERABEeiIBNwrklIqdMSMVZpEQAREQAREoL0E/LceJCi0F6Pci4AIiIAIiEDHJKCph46Zr0qVCIiACIiACORGQB+Fyg2lPBIBERABERCBjkVAn5nuWPmp1IiACIiACIhArgT81IO2cM6VqTwTAREQAREQgQ5DQN966DBZqYSIgAiIgAiIQP4EmHroMm7cOHeelZvvM2bMyM0veSQCIiACIiACIlAZgW7dulXmIMM2uze38npknpsu5RnBjLjrkQiIgAiIgAiIQB0I6KNQdYCsIERABERABESgGQmgSNDOjM2Yc4qzCIiACIiACNSBALMOLXmuT6hDnBWECIiACIiACIhAnQggI2jqoU6wFYwIiIAIiIAINBsBv5iRf3kuZnzmmWcamsNGG23U0PFT5ERABERABESgUQigUWitxdTDuuuum0sahw4d6v3J279cIidPREAEREAERKCDE0CR0MquS3mbvL9Imbd/eadX/omACIiACIhARyRA/+v3UchbWMh7W+i8/as2Mz/++GMbO3asffHFF5ledO/e3RZbbDHr27dvpj09FAEREAEREIFGJuAFhVp0wqU0AC+++KKttNJK1qtXr7L4lPKvLE/aaWnixIn2ySefWP/+/W3BBRc01nakGdQ02HM7Xhps+/Tpk2ZN90RABERABESg4Qn4bz3krU0g1XSQWcctt9xib7zxRqadWIDJ8quSZ+3JEbQJyy23nC299NK+819ooYUs7UAwwM6yyy5ruMky//rXv+wf//iHP1iP8dlnn2VZ17OcCZxwwgn29ttvp/p66aWX2q233pr6jJt33XWX/e53vyv6/JRTTvFlvKiFdjx466237Pzzz2+HD83rtFS+FEvZu+++a+ecc46VWpP13nvv2emnn27HHHOM9yoO77e//a394Q9/KBZEVfdj/6vyoM6O/v3vf9tpp51W51ArD+7NN9+0k08+2TucNGmS/fjHP7bXX3+9co/kwhNoqQUHNABZR+jcs+zEWoRS9sp93p60sjU1QkAxTQJ+/+c//7EhQ4b4xgS7pbazpuG64IIL7Je//KUv1FtvvbUdfPDBhvZCpjSB3/zmN3b99deXtljExnPPPWc0ImkmFlTTniNgFBMysI8QWEpQTPO3nHt0LmjkOqOJ84XBBh1AOWaFFVawESNG2B//+MdM6xdffLGfXtxll128vTi8//3vfzZs2LBM95U+jP2v1O28sE+Zpmw3uqENffbZZ300YRyOvONdSRnMO+x6+tdKxzdz5sxcwyyn8FeSceX4l2sCUjxrbW31wk/KI39rypQp9tOf/tQ4cyC84KaUOfLII+073/mOodmh0J155pl27LHH2nXXXWfzzTdfKeed+vn777/vp3lqAYE8aETDiI5ycskllzRi9GoepzhfqGevvPKK1xKU00Zsu+22dscdd1gQAtIiizDxk5/8xDbZZBP/OA4vzX5779Xa//bGryO4X3jhhe3aa6+tSVIqLYM1iUSNPfUbLuW5h0KIb6kRPpW6lB2eB5O0O3nyZBs9enTm4edVEpqN4F8151IN0e9//3uj42LK4fvf/74PopSbOB6kcfXVV7fLLrvMj1piqf1Xv/qV7brrrrb99tvbeeedZ59//rl3+te//tUOPfRQu+aaa4xGcJ999rG//OUv/hkjrTvvvLMQBBL29773Pa/1KNxsu/joo48MNfyWW25pO+ywg/385z+3+CughL/77rv758cdd5xhPxj2zSAOm266qQ+fqZRgxo8fb6jgt9pqK9t7773tnnvuCY/sww8/9ILVZpttZjvvvLP9+te/9s8I98orr/TCE/FBfZg2Mr/ooovs8ccft3/+85++4R85cqR3/9RTT/n4fPvb37ZDDjnET+sUAk25ePnll+0HP/iBbb755nb88cfbp59+6m3h/80331xw8dBDD9mPfvQjI76nnnqqTZ06tfCMOkTHTf5wUBaSppo8TPrBb0ZJK6+8stH4BUMekFbSQCeH2jXNwJa8JY+32247u/vuu22vvfay8Bpymptwr1S+FEsf7ouVEfKVTpu6HMzVV19tV111lf957rnnGtqTgw46yDbeeGM/oAn5Qjk7++yzvT38YBqIqQHSHxvy6oYbbvC3vvWtb9kHH3zgj9gO19OmTfNxoeGn/METE8LzPxL/srj/7W9/8+UKgYN6ybqsNBP7T3oJ+6ijjvJ5edJJJxnTTEkzfPhwH1fam2AefPBB22+//fxP6h31ZptttrHddtvNd5JhyuX+++836nBsKAMhfmnMY7vhmrpBWd9xxx3nqic8Z5BDe4GGlDSwABxDu0VeMaVHe0a7cPvttxt1a6eddvLtCxqdMB2e1X54D6N/1P+jjz7aqPfwRpgOhvpJuP/9738Lcbjxxhv9vTA9kVRmNhsAABs3SURBVJWXIR7w/O53v2uUUQbXaWWQMLP402ZTtmgvtthiC3vssce8VqzctjqkqZ5n319nqdKrjQwexwfzfTSy4SDDaLDCb85UrNgN18Ek71MhyPisgwqRdBf8a++ZxiQ2TDn84he/8LeYTmDtQrWGxZLLL798oUOnQv7pT3/yc6ZMUxAWZwyN22uvveY7rcsvv9xPe1AAWeswaNAge+CBBwrRePLJJ33hXmWVVQr3wgUVe/r06b6BpmJTcYNbKhQd/OGHH+4bbSr7iSee6J2SjwgCa6+9ttFRbLjhhr6BYlRG5WS0RByZWtlzzz39OQgSdACUPUZ4NFx0Wq+++qo9+uijRqNH+WBaYcKECXbbbbeFqBbOBx54oK233nq25ppr2hVXXGFLLrmkbwjoGAYPHuzd0jHwG2bFDOEhIJxxxhneHutnMAhWCKQY5jZh/n//93++EVxiiSWMCh8M/KjwsLvwwgvtiSee8OkOz6vNw+A+PiMExHmIOvxnP/uZZ8+oCQ7wDHGP3dIJUQ5oHGmQSQOdDnlfymTlS1b6SpURhM54sMJUUJh645qyjxBMZ4+GLuQLeYyAikG4RvAhv1944QU/xcB97P7973/39/nNGqMFFljAlxN+xwbtHeVo/vnn9x0N5QETwovtcp3FncXMrHOg80NopJxSfkJnHfsV+096WQNBB0ya+H3TTTfF1v31gAEDrEePHl5QDg+pM2ussYZniWYTgZc2CcHpz3/+s6+f2OU+C61jM2bMmEIZSGMe2+UaPxBSqMMI+bQRoWOmzjK9g6aUNFD/iQ8dKwIA+Y0wz4DngAMO8IMcOkkEJtoV4orgWqr9iOOEEEsd5oyQiaBAuxIM3AmX5yEOlH3cEM+svCQeCCBwoW2FJ4MxBJy0Moj9LP7woD3hDB+mqitpq0Oa6n1ujStpXoHHnTx+knGADobChOQXz7OutdZavmMPduJz0r8wao7t1OuaBoTKj0AQNAc0ChjWF9BZttewGHLUqFHeGxpKRgVoGzCwJGymKDA0GHTIdLrMw9LQUNFobOj06LQRPui8aHBjTY33wP0LIzOEgEUXXdQWWWSRwvw7HQQVmpE0hgpOh07FR7gbOHBgYZ6YDoyOm7UZLB5jDp+RXu/evW2ppZbyjTZaAEZZNDbEGaGG30HVS0dIZWa0SQNLI5RmiCcCGWWD9GHoFBhth9Eg5QsW3F9ttdXSvLH999/f1llnHf8M7UTaugMaNvwNHRPXdEjB0PnCCK0KhsVeoWzwu9o8DP7hRzAITjQswZCvyyyzjB/pcO+www7zjS0CJKPw2JBflNFwn3ynoS/HkF/F8iUrfVllpJxw0SpR/pOGDh+BDYNgTTmgnFEeYUJ+0BksvvjiRtsSDOWGzjlpQjmiTOIGplkmizv1gPrBgAIBhM6IoxxDPUPowTAqp67TRhOv2FC/H3nkEV9+qStoxgiDesdBG0k9xjCipx6Wu56jGPMQPm0IGkiEKuoYQj71ZtVVV/XCS1wXzjrrLK/B4jkCDgYNEYw46AsYROCWg99oB1jjldV+eI/a/r3zzjtecEGzSv4iMKE5QoAtZmAVdulF0C9Whyhj+I/wQ7nAoDVGo5hWBolzKf64YwAT8rSStrpYemp9v5UKkibptidg/IxNcmdFVozTOG+wwQaxtaLXSf+KWqzDg6AtQFqn80YVzIiVwhM6qPZGg5XXqO2QgKnkjCpghgnajDAqYK+GUOAQGlBJI61S8Bnp0zGjeWEuN2gCkvFjNIxGgJEFr6wyGqVxJXwEFhriYGiMQweGEBI/w04QlBAwMKFz5Zq4f/Ob3+TSx4UR3H5OOwRTGkc6OeJKQ0EDw34VjBKR0Es13Pg53I2OQ2PEbwy/4VnMsN9FMDQEYQoj3OOcls4QDoyYRgm/sc/INaxPaU8e4lfSkLc9e/Ys3EZlSsO0xx57FO5xQZxiQzzoUELnyjM6khDP2G7adbF8gVlWGU1jF8pIKMNp4YV7/fr1C5dlnVGF33vvvV5QoOwzzRIbOu542ih+Vsl1FncEMToCNGEI65T5fffd16uaS4URl0fyinxDQAt1PLinc6FTpWwzbUA9RICl3tERBSEB+5RNykOp/V+C36WYIyBwYBAaCIt4ctBeBMGd57RPvE4e103akGAof8Q3GNowTKizxdqPYJ8zZYz4ICQEk2yXwv1wjve4ycpL6ht+ByEB96ENC37FZ+Jdij/tXZyflbTVcVj1uiaPa7KFczkdO3bKsQeMcu3VAxzqKtRuDz/8sO/kQpjtnXII/jz//PO+s2IEzMicxgI1OwseKzU0kszbIjzQiMQVOPhF48GrdszTo62gIaVjpsISPqpspPNg0DpQ6Rm50SEmXzmiotDQIDiRb/fdd1+hUQl+cF5xxRW9mpBGm+kIVPaExeiR0QrqcxbuoZ5DbVtsMVIs5BJmUIGGsGi4vvGNb4SfVZ2pyMl5/9AgwojGnd/BoOZkRIlpbx4GP8OZRjYIi9xDkKKBZOopyxAPGk/e9AgdNVqREM8stzxjE7Fi+ZJVRrPKSGgsGeEHQRC1fdxxlIoXz+OOlHlvplioR5TNMIUQ/MH/eH1HuF/puRR36isH6y9QU6N1ZHDESDkPQ+eMxg3NBoICggOGOoCWDg1u6JApm5RR8pCOOdbu0rlTp/MwoazHQiq8OYhXJaZU+xH7RdmhHUmmObaTdZ2Vl9R7/EbIDsIFaxBghuY3mFAGS/EP9pPnctrqpJt6/SZtLbXohPEz6yCBWc/DswAi/G7vOfhX7RlgGBb80JHTYHOkTTkEu6XCYhSPagsVOQv6mD+m0lN4McyLcx+tBQ0qc3Cs6Yg7yGJhsLgtzCWGhiTNLn5xIDQwInnppZcK1tAeED7TDTR6CESh8UV1R2OMWhOVOEIBAgcdJZ0zjRNzj7hDuED1SYdPWIywUPmRp6gcGSVzMErCHpURyZ1OEOElzSCQML/IiALedIDEk+mXEB8a0dAxpvlRzr3111/fq3bxl3ghfMUCCf7f6hZoIdggVLG+IjbtycPYH67hEWs9CJuyg/qfhhKhi7nxIMAxdUO+YNDekAbWNJAvxDPWKNC5UrbTpiOz8iUrfVllJIw2WQODVgIhhumfck0YNTO9wcgPgxBAmAi7aMUQPoOhU6S+xaP28KzScxZ3ygGL9UgP+YVQjVAUs640vDT7dC7UTbSFTCtiqHcIbqxBocOm3cAOeYRhsIAmhzUNlBc0ieW2Vd6DEv8IBy0KDAifcgZvGFRistqPpD+hnSAswmQaJm1dU9Jd+J2Vl8SDaVMGK/jNmhumVlhLgUmWwVL8Q5jJc7ltddJdvX631iIgGv8sQ+VB2i1lL/hRrr1gvxZn1C9I6qiNOOgYaHgxySkHKh52cZNlSBfTChx0kggf+MkbAsGweAaJnDOSLdIzc+C4DUewmzyjMmO+kblMpjLSDKMM5uuY3yNNzBsyZRGYH3HEEX4qghE+aRrg1Jh0JjynIWYxIw0RozhUjNgLjQJTC8yDoyVAOKABR8jBLVoSOir2QqABZUUxo8Ew38rqYuzh11luGiLN0Dgi2DDHyaiNuXumV2ioWGhFA4UGKDn1FfsV0hnf4zq+z4IjOJBP+MuUU2h4sctiJwQIBBw6WfKPNQIh/9uTh/gfG+KCoBIMC6pgTpppKClHlCHmaTGsr2Dkw9QBZYHOGVUr+YG2hjUawSD8IGiQHvIyNqxloAFOy5es9JUqI6yvYRqPMor2gbKXZeJ8oVEmHxitkw4EdgxCMcJDUgsXtELxGo9kWPgf8o1ncXjxdRb3UNYpi2hsEF4QzpJMk/6nxSV5L/4d1vUQlzDaZVQf1zvKA1Mh5CkGu9QbNHjEDVbFBPE4rPg65hPf5zqUBQQ1hDfWMBAf2plii2ZjruE6mY7AlPYjafAbwYhBDAIafQvpit+yCm6C/+E356y85Dnxpw1izQhpZ/DEQAeTVgaz+BN+WhzKaat9gPPoXxcnyc/KM2waoWKdUqXhhHnuPP2js6rG0ElTsRjFohotVlkQErDLiBY7lapRi8WNsKl4aY1NMTfc540TGqpinW1wSweHQBLUleF+OPMcdRsFOs2wrqGYShcejKjC/GPsnlENaQpq6PCMRgWWxcIL9jijCaGxiA2aHgS6PA2NFYyK+UucaQTS0kk8qs3DOA2UKzp9hLPkXCksiVtcNolzaJjQJrAoEUECwyJPNFg0qIyaMDCP3fub0b+sfCmVvmJlhDjyrFjZi4JPvURTgLAZ0slCPl5hQ8sSd4Jo49A+hTeUUj2r4mYad7yBJeWw2nSVigpCNR0jwngQGmI31DvKYrJuYYc6Q36VU79iP8u9pr0gDASV9pqs9iPpN7xpT0JZSD4v9btYXuKOeCDAcCRNsgwG+8X4J93zu9y2Os1tLe/RHvgNl8hUmWwCVChG1Mz3ZfGi0aPRQkDIS0ggZvhZiZDA6ltG7KwZoFMpZWhMsho0nmc1KsWEBMLNclcszLiBLxX3pJCA/WKdeSm/sp7T+GT5WyrOleZhWlwQVHnvHa3CWQlNSxrLuMEc4LRBCAahA2U6iL01gpBAeFlCAs+z0lgqfcXKCHFMizvhlWPihhsNFyp/FsHFcUUQQd2O5ixvUyzusCz2rL1xQOhDi4bGLU1IwP+sekedSas37Y1XcE97kYeQUCodIbxwzqqfwU7WOSu/snjGZTD4n2U/2OFcaVsdu63XdRc3QpmV1fFVGhE0CqiR8zCoIzF5+letRiGP9NTTD1ThzM/zumI8T1vPOCis2hBAs8NaDBazVWoYhTJ/jGYAjQQLHDuSYZExgg/lPjakmznm8Jpx/KwZr8l/hB/WMhXTYDVjujpjnBu9rUboq8nUQ1hY095Mp9Jj8vSvswgK7WUv9yIgAiIgAiLgBQUnzcxiLi0vg0ahkY0EhUbOHcVNBERABESgkQgwhdbFqeRmsahFRgREQAREQAREQARiAmgUWvJcnxB7rmsREAEREAEREIHmJ9CCtCAjAiIgAiIgAiIgAkkCvMknjUKSin6LgAiIgAiIgAh4Ary+XJOPQomvCIiACIhA4xFgdIgJ58aLoWJUCYGwT0o4V+K2XLu87OAFhXIdyJ4IiIAIiEDzEaCxZ9E6a9I481vCQvPlYxxjhAO/a6LbjI8lBGx4VmrDtNh9udeUk9Y8X40sN2DZEwEREAERqA8B2ng26aJjYedBdozV2rT6sK91KAh+7BjM1tNcs/lW3sICZSX3nRlrDUb+i4AIiIAIlEcgCAls18xXJWU6LgG+2sv3NfIWFhAUWqRR6LgFRykTARHo3ASYZkB1LCGh45eDkMd574uEpsJpKbI/hdzx8SqFIiACItDxCCAg0GkU+xhXx0uxUsRHsYJwmBcNZIRWLWjJC6f8EQEREIHGIoAqupKv2D799NN+PQOpoINYccUVbbnllmusRFUYGz6eNXTo0IKrxRdf3FZZZZWK12nw1VU+Yb7++uvbQQcdVPCv0gu+5suXTX/4wx9W6rSkffJ63LhxuX25kwC1mLEkdlkQAREQgeYkEDQKaZ9ALpaik046yb8RwSftWSTHlw033HBD/3nucj+bXMzvrPsHHnig73w32GCDVGulnqc6ars5bNgwO/zww/1XRRF+Ro8e7efxd9ttNzv11FOznBaejR071k488UTbZ599bOONNy7cr+bijTfemOsT4O1JWzJ88jpoFPJ6ZdK/UcE/5iBkREAEREAEOhaBajTGxx9/vO26664exLPPPmsHHHCA3XfffTUZAQfar7zyik2cODH8/Nq51POvOUi5cf/993vtyqeffmoPPfSQnXnmmYaq/qijjkqxPfet4cOH+xsnnHCCsTA0T5NH2uL4VJPnsfvkNf615O1pMhD9FgEREAERaE4CaBNWW201YxSMYWRNx7ruuuvajjvuaHfccUchYR988IEXKtZee23bdNNN7eqrry484+Lyyy+3Lbfc0msoTjnlFJs+fbof/W6++eZee3Huuefa/vvvP5cbRsfFnl922WW29dZb25AhQ+yII44wVv2XY3r16mW77767HX300XbjjTf6OOCuWNoefPBBbxc722yzjV133XV+cE34pJP07r333jZixAis2D333GOHHHKIvw7/tt9+e3vuuefCT38ulrZHH33UdthhB1tjjTVs5513/pq7uTypww+/mFFvPdSBtIIQAREQgSYkwNQDqvvVV1/dd44HH3ywTZ061W6++Wbbb7/97MILL7THH3/cp+ycc87x8/4PPPCAnXHGGXb77bfbiy++6J9dc801dtddd3lV/5VXXmmvvvqqv2aToJtuuslPBTDvjx+xKfb8iiuusDvvvNMY4dPZEyc0H3S+5Ro6ffaXeOuttzLTxlQDWhYM6wv23HNPozNHICCdt956q5/HR0OB+eSTT7zQ4X+0/WO6A8EoNmlpmzJlih177LFekHn44Ydto402stNOO22ebo7lFzPyT8JCnH26FgEREIHOS+CWW27xqvlp06YZavEBAwbYtttua2+//ba9+eabxgi7b9++tuyyy9pjjz3mf6MpoIOk80O1v8UWW/gjUERIYPEeo2/MoYce6uf8L7nkElthhRW8uyWXXNL7GdyEc9pz4oAWYauttvLW8IdOlfgh1JRjlllmGb8J1ciRI72Ak5W2pZde2ntJXDDbbbedPxBMSDdrK66//nr/rJJ/ybSh1ZgxY4axALNnz56eEWsj5qXxgkJeCx7mZUIUtgiIgAiIQD4EVlpp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" + } + }, + "cell_type": "markdown", + "id": "c303ede3", + "metadata": {}, + "source": [ + "To use the HuBMAP CLT tool to download the data for the datasets referenced in the generated mainifest file:\n", + "\n", + " - Install the Globus Connect Personal client and the HuBMAP CLT per the [HuBMAP CLT Setup Instructions](https://docs.hubmapconsortium.org/clt/install-hubmap-clt.html)\n", + " - Setup Note: A common issue arrises between the configuration of the GCP client and HuBMAP CLT. By default HuBMAP CLT stores files in the user's home directory under a directory called `hubmap-downloads`, so make sure to configure the GCP client by goint to \"Preferences\"-->\"Access\" and adding the `hubmap-downloads` directory in the user's home like (Example shown is Mac OS X):

\n", + " ![globus-properties.png](attachment:globus-properties.png)\n", + "

\n", + " - On the command line, change to the directory where the into the directory where the mainifest file was generated (printed in the last step), then log into HuBMAP Globus server using:\n", + " \n", + " ```\n", + " cd /my/directory/where/manifest/file/sits\n", + " hubmap-clt login\n", + " ```\n", + " Globus login screen will open in your default web browser. Follow the instructions to log in. For publicly available HuBMAP data any login will work (your institution, Google, GitHub, etc..).\n", + " - Download the data using the manifest file genrated above:\n", + " ```\n", + " hubmap-clt transfer dataset-manifest-for-download.out\n", + " ```\n", + "\n", + "Futher instructions on the usage of the HuBMAP CLT are available on the main [HuBMAP Command Line Transfer Tool page](https://docs.hubmapconsortium.org/clt/index.html)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "11dc567f", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}