Mercurial > repos > iuc > virannot_blast2tsv
comparison rps2tsv.py @ 2:77c3ef9b0ed7 draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/virAnnot commit ab5e1189217b6ed5f1c5d7c5ff6b79b6a4c18cff
| author | iuc |
|---|---|
| date | Wed, 21 Aug 2024 13:13:39 +0000 |
| parents | e889010415a1 |
| children | f8ebd1e802d7 |
comparison
equal
deleted
inserted
replaced
| 1:88ebde55bef8 | 2:77c3ef9b0ed7 |
|---|---|
| 54 hsp["query_length"] = blast_record.query_length # length of the query | 54 hsp["query_length"] = blast_record.query_length # length of the query |
| 55 hsp["description"] = aln.hit_def | 55 hsp["description"] = aln.hit_def |
| 56 hsp["accession"] = aln.accession | 56 hsp["accession"] = aln.accession |
| 57 hsp["pfam_id"] = hsp["description"].split(",")[0].replace("pfam", "PF") | 57 hsp["pfam_id"] = hsp["description"].split(",")[0].replace("pfam", "PF") |
| 58 log.info("Requeting Interpro for " + hsp["pfam_id"]) | 58 log.info("Requeting Interpro for " + hsp["pfam_id"]) |
| 59 url = "https://www.ebi.ac.uk/interpro/api/entry/pfam/" + hsp["pfam_id"] + "/taxonomy/uniprot/" | 59 url = "https://www.ebi.ac.uk/interpro/api/taxonomy/uniprot/entry/pfam/" + hsp["pfam_id"] |
| 60 req = request.Request(url) | 60 req = request.Request(url) |
| 61 try: | 61 try: |
| 62 response = request.urlopen(req) | 62 response = request.urlopen(req) |
| 63 except HTTPError as e: | 63 except HTTPError as e: |
| 64 log.debug('Http error for interpro: ', e.code) | 64 log.debug('Http error for interpro: ', e.code) |
| 67 else: | 67 else: |
| 68 encoded_response = response.read() | 68 encoded_response = response.read() |
| 69 decoded_response = encoded_response.decode() | 69 decoded_response = encoded_response.decode() |
| 70 payload = json.loads(decoded_response) | 70 payload = json.loads(decoded_response) |
| 71 kingdoms = [] | 71 kingdoms = [] |
| 72 for item in payload["taxonomy_subset"]: | 72 for item in payload["results"][:6]: |
| 73 lineage_string = item["lineage"] | 73 if item["metadata"]["parent"] is not None: |
| 74 lineage = [int(i) for i in lineage_string] | 74 lineage_parent = item["metadata"]["parent"] |
| 75 translation = ncbi.get_taxid_translator(lineage) | 75 translation = ncbi.get_taxid_translator([int(lineage_parent)]) |
| 76 names = list(translation.values()) | 76 names = list(translation.values()) |
| 77 taxonomy = names[1:] # remove 'root' at the begining | 77 if len(names) > 0: |
| 78 kingdoms.append(taxonomy[0]) | 78 if names[0] == "root": |
| 79 taxonomy = names[1:] # remove 'root' at the begining | |
| 80 else: | |
| 81 taxonomy = names | |
| 82 else: | |
| 83 taxonomy = names | |
| 84 if len(taxonomy) != 0: | |
| 85 kingdoms.append(taxonomy[0]) | |
| 79 frequency = {kingdom: kingdoms.count(kingdom) for kingdom in kingdoms} # {'Pseudomonadota': 9, 'cellular organisms': 4} | 86 frequency = {kingdom: kingdoms.count(kingdom) for kingdom in kingdoms} # {'Pseudomonadota': 9, 'cellular organisms': 4} |
| 80 sorted_freq = dict(sorted(frequency.items(), key=lambda x: x[1], reverse=True)) | 87 sorted_freq = dict(sorted(frequency.items(), key=lambda x: x[1], reverse=True)) |
| 81 concat_freq = ";".join("{}({})".format(k, v) for k, v in sorted_freq.items()) | 88 concat_freq = ";".join("{}({})".format(k, v) for k, v in sorted_freq.items()) |
| 82 hsp["taxonomy"] = concat_freq | 89 hsp["taxonomy"] = concat_freq |
| 83 xml_results[hsp["query_id"]] = hsp | 90 xml_results[hsp["query_id"]] = hsp |
