ToxValDBCancer API Reference¶
pycomptox.hazard.toxvaldbcancer.ToxValDBCancer
¶
Bases: CachedAPIClient
Client for accessing ToxValDB cancer summary data from EPA CompTox Dashboard.
A carcinogen is a substance that may cause cancer and pose a health hazard. Carcinogens are subject to specific controls and regulations. National and international health agencies evaluate new and existing chemicals to determine if they are likely to be carcinogens through a process called cancer hazard identification. This process combines human and animal data with supporting evidence to characterize the weight-of-evidence (WOE) regarding the agent's potential as a human carcinogen.
The general categories recognized by the guidelines are: - Carcinogenic to humans - Likely to be carcinogenic to humans - Suggestive evidence of carcinogenic potential
This class provides methods for retrieving summary-level cancer data associated with chemicals.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
api_key
|
str
|
CompTox API key. If not provided, will attempt to load from saved configuration or COMPTOX_API_KEY environment variable. |
None
|
base_url
|
str
|
Base URL for the CompTox API. Defaults to EPA's endpoint. |
'https://comptox.epa.gov/ctx-api/'
|
time_delay_between_calls
|
float
|
Delay in seconds between API calls for rate limiting. Default is 0.0 (no delay). |
0.0
|
use_cache
|
bool
|
Whether to use caching by default. Default is True. |
required |
Example
from pycomptox.hazard import ToxValDBCancer cancer = ToxValDBCancer()
Get cancer data for a chemical¶
data = cancer.get_data_by_dtxsid("DTXSID0021125") if data: ... print(f"Cancer classification: {data[0].get('classification')}")
Source code in src/pycomptox/hazard/toxvaldbcancer.py
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 | |
__init__(api_key=None, base_url='https://comptox.epa.gov/ctx-api/', time_delay_between_calls=0.0, **kwargs)
¶
Initialize the ToxValDBCancer client.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
api_key
|
Optional[str]
|
CompTox API key (optional, will be loaded from config if not provided) |
None
|
base_url
|
str
|
Base URL for the CompTox API |
'https://comptox.epa.gov/ctx-api/'
|
time_delay_between_calls
|
float
|
Delay between API calls in seconds |
0.0
|
kwargs
|
Any
|
Additional arguments for CachedAPIClient (cache_manager, use_cache) |
{}
|
Raises:
| Type | Description |
|---|---|
ValueError
|
If no API key is provided or found in configuration |
Source code in src/pycomptox/hazard/toxvaldbcancer.py
get_data_by_dtxsid(dtxsid, use_cache=None)
¶
Get cancer summary data by DTXSID.
Retrieves cancer hazard summary data for a specific chemical identified by its DSSTox Substance Identifier (DTXSID). This includes cancer classifications, weight of evidence assessments, and carcinogenicity evaluations from various regulatory agencies and scientific organizations.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dtxsid
|
str
|
DSSTox Substance Identifier (e.g., 'DTXSID0021125') |
required |
use_cache
|
Optional[bool]
|
Whether to use cache for this request. If None, uses the instance default setting. |
None
|
Returns:
| Type | Description |
|---|---|
List[Dict[str, Any]]
|
List of dictionaries containing cancer summary data with fields such as: - dtxsid (str): DSSTox Substance Identifier - classification (str): Cancer classification - source (str): Source of the assessment - woe (str): Weight of evidence - cancerType (str): Type of cancer - species (str): Test species - studyType (str): Type of study - evidence (str): Evidence description - route (str): Exposure route - Notes: Exact fields may vary based on the data source |
Raises:
| Type | Description |
|---|---|
ValueError
|
If dtxsid is not a valid non-empty string |
PermissionError
|
If API key is invalid |
RuntimeError
|
For other API errors |
Example
from pycomptox.hazard import ToxValDBCancer cancer = ToxValDBCancer()
Get cancer data for benzene¶
data = cancer.get_data_by_dtxsid("DTXSID0021125")
if data: ... for record in data: ... print(f"Source: {record.get('source')}") ... print(f"Classification: {record.get('classification')}") ... if record.get('woe'): ... print(f"Weight of Evidence: {record['woe']}") ... if record.get('cancerType'): ... print(f"Cancer Type: {record['cancerType']}") ... print() else: ... print("No cancer data available for this chemical")
Note
- Not all chemicals have cancer assessment data
- Data may come from multiple sources (EPA, IARC, NTP, etc.)
- Classifications and terminology vary by source
- Weight of Evidence (WoE) indicates the strength and quality of evidence supporting the carcinogenicity assessment
Source code in src/pycomptox/hazard/toxvaldbcancer.py
get_data_by_dtxsid_batch(dtxsids, use_cache=None)
¶
Get cancer summary data for multiple chemicals in a single request.
Batch retrieval of cancer hazard summary data for up to 200 chemicals. More efficient than making individual requests when querying multiple chemicals.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dtxsids
|
List[str]
|
List of DSSTox Substance Identifiers (max 200) |
required |
use_cache
|
Optional[bool]
|
Whether to use cache for this request. If None, uses the instance default setting. |
None
|
Returns:
| Type | Description |
|---|---|
List[Dict[str, Any]]
|
List of dictionaries containing cancer summary data for all |
List[Dict[str, Any]]
|
requested chemicals. Each entry includes similar fields as |
List[Dict[str, Any]]
|
get_data_by_dtxsid(). |
Raises:
| Type | Description |
|---|---|
ValueError
|
If dtxsids list is empty or contains more than 200 entries |
PermissionError
|
If API key is invalid |
RuntimeError
|
For other API errors |
Example
from pycomptox.hazard import ToxValDBCancer cancer = ToxValDBCancer()
Get cancer data for multiple chemicals¶
dtxsids = ["DTXSID0021125", "DTXSID7020182", "DTXSID0020032"] batch_data = cancer.get_data_by_dtxsid_batch(dtxsids)
Group by chemical¶
by_chemical = {} for record in batch_data: ... dtxsid = record['dtxsid'] ... if dtxsid not in by_chemical: ... by_chemical[dtxsid] = [] ... by_chemical[dtxsid].append(record)
Display summary¶
for dtxsid, records in by_chemical.items(): ... print(f"{dtxsid}: {len(records)} cancer assessment(s)") ... for record in records: ... print(f" - {record.get('source')}: {record.get('classification')}")
Note
- Maximum 200 DTXSIDs per request
- Results may include multiple assessments per chemical from different sources
- Batch requests are more efficient than individual queries