Source code for acore.io.pride
"""Downlaod data from PRIDE database."""
from pathlib import Path
import requests
from .ftp import download_from_ftp
[docs]
def download_PRIDE_data(
pxd_id,
file_name,
to=".",
user="",
password="",
date_field="publicationDate",
overwrite: bool = False,
) -> dict:
"""
This function downloads a project file from the PRIDE repository. To see more of the
pride API, have a look at
https://www.ebi.ac.uk/pride/ws/archive/v3/webjars/swagger-ui/index.html
or EBI's commandline tool pridepy
https://github.com/PRIDE-Archive/pridepy
:param str pxd_id: PRIDE project identifier (id. PXD013599).
:param str file_name: name of the file to dowload
:param str to: local directory where the file should be downloaded
:param str user: username to access biomedical database server if required.
:param str password: password to access biomedical database server if required.
:param str date_field: projects deposited in PRIDE are search based on date, either
submissionData or publicationDate (default)
:param bool overwrite: if False (default), skip the download if the file already
exists in the target directory. The project metadata is returned regardless.
"""
ftp_pride = ( # same as data ["_links"]["datasetFtpUrl"]["href"]
"ftp://ftp.pride.ebi.ac.uk/pride/data/archive/YEAR/MONTH/PXDID/FILE_NAME"
)
url_pride_api = "http://www.ebi.ac.uk/pride/ws/archive/v3/projects/" + pxd_id
data = None
r = requests.get(url_pride_api, timeout=60)
data = r.json()
submission_date = data[date_field]
year, month, _ = submission_date.split("-")
ftp_url = (
ftp_pride.replace("YEAR", year)
.replace("MONTH", month)
.replace("PXDID", pxd_id)
.replace("FILE_NAME", file_name)
)
target = Path(to) / file_name
if target.exists() and not overwrite:
print(f"File already downloaded, skipping: {target}")
else:
download_from_ftp(ftp_url, user, password, to, file_name)
return data