{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "450f252c",
   "metadata": {},
   "outputs": [],
   "source": [
    "import netCDF4 as nc\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import os\n",
    "import datetime as dt\n",
    "from datetime import datetime, timedelta\n",
    "from matplotlib.backends.backend_pdf import PdfPages\n",
    "\n",
    "import imageio\n",
    "from reportlab.lib.pagesizes import letter\n",
    "from reportlab.pdfgen import canvas\n",
    "from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle\n",
    "from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "cd99841c",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " File not found: C:\\Users\\magda\\Master_Thesis\\Cabauw\\cloudnet-collection-536697e32b4e4b34\\20240515_cabauw_hatpro_c28c803c.nc\n"
     ]
    }
   ],
   "source": [
    "# Path to your .nc file\n",
    "#file_path = r\"C:\\Users\\magda\\Master_Thesis\\Cabauw\\cesar_surface_radiation_lc1_t10_v1.0_202404.nc\"\n",
    "file_path= r\"C:\\Users\\magda\\Master_Thesis\\Cabauw\\cloudnet-collection-536697e32b4e4b34\\20240515_cabauw_hatpro_c28c803c.nc\" \n",
    "# Check if the file exists\n",
    "if os.path.exists(file_path):\n",
    "    try:\n",
    "        with nc.Dataset(file_path, 'r') as dataset:\n",
    "            print(\"\\n File opened successfully!\")\n",
    "\n",
    "            # Print file-level metadata\n",
    "            print(\"\\n File Global Attributes:\")\n",
    "            for attr in dataset.ncattrs():\n",
    "                print(f\"   {attr}: {getattr(dataset, attr)}\")\n",
    "\n",
    "            # Print all variables\n",
    "            print(\"\\n Variables Overview:\\n\")\n",
    "            for var_name in dataset.variables:\n",
    "                var = dataset.variables[var_name]\n",
    "                print(f\" Variable: {var_name}\")\n",
    "                print(f\"   - Dimensions: {var.dimensions}\")\n",
    "                print(f\"   - Shape: {var.shape}\")\n",
    "                \n",
    "                # Try to print units if available\n",
    "                units = getattr(var, \"units\", \"N/A\")\n",
    "                print(f\"   - Units: {units}\")\n",
    "\n",
    "                # Try to print a short preview of the data (first few values)\n",
    "                try:\n",
    "                    preview = var[:5] if var.ndim == 1 else var[:5, ...]\n",
    "                    print(f\"   - Sample values: {preview}\\n\")\n",
    "                except Exception as e:\n",
    "                    print(f\"   - Could not preview values: {e}\\n\")\n",
    "\n",
    "    except Exception as e:\n",
    "        print(f\" Error reading the NetCDF file: {e}\")\n",
    "else:\n",
    "    print(\" File not found:\", file_path)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "43bbf822",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "✅ Reading: 20230301_cabauw_hatpro.nc\n",
      "✅ Reading: 20230302_cabauw_hatpro.nc\n",
      "✅ Reading: 20230303_cabauw_hatpro.nc\n",
      "✅ Reading: 20230304_cabauw_hatpro.nc\n",
      "✅ Reading: 20230305_cabauw_hatpro.nc\n",
      "✅ Reading: 20230306_cabauw_hatpro.nc\n",
      "✅ Reading: 20230307_cabauw_hatpro.nc\n",
      "✅ Reading: 20230308_cabauw_hatpro.nc\n",
      "✅ Reading: 20230309_cabauw_hatpro.nc\n",
      "✅ Reading: 20230310_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230311_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230312_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230313_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230314_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230315_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230316_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230317_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230318_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230319_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230320_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230321_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230322_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230323_cabauw_hatpro.nc\n",
      "✅ Reading: 20230324_cabauw_hatpro.nc\n",
      "✅ Reading: 20230325_cabauw_hatpro.nc\n",
      "✅ Reading: 20230326_cabauw_hatpro.nc\n",
      "✅ Reading: 20230327_cabauw_hatpro.nc\n",
      "✅ Reading: 20230328_cabauw_hatpro.nc\n",
      "✅ Reading: 20230329_cabauw_hatpro.nc\n",
      "✅ Reading: 20230330_cabauw_hatpro.nc\n",
      "✅ Reading: 20230331_cabauw_hatpro.nc\n",
      "✅ Reading: 20230401_cabauw_hatpro.nc\n",
      "✅ Reading: 20230402_cabauw_hatpro.nc\n",
      "✅ Reading: 20230403_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230404_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230405_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230406_cabauw_hatpro.nc\n",
      "✅ Reading: 20230407_cabauw_hatpro.nc\n",
      "✅ Reading: 20230408_cabauw_hatpro.nc\n",
      "✅ Reading: 20230409_cabauw_hatpro.nc\n",
      "✅ Reading: 20230410_cabauw_hatpro.nc\n",
      "✅ Reading: 20230411_cabauw_hatpro.nc\n",
      "✅ Reading: 20230412_cabauw_hatpro.nc\n",
      "✅ Reading: 20230413_cabauw_hatpro.nc\n",
      "✅ Reading: 20230414_cabauw_hatpro.nc\n",
      "✅ Reading: 20230415_cabauw_hatpro.nc\n",
      "✅ Reading: 20230416_cabauw_hatpro.nc\n",
      "✅ Reading: 20230417_cabauw_hatpro.nc\n",
      "✅ Reading: 20230418_cabauw_hatpro.nc\n",
      "✅ Reading: 20230419_cabauw_hatpro.nc\n",
      "✅ Reading: 20230420_cabauw_hatpro.nc\n",
      "✅ Reading: 20230421_cabauw_hatpro.nc\n",
      "✅ Reading: 20230422_cabauw_hatpro.nc\n",
      "✅ Reading: 20230423_cabauw_hatpro.nc\n",
      "✅ Reading: 20230424_cabauw_hatpro.nc\n",
      "✅ Reading: 20230425_cabauw_hatpro.nc\n",
      "✅ Reading: 20230426_cabauw_hatpro.nc\n",
      "✅ Reading: 20230427_cabauw_hatpro.nc\n",
      "✅ Reading: 20230428_cabauw_hatpro.nc\n",
      "✅ Reading: 20230429_cabauw_hatpro.nc\n",
      "✅ Reading: 20230430_cabauw_hatpro.nc\n",
      "✅ Reading: 20230501_cabauw_hatpro.nc\n",
      "✅ Reading: 20230502_cabauw_hatpro.nc\n",
      "✅ Reading: 20230503_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230504_cabauw_hatpro.nc\n",
      "✅ Reading: 20230505_cabauw_hatpro.nc\n",
      "✅ Reading: 20230506_cabauw_hatpro.nc\n",
      "✅ Reading: 20230507_cabauw_hatpro.nc\n",
      "✅ Reading: 20230508_cabauw_hatpro.nc\n",
      "✅ Reading: 20230509_cabauw_hatpro.nc\n",
      "✅ Reading: 20230510_cabauw_hatpro.nc\n",
      "✅ Reading: 20230511_cabauw_hatpro.nc\n",
      "✅ Reading: 20230512_cabauw_hatpro.nc\n",
      "✅ Reading: 20230513_cabauw_hatpro.nc\n",
      "✅ Reading: 20230514_cabauw_hatpro.nc\n",
      "✅ Reading: 20230515_cabauw_hatpro.nc\n",
      "✅ Reading: 20230516_cabauw_hatpro.nc\n",
      "✅ Reading: 20230517_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230518_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230519_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230520_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230521_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230522_cabauw_hatpro.nc\n",
      "✅ Reading: 20230523_cabauw_hatpro.nc\n",
      "✅ Reading: 20230524_cabauw_hatpro.nc\n",
      "✅ Reading: 20230525_cabauw_hatpro.nc\n",
      "✅ Reading: 20230526_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230527_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230528_cabauw_hatpro.nc\n",
      "✅ Reading: 20230528_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230529_cabauw_hatpro.nc\n",
      "✅ Reading: 20230529_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230530_cabauw_hatpro.nc\n",
      "✅ Reading: 20230530_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230531_cabauw_hatpro.nc\n",
      "✅ Reading: 20230531_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230601_cabauw_hatpro.nc\n",
      "✅ Reading: 20230601_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230602_cabauw_hatpro.nc\n",
      "✅ Reading: 20230602_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230603_cabauw_hatpro.nc\n",
      "✅ Reading: 20230603_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230604_cabauw_hatpro.nc\n",
      "✅ Reading: 20230604_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230605_cabauw_hatpro.nc\n",
      "✅ Reading: 20230605_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230606_cabauw_hatpro.nc\n",
      "✅ Reading: 20230606_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230607_cabauw_hatpro.nc\n",
      "✅ Reading: 20230607_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230608_cabauw_hatpro.nc\n",
      "✅ Reading: 20230608_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230609_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230610_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230611_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230612_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230612_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230613_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230613_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230614_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230614_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230615_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230615_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20230619_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230620_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230621_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230622_cabauw_hatpro.nc\n",
      "✅ Reading: 20230622_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230623_cabauw_hatpro.nc\n",
      "✅ Reading: 20230623_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230624_cabauw_hatpro.nc\n",
      "✅ Reading: 20230624_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230625_cabauw_hatpro.nc\n",
      "✅ Reading: 20230625_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230626_cabauw_hatpro.nc\n",
      "✅ Reading: 20230626_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230627_cabauw_hatpro.nc\n",
      "✅ Reading: 20230627_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230628_cabauw_hatpro.nc\n",
      "✅ Reading: 20230628_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230629_cabauw_hatpro.nc\n",
      "✅ Reading: 20230629_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230630_cabauw_hatpro.nc\n",
      "✅ Reading: 20230630_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230701_cabauw_hatpro.nc\n",
      "✅ Reading: 20230701_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230702_cabauw_hatpro.nc\n",
      "✅ Reading: 20230702_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230703_cabauw_hatpro.nc\n",
      "✅ Reading: 20230703_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230704_cabauw_hatpro.nc\n",
      "✅ Reading: 20230704_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230705_cabauw_hatpro.nc\n",
      "✅ Reading: 20230705_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230706_cabauw_hatpro.nc\n",
      "✅ Reading: 20230706_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230707_cabauw_hatpro.nc\n",
      "✅ Reading: 20230707_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230708_cabauw_hatpro.nc\n",
      "✅ Reading: 20230708_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230709_cabauw_hatpro.nc\n",
      "✅ Reading: 20230709_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230710_cabauw_hatpro.nc\n",
      "✅ Reading: 20230711_cabauw_hatpro.nc\n",
      "✅ Reading: 20230712_cabauw_hatpro.nc\n",
      "✅ Reading: 20230713_cabauw_hatpro.nc\n",
      "✅ Reading: 20230714_cabauw_hatpro.nc\n",
      "✅ Reading: 20230715_cabauw_hatpro.nc\n",
      "✅ Reading: 20230716_cabauw_hatpro.nc\n",
      "✅ Reading: 20230717_cabauw_hatpro.nc\n",
      "✅ Reading: 20230718_cabauw_hatpro.nc\n",
      "✅ Reading: 20230719_cabauw_hatpro.nc\n",
      "✅ Reading: 20230720_cabauw_hatpro.nc\n",
      "✅ Reading: 20230720_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230721_cabauw_hatpro.nc\n",
      "✅ Reading: 20230721_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230722_cabauw_hatpro.nc\n",
      "✅ Reading: 20230722_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230723_cabauw_hatpro.nc\n",
      "✅ Reading: 20230723_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230724_cabauw_hatpro.nc\n",
      "✅ Reading: 20230724_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230725_cabauw_hatpro.nc\n",
      "✅ Reading: 20230725_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230726_cabauw_hatpro.nc\n",
      "✅ Reading: 20230726_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230727_cabauw_hatpro.nc\n",
      "✅ Reading: 20230727_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230728_cabauw_hatpro.nc\n",
      "✅ Reading: 20230728_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230729_cabauw_hatpro.nc\n",
      "✅ Reading: 20230729_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230730_cabauw_hatpro.nc\n",
      "✅ Reading: 20230730_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230731_cabauw_hatpro.nc\n",
      "✅ Reading: 20230731_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230801_cabauw_hatpro.nc\n",
      "✅ Reading: 20230801_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230802_cabauw_hatpro.nc\n",
      "✅ Reading: 20230802_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230803_cabauw_hatpro.nc\n",
      "✅ Reading: 20230803_cabauw_hatpro_46797fd6.nc\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "✅ Reading: 20230804_cabauw_hatpro.nc\n",
      "✅ Reading: 20230804_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230805_cabauw_hatpro.nc\n",
      "✅ Reading: 20230805_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230806_cabauw_hatpro.nc\n",
      "✅ Reading: 20230807_cabauw_hatpro.nc\n",
      "✅ Reading: 20230808_cabauw_hatpro.nc\n",
      "✅ Reading: 20230809_cabauw_hatpro.nc\n",
      "✅ Reading: 20230809_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230810_cabauw_hatpro.nc\n",
      "✅ Reading: 20230810_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230811_cabauw_hatpro.nc\n",
      "✅ Reading: 20230811_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230812_cabauw_hatpro.nc\n",
      "✅ Reading: 20230812_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230813_cabauw_hatpro.nc\n",
      "✅ Reading: 20230813_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230814_cabauw_hatpro.nc\n",
      "✅ Reading: 20230814_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230815_cabauw_hatpro.nc\n",
      "✅ Reading: 20230815_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230816_cabauw_hatpro.nc\n",
      "✅ Reading: 20230816_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230817_cabauw_hatpro.nc\n",
      "✅ Reading: 20230817_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230818_cabauw_hatpro.nc\n",
      "✅ Reading: 20230818_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230819_cabauw_hatpro.nc\n",
      "✅ Reading: 20230819_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230820_cabauw_hatpro.nc\n",
      "✅ Reading: 20230820_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230821_cabauw_hatpro.nc\n",
      "✅ Reading: 20230821_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230822_cabauw_hatpro.nc\n",
      "✅ Reading: 20230822_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230823_cabauw_hatpro.nc\n",
      "✅ Reading: 20230823_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230824_cabauw_hatpro.nc\n",
      "✅ Reading: 20230824_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230825_cabauw_hatpro.nc\n",
      "✅ Reading: 20230825_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230826_cabauw_hatpro.nc\n",
      "✅ Reading: 20230826_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230827_cabauw_hatpro.nc\n",
      "✅ Reading: 20230827_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230828_cabauw_hatpro.nc\n",
      "✅ Reading: 20230828_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230829_cabauw_hatpro.nc\n",
      "✅ Reading: 20230829_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230830_cabauw_hatpro.nc\n",
      "✅ Reading: 20230830_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20230831_cabauw_hatpro.nc\n",
      "✅ Reading: 20230831_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20240409_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240410_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240411_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240412_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240413_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240414_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240415_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240416_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240417_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240418_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240419_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240420_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240421_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240422_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240423_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240424_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240425_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240426_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240427_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240428_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240429_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240430_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240601_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240602_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240603_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240604_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240605_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240606_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240607_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240608_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240609_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240610_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240611_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240612_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240613_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240614_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240615_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240616_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240617_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240618_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240619_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240620_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240621_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240622_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240623_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240624_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240625_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240626_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240627_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240628_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240629_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240630_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240701_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240702_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240703_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240704_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240705_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240706_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240707_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240708_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240709_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240710_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240711_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240712_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240713_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240714_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240715_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240716_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240717_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240718_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240719_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20240720_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20240721_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20240721_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240722_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240723_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240724_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20240725_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20240726_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20240726_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240727_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20240727_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240728_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20240728_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240729_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20240729_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240730_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20240730_cabauw_hatpro_c28c803c.nc\n",
      "✅ Reading: 20240731_cabauw_hatpro_46797fd6.nc\n",
      "✅ Reading: 20240731_cabauw_hatpro_c28c803c.nc\n",
      "\n",
      "✅ Combined HATPRO Data:\n",
      "             TIMESTAMP  IWV (kg m-2)  LWP (kg m-2)\n",
      "0  2023-03-01 00:00:00     -3.513875     -0.005000\n",
      "1  2023-03-01 00:00:01     -3.499203     -0.003694\n",
      "2  2023-03-01 00:00:02     -3.502505     -0.002765\n",
      "3  2023-03-01 00:00:03     -3.501184     -0.005000\n",
      "4  2023-03-01 00:00:04     -3.499227     -0.004611\n"
     ]
    }
   ],
   "source": [
    "# Folder containing daily HATPRO files\n",
    "folder_path = r\"C:\\Users\\magda\\Master_Thesis\\Cabauw\\cloudnet-collection-a38fe13808684f78\"\n",
    "\n",
    "# Initialize list to collect dataframes\n",
    "df_list = []\n",
    "\n",
    "# Loop over all files in folder\n",
    "for filename in sorted(os.listdir(folder_path)):\n",
    "    if filename.endswith(\".nc\") and \"cabauw_hatpro\" in filename:\n",
    "        file_path = os.path.join(folder_path, filename)\n",
    "\n",
    "        try:\n",
    "            with nc.Dataset(file_path, 'r') as ds:\n",
    "                print(f\"✅ Reading: {filename}\")\n",
    "\n",
    "                # Extract time and convert to datetime\n",
    "                time_var = ds.variables['time']\n",
    "                time_units = time_var.units\n",
    "                time_data = time_var[:]\n",
    "                time_dt = nc.num2date(time_data, units=time_units)\n",
    "\n",
    "                # Extract IWV and LWP\n",
    "                iwv = ds.variables['iwv'][:]\n",
    "                lwp = ds.variables['lwp'][:]\n",
    "\n",
    "                # Get units\n",
    "                iwv_units = getattr(ds.variables['iwv'], \"units\", \"N/A\")\n",
    "                lwp_units = getattr(ds.variables['lwp'], \"units\", \"N/A\")\n",
    "\n",
    "                # Create DataFrame for this file\n",
    "                df_day = pd.DataFrame({\n",
    "                    'TIMESTAMP': time_dt,\n",
    "                    f'IWV ({iwv_units})': iwv,\n",
    "                    f'LWP ({lwp_units})': lwp\n",
    "                })\n",
    "\n",
    "                df_list.append(df_day)\n",
    "\n",
    "        except Exception as e:\n",
    "            print(f\"⚠️ Error reading {filename}: {e}\")\n",
    "\n",
    "# Combine all days\n",
    "df_all_hatpro = pd.concat(df_list, ignore_index=True)\n",
    "\n",
    "# Show a preview\n",
    "print(\"\\n✅ Combined HATPRO Data:\")\n",
    "print(df_all_hatpro.head())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "4cac019d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                TIMESTAMP  IWV (kg m-2)  LWP (kg m-2)\n",
      "0     2023-03-01 00:00:00     -3.512490     -0.002191\n",
      "1     2023-03-01 00:10:00     -3.526898     -0.002468\n",
      "2     2023-03-01 00:20:00     -3.516721     -0.001500\n",
      "3     2023-03-01 00:30:00     -3.514531     -0.001326\n",
      "4     2023-03-01 00:40:00     -3.520792     -0.000500\n",
      "...                   ...           ...           ...\n",
      "74731 2024-07-31 23:10:00     37.351166      0.000754\n",
      "74732 2024-07-31 23:20:00     37.465027      0.001614\n",
      "74733 2024-07-31 23:30:00     37.673428      0.001876\n",
      "74734 2024-07-31 23:40:00     37.729034      0.001206\n",
      "74735 2024-07-31 23:50:00     37.674728      0.001767\n",
      "\n",
      "[74736 rows x 3 columns]\n"
     ]
    }
   ],
   "source": [
    "# Convert cftime to native Python datetime using .isoformat() and then pd.Timestamp\n",
    "df_all_hatpro['TIMESTAMP'] = [pd.Timestamp(t.isoformat()) for t in df_all_hatpro['TIMESTAMP']]\n",
    "\n",
    "# Set as index\n",
    "df_all_hatpro.set_index('TIMESTAMP', inplace=True)\n",
    "\n",
    "# Resample to 10-minute intervals (mean)\n",
    "df_10min = df_all_hatpro.resample('10T').mean()\n",
    "\n",
    "# Reset index\n",
    "df_10min.reset_index(inplace=True)\n",
    "\n",
    "# Preview\n",
    "print(df_10min)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "eb78a6cb",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                TIMESTAMP       SWD       SWU         LWD         LWU\n",
      "0     2023-03-01 00:00:00 -1.701501 -1.222650  224.832245  289.198425\n",
      "1     2023-03-01 00:10:00 -1.703811 -1.216043  223.987305  287.336212\n",
      "2     2023-03-01 00:20:00 -1.701015 -1.248824  223.872894  287.383911\n",
      "3     2023-03-01 00:30:00 -1.694243 -1.246233  223.650757  284.575745\n",
      "4     2023-03-01 00:40:00 -1.722864 -1.287262  223.824738  281.570526\n",
      "...                   ...       ...       ...         ...         ...\n",
      "35275 2024-07-31 23:10:00 -1.915320 -1.905102  358.536469  401.311615\n",
      "35276 2024-07-31 23:20:00 -1.957083 -1.945300  358.791351  400.430756\n",
      "35277 2024-07-31 23:30:00 -1.968630 -1.960168  358.555481  399.717377\n",
      "35278 2024-07-31 23:40:00 -1.824287 -1.854258  357.355286  400.523193\n",
      "35279 2024-07-31 23:50:00 -1.764049 -1.795705  356.728088  400.491364\n",
      "\n",
      "[35280 rows x 5 columns]\n"
     ]
    }
   ],
   "source": [
    "\n",
    "# Folder containing all .nc files\n",
    "folder_path = r\"C:\\Users\\magda\\Master_Thesis\\Cabauw\"\n",
    "\n",
    "# Prepare a list to collect all DataFrames\n",
    "all_radiation_dfs = []\n",
    "\n",
    "# Loop through all files in the folder\n",
    "for filename in os.listdir(folder_path):\n",
    "    if filename.endswith(\".nc\") and \"cesar_surface_radiation\" in filename:\n",
    "        file_path = os.path.join(folder_path, filename)\n",
    "        with nc.Dataset(file_path, 'r') as ds:\n",
    "            time_var = ds.variables['time']\n",
    "            time_units = time_var.units\n",
    "            time_data = time_var[:]\n",
    "            time_dt = nc.num2date(time_data, units=time_units)\n",
    "\n",
    "            swd = ds.variables['SWD'][:]\n",
    "            swu = ds.variables['SWU'][:]\n",
    "            lwd = ds.variables['LWD'][:]\n",
    "            lwu = ds.variables['LWU'][:]\n",
    "\n",
    "        # Convert to Python datetime\n",
    "        time_dt_py = [pd.Timestamp(t.isoformat()) for t in time_dt]\n",
    "\n",
    "        # Create DataFrame\n",
    "        df = pd.DataFrame({\n",
    "            'TIMESTAMP': time_dt_py,\n",
    "            'SWD': swd,\n",
    "            'SWU': swu,\n",
    "            'LWD': lwd,\n",
    "            'LWU': lwu\n",
    "        })\n",
    "\n",
    "        # Round timestamps to the nearest second\n",
    "        df['TIMESTAMP'] = df['TIMESTAMP'].round('S')\n",
    "\n",
    "        # Append to list\n",
    "        all_radiation_dfs.append(df)\n",
    "\n",
    "# Combine all dataframes\n",
    "df_radiation = pd.concat(all_radiation_dfs, ignore_index=True)\n",
    "\n",
    "# Sort by time\n",
    "df_radiation.sort_values('TIMESTAMP', inplace=True)\n",
    "\n",
    "# Reset index\n",
    "df_radiation.reset_index(drop=True, inplace=True)\n",
    "\n",
    "# ✅ Preview the combined DataFrame\n",
    "print(df_radiation)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "7261922d",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "✅ Merged DataFrame shape: (35280, 7)\n",
      "            TIMESTAMP  IWV (kg m-2)  LWP (kg m-2)       SWD       SWU  \\\n",
      "0 2023-03-01 00:00:00     -3.512490     -0.002191 -1.701501 -1.222650   \n",
      "1 2023-03-01 00:10:00     -3.526898     -0.002468 -1.703811 -1.216043   \n",
      "2 2023-03-01 00:20:00     -3.516721     -0.001500 -1.701015 -1.248824   \n",
      "3 2023-03-01 00:30:00     -3.514531     -0.001326 -1.694243 -1.246233   \n",
      "4 2023-03-01 00:40:00     -3.520792     -0.000500 -1.722864 -1.287262   \n",
      "\n",
      "          LWD         LWU  \n",
      "0  224.832245  289.198425  \n",
      "1  223.987305  287.336212  \n",
      "2  223.872894  287.383911  \n",
      "3  223.650757  284.575745  \n",
      "4  223.824738  281.570526  \n"
     ]
    }
   ],
   "source": [
    "# Merge based on TIMESTAMP\n",
    "df_merged = pd.merge(df_10min, df_radiation, on='TIMESTAMP', how='inner')\n",
    "\n",
    "# Preview\n",
    "print(f\"\\n✅ Merged DataFrame shape: {df_merged.shape}\")\n",
    "print(df_merged.head())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "5cdb449b",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                TIMESTAMP  IWV (kg m-2)  LWP (kg m-2)       SWD       SWU  \\\n",
      "0     2023-03-01 00:00:00     -3.512490     -0.002191 -1.701501 -1.222650   \n",
      "1     2023-03-01 00:10:00     -3.526898     -0.002468 -1.703811 -1.216043   \n",
      "2     2023-03-01 00:20:00     -3.516721     -0.001500 -1.701015 -1.248824   \n",
      "3     2023-03-01 00:30:00     -3.514531     -0.001326 -1.694243 -1.246233   \n",
      "4     2023-03-01 00:40:00     -3.520792     -0.000500 -1.722864 -1.287262   \n",
      "...                   ...           ...           ...       ...       ...   \n",
      "35275 2024-07-31 23:10:00     37.351166      0.000754 -1.915320 -1.905102   \n",
      "35276 2024-07-31 23:20:00     37.465027      0.001614 -1.957083 -1.945300   \n",
      "35277 2024-07-31 23:30:00     37.673428      0.001876 -1.968630 -1.960168   \n",
      "35278 2024-07-31 23:40:00     37.729034      0.001206 -1.824287 -1.854258   \n",
      "35279 2024-07-31 23:50:00     37.674728      0.001767 -1.764049 -1.795705   \n",
      "\n",
      "              LWD         LWU  \n",
      "0      224.832245  289.198425  \n",
      "1      223.987305  287.336212  \n",
      "2      223.872894  287.383911  \n",
      "3      223.650757  284.575745  \n",
      "4      223.824738  281.570526  \n",
      "...           ...         ...  \n",
      "35275  358.536469  401.311615  \n",
      "35276  358.791351  400.430756  \n",
      "35277  358.555481  399.717377  \n",
      "35278  357.355286  400.523193  \n",
      "35279  356.728088  400.491364  \n",
      "\n",
      "[35280 rows x 7 columns]\n"
     ]
    }
   ],
   "source": [
    "print(df_merged)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "8e301d8b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define output path\n",
    "output_path = r\"C:\\Users\\magda\\Master_Thesis\\Cabauw\\cabauw_merged_data_23-24.parquet\"\n",
    "\n",
    "# Save the DataFrame\n",
    "df_merged.to_parquet(output_path, index=False)"
   ]
  }
 ],
 "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.11.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
