{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Analyze dataset\n", "In this notebook, we analyze the dataset structure and statistics.\n", "\n", "## Verify dataset and create statistics\n", "We verify that every folder (= session) contains exactly three subfolders:\n", "* Lapse (time lapse images taken every hour)\n", "* Motion (images taken on motion)\n", "* Full (pre-selected motion images with actual moving entities, should be a subset of Motion)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "from py.Dataset import Dataset, DatasetStatistics\n", "from py.FileUtils import list_jpegs_recursive\n", "\n", "from tqdm import tqdm\n", "import os" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 32 sessions\n" ] } ], "source": [ "DIR = '/home/AMMOD_data/camera_traps/BayerWald/Vielkadaver-Projekt/'\n", "\n", "ds = Dataset(DIR)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Beaver_01', 'Marten_01', 'Raccoon_01', 'Reddeer_01', 'Roedeer_01', 'Wildboar_01', 'Badger_02', 'Beaver_02', 'Fox_02', 'Marten_02', 'Raccoon_02', 'Rat_02', 'Reddeer_02', 'Roedeer_02', 'Badger_03', 'Fox_03', 'Raccoon_03', 'Reddeer_03', 'Wildboar_03', 'Badger_04', 'Rat_04', 'Reddeer_04', 'Wildboar_04', 'Badger_05', 'Beaver_05', 'Ermine_05', 'Fox_05', 'Marten_05', 'Raccoon_05', 'Reddeer_05', 'Roedeer_05', 'Wildboar_05']\n" ] } ], "source": [ "print(ds.get_sessions())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have 32 sessions with unique names. The name consists of the animal type and a session number. We will not count the images in all subfolders to create more advanced statistics." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 32/32 [00:34<00:00, 1.09s/it]\n" ] } ], "source": [ "# Only run this when statistics have not been created yet.\n", "# Otherwise, use the code in the cell below to load the stats from file.\n", "stats = ds.create_statistics()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It takes a while to create the statistics, so it makes sense to save them for later usage. The statistics can be restored using the load() method or via the constructor." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Loaded from dataset_stats.npy.\n" ] } ], "source": [ "stats = DatasetStatistics(load_from_file=\"dataset_stats.npy\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's look at the stats." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LapseMotionFullTotal
Badger_02172847152026645
Badger_03464245674358
Badger_0456480192728
Badger_05117438601085142
Beaver_0117346952002629
Beaver_02172728902704887
Beaver_0513212415323768
Ermine_0586723801353382
Fox_0295711102002267
Fox_033854952065739
Fox_051083753651901
Marten_01246231052005767
Marten_0217268832002809
Marten_05890161707017130
Raccoon_018503751201345
Raccoon_0216393321622133
Raccoon_0335475100610
Raccoon_05108916001162805
Rat_026268451181589
Rat_043964096775
Reddeer_011628938020011208
Reddeer_0216356752002510
Reddeer_03102717701412938
Reddeer_04461690891825
Reddeer_0510781825116619495
Roedeer_011380388201840218
Roedeer_0288827702063864
Roedeer_051090131767914345
Wildboar_01173228951374764
Wildboar_0346515102663
Wildboar_043922501072396
Wildboar_05903222638623252
Z_Total315791679184390203887
\n", "
" ], "text/plain": [ " Lapse Motion Full Total\n", "Badger_02 1728 4715 202 6645\n", "Badger_03 46 4245 67 4358\n", "Badger_04 56 480 192 728\n", "Badger_05 1174 3860 108 5142\n", "Beaver_01 1734 695 200 2629\n", "Beaver_02 1727 2890 270 4887\n", "Beaver_05 1321 2415 32 3768\n", "Ermine_05 867 2380 135 3382\n", "Fox_02 957 1110 200 2267\n", "Fox_03 38 5495 206 5739\n", "Fox_05 1083 753 65 1901\n", "Marten_01 2462 3105 200 5767\n", "Marten_02 1726 883 200 2809\n", "Marten_05 890 16170 70 17130\n", "Raccoon_01 850 375 120 1345\n", "Raccoon_02 1639 332 162 2133\n", "Raccoon_03 35 475 100 610\n", "Raccoon_05 1089 1600 116 2805\n", "Rat_02 626 845 118 1589\n", "Rat_04 39 640 96 775\n", "Reddeer_01 1628 9380 200 11208\n", "Reddeer_02 1635 675 200 2510\n", "Reddeer_03 1027 1770 141 2938\n", "Reddeer_04 46 1690 89 1825\n", "Reddeer_05 1078 18251 166 19495\n", "Roedeer_01 1380 38820 18 40218\n", "Roedeer_02 888 2770 206 3864\n", "Roedeer_05 1090 13176 79 14345\n", "Wildboar_01 1732 2895 137 4764\n", "Wildboar_03 46 515 102 663\n", "Wildboar_04 39 2250 107 2396\n", "Wildboar_05 903 22263 86 23252\n", "Z_Total 31579 167918 4390 203887" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stats.view()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Total 1.000000\n", "Full 0.021532\n", "Lapse 0.154885\n", "Motion 0.823584\n", "Name: Z_Total, dtype: float64" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stats.df.iloc[-1] / 203887" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We have a total of 203,887 images. Overall, there are significantly more motion images than lapse images. We can take a better look by plotting a bar chart:" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABJAAAAJyCAYAAACbjDqaAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABRqklEQVR4nO3de9ytZV0n/s9XQEFRJCUz0CDDyhRRUVHLA6WiTUKNlk4lpWlNmjbmTNZvCjw12VQ2drCsUCyTLCtILcWzVqioCB4qGcURIkVA1BQV/f7+WPfGh8167r2Bvde6Ns/7/Xo9r73WtU6ffd/Xfa3r+T73obo7AAAAALCZG607AAAAAABjU0ACAAAAYJYCEgAAAACzFJAAAAAAmKWABAAAAMCsvdcd4Lq69a1v3Yceeui6YwAAAADcYLz73e/+VHcftH37HltAOvTQQ3PWWWetOwYAAADADUZVfWxZu0PYAAAAAJilgAQAAADALAUkAAAAAGbtsedAAgAAANgZX/7yl3PBBRfkiiuuWHeUYey777455JBDss8+++zU8xWQAAAAgBu0Cy64IDe/+c1z6KGHpqrWHWftujuXXHJJLrjgghx22GE79ZqdPoStqvaqqvdW1aum+4dV1Tuq6ryq+vOquvHUfpPp/nnT44dueI9fmNr/paoeuqH92KntvKp6xs5mAgAAANiRK664Ire61a0UjyZVlVvd6lbXao+sa3MOpKcm+dCG+89L8vzu/pYklyV5/NT++CSXTe3Pn56XqrpTkkcn+Y4kxyb5vakotVeS303ysCR3SvKY6bkAAAAAu4Ti0dVd2+WxUwWkqjokyfcm+aPpfiU5JslfTk85Jcnx0+3jpvuZHv/u6fnHJTm1u7/Y3R9Ncl6Se00/53X3R7r7S0lOnZ4LAAAAwAB29hxIv5XkfyS5+XT/Vkk+3d1XTvcvSHLwdPvgJB9Pku6+sqoun55/cJIzN7znxtd8fLv2ey8LUVVPTPLEJLn97W+/k9EBAAAAvubQZ7x6l77f+b/6vTt8zv7775/Pfe5zu/RzV2mHeyBV1X9K8snufvcK8szq7hd191HdfdRBBx207jgAAAAAW8LOHMJ2vySPqKrzszi87Jgk/yfJLatq2x5MhyS5cLp9YZLbJcn0+AFJLtnYvt1rNmsHAAAAuMH627/929z73vfO3e52t3zP93xPPvGJTyRJTjrppPzoj/5o7nOf++Twww/PH/7hHyZJLrrootz//vfPkUcemTvf+c5529veliR53etel/vc5z65+93vnkc96lG7ZU+nHRaQuvsXuvuQ7j40i5Ngv7G7fzjJm5I8cnraCUlOm26fPt3P9Pgbu7un9kdPV2k7LMnhSd6Z5F1JDp+u6nbj6TNO3yX/OwAAAIBBfed3fmfOPPPMvPe9782jH/3o/Nqv/dpVj51zzjl54xvfmH/6p3/Ks571rPzbv/1b/uzP/iwPfehDc/bZZ+d973tfjjzyyHzqU5/Kc57znLz+9a/Pe97znhx11FH5zd/8zV2edWfPgbTMzyc5taqek+S9Sf54av/jJH9SVecluTSLglC6+wNV9YokH0xyZZIndfdXkqSqnpzktUn2SnJyd3/geuQCAAAAGN4FF1yQH/qhH8pFF12UL33pSznssMOueuy4447Lfvvtl/322y8PetCD8s53vjP3vOc987jHPS5f/vKXc/zxx+fII4/MW97ylnzwgx/M/e53vyTJl770pdznPvfZ5VmvVQGpu9+c5M3T7Y9kcQW17Z9zRZJHbfL65yZ57pL21yR5zbXJAgAAALAn+5mf+Zk87WlPyyMe8Yi8+c1vzkknnXTVY4sL2udq9+9///vnrW99a1796lfnx37sx/K0pz0tBx54YB784Afn5S9/+W7NujPnQAIAAABgF7v88stz8MGLC9SfcsopV3vstNNOyxVXXJFLLrkkb37zm3PPe94zH/vYx3Kb29wmT3jCE/ITP/ETec973pOjjz46//AP/5DzzjsvSfIf//Ef+dd//dddnvX6HMIGAAAAsMc5/1e/d+Wf+fnPfz6HHHLIVfef9rSn5aSTTsqjHvWoHHjggTnmmGPy0Y9+9KrHjzjiiDzoQQ/Kpz71qfzSL/1SvvEbvzGnnHJK/vf//t/ZZ599sv/+++elL31pDjrooLzkJS/JYx7zmHzxi19MkjznOc/JHe94x12aXwEJAAAAYDf76le/urT9uOOOW9p+xBFH5KUvfenV2k444YSccMIJ13juMccck3e9613XP+QMh7ABAAAAMMseSAAAAAAD2Xgy7VHYAwkAAACAWQpIAAAAAMxSQAIAAABglgISAAAAALOcRBsAAADYWk46YBe/3+U7fEpV5Yd/+Ifzp3/6p0mSK6+8Mre97W1z73vfO6961as2fd2b3/zm3PjGN85973vfJMnv//7v56Y3vWke+9jH7prsO0kBCeZsNqjsxOAAAAAA29zsZjfL+9///nzhC1/IfvvtlzPOOCMHH3zwDl/35je/Ofvvv/9VBaSf+qmf2t1Rl3IIGwAAAMAKPPzhD8+rX/3qJMnLX/7yPOYxj7nqsUsvvTTHH398jjjiiBx99NE555xzcv755+f3f//38/znPz9HHnlk3va2t+Wkk07Kr//6rydJzj777Bx99NE54ogj8v3f//257LLLkiQPfOAD8/M///O5173ulTve8Y5529vedr2zKyABAAAArMCjH/3onHrqqbniiityzjnn5N73vvdVj5144om5293ulnPOOSe/8iu/ksc+9rE59NBD81M/9VP5b//tv+Xss8/Od33Xd13t/R772Mfmec97Xs4555zc5S53yTOf+cyrHrvyyivzzne+M7/1W791tfbrSgEJAAAAYAWOOOKInH/++Xn5y1+ehz/84Vd77O1vf3t+9Ed/NElyzDHH5JJLLslnPvOZTd/r8ssvz6c//ek84AEPSJKccMIJeetb33rV4z/wAz+QJLnHPe6R888//3pndw4kAAAAgBV5xCMekac//el585vfnEsuuWS3fc5NbnKTJMlee+2VK6+88nq/nz2QAAAAAFbkcY97XE488cTc5S53uVr7d33Xd+VlL3tZksWJs29961vnFre4RW5+85vns5/97DXe54ADDsiBBx541fmN/uRP/uSqvZF2B3sgAQAAAFvLGq+sfcghh+QpT3nKNdpPOumkPO5xj8sRRxyRm970pjnllFOSJN/3fd+XRz7ykTnttNPy27/921d7zSmnnJKf+qmfyuc///l88zd/c1784hfvttzV3bvtzXeno446qs8666x1x+CG7qQDNmlf32ADAADAtfOhD30o3/7t377uGMNZtlyq6t3dfdT2z3UIGwAAAACzFJAAAAAAmKWABAAAAMAsBSQAAAAAZikgAQAAADBLAQkAAACAWXuvOwAAAADAKt3llLvs0vc794Rzd/icvfbaK3e5y9c+92/+5m9y6KGHLn3uS17ykpx11ln5nd/5nZx00knZf//98/SnP31Xxb1OFJAAAAAAdrP99tsvZ5999rpjXGcOYQMAAABYg0MPPTSf+tSnkiRnnXVWHvjAB6430Ax7IAEAAADsZl/4whdy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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "stats.plot_sessions(exclude_last_row=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Verify that 'Full' folder is a subset of 'Motion'\n", "We expect the 'Full' folder to be a subset of 'Motion'. The following code checks that by iterating over all files in 'Full' for every session and looking for them in 'Motion' of the same session." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "1cac1c192a0149ab8c5cc0a2d52247a6", "version_major": 2, "version_minor": 0 }, "text/plain": [ " 0%| | 0/32 [00:00 fullFilesFound:\n", " ok = False\n", "if not ok:\n", " print(\"There were files missing!\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Check sessions for duplicates\n", "\n", "Using the check_lapse_duplicates() function, the Lapse folder is checked for duplicate dates and duplicate files. We call a duplicate inconsistent or deviant, if the two images show different scenes but have the same associated date." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 3 sessions\n", "Session 'Marten_01' at folder: ./ResizedSessions_NoBackup/VIELAAS_Spring_Session01-VIELAAS_Marten_01\n", "Loaded scans.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 1733/1733 [00:00<00:00, 10210.85it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "* 1733 lapse dates\n", "* 729 duplicates\n", "* 0 multiples (more than two files per date)\n", "* 108 deviant duplicates: [datetime.datetime(2021, 6, 17, 23, 0), datetime.datetime(2021, 6, 18, 0, 0), datetime.datetime(2021, 6, 18, 1, 0), datetime.datetime(2021, 6, 18, 2, 0), datetime.datetime(2021, 6, 18, 3, 0), datetime.datetime(2021, 6, 18, 4, 0), datetime.datetime(2021, 6, 18, 5, 0), datetime.datetime(2021, 6, 18, 6, 0), datetime.datetime(2021, 6, 18, 7, 0), datetime.datetime(2021, 6, 18, 8, 0), datetime.datetime(2021, 6, 18, 9, 0), datetime.datetime(2021, 6, 18, 10, 0), datetime.datetime(2021, 6, 18, 11, 0), datetime.datetime(2021, 6, 18, 12, 0), datetime.datetime(2021, 6, 18, 13, 0), datetime.datetime(2021, 6, 18, 14, 0), datetime.datetime(2021, 6, 18, 15, 0), datetime.datetime(2021, 6, 18, 16, 0), datetime.datetime(2021, 6, 18, 17, 0), datetime.datetime(2021, 6, 18, 18, 0), datetime.datetime(2021, 6, 18, 19, 0), datetime.datetime(2021, 6, 18, 20, 0), datetime.datetime(2021, 6, 18, 21, 0), datetime.datetime(2021, 6, 18, 22, 0), datetime.datetime(2021, 6, 18, 23, 0), datetime.datetime(2021, 6, 19, 0, 0), datetime.datetime(2021, 6, 19, 1, 0), datetime.datetime(2021, 6, 19, 2, 0), datetime.datetime(2021, 6, 19, 3, 0), datetime.datetime(2021, 6, 19, 4, 0), datetime.datetime(2021, 6, 19, 5, 0), datetime.datetime(2021, 6, 19, 6, 0), datetime.datetime(2021, 6, 19, 7, 0), datetime.datetime(2021, 6, 19, 8, 0), datetime.datetime(2021, 6, 19, 9, 0), datetime.datetime(2021, 6, 19, 10, 0), datetime.datetime(2021, 6, 19, 11, 0), datetime.datetime(2021, 6, 19, 12, 0), datetime.datetime(2021, 6, 19, 13, 0), datetime.datetime(2021, 6, 19, 14, 0), datetime.datetime(2021, 6, 19, 15, 0), datetime.datetime(2021, 6, 19, 16, 0), datetime.datetime(2021, 6, 19, 17, 0), datetime.datetime(2021, 6, 19, 18, 0), datetime.datetime(2021, 6, 19, 19, 0), datetime.datetime(2021, 6, 19, 20, 0), datetime.datetime(2021, 6, 19, 21, 0), datetime.datetime(2021, 6, 19, 22, 0), datetime.datetime(2021, 6, 19, 23, 0), datetime.datetime(2021, 6, 20, 0, 0), datetime.datetime(2021, 6, 20, 1, 0), datetime.datetime(2021, 6, 20, 2, 0), datetime.datetime(2021, 6, 20, 3, 0), datetime.datetime(2021, 6, 20, 4, 0), datetime.datetime(2021, 6, 20, 5, 0), datetime.datetime(2021, 6, 20, 6, 0), datetime.datetime(2021, 6, 20, 7, 0), datetime.datetime(2021, 6, 20, 8, 0), datetime.datetime(2021, 6, 20, 9, 0), datetime.datetime(2021, 6, 20, 10, 0), datetime.datetime(2021, 6, 20, 11, 0), datetime.datetime(2021, 6, 20, 12, 0), datetime.datetime(2021, 6, 20, 13, 0), datetime.datetime(2021, 6, 20, 14, 0), datetime.datetime(2021, 6, 20, 15, 0), datetime.datetime(2021, 6, 20, 16, 0), datetime.datetime(2021, 6, 20, 17, 0), datetime.datetime(2021, 6, 20, 18, 0), datetime.datetime(2021, 6, 20, 19, 0), datetime.datetime(2021, 6, 20, 20, 0), datetime.datetime(2021, 6, 20, 21, 0), datetime.datetime(2021, 6, 20, 22, 0), datetime.datetime(2021, 6, 20, 23, 0), datetime.datetime(2021, 6, 21, 0, 0), datetime.datetime(2021, 6, 21, 1, 0), datetime.datetime(2021, 6, 21, 2, 0), datetime.datetime(2021, 6, 21, 3, 0), datetime.datetime(2021, 6, 21, 4, 0), datetime.datetime(2021, 6, 21, 5, 0), datetime.datetime(2021, 6, 21, 6, 0), datetime.datetime(2021, 6, 21, 7, 0), datetime.datetime(2021, 6, 21, 8, 0), datetime.datetime(2021, 6, 21, 9, 0), datetime.datetime(2021, 6, 21, 10, 0), datetime.datetime(2021, 6, 21, 11, 0), datetime.datetime(2021, 6, 21, 12, 0), datetime.datetime(2021, 6, 21, 13, 0), datetime.datetime(2021, 6, 21, 14, 0), datetime.datetime(2021, 6, 21, 15, 0), datetime.datetime(2021, 6, 21, 16, 0), datetime.datetime(2021, 6, 21, 17, 0), datetime.datetime(2021, 6, 21, 18, 0), datetime.datetime(2021, 6, 21, 19, 0), datetime.datetime(2021, 6, 21, 20, 0), datetime.datetime(2021, 6, 21, 21, 0), datetime.datetime(2021, 6, 21, 22, 0), datetime.datetime(2021, 6, 21, 23, 0), datetime.datetime(2021, 6, 22, 0, 0), datetime.datetime(2021, 6, 22, 1, 0), datetime.datetime(2021, 6, 22, 2, 0), datetime.datetime(2021, 6, 22, 3, 0), datetime.datetime(2021, 6, 22, 4, 0), datetime.datetime(2021, 6, 22, 5, 0), datetime.datetime(2021, 6, 22, 6, 0), datetime.datetime(2021, 6, 22, 7, 0), datetime.datetime(2021, 6, 22, 8, 0), datetime.datetime(2021, 6, 22, 9, 0), datetime.datetime(2021, 6, 22, 10, 0)]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "ds = Dataset(\"./ResizedSessions_NoBackup/\")\n", "res = ds.create_session(\"marten_01\").check_lapse_duplicates()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Copyright © 2023 Felix Kleinsteuber and Computer Vision Group, Friedrich Schiller University Jena" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3.6.9 64-bit", "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.6.9" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "31f2aee4e71d21fbe5cf8b01ff0e069b9275f58929596ceb00d14d90e3e16cd6" } } }, "nbformat": 4, "nbformat_minor": 2 }