From 8aa690b50fab22e1d12f331624077a397adc1863 Mon Sep 17 00:00:00 2001 From: crudnicky Date: Thu, 4 Feb 2021 16:35:45 -0800 Subject: [PATCH 1/4] Add url kwarg to ptdb request file and updated readme. --- README.md | 14 ++++++++++++++ lib/ptdb_request.py | 5 +++-- target_uploader.py | 2 +- 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..6f8bbc3 --- /dev/null +++ b/README.md @@ -0,0 +1,14 @@ +# CD19 MicAbody Target Uploader + +This program was written to upload 45 unique targets with different combinations of light and heavy chain subunits. There are several variables that must be given to the program via the CLI in order for it to work: + +`--excel_file_location`: This flag is used to determine the location of an Excel file that contains data used to create each "target". +`--fasata_location`: This flag is used to determine the location of the directory that holds the amino acid and dna sequences fasta files. +`--API_URL`: This is the URL of the PTDB. +`--token`: This is the API token necessary to make HTTP requests to the PTDB. + +Use the following command (replacing the value of `API_URL` and `token` with the appropriate values) to run the program. + +`python3 target_uploader.py --fasta_location=./assets/CD19_MicAbody_Xolo_FASTA_Files/ --excel_file_location=./assets/XOLO_PTDB_Nomenclature.xlsx --API_URL=https://localhost8000/api/v1/absci-targets/target-registration --token=like-id-show-you` + + diff --git a/lib/ptdb_request.py b/lib/ptdb_request.py index 6177db7..2321a8d 100644 --- a/lib/ptdb_request.py +++ b/lib/ptdb_request.py @@ -3,12 +3,13 @@ URL = "http://localhost:8000/api/v1/absci-targets/target-registration/" class PTDBRequest(): - def __init__(self, new_target): + def __init__(self, new_target, user_input): self.target = json.dumps(new_target) + self.url = user_input['API_URL'] def post_target(self): headers = self.get_headers() - # request = requests.post(URL, data=self.target, headers=headers) + # request = requests.post(self.url, data=self.target, headers=headers) def get_headers(self): return { diff --git a/target_uploader.py b/target_uploader.py index 417ed8e..e3e70d1 100644 --- a/target_uploader.py +++ b/target_uploader.py @@ -5,7 +5,7 @@ def upload_targets(user_input): for target in TargetCreator(user_input).targets: - PTDBRequest(target).post_target() + PTDBRequest(target, user_input).post_target() if __name__ == "__main__": parser = argparse.ArgumentParser(description="""This program was written to upload 45 From b986e861a5474732cbea0352485a7e45fe8f4260 Mon Sep 17 00:00:00 2001 From: crudnicky Date: Sat, 6 Feb 2021 15:54:16 -0800 Subject: [PATCH 2/4] Add tests section to readme. --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 6f8bbc3..34d2cee 100644 --- a/README.md +++ b/README.md @@ -11,4 +11,8 @@ Use the following command (replacing the value of `API_URL` and `token` with the `python3 target_uploader.py --fasta_location=./assets/CD19_MicAbody_Xolo_FASTA_Files/ --excel_file_location=./assets/XOLO_PTDB_Nomenclature.xlsx --API_URL=https://localhost8000/api/v1/absci-targets/target-registration --token=like-id-show-you` +## Testing +Unit tests are run to ensure that the program creates the correct target object. To run unit tests issue the following command: + +`python3 -m unittest tests/test_target_creator.py` \ No newline at end of file From 330dc94c9f5d37964eb0ce6bc5c645f344ce7aa7 Mon Sep 17 00:00:00 2001 From: crudnicky Date: Thu, 11 Feb 2021 11:35:42 -0800 Subject: [PATCH 3/4] WIP --- assets/~$XOLO_PTDB_Nomenclature.xlsx | Bin 0 -> 165 bytes lib/ptdb_request.py | 11 +++++++---- lib/target_creator.py | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) create mode 100644 assets/~$XOLO_PTDB_Nomenclature.xlsx diff --git a/assets/~$XOLO_PTDB_Nomenclature.xlsx b/assets/~$XOLO_PTDB_Nomenclature.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5a932052db2a5d1e1d32a453f59be330b8becc3b GIT binary patch literal 165 zcmWgj%}g%JFV0UZQSeVo%S=vH2rW)6QXm9G8GIQs8Il=_81fm4fjEt!gh7G9A4sQx R#Z!U2P@qgIP=x};5CA3W7%cz* literal 0 HcmV?d00001 diff --git a/lib/ptdb_request.py b/lib/ptdb_request.py index 2321a8d..e6f8a2f 100644 --- a/lib/ptdb_request.py +++ b/lib/ptdb_request.py @@ -1,19 +1,22 @@ import json import requests - -URL = "http://localhost:8000/api/v1/absci-targets/target-registration/" +from pprint import pprint class PTDBRequest(): def __init__(self, new_target, user_input): self.target = json.dumps(new_target) self.url = user_input['API_URL'] + self.token = user_input['token'] + pprint(self.target, indent=2) + print(" ") def post_target(self): headers = self.get_headers() - # request = requests.post(self.url, data=self.target, headers=headers) + request = requests.post(self.url, data=self.target, headers=headers) + pprint(request.content) def get_headers(self): return { - "Authorization": f"Token {TOKEN}", + "Authorization": f"Token {self.token}", "Accept": "*/*", "Content-Type": "application/json" } diff --git a/lib/target_creator.py b/lib/target_creator.py index 2805f38..d9c3878 100644 --- a/lib/target_creator.py +++ b/lib/target_creator.py @@ -12,7 +12,7 @@ def __init__(self, user_input): self.excel_reader() def excel_reader(self): - for row in range(2, self.max_row + 1): + for row in range(self.max_row, self.max_row + 1): target = { "target": self.ws.cell(row, 1).value, "partner": "Xyphos", From 17961af4564a70011ae40395b8687e54057f1a9b Mon Sep 17 00:00:00 2001 From: crudnicky Date: Thu, 11 Feb 2021 13:01:20 -0800 Subject: [PATCH 4/4] Done. --- assets/XOLO_PTDB_Nomenclature.xlsx | Bin 11136 -> 11164 bytes lib/ptdb_request.py | 3 +-- lib/target_creator.py | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/assets/XOLO_PTDB_Nomenclature.xlsx b/assets/XOLO_PTDB_Nomenclature.xlsx index 60999c8d4325f323394e68640b82959ab624765a..679ea88bc26d8db254580d4c01c9f9a5a08d2f92 100644 GIT binary patch delta 4544 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 J?b^T6{{XMDjIjU! diff --git a/lib/ptdb_request.py b/lib/ptdb_request.py index e6f8a2f..3e6f85d 100644 --- a/lib/ptdb_request.py +++ b/lib/ptdb_request.py @@ -3,11 +3,10 @@ from pprint import pprint class PTDBRequest(): def __init__(self, new_target, user_input): + print(new_target['target']) self.target = json.dumps(new_target) self.url = user_input['API_URL'] self.token = user_input['token'] - pprint(self.target, indent=2) - print(" ") def post_target(self): headers = self.get_headers() diff --git a/lib/target_creator.py b/lib/target_creator.py index d9c3878..2805f38 100644 --- a/lib/target_creator.py +++ b/lib/target_creator.py @@ -12,7 +12,7 @@ def __init__(self, user_input): self.excel_reader() def excel_reader(self): - for row in range(self.max_row, self.max_row + 1): + for row in range(2, self.max_row + 1): target = { "target": self.ws.cell(row, 1).value, "partner": "Xyphos",