{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**DEV**:\n",
    "* **where to run**: thesis-remote (Workspace) [SSH: login*.pegasus.kl.dfki.de]\n",
    "* **kernel**: appraise-env (Python 3.10.6)\n",
    "* **directory**: `~/Appraise`\n",
    "* Appraise server (`manage.py runserver`) has to be running simultaneously\n",
    "\n",
    "**PROD**:\n",
    "* **where to run**: um-server (Workspace) [SSH: um]\n",
    "* **kernel**: Python 3.8.10\n",
    "* `python3 manage.py runserver` running simultaneously"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import sys\n",
    "sys.path.append(\"/home/juliafalcao/\")\n",
    "sys.path.append(\"/home/juliafalcao/experiments\")\n",
    "\n",
    "from experiments.constants import * \n",
    "from experiments.utils import *\n",
    "\n",
    "from random import randint\n",
    "from collections import OrderedDict\n",
    "import json"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "lp folder: /home/juliafalcao/thesis_data/es-eu\n",
      "batches filename: ref-batches.es-eu.json\n"
     ]
    }
   ],
   "source": [
    "SRC, TGT = SPANISH, BASQUE\n",
    "# SRC, TGT = ENGLISH, MALTESE\n",
    "\n",
    "LP_FOLDER = f\"/home/juliafalcao/thesis_data/{SRC}-{TGT}\"\n",
    "# BATCHES_FILENAME = f\"batches.{SRC}-{TGT}.json\"\n",
    "BATCHES_FILENAME = f\"ref-batches.{SRC}-{TGT}.json\"\n",
    "BATCHES_PATH = f\"{LP_FOLDER}/{BATCHES_FILENAME}\"\n",
    "print(\"lp folder:\", LP_FOLDER)\n",
    "print(\"batches filename:\", BATCHES_FILENAME)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Create batches"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# configurations\n",
    "_task_definition = OrderedDict({\n",
    "    \"TGT\": 80,\n",
    "    \"CHK\": 0,\n",
    "    \"REF\": 10,\n",
    "    \"BAD\": 10,\n",
    "})\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "src file: /home/juliafalcao/thesis_data/es-eu/src.es\n",
      "ref file: /home/juliafalcao/thesis_data/es-eu/ref.eu\n",
      "/systems: []\n"
     ]
    }
   ],
   "source": [
    "TASK_DEFINITION = \":\".join(map(str, _task_definition.values()))\n",
    "SRC_FILE = f\"{LP_FOLDER}/src.{SRC}\"\n",
    "REF_FILE = f\"{LP_FOLDER}/ref.{TGT}\"\n",
    "SYSTEMS_FOLDER = f\"{LP_FOLDER}/systems/\"\n",
    "\n",
    "print(\"src file:\", SRC_FILE)\n",
    "print(\"ref file:\", REF_FILE)\n",
    "print(\"/systems:\", os.listdir(SYSTEMS_FOLDER))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Using task definition: (80, 0, 10, 10)\n",
      "Traceback (most recent call last):\n",
      "  File \"manage.py\", line 34, in <module>\n",
      "    execute_from_command_line(sys.argv)\n",
      "  File \"/home/juliafalcao/appraise-env/lib/python3.8/site-packages/django/core/management/__init__.py\", line 419, in execute_from_command_line\n",
      "    utility.execute()\n",
      "  File \"/home/juliafalcao/appraise-env/lib/python3.8/site-packages/django/core/management/__init__.py\", line 413, in execute\n",
      "    self.fetch_command(subcommand).run_from_argv(self.argv)\n",
      "  File \"/home/juliafalcao/appraise-env/lib/python3.8/site-packages/django/core/management/base.py\", line 354, in run_from_argv\n",
      "    self.execute(*args, **cmd_options)\n",
      "  File \"/home/juliafalcao/appraise-env/lib/python3.8/site-packages/django/core/management/base.py\", line 398, in execute\n",
      "    output = self.handle(*args, **options)\n",
      "  File \"/var/www/rival/public_html/translation-eval/EvalData/management/commands/CreateDirectAssessmentData.py\", line 285, in handle\n",
      "    source_file = Command._load_text_from_file(\n",
      "  File \"/var/www/rival/public_html/translation-eval/EvalData/management/commands/CreateDirectAssessmentData.py\", line 749, in _load_text_from_file\n",
      "    with open(file_path, encoding=encoding) as input_file:\n",
      "FileNotFoundError: [Errno 2] No such file or directory: '/home/juliafalcao/thesis_data/es-eu/src.es'\n"
     ]
    }
   ],
   "source": [
    "# call the command from bash but using variables set in Python\n",
    "! python manage.py CreateDirectAssessmentData \\\n",
    "    100 \\\n",
    "    $SRC.code3 \\\n",
    "    $TGT.code3 \\\n",
    "    $LP_FOLDER/src.$SRC \\\n",
    "    $LP_FOLDER/ref.$TGT \\\n",
    "    $SYSTEMS_FOLDER \\\n",
    "    $BATCHES_PATH \\\n",
    "    --task-definition $TASK_DEFINITION \\\n",
    "    --required-annotations 3 \\\n",
    "    --source-based \\\n",
    "    --all-batches"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Create campaign"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "campaign name: SpaEusV2\n"
     ]
    }
   ],
   "source": [
    "# configuration\n",
    "\n",
    "# CAMPAIGN_NAME = f\"{SRC.code3.capitalize()}{TGT.code3.capitalize()}V1\"\n",
    "CAMPAIGN_NAME = \"SpaEusV2\"\n",
    "print(\"campaign name:\", CAMPAIGN_NAME)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "manifest = {\n",
    "    \"CAMPAIGN_URL\": \"http://127.0.0.1:8000/dashboard/sso/\",\n",
    "    \"CAMPAIGN_NAME\": CAMPAIGN_NAME,\n",
    "    \"CAMPAIGN_KEY\": CAMPAIGN_NAME,\n",
    "    \"CAMPAIGN_NO\": randint(0,100),\n",
    "    \"REDUNDANCY\": 1,\n",
    "\n",
    "    \"TASKS_TO_ANNOTATORS\": [\n",
    "        [ SRC.code3, TGT.code3, \"uniform\", 1, 1 ]\n",
    "    ]\n",
    "}\n",
    "\n",
    "assert type(manifest[\"TASKS_TO_ANNOTATORS\"]) == list and type(manifest[\"TASKS_TO_ANNOTATORS\"][0]) == list"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "MANIFEST_PATH = f\"{LP_FOLDER}/manifest.json\"\n",
    "\n",
    "with open(MANIFEST_PATH, mode=\"w+\") as f:\n",
    "    json.dump(manifest, f, indent=4)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "JSON manifest path: '/home/juliafalcao/thesis_data/es-eu/manifest.json'\n",
      "CSV output path: None\n",
      "Excel output path: None\n",
      "No task type found in the manifest file, assuming it is \"Direct\". If this is incorrect, define \"TASK_TYPE\" in the manifest file.\n",
      "### Running InitCampaign\n",
      "All languages: [('spa', 'eus')]\n",
      "Identified superuser: falcao\n",
      "Processed Market/Metadata instances\n",
      "### Creating a new campaign\n",
      "- '/home/juliafalcao/thesis_data/es-eu/ref-batches.es-eu.json'\n",
      "Batch: /home/juliafalcao/thesis_data/es-eu/ref-batches.es-eu.json\n",
      "  Market: spa_eus_SpaEusV2\n",
      "  Metadata: spa->eus/SpaEusV2[\"1.0\"]\n",
      "Uploaded file name: Batches/ref-batches.es-eu.json\n",
      "Campaign name: SpaEusV2\n",
      "### Running validatecampaigndata\n",
      "Campaign name: SpaEusV2\n",
      "Batch name: Batches/ref-batches.es-eu.json\n",
      "Validated 1 batches\n",
      "### Running ProcessCampaignData\n",
      "Batches/ref-batches.es-eu.json 1\n",
      "6 ref.eu\n",
      "137 b'Egileak egiazkotasuna bilatu behar du bere gaia tratatzean... bere pentsakera adierazteko eskubidea izan, bere ideiak bere hitzetan eman.'\n",
      "193 b'Orain beste espezie batzuk beren geneek egokitzen diren leku mugatuetan bizi diren bezala, ikaskuntza soziala eta hizkuntza baliatuz, guk eralda dezakegu ingurumena gure beharretara egokitzeko.'\n",
      "211 b'Estatu guztien onespen bateratua behar zuten artikuluak aldatzeko aukera izan aurretik, eta estatuek gobernu zentrala halako arintasunez hartzen zuten, ezen haien ordezkariak maiz agertu ere ez baitziren egiten.'\n",
      "276 b'Ibilgailuan botika-kutxa txiki bat eramatea komenigarria da. Botatzeko eskularru batzuk, kotoi prentsatua, konpresa bat, benda eta gasa, goma elastiko bat, esparatrapua, guraizeak, pintzak, kateorratz bat eta koilaratxoa dira botikinean eraman behar ditugun elementu nagusiak.'\n",
      "Batches/ref-batches.es-eu.json 2\n",
      "Batches/ref-batches.es-eu.json 3\n",
      "Batches/ref-batches.es-eu.json 4\n",
      "Batches/ref-batches.es-eu.json 5\n",
      "288 b'Zentroa zabalik dago, baita ere, beste erabiltzaile batzuentzat, honako hauentzat, esaterako: administrazio publikoak, entitate publikoak eta pribatuak, sektoreko erakundeak eta arlo horretan lanean ari diren edo etorkizunean hori egiteko asmoa duten talde zientifikoak eta profesionalak.'\n",
      "Batches/ref-batches.es-eu.json 6\n",
      "Batches/ref-batches.es-eu.json 7\n",
      "Batches/ref-batches.es-eu.json 8\n",
      "Batches/ref-batches.es-eu.json 9\n",
      "Batches/ref-batches.es-eu.json 10\n",
      "Batches/ref-batches.es-eu.json 11\n",
      "Batches/ref-batches.es-eu.json 12\n",
      "Batches/ref-batches.es-eu.json 13\n",
      "Batches/ref-batches.es-eu.json 14\n",
      "Batches/ref-batches.es-eu.json 15\n",
      "0:00:00.013970\n",
      "Campaign activated\n",
      "### Running UpdateEvalDataModels\n",
      "\n",
      "[UpdateEvalDataModels.py]\n",
      "\n",
      "\n",
      "[INIT]\n",
      "\n",
      "Processing DirectAssessmentTask/DirectAssessmentResult/TextPair\n",
      "  Processed DirectAssessmentResult instances 0:00:00.000968\n",
      "  Identified bad DirectAssessmentResult instances 0\n",
      "  Processed DirectAssessmentTask instances 0:00:00.003135\n",
      "  Processed TextPair instances 0:00:00.039004\n",
      "  Processed related DirectAssessmentTask instances 0:00:00.009153\n",
      "Processing DirectAssessmentContextTask/DirectAssessmentContextResult/TextPairWithContext\n",
      "  Processed DirectAssessmentContextResult instances 0:00:00.001165\n",
      "  Identified bad DirectAssessmentContextResult instances 0\n",
      "  Processed DirectAssessmentContextTask instances 0:00:00.002824\n",
      "  Processed TextPairWithContext instances 0:00:00.004527\n",
      "  Processed related DirectAssessmentContextTask instances 0:00:00.002917\n",
      "Processing DirectAssessmentDocumentTask/DirectAssessmentDocumentResult/TextPairWithContext\n",
      "  Processed DirectAssessmentDocumentResult instances 0:00:00.000832\n",
      "  Identified bad DirectAssessmentDocumentResult instances 0\n",
      "  Processed DirectAssessmentDocumentTask instances 0:00:00.002482\n",
      "  Processed TextPairWithContext instances 0:00:00.002663\n",
      "  Processed related DirectAssessmentDocumentTask instances 0:00:00.001791\n",
      "Processing MultiModalAssessmentTask/MultiModalAssessmentResult/TextPairWithImage\n",
      "  Processed MultiModalAssessmentResult instances 0:00:00.000641\n",
      "  Identified bad MultiModalAssessmentResult instances 0\n",
      "  Processed MultiModalAssessmentTask instances 0:00:00.002427\n",
      "  Processed TextPairWithImage instances 0:00:00.003782\n",
      "  Processed related MultiModalAssessmentTask instances 0:00:00.002896\n",
      "Processing PairwiseAssessmentTask/PairwiseAssessmentResult/TextSegmentWithTwoTargets\n",
      "  Processed PairwiseAssessmentResult instances 0:00:00.000941\n",
      "  Identified bad PairwiseAssessmentResult instances 0\n",
      "  Processed PairwiseAssessmentTask instances 0:00:00.002905\n",
      "  Processed TextSegmentWithTwoTargets instances 0:00:00.002922\n",
      "  Processed related PairwiseAssessmentTask instances 0:00:00.002087\n",
      "Processing PairwiseAssessmentDocumentTask/PairwiseAssessmentDocumentResult/TextSegmentWithTwoTargetsWithContext\n",
      "  Processed PairwiseAssessmentDocumentResult instances 0:00:00.000675\n",
      "  Identified bad PairwiseAssessmentDocumentResult instances 0\n",
      "  Processed PairwiseAssessmentDocumentTask instances 0:00:00.003023\n",
      "  Processed TextSegmentWithTwoTargetsWithContext instances 0:00:00.003370\n",
      "  Processed related PairwiseAssessmentDocumentTask instances 0:00:00.002891\n",
      "Processing DataAssessmentTask/DataAssessmentResult/TextPairWithDomain\n",
      "  Processed DataAssessmentResult instances 0:00:00.000941\n",
      "  Identified bad DataAssessmentResult instances 0\n",
      "  Processed DataAssessmentTask instances 0:00:00.003909\n",
      "  Processed TextPairWithDomain instances 0:00:00.005123\n",
      "  Processed related DataAssessmentTask instances 0:00:00.003888\n",
      "Processed MultiModalAssessmentTask instances 0:00:00.003737\n",
      "Processed TextPairWithImage instances 0:00:00.003252\n",
      "Processed related MultiModalAssessmentTask instances 0:00:00.003354\n",
      "\n",
      "[DONE]\n",
      "\n",
      "### Running init_campaign again\n",
      "All languages: [('spa', 'eus')]\n",
      "Identified superuser: falcao\n",
      "Processed Market/Metadata instances\n",
      "Done.\n"
     ]
    }
   ],
   "source": [
    "! python3 manage.py StartNewCampaign \\\n",
    "    $MANIFEST_PATH \\\n",
    "    --batches-json $BATCHES_PATH"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
