示例#1
0
    def all_remote_versions(self):
        """
        Get all Versions from catalogue archive plus latest version.
        :return: list of variables of the type DataSourceVersion
        """

        # get from release catalogue archive
        archive_path = posixpath.join(self.BASEURL, self.BASEPATH, 'archive')

        file_list = downloader.list_ftp_dir(archive_path)
        # get names of release catalogue files
        release_catalog_list = set(
            [x.name for x in file_list if 'RefSeq-release' in x.name])

        # get release numbers from names
        # RefSeq-release20.catalog.gz => 20
        version_numbers = [
            int(x.split('-')[1].split('.')[0].replace('release', ''))
            for x in release_catalog_list
        ]

        # put in DataSourceVersion, add latest
        ds_versions = [DataSourceVersion(x) for x in version_numbers]
        ds_versions.append(self.latest_remote_version())

        return ds_versions
示例#2
0
    def latest_remote_version(self):
        """
        Versions are named with 'year_month', e.g. '2016_01'.
        Data is parsed from 'RELEASE.metalink' file in 'current_release' directory of FTP server.

        :return: Latest remote version.
        :rtype: DataSourceVersion
        """
        current_release_path = posixpath.join(self.UNIPROT_BASEURL,
                                              self.UNIPROT_CURRENT_BASEPATH)

        release_file = posixpath.join(current_release_path, 'RELEASE.metalink')

        # read XML file from server into string
        release_metalink_xml = downloader.get_single_file_ftp(
            release_file).read().decode()

        # replace xml namespace thing to avoid dealing with namespaces
        release_metalink_xml = release_metalink_xml.replace(
            ' xmlns="', ' xmlnamespace="')

        # parse XML
        tree = ElementTree.fromstring(release_metalink_xml)
        version = tree.find('version').text

        return DataSourceVersion(self._date_from_name(version))
示例#3
0
 def latest_remote_version(self):
     """
     Get number of latest release from ftp://ftp.ncbi.nlm.nih.gov/refseq/release/RELEASE_NUMBER.
     :return: DataSourceVersion of latest remote version
     """
     # returns a BytesIO object
     release_file = downloader.get_single_file_ftp(
         'ftp://ftp.ncbi.nlm.nih.gov/refseq/release/RELEASE_NUMBER')
     # to get the text simply 'read' and 'decode'
     release_number = int(release_file.read().decode().rstrip())
     return DataSourceVersion(release_number)
示例#4
0
    def all_remote_versions(self):
        """
        Get all versions available on miRBase FTP server.

        All versions are a directory in /pub/mirbase.

        :return: List of DataSourceVersions available on server.
        :rtype: list(DataSourceVersion)
        """
        versions = [DataSourceVersion(x) for x in VERSION_2_URL]
        return versions
示例#5
0
    def all_remote_versions(self):
        """
        Get all versions available on miRBase FTP server.

        All versions are a directory in /pub/mirbase.

        :return: List of DataSourceVersions available on server.
        :rtype: list(DataSourceVersion)
        """
        ftp_list = downloader.list_ftp_dir(self.mirbase_baseurl,
                                           path=self.mirbase_basepath)
        versions = [DataSourceVersion(x.name) for x in ftp_list]

        return versions
 def latest_remote_version(self):
     """
     Only the latest version is accessible.
     """
     return DataSourceVersion('03-2018')