|
35 | 35 | from .gget_pdb import pdb # noqa: E402 |
36 | 36 |
|
37 | 37 | # Module functions |
38 | | -from .gget_ref import ref # noqa: E402 |
39 | | -from .gget_search import search # noqa: E402 |
40 | | -from .gget_seq import seq # noqa: E402 |
41 | | -from .gget_setup import setup # noqa: E402 |
42 | | -from .gget_virus import virus # noqa: E402 |
| 38 | +from .gget_ref import ref |
| 39 | +from .gget_search import search |
| 40 | +from .gget_info import info |
| 41 | +from .gget_seq import seq |
| 42 | +from .gget_muscle import muscle |
| 43 | +from .gget_blast import blast |
| 44 | +from .gget_blat import blat |
| 45 | +from .gget_enrichr import enrichr |
| 46 | +from .gget_archs4 import archs4 |
| 47 | +from .gget_alphafold import alphafold |
| 48 | +from .gget_setup import setup |
| 49 | +from .gget_pdb import pdb |
| 50 | +from .gget_gpt import gpt |
| 51 | +from .gget_cellxgene import cellxgene |
| 52 | +from .gget_elm import elm |
| 53 | +from .gget_diamond import diamond |
| 54 | +from .gget_cosmic import cosmic |
| 55 | +from .gget_mutate import mutate |
| 56 | +from .gget_opentargets import opentargets, OPENTARGETS_RESOURCES |
| 57 | +from .gget_cbio import cbio_plot, cbio_search |
| 58 | +from .gget_bgee import bgee |
| 59 | +from .gget_g2p import g2p |
| 60 | +from .gget_8cube import specificity, psi_block, gene_expression |
| 61 | +from .gget_virus import virus |
43 | 62 |
|
44 | 63 |
|
45 | 64 | # Custom formatter for help messages that preserved the text formatting and adds the default value to the end of the help message |
@@ -2324,6 +2343,77 @@ def main(): |
2324 | 2343 | help="Does not print progress information.", |
2325 | 2344 | ) |
2326 | 2345 |
|
| 2346 | + ## g2p parser arguments |
| 2347 | + g2p_desc = "Query the Genomics 2 Proteins (G2P) portal for residue-level protein structure/function annotations." |
| 2348 | + parser_g2p = parent_subparsers.add_parser( |
| 2349 | + "g2p", |
| 2350 | + parents=[parent], |
| 2351 | + description=g2p_desc, |
| 2352 | + help=g2p_desc, |
| 2353 | + add_help=True, |
| 2354 | + formatter_class=CustomHelpFormatter, |
| 2355 | + ) |
| 2356 | + parser_g2p.add_argument( |
| 2357 | + "gene", |
| 2358 | + type=str, |
| 2359 | + help="Gene symbol, e.g. BRCA1.", |
| 2360 | + ) |
| 2361 | + parser_g2p.add_argument( |
| 2362 | + "-u", |
| 2363 | + "--uniprot_id", |
| 2364 | + type=str, |
| 2365 | + required=True, |
| 2366 | + help="UniProt accession, e.g. P38398. For '--resource alignment' this is the canonical isoform (e.g. P01130-1). Find it with `gget info`.", |
| 2367 | + ) |
| 2368 | + parser_g2p.add_argument( |
| 2369 | + "-r", |
| 2370 | + "--resource", |
| 2371 | + type=str, |
| 2372 | + choices=["features", "map", "alignment"], |
| 2373 | + default="features", |
| 2374 | + required=False, |
| 2375 | + help=( |
| 2376 | + "Type of information to return (default: features):\n" |
| 2377 | + "'features': per-residue feature table (AlphaFold pLDDT, UniProt sites, etc.).\n" |
| 2378 | + "'map': gene -> transcript -> protein isoform -> structure map.\n" |
| 2379 | + "'alignment': residue-level alignment between two isoforms (requires --isoform)." |
| 2380 | + ), |
| 2381 | + ) |
| 2382 | + parser_g2p.add_argument( |
| 2383 | + "-i", |
| 2384 | + "--isoform", |
| 2385 | + type=str, |
| 2386 | + default=None, |
| 2387 | + required=False, |
| 2388 | + help="Alternative isoform UniProt accession (e.g. P01130-2). Required for '--resource alignment'.", |
| 2389 | + ) |
| 2390 | + parser_g2p.add_argument( |
| 2391 | + "-o", |
| 2392 | + "--out", |
| 2393 | + type=str, |
| 2394 | + required=False, |
| 2395 | + help=( |
| 2396 | + "Path to the file the results will be saved in, e.g. path/to/directory/results.json.\n" |
| 2397 | + "Default: Standard out." |
| 2398 | + ), |
| 2399 | + ) |
| 2400 | + parser_g2p.add_argument( |
| 2401 | + "-csv", |
| 2402 | + "--csv", |
| 2403 | + default=False, |
| 2404 | + action="store_true", |
| 2405 | + required=False, |
| 2406 | + help="Returns results in csv format instead of json.", |
| 2407 | + ) |
| 2408 | + parser_g2p.add_argument( |
| 2409 | + "-q", |
| 2410 | + "--quiet", |
| 2411 | + default=True, |
| 2412 | + action="store_false", |
| 2413 | + required=False, |
| 2414 | + help="Does not print progress information.", |
| 2415 | + ) |
| 2416 | + |
2327 | 2417 | ## gget 8cube subparser |
2328 | 2418 | cube_desc = "Query 8cubeDB (https://eightcubedb.onrender.com/)." |
2329 | 2419 | parser_8cube = parent_subparsers.add_parser( |
@@ -2849,6 +2939,7 @@ def main(): |
2849 | 2939 | "setup": parser_setup, |
2850 | 2940 | "alphafold": parser_alphafold, |
2851 | 2941 | "pdb": parser_pdb, |
| 2942 | + "g2p": parser_g2p, |
2852 | 2943 | "gpt": parser_gpt, |
2853 | 2944 | "cellxgene": parser_cellxgene, |
2854 | 2945 | "elm": parser_elm, |
@@ -3717,6 +3808,40 @@ def main(): |
3717 | 3808 | else: |
3718 | 3809 | print(bgee_results.to_json(orient="records", force_ascii=False, indent=4)) |
3719 | 3810 |
|
| 3811 | + ## g2p return |
| 3812 | + if args.command == "g2p": |
| 3813 | + g2p_results: pd.DataFrame = g2p( |
| 3814 | + args.gene, |
| 3815 | + uniprot_id=args.uniprot_id, |
| 3816 | + resource=args.resource, |
| 3817 | + isoform=args.isoform, |
| 3818 | + verbose=args.quiet, |
| 3819 | + ) |
| 3820 | + |
| 3821 | + if g2p_results is None: |
| 3822 | + return |
| 3823 | + |
| 3824 | + if args.out is not None and args.out != "": |
| 3825 | + # Make saving directory |
| 3826 | + directory = os.path.dirname(args.out) |
| 3827 | + if directory != "": |
| 3828 | + os.makedirs(directory, exist_ok=True) |
| 3829 | + |
| 3830 | + with open(args.out, "w", encoding="utf-8") as f: |
| 3831 | + if args.csv: |
| 3832 | + g2p_results.to_csv(f, index=False) |
| 3833 | + else: |
| 3834 | + g2p_results.to_json( |
| 3835 | + f, orient="records", force_ascii=False, indent=4 |
| 3836 | + ) |
| 3837 | + else: |
| 3838 | + if args.csv: |
| 3839 | + g2p_results.to_csv(sys.stdout, index=False) |
| 3840 | + else: |
| 3841 | + print( |
| 3842 | + g2p_results.to_json(orient="records", force_ascii=False, indent=4) |
| 3843 | + ) |
| 3844 | + |
3720 | 3845 | ## 8cube return |
3721 | 3846 | if args.command == "8cube": |
3722 | 3847 | from .gget_8cube import gene_expression, psi_block, specificity |
|
0 commit comments