Skip to content
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
325 changes: 325 additions & 0 deletions nb.ipynb
Original file line number Diff line number Diff line change
@@ -0,0 +1,325 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "24ac830c",
"metadata": {},
"source": [
"## Initialize"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "841c00cd",
"metadata": {
"vscode": {
"languageId": "plaintext"
}
},
"outputs": [],
"source": [
"from rayyan import StatelessRayyan as client\n",
"from rayyan.review import Review\n",
"from rayyan.mylib import MyLib\n",
"\n",
"access_token = \"\"\n",
"_client = client(access_token, url=\"https://rayyan.ai\")\n",
"mylib_client = client(access_token, url=\"https://mylib.rayyan.ai\")\n",
"\n",
"_review = Review(_client)\n",
"my_lib = MyLib(mylib_client)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d8675105",
"metadata": {
"vscode": {
"languageId": "plaintext"
}
},
"outputs": [],
"source": [
"# List articles in my library\n",
"print(\"Listing a directory in my library\")\n",
"resp = my_lib.list_directory(\"/\")\n",
"print(resp)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8f18454f",
"metadata": {
"vscode": {
"languageId": "plaintext"
}
},
"outputs": [],
"source": [
"# Variables reused across tests\n",
"review_id = 1646756\n",
"stage_id = 177729 # Data Extraction\n",
"sample_id = \"27989\"\n",
"question_id = 20170\n",
"criterion_id = 490407"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e3e31a28",
"metadata": {
"vscode": {
"languageId": "plaintext"
}
},
"outputs": [],
"source": [
"# Import aricle from mylib\n",
"file = {\n",
" \"key\": \"pubmed-covid-set-22.txt\",\n",
" \"size\": 40667022,\n",
" \"metadata\": {\n",
" \"metadata_signature\": \"dada04d571e3c2f3c3237c01a2e2de90c2b1068d83d4f95ec9eaf2e70707a81f\",\n",
" \"total_articles\": \"10000\",\n",
" \"type\": \"ref\"\n",
" }\n",
" }\n",
"\n",
"file = resp['items'][8]\n",
"file_parsed = {\n",
" \"key\": file[\"key\"],\n",
" \"size\": file[\"file_size\"],\n",
" \"metadata\": {\n",
" \"metadata_signature\": file[\"metadata\"][\"metadata_signature\"],\n",
" \"total_articles\": file[\"metadata\"][\"total_articles\"],\n",
" \"type\": file[\"metadata\"][\"type\"]\n",
" }\n",
"}\n",
"resp = _review.import_from_mylibrary_to_review(review_id=review_id, file=file_parsed)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cb0c1556",
"metadata": {
"vscode": {
"languageId": "plaintext"
}
},
"outputs": [],
"source": [
"# Full text\n",
"print(\"Listing articles with full text\")\n",
"resp = _review.list_articles_with_fulltext(review_id=review_id)\n",
"print(resp)\n",
"\n",
"full_text_id = resp['data'][0]['fulltexts'][0]['id']\n",
"resp = _review.get_fulltext_link(full_text_id)\n",
"print(resp['url'])"
]
},
{
"cell_type": "markdown",
"id": "c01a34b4",
"metadata": {},
"source": [
"## Testing Questions, Criteria, MyLibrary Import and AI Screener endpoints"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "70fe0b60",
"metadata": {
"vscode": {
"languageId": "plaintext"
}
},
"outputs": [],
"source": [
"# --- Samples ---\n",
"print(\"Creating sample...\")\n",
"resp = _review.create_sample(\n",
" review_id=review_id,\n",
" samples=[{\"name\": \"created_by_python_sdk\", \"total\": 10}]\n",
")\n",
"print(resp)\n",
"\n",
"print(\"Listing samples...\")\n",
"resp = _review.list_samples(review_id=review_id)\n",
"print(resp)\n",
"\n",
"resp = _review.list_stages(review_id=review_id)\n",
"print(resp)\n",
"\n",
"print(\"Updating sample...\")\n",
"resp = _review.update_sample(\n",
" review_id=review_id,\n",
" sample_id=sample_id,\n",
" sample={\"name\": \"Name Changed by python sdk\"}\n",
")\n",
"print(resp)\n",
"\n",
"print(\"Deleting sample...\")\n",
"resp = _review.delete_sample(\n",
" review_id=review_id,\n",
" sample_id=sample_id\n",
")\n",
"print(resp)\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "b039c4ad",
"metadata": {},
"source": [
"# --- Questions ---\n",
"print(\"Creating question...\")\n",
"resp = _review.create_question(\n",
" review_id=review_id,\n",
" stage_id=stage_id,\n",
" question={\n",
" \"type\": \"string\",\n",
" \"title\": \"Added via Python SDK\",\n",
" \"section_name\": \"Methods\",\n",
" \"required\": True,\n",
" \"body\": \"Describe your inclusion criteria\"\n",
" }\n",
")\n",
"print(resp)\n",
"\n",
"print(\"Listing questions...\")\n",
"resp = _review.list_questions(review_id=review_id, stage_id=stage_id)\n",
"print(resp)\n",
"\n",
"print(\"Getting a specific question...\")\n",
"resp = _review.get_question(review_id=review_id, stage_id=stage_id, question_id=question_id)\n",
"print(resp)\n",
"\n",
"print(\"Updating question...\")\n",
"resp = _review.update_question(\n",
" review_id=review_id,\n",
" stage_id=stage_id,\n",
" question_id=question_id,\n",
" question={\n",
" \"type\": \"string\",\n",
" \"title\": \"Updated Title by SDK\",\n",
" \"section_name\": \"Results\",\n",
" \"required\": False,\n",
" \"body\": \"Updated body content\"\n",
" }\n",
")\n",
"print(resp)\n",
"\n",
"print(\"Deleting question...\")\n",
"resp = _review.delete_question(review_id=review_id, stage_id=stage_id, question_id=question_id)\n",
"print(resp)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3e6407b4",
"metadata": {
"vscode": {
"languageId": "plaintext"
}
},
"outputs": [],
"source": [
"\n",
"# --- Criteria ---\n",
"print(\"Creating criterion...\")\n",
"resp = _review.create_criterion(\n",
" review_id=review_id,\n",
" criterion={\"kind\": \"inclusion\", \"text\": \"Must include RCTs\"}\n",
")\n",
"print(resp)\n",
"\n",
"print(\"Listing criteria...\")\n",
"resp = _review.list_criteria(review_id=review_id)\n",
"print(resp)\n",
"\n",
"print(\"Updating criterion...\")\n",
"resp = _review.update_criterion(\n",
" review_id=review_id,\n",
" criterion_id=criterion_id,\n",
" criterion={\"kind\": \"exclusion\", \"text\": \"Exclude case reports\"}\n",
")\n",
"print(resp)\n",
"\n",
"print(\"Deleting criterion...\")\n",
"resp = _review.delete_criterion(review_id=review_id, criterion_id=criterion_id)\n",
"print(resp)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8ef8a2c5",
"metadata": {
"vscode": {
"languageId": "plaintext"
}
},
"outputs": [],
"source": [
"# --- MyLibrary Import ---\n",
"print(\"Importing file to library...\")\n",
"resp = _review.import_to_library(\n",
" review_id=review_id,\n",
" file={\n",
" \"key\": \"/mnt/c/Users/amamd/Downloads/pubmed-covid-set-19.txt\",\n",
" \"size\": 717,\n",
" \"metadata\": {\n",
" \"metadata_signature\": \"bea0cb4574d0a131bd0***\",\n",
" \"total_articles\": \"3\",\n",
" \"type\": \"ref\"\n",
" }\n",
" }\n",
")\n",
"print(resp)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "3d21fa3b",
"metadata": {
"vscode": {
"languageId": "plaintext"
}
},
"outputs": [],
"source": [
"# --- AI Screener ---\n",
"print(\"Creating AI screener...\")\n",
"resp = _review.create_ai_screener(\n",
" review_id=review_id,\n",
" extra={\n",
" }\n",
")\n",
"print(resp)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"language": "python",
"name": "python3"
},
"language_info": {
"name": "python",
"version": "3.12.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
18 changes: 18 additions & 0 deletions rayyan/mylib.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@

from rayyan.types import RayyanProtocol as Rayyan


class MyLib:
def __init__(self, rayyan: Rayyan):
self.__rayyan__ = rayyan

def list_directory(self, path) -> dict:
"""List all files in the user's My Library.

Returns:
dict: A dictionary containing the list of files in My Library.
"""
return self.__rayyan__.request.request_handler(
method="GET",
path=f"/ls/{path}"
)
4 changes: 4 additions & 0 deletions rayyan/paths.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,9 @@
THIRD_PARTY_AUTH = "/api/v1/third_party_auth"
# ________review________
REVIEWS_ROUTE = "/api/v1/reviews"
# ________fulltext________
FULLTEXT_ROUTE = "/api/v1/fulltexts"
# ________my library________
MYLIBRARY_ROUTE = "/api/v1/my_library/import"
# ________admin________
ADMIN_ROUTE = "/admin"
Loading