// ================== TASK 3 ================== // ZIP File Processing // ================== MAIN PROCESSING FUNCTION ================== function processDataset($baseDir) { // Find dataset folder $datasetDir = null; $items = scandir($baseDir); foreach ($items as $item) { if ($item != '.' && $item != '..' && is_dir($baseDir . '/' . $item)) { $subPath = $baseDir . '/' . $item; if (file_exists($subPath . '/classes.txt')) { $datasetDir = $subPath; break; } $subItems = scandir($subPath); foreach ($subItems as $subItem) { if ($subItem != '.' && $subItem != '..' && is_dir($subPath . '/' . $subItem)) { if (file_exists($subPath . '/' . $subItem . '/classes.txt')) { $datasetDir = $subPath . '/' . $subItem; break; } } } if ($datasetDir) break; } } // Read classes.txt $classesFile = $datasetDir . '/classes.txt'; $classes = file($classesFile, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); $classNumbers = array_map('trim', $classes); // Process subfolders $subfolders = ['train', 'validate', 'test']; $results = []; $totals = array_fill_keys($classNumbers, 0); foreach ($subfolders as $subfolder) { $subPath = $datasetDir . '/' . $subfolder; if (!is_dir($subPath)) { $results[$subfolder] = ['error' => "Folder '$subfolder' not found"]; continue; } $counts = array_fill_keys($classNumbers, 0); $files = scandir($subPath); foreach ($files as $file) { if ($file != '.' && $file != '..' && pathinfo($file, PATHINFO_EXTENSION) == 'txt') { $content = file_get_contents($subPath . '/' . $file); $lines = explode("\n", $content); foreach ($lines as $line) { $line = trim($line); if (empty($line)) continue; $parts = preg_split('/\s+/', $line); if (!empty($parts)) { $firstNumber = $parts[0]; if (in_array($firstNumber, $classNumbers)) { $counts[$firstNumber]++; $totals[$firstNumber]++; } } } } } $results[$subfolder] = $counts; } // Display results echo "

Instance Count Results

"; // Calculate totals $totalFiles = 0; foreach ($subfolders as $subfolder) { $subPath = $datasetDir . '/' . $subfolder; if (is_dir($subPath)) { $files = array_filter(scandir($subPath), function($f) { return pathinfo($f, PATHINFO_EXTENSION) == 'txt'; }); $totalFiles += count($files); } } echo ""; echo ""; foreach ($subfolders as $subfolder) { echo ""; } echo ""; foreach ($classNumbers as $classNum) { echo ""; echo ""; $rowTotal = 0; foreach ($subfolders as $subfolder) { if (isset($results[$subfolder][$classNum])) { $count = $results[$subfolder][$classNum]; echo ""; $rowTotal += $count; } else { echo ""; } } echo ""; echo ""; } // Total row echo ""; echo ""; foreach ($subfolders as $subfolder) { $subTotal = 0; if (isset($results[$subfolder]) && is_array($results[$subfolder])) { $subTotal = array_sum($results[$subfolder]); } echo ""; } echo ""; echo ""; echo "
Class Number" . ucfirst($subfolder) . "Total
Class $classNum$count0$rowTotal
TOTAL$subTotal" . array_sum($totals) . "
"; } // ================== HELPER FUNCTIONS ================== function deleteDirectory($dir) { if (!file_exists($dir)) return true; if (!is_dir($dir)) return unlink($dir); foreach (scandir($dir) as $item) { if ($item == '.' || $item == '..') continue; if (!deleteDirectory($dir . '/' . $item)) return false; } return rmdir($dir); }