def getISAAssay(assayNum, studyNum, pathToISATABFile):
    """
    This function returns an Assay object given the assay and study numbers in an ISA file
    Typically, you should use the exploreISA function to check the contents
    of the ISA file and retrieve the assay and study numbers you are interested in!
    :param assayNum: The Assay number (notice it's not zero-based index).
    :type assayNum: int
    :param studyNum: The Study number (notice it's not zero-based index).
    :type studyNum: int
    :param pathToISATABFile: The path to the ISATAB file
    :type pathToISATABFile: str
    :raise FileNotFoundError: If pathToISATABFile does not contain file 'i_Investigation.txt'.
    """
    from isatools import isatab
    import copy
    try:
        isa = isatab.load(pathToISATABFile, skip_load_tables=True)
        std = isa.studies[studyNum - 1]
        return copy.deepcopy(std.assays[assayNum - 1])
    except FileNotFoundError as err:
        raise err
This function returns an Assay object given the assay and study numbers in an ISA file
    Typically, you should use the exploreISA function to check the contents
    of the ISA file and retrieve the assay and study numbers you are interested in!
    :param assayNum: The Assay number (notice it's not zero-based index).
    :type assayNum: int
    :param studyNum: The Study number (notice it's not zero-based index).
    :type studyNum: int
    :param pathToISATABFile: The path to the ISATAB file
    :type pathToISATABFile: str
    :raise FileNotFoundError: If pathToISATABFile does not contain file 'i_Investigation.txt'.