Skip to content

WikiLink API Reference

Bases: CachedAPIClient

Client for accessing Wikipedia GHS Safety data links from EPA CompTox Dashboard.

This class provides methods for checking if Wikipedia has GHS Safety data for chemicals and retrieving the corresponding Wikipedia URLs.

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, **kwargs

Delay in seconds between API calls for rate limiting. Default is 0.0 (no delay).

0.0
Example

from pycomptox import WikiLink wiki = WikiLink()

result = wiki.check_existence_by_dtxsid("DTXSID7020182") if result['safetyUrl']: ... print(f"Wikipedia GHS data: {result['safetyUrl']}")

Source code in src/pycomptox/chemical/wikilink.py
class WikiLink(CachedAPIClient):
    """
    Client for accessing Wikipedia GHS Safety data links from EPA CompTox Dashboard.

    This class provides methods for checking if Wikipedia has GHS Safety data
    for chemicals and retrieving the corresponding Wikipedia URLs.

    Args:
        api_key (str, optional): CompTox API key. If not provided, will attempt
            to load from saved configuration or COMPTOX_API_KEY environment variable.
        base_url (str): Base URL for the CompTox API. Defaults to EPA's endpoint.
        time_delay_between_calls (float, **kwargs): Delay in seconds between API calls for
            rate limiting. Default is 0.0 (no delay).

    Example:
        >>> from pycomptox import WikiLink
        >>> wiki = WikiLink()
        >>> 
        >>> # Check if Wikipedia has GHS data for Bisphenol A
        >>> result = wiki.check_existence_by_dtxsid("DTXSID7020182")
        >>> if result['safetyUrl']:
        ...     print(f"Wikipedia GHS data: {result['safetyUrl']}")
    """

    def __init__(
        self,
        api_key: Optional[str] = None,
        base_url: str = "https://comptox.epa.gov/ctx-api",
        time_delay_between_calls: float = 0.0,
        **kwargs
    ):
        """Initialize the WikiLink client."""
        super().__init__(
            api_key=api_key,
            base_url=base_url,
            time_delay_between_calls=time_delay_between_calls,
            **kwargs
        )

    def check_existence_by_dtxsid(self, dtxsid: str, use_cache: Optional[bool] = None) -> Dict[str, Any]:
        """
        Check if Wikipedia has GHS Safety data for a chemical by DTXSID.

        Returns the Wikipedia URL if GHS (Globally Harmonized System) safety data
        is available for the specified chemical, otherwise returns empty safetyUrl.

        Args:
            dtxsid (str): CompTox substance identifier (e.g., "DTXSID7020182")

        Returns:
            dict: Wikipedia link information with fields:
                - dtxsid: DSSTox Substance Identifier
                - safetyUrl: Wikipedia URL for GHS safety data (or empty string if not available)

        Raises:
            ValueError: If chemical not found or invalid DTXSID
            requests.exceptions.RequestException: For API errors

        Example:
            >>> wiki = WikiLink()
            >>> result = wiki.check_existence_by_dtxsid("DTXSID7020182")
            >>> print(f"DTXSID: {result['dtxsid']}")
            >>> if result['safetyUrl']:
            ...     print(f"Wikipedia GHS Safety URL: {result['safetyUrl']}")
            ... else:
            ...     print("No Wikipedia GHS data available")

            # Example output:
            # DTXSID: DTXSID7020182
            # Wikipedia GHS Safety URL: https://en.wikipedia.org/wiki/IISBACLAFKSPIT-UHFFFAOYSA-N#section=wiki-Classification
        """
        endpoint = f"chemical/wikipedia/by-dtxsid/{dtxsid}"
        result = self._make_cached_request(endpoint, use_cache=use_cache)
        # API may return a list, handle both cases
        if isinstance(result, list) and len(result) > 0:
            return result[0]
        return result

    def check_existence_by_dtxsid_batch(self, dtxsids: List[str], use_cache: Optional[bool] = None) -> List[Dict[str, Any]]:
        """
        Check Wikipedia GHS Safety data availability for multiple chemicals in a single request.

        Batch retrieval of Wikipedia URLs for up to 1000 chemicals. More efficient than
        making individual requests when checking multiple chemicals.

        Args:
            dtxsids (List[str]): List of CompTox substance identifiers
                (maximum 1000 DTXSIDs)

        Returns:
            List[dict]: List of Wikipedia link information dictionaries, each containing:
                - dtxsid: DSSTox Substance Identifier
                - safetyUrl: Wikipedia URL for GHS safety data (or empty string if not available)

        Raises:
            ValueError: If more than 1000 DTXSIDs provided
            requests.exceptions.RequestException: For API errors

        Example:
            >>> wiki = WikiLink()
            >>> dtxsids = ["DTXSID7020182", "DTXSID2021315", "DTXSID5020001"]
            >>> results = wiki.check_existence_by_dtxsid_batch(dtxsids)
            >>> 
            >>> for result in results:
            ...     status = "✓ Has data" if result['safetyUrl'] else "✗ No data"
            ...     print(f"{result['dtxsid']}: {status}")
            ...     if result['safetyUrl']:
            ...         print(f"  URL: {result['safetyUrl']}")
            >>> 
            >>> # Count chemicals with Wikipedia GHS data
            >>> with_data = sum(1 for r in results if r['safetyUrl'])
            >>> print(f"\n{with_data}/{len(results)} chemicals have Wikipedia GHS data")
        """
        if len(dtxsids) > 1000:
            raise ValueError(f"Maximum 1000 DTXSIDs allowed, got {len(dtxsids)}")

        endpoint = "chemical/wikipedia/by-dtxsid/"
        return self._make_cached_request(endpoint, method='POST', json=dtxsids, use_cache=use_cache)

__init__(api_key=None, base_url='https://comptox.epa.gov/ctx-api', time_delay_between_calls=0.0, **kwargs)

Initialize the WikiLink client.

Source code in src/pycomptox/chemical/wikilink.py
def __init__(
    self,
    api_key: Optional[str] = None,
    base_url: str = "https://comptox.epa.gov/ctx-api",
    time_delay_between_calls: float = 0.0,
    **kwargs
):
    """Initialize the WikiLink client."""
    super().__init__(
        api_key=api_key,
        base_url=base_url,
        time_delay_between_calls=time_delay_between_calls,
        **kwargs
    )

check_existence_by_dtxsid(dtxsid, use_cache=None)

Check if Wikipedia has GHS Safety data for a chemical by DTXSID.

Returns the Wikipedia URL if GHS (Globally Harmonized System) safety data is available for the specified chemical, otherwise returns empty safetyUrl.

Parameters:

Name Type Description Default
dtxsid str

CompTox substance identifier (e.g., "DTXSID7020182")

required

Returns:

Name Type Description
dict Dict[str, Any]

Wikipedia link information with fields: - dtxsid: DSSTox Substance Identifier - safetyUrl: Wikipedia URL for GHS safety data (or empty string if not available)

Raises:

Type Description
ValueError

If chemical not found or invalid DTXSID

RequestException

For API errors

Example

wiki = WikiLink() result = wiki.check_existence_by_dtxsid("DTXSID7020182") print(f"DTXSID: {result['dtxsid']}") if result['safetyUrl']: ... print(f"Wikipedia GHS Safety URL: {result['safetyUrl']}") ... else: ... print("No Wikipedia GHS data available")

Example output:

DTXSID: DTXSID7020182

Wikipedia GHS Safety URL: https://en.wikipedia.org/wiki/IISBACLAFKSPIT-UHFFFAOYSA-N#section=wiki-Classification

Source code in src/pycomptox/chemical/wikilink.py
def check_existence_by_dtxsid(self, dtxsid: str, use_cache: Optional[bool] = None) -> Dict[str, Any]:
    """
    Check if Wikipedia has GHS Safety data for a chemical by DTXSID.

    Returns the Wikipedia URL if GHS (Globally Harmonized System) safety data
    is available for the specified chemical, otherwise returns empty safetyUrl.

    Args:
        dtxsid (str): CompTox substance identifier (e.g., "DTXSID7020182")

    Returns:
        dict: Wikipedia link information with fields:
            - dtxsid: DSSTox Substance Identifier
            - safetyUrl: Wikipedia URL for GHS safety data (or empty string if not available)

    Raises:
        ValueError: If chemical not found or invalid DTXSID
        requests.exceptions.RequestException: For API errors

    Example:
        >>> wiki = WikiLink()
        >>> result = wiki.check_existence_by_dtxsid("DTXSID7020182")
        >>> print(f"DTXSID: {result['dtxsid']}")
        >>> if result['safetyUrl']:
        ...     print(f"Wikipedia GHS Safety URL: {result['safetyUrl']}")
        ... else:
        ...     print("No Wikipedia GHS data available")

        # Example output:
        # DTXSID: DTXSID7020182
        # Wikipedia GHS Safety URL: https://en.wikipedia.org/wiki/IISBACLAFKSPIT-UHFFFAOYSA-N#section=wiki-Classification
    """
    endpoint = f"chemical/wikipedia/by-dtxsid/{dtxsid}"
    result = self._make_cached_request(endpoint, use_cache=use_cache)
    # API may return a list, handle both cases
    if isinstance(result, list) and len(result) > 0:
        return result[0]
    return result

check_existence_by_dtxsid_batch(dtxsids, use_cache=None)

    Check Wikipedia GHS Safety data availability for multiple chemicals in a single request.

    Batch retrieval of Wikipedia URLs for up to 1000 chemicals. More efficient than
    making individual requests when checking multiple chemicals.

    Args:
        dtxsids (List[str]): List of CompTox substance identifiers
            (maximum 1000 DTXSIDs)

    Returns:
        List[dict]: List of Wikipedia link information dictionaries, each containing:
            - dtxsid: DSSTox Substance Identifier
            - safetyUrl: Wikipedia URL for GHS safety data (or empty string if not available)

    Raises:
        ValueError: If more than 1000 DTXSIDs provided
        requests.exceptions.RequestException: For API errors

    Example:
        >>> wiki = WikiLink()
        >>> dtxsids = ["DTXSID7020182", "DTXSID2021315", "DTXSID5020001"]
        >>> results = wiki.check_existence_by_dtxsid_batch(dtxsids)
        >>> 
        >>> for result in results:
        ...     status = "✓ Has data" if result['safetyUrl'] else "✗ No data"
        ...     print(f"{result['dtxsid']}: {status}")
        ...     if result['safetyUrl']:
        ...         print(f"  URL: {result['safetyUrl']}")
        >>> 
        >>> # Count chemicals with Wikipedia GHS data
        >>> with_data = sum(1 for r in results if r['safetyUrl'])
        >>> print(f"

{with_data}/{len(results)} chemicals have Wikipedia GHS data")

Source code in src/pycomptox/chemical/wikilink.py
def check_existence_by_dtxsid_batch(self, dtxsids: List[str], use_cache: Optional[bool] = None) -> List[Dict[str, Any]]:
    """
    Check Wikipedia GHS Safety data availability for multiple chemicals in a single request.

    Batch retrieval of Wikipedia URLs for up to 1000 chemicals. More efficient than
    making individual requests when checking multiple chemicals.

    Args:
        dtxsids (List[str]): List of CompTox substance identifiers
            (maximum 1000 DTXSIDs)

    Returns:
        List[dict]: List of Wikipedia link information dictionaries, each containing:
            - dtxsid: DSSTox Substance Identifier
            - safetyUrl: Wikipedia URL for GHS safety data (or empty string if not available)

    Raises:
        ValueError: If more than 1000 DTXSIDs provided
        requests.exceptions.RequestException: For API errors

    Example:
        >>> wiki = WikiLink()
        >>> dtxsids = ["DTXSID7020182", "DTXSID2021315", "DTXSID5020001"]
        >>> results = wiki.check_existence_by_dtxsid_batch(dtxsids)
        >>> 
        >>> for result in results:
        ...     status = "✓ Has data" if result['safetyUrl'] else "✗ No data"
        ...     print(f"{result['dtxsid']}: {status}")
        ...     if result['safetyUrl']:
        ...         print(f"  URL: {result['safetyUrl']}")
        >>> 
        >>> # Count chemicals with Wikipedia GHS data
        >>> with_data = sum(1 for r in results if r['safetyUrl'])
        >>> print(f"\n{with_data}/{len(results)} chemicals have Wikipedia GHS data")
    """
    if len(dtxsids) > 1000:
        raise ValueError(f"Maximum 1000 DTXSIDs allowed, got {len(dtxsids)}")

    endpoint = "chemical/wikipedia/by-dtxsid/"
    return self._make_cached_request(endpoint, method='POST', json=dtxsids, use_cache=use_cache)