Skip to content
This repository was archived by the owner on Oct 7, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions cytomine/cytomine.py
Original file line number Diff line number Diff line change
Expand Up @@ -977,3 +977,36 @@ def _process_upload_response(self, response_data: Dict[str, Any]) -> "UploadedFi
uf.images.append(data) # type: ignore

return uf

def import_datasets(
self,
storage_id: int,
dataset_names: Optional[str] = None,
create_project: bool = False,
) -> Dict[str, str]:
"""Import datasets from a given path."""

upload_host = self._base_url(with_base_path=False)

response = self._session.post(
f"{upload_host}/import",
auth=CytomineAuth(
self._public_key,
self._private_key,
upload_host,
"",
),
headers=self._headers(content_type="text/plain"),
params={
"storage_id": storage_id,
"dataset_names": dataset_names,
"create_project": create_project,
},
)

if response.status_code != requests.codes.ok:
self._logger.error("Error during datasets upload: %s", response.text)
return {}

self._logger.info("Datasets uploaded successfully")
return response.json()
51 changes: 51 additions & 0 deletions examples/import_datasets.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
"""Example to import datasets into Cytomine."""

import logging
import sys
from argparse import ArgumentParser

from cytomine import Cytomine
from cytomine.models import StorageCollection

logging.basicConfig()
logger = logging.getLogger("cytomine.client")
logger.setLevel(logging.INFO)


if __name__ == "__main__":
parser = ArgumentParser(description="Example to import datasets into Cytomine")

parser.add_argument(
"--host",
default="demo.cytomine.be",
help="The Cytomine host",
)
parser.add_argument(
"--public_key",
help="The Cytomine public key",
)
parser.add_argument(
"--private_key",
help="The Cytomine private key",
)
params, _ = parser.parse_known_args(sys.argv[1:])

with Cytomine(
host=params.host,
public_key=params.public_key,
private_key=params.private_key,
) as cytomine:
# To import the datasets, we need to know the ID of your Cytomine storage.
storages = StorageCollection().fetch()
storage = next(
filter(lambda storage: storage.user == cytomine.current_user.id, storages)
)
if not storage:
raise ValueError("Storage not found")

response = cytomine.import_datasets(
storage.id,
create_project=True, # Create a project based on folder name
)

print(response)
Loading