{"id":20780731,"url":"https://github.com/coderobe/ruby-pubchem_api","last_synced_at":"2026-02-14T14:06:36.917Z","repository":{"id":261503047,"uuid":"884500464","full_name":"coderobe/ruby-pubchem_api","owner":"coderobe","description":"Ruby PubChem PUG REST api wrapper","archived":false,"fork":false,"pushed_at":"2024-12-25T12:24:20.000Z","size":14,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-09T16:08:54.622Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/coderobe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-06T21:35:51.000Z","updated_at":"2024-12-25T12:24:23.000Z","dependencies_parsed_at":"2024-11-06T22:36:04.940Z","dependency_job_id":null,"html_url":"https://github.com/coderobe/ruby-pubchem_api","commit_stats":null,"previous_names":["coderobe/ruby-pubchem_api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderobe%2Fruby-pubchem_api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderobe%2Fruby-pubchem_api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderobe%2Fruby-pubchem_api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/coderobe%2Fruby-pubchem_api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/coderobe","download_url":"https://codeload.github.com/coderobe/ruby-pubchem_api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248065283,"owners_count":21041871,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-17T13:39:00.377Z","updated_at":"2026-02-14T14:06:31.887Z","avatar_url":"https://github.com/coderobe.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# PubChemAPI Ruby Library\n\nA comprehensive Ruby library for interacting with the [PubChem PUG REST API](https://pubchem.ncbi.nlm.nih.gov/docs/pug-rest). This library provides a user-friendly interface to access PubChem data and services, mapping API responses onto Ruby classes for seamless integration into your applications.\n\n\n**Warning:** This implementation is unfinished and has known issues. Basic usage is functional, no guarantees beyond that.\n\n## Table of Contents\n\n- [Features](#features)\n- [Installation](#installation)\n- [Getting Started](#getting-started)\n  - [Initialization](#initialization)\n  - [Usage Examples](#usage-examples)\n    - [Retrieve Compound Data by CID](#retrieve-compound-data-by-cid)\n    - [Retrieve Compound Data by Name](#retrieve-compound-data-by-name)\n    - [Perform a Similarity Search](#perform-a-similarity-search)\n    - [Retrieve Taxonomy Summary by TaxID](#retrieve-taxonomy-summary-by-taxid)\n- [Available Methods](#available-methods)\n- [Error Handling](#error-handling)\n- [License](#license)\n\n## Features\n\n- **Comprehensive Endpoint Coverage**: Access various PubChem resources such as compounds, substances, assays, genes, proteins, and more.\n- **Object Mapping**: API responses are mapped to Ruby classes, allowing easy access to data without handling raw JSON or XML.\n- **Error Handling**: Custom `APIError` class provides detailed error messages and codes.\n- **Parameter Validation**: Ensures that only valid parameters are sent to the API.\n- **Extensible Design**: The code structure should make it easy to extend the library with additional endpoints or complex data mapping, in case something is missing.\n\n## Installation\n\nAdd this line to your application's `Gemfile`:\n\n```ruby\ngem 'pubchem_api'\n```\n\nOr install it yourself as:\n\n```bash\n$ gem install pubchem_api\n```\n\n**Note**: This gem depends on httparty and nokogiri\n\n```bash\n$ gem install httparty nokogiri\n```\n\n## Getting Started\n\n### Initialization\n\nRequire the library in your Ruby script:\n\n```ruby\nrequire 'pubchem_api'\n```\n\nInitialize the client:\n\n```ruby\nclient = PubChemAPI::Client.new\n```\n\n### Usage Examples\n\n#### Retrieve Compound Data by CID\n\n```ruby\nbegin\n  compound = client.get_compound_by_cid(2244, 'record')\n  puts \"CID: #{compound.cid}\"\n  puts \"Molecular Formula: #{compound.molecular_formula}\"\n  puts \"Molecular Weight: #{compound.molecular_weight}\"\n  puts \"Canonical SMILES: #{compound.canonical_smiles}\"\n  puts \"InChIKey: #{compound.inchi_key}\"\nrescue PubChemAPI::APIError =\u003e e\n  puts \"API Error (#{e.code}): #{e.message}\"\nend\n```\n\n#### Retrieve Compound Data by Name\n\n```ruby\nbegin\n  compound = client.get_compound_by_name('aspirin', 'record')\n  puts \"CID: #{compound.cid}\"\n  puts \"Molecular Formula: #{compound.molecular_formula}\"\n  puts \"Molecular Weight: #{compound.molecular_weight}\"\nrescue PubChemAPI::APIError =\u003e e\n  puts \"API Error (#{e.code}): #{e.message}\"\nend\n```\n\n#### Perform a Similarity Search\n\n```ruby\nbegin\n  options = {}\n  options['Threshold'] = 90\n  results = client.compound_structure_search(\n    'fastsimilarity_2d',\n    'smiles',\n    'CC(=O)OC1=CC=CC=C1C(=O)O',\n    'JSON',\n    options\n  )\n  cids = results['IdentifierList']['CID']\n  puts \"Found CIDs: #{cids.join(', ')}\"\nrescue PubChemAPI::APIError =\u003e e\n  puts \"API Error (#{e.code}): #{e.message}\"\nend\n```\n\n#### Retrieve Taxonomy Summary by TaxID\n\n```ruby\nbegin\n  taxonomy = client.get_taxonomy_summary_by_taxid(9606)\n  puts \"Scientific Name: #{taxonomy.scientific_name}\"\n  puts \"Common Name: #{taxonomy.common_name}\"\n  puts \"Rank: #{taxonomy.rank}\"\nrescue PubChemAPI::APIError =\u003e e\n  puts \"API Error (#{e.code}): #{e.message}\"\nend\n```\n\n## Available Methods\n\n### Compounds\n\n- `get_compound_by_cid(cid, operation, output = DEFAULT_OUTPUT, options = {})`\n- `get_compound_by_name(name, operation, output = DEFAULT_OUTPUT, options = {})`\n- `get_compound_conformers(cid, output = DEFAULT_OUTPUT, options = {})`\n- `compound_structure_search(search_type, namespace, identifier, output = DEFAULT_OUTPUT, options = {})`\n\n### Substances\n\n- `get_substance_by_sid(sid, operation, output = DEFAULT_OUTPUT, options = {})`\n\n### Assays\n\n- `get_assay_by_aid(aid, operation, output = DEFAULT_OUTPUT, options = {})`\n- `get_assay_doseresponse(aid, output = DEFAULT_OUTPUT, options = {})`\n- `get_assay_targets(aid, target_type, output = DEFAULT_OUTPUT, options = {})`\n\n### Genes\n\n- `get_gene_summary_by_geneid(geneid, output = DEFAULT_OUTPUT, options = {})`\n- `get_gene_summary_by_synonym(synonym, output = DEFAULT_OUTPUT, options = {})`\n\n### Proteins\n\n- `get_protein_summary_by_synonym(synonym, output = DEFAULT_OUTPUT, options = {})`\n\n### Taxonomy\n\n- `get_taxonomy_summary_by_taxid(taxid, output = DEFAULT_OUTPUT, options = {})`\n\n### Pathways\n\n- `get_pathway_summary_by_pwacc(pwacc, output = DEFAULT_OUTPUT, options = {})`\n\n### Classification\n\n- `get_classification_nodes(hnid, idtype, output = DEFAULT_OUTPUT, list_return, options = {})`\n\n### Lists and Pagination\n\n- `get_compounds_by_listkey(listkey, output = DEFAULT_OUTPUT, options = {})`\n\n## Error Handling\n\nThe library raises a `PubChemAPI::APIError` exception for API errors:\n\n```ruby\nbegin\n  # API call\nrescue PubChemAPI::APIError =\u003e e\n  puts \"API Error (#{e.code}): #{e.message}\"\nend\n```\n\n`APIError` definition:\n\n- `APIError.code`: HTTP status code\n- `APIError.message`: Error message from the API\n\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE).\n\n---\n\n*Disclaimer: This library is not affiliated with or endorsed by PubChem. Use responsibly.*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoderobe%2Fruby-pubchem_api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcoderobe%2Fruby-pubchem_api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcoderobe%2Fruby-pubchem_api/lists"}