Download backend/knowledge_base.py from bapi143/CropAI: direct link, hf CLI and curl.
- Browser
- Download file 14.8 kB
-
https://huggingface.co/spaces/bapi143/CropAI/resolve/main/backend/knowledge_base.py
- Command line
-
hf download hf://spaces/bapi143/CropAI/backend/knowledge_base.py
-
curl -L -o knowledge_base.py https://huggingface.co/spaces/bapi143/CropAI/resolve/main/backend/knowledge_base.py
14.8 kB
| # -*- coding: utf-8 -*- | |
| """ | |
| CropAI Agronomic Knowledge Base - Master Integration Hub | |
| Contains curated pathology details, symptoms, exact CIBRC chemical prescriptions (calibrated per 16L/20L knapsack tank), | |
| organic bio-controls, seasonal triggers, and historical outbreak contexts for 127+ crop diseases, pests, | |
| insects, and physiological disorders across Chhattisgarh (Surguja, Bilaspur, Raipur, Durg, Bastar, etc.) | |
| and Pan-India field, pulse, oilseed, cash, vegetable, and fruit crops. | |
| """ | |
| from typing import Dict, Any, Optional | |
| # Import domain modules | |
| from .data_cereals import CEREALS_KNOWLEDGE_BASE | |
| from .data_pulses import PULSES_KNOWLEDGE_BASE | |
| from .data_oilseeds import OILSEEDS_KNOWLEDGE_BASE | |
| from .data_cashcrops import CASH_CROPS_KNOWLEDGE_BASE | |
| from .data_vegetables import VEGETABLES_KNOWLEDGE_BASE | |
| from .data_fruits import FRUITS_KNOWLEDGE_BASE | |
| from .data_benchmark import BENCHMARK_KNOWLEDGE_BASE | |
| from .hf_dataset_sync import get_all_hf_aliases | |
| # Assemble unified agronomic knowledge base | |
| DISEASE_KNOWLEDGE_BASE: Dict[str, Dict[str, Any]] = {} | |
| DISEASE_KNOWLEDGE_BASE.update(CEREALS_KNOWLEDGE_BASE) | |
| DISEASE_KNOWLEDGE_BASE.update(PULSES_KNOWLEDGE_BASE) | |
| DISEASE_KNOWLEDGE_BASE.update(OILSEEDS_KNOWLEDGE_BASE) | |
| DISEASE_KNOWLEDGE_BASE.update(CASH_CROPS_KNOWLEDGE_BASE) | |
| DISEASE_KNOWLEDGE_BASE.update(VEGETABLES_KNOWLEDGE_BASE) | |
| DISEASE_KNOWLEDGE_BASE.update(FRUITS_KNOWLEDGE_BASE) | |
| DISEASE_KNOWLEDGE_BASE.update(BENCHMARK_KNOWLEDGE_BASE) | |
| # ========================================================================= | |
| # Hugging Face / Swin / MobileNet / ResNet / YOLO Label Aliases | |
| # ========================================================================= | |
| HF_CLASS_MAP: Dict[str, str] = { | |
| # Rice / Paddy Models | |
| 'Bacterialblight': 'Rice___Bacterial_Leaf_Blight', | |
| 'Bacterial Leaf Blight': 'Rice___Bacterial_Leaf_Blight', | |
| 'Blast': 'Rice___Blast', | |
| 'Leaf Blast': 'Rice___Blast', | |
| 'Neck Blast': 'Rice___Blast', | |
| 'Brownspot': 'Rice___Brown_Spot', | |
| 'Brown Spot': 'Rice___Brown_Spot', | |
| 'Healthy': 'Rice___healthy', | |
| 'Healthy Rice Leaf': 'Rice___healthy', | |
| 'Rice healthy': 'Rice___healthy', | |
| 'Tungro': 'Rice___Tungro', | |
| 'Leaf Scald': 'Rice___Sheath_Blight', | |
| 'Leaf scald': 'Rice___Sheath_Blight', | |
| 'Sheath Blight': 'Rice___Sheath_Blight', | |
| 'False Smut': 'Rice___False_Smut', | |
| 'Khaira Disease': 'Rice___Khaira_Disease', | |
| 'Yellow Stem Borer': 'Rice___Yellow_Stem_Borer', | |
| 'Gall Midge': 'Rice___Gall_Midge', | |
| 'Brown Plant Hopper': 'Rice___Brown_Plant_Hopper', | |
| 'BPH': 'Rice___Brown_Plant_Hopper', | |
| 'Leaf Folder': 'Rice___Leaf_Folder', | |
| 'Rice Hispa': 'Rice___Hispa', | |
| 'Gundhi Bug': 'Rice___Gundhi_Bug', | |
| 'Bakanae': 'Rice___Bakanae', | |
| # Wheat | |
| 'Wheat Leaf Rust': 'Wheat___Brown_Rust', | |
| 'Wheat Brown Rust': 'Wheat___Brown_Rust', | |
| 'Wheat Yellow Rust': 'Wheat___Yellow_Rust', | |
| 'Wheat Stripe Rust': 'Wheat___Yellow_Rust', | |
| 'Wheat Black Rust': 'Wheat___Black_Rust', | |
| 'Wheat Stem Rust': 'Wheat___Black_Rust', | |
| 'Wheat Loose Smut': 'Wheat___Loose_Smut', | |
| 'Wheat Karnal Bunt': 'Wheat___Karnal_Bunt', | |
| 'Wheat Powdery Mildew': 'Wheat___Powdery_Mildew', | |
| 'Wheat Termite': 'Wheat___Termites', | |
| 'Wheat healthy': 'Wheat___healthy', | |
| # Maize / Corn | |
| 'Corn (Maize) with Cercospora and Gray Leaf Spot': 'Corn_(maize)___Cercospora_leaf_spot Gray_leaf_spot', | |
| 'Corn (Maize) with Common Rust': 'Corn_(maize)___Common_rust_', | |
| 'Corn (Maize) with Northern Leaf Blight': 'Corn_(maize)___Northern_Leaf_Blight', | |
| 'Healthy Corn (Maize) Plant': 'Corn_(maize)___healthy', | |
| 'Corn Fall Armyworm': 'Maize___Fall_Armyworm', | |
| 'Fall Armyworm': 'Maize___Fall_Armyworm', | |
| 'Corn Stem Borer': 'Maize___Stem_Borer', | |
| # Pulses (Chickpea, Pigeonpea, Urad, Moong, Tiwda) | |
| 'Chickpea Pod Borer': 'Chickpea___Pod_Borer', | |
| 'Gram Pod Borer': 'Chickpea___Pod_Borer', | |
| 'Chickpea Fusarium Wilt': 'Chickpea___Fusarium_Wilt', | |
| 'Chickpea Ascochyta Blight': 'Chickpea___Ascochyta_Blight', | |
| 'Chickpea Dry Root Rot': 'Chickpea___Dry_Root_Rot', | |
| 'Chickpea Collar Rot': 'Chickpea___Collar_Rot', | |
| 'Chickpea healthy': 'Chickpea___healthy', | |
| 'Pigeonpea Wilt': 'Pigeonpea___Fusarium_Wilt', | |
| 'Arhar Wilt': 'Pigeonpea___Fusarium_Wilt', | |
| 'Pigeonpea Sterility Mosaic': 'Pigeonpea___Sterility_Mosaic_Disease', | |
| 'Pigeonpea Pod Borer': 'Pigeonpea___Pod_Borer', | |
| 'Pigeonpea Pod Fly': 'Pigeonpea___Pod_Fly', | |
| 'Pigeonpea Phytophthora Blight': 'Pigeonpea___Phytophthora_Blight', | |
| 'Pigeonpea healthy': 'Pigeonpea___healthy', | |
| 'Urad Yellow Mosaic': 'Urad_Moong___Yellow_Mosaic_Virus', | |
| 'Moong Yellow Mosaic': 'Urad_Moong___Yellow_Mosaic_Virus', | |
| 'Urad Cercospora Leaf Spot': 'Urad_Moong___Cercospora_Leaf_Spot', | |
| 'Urad Powdery Mildew': 'Urad_Moong___Powdery_Mildew', | |
| 'Urad healthy': 'Urad_Moong___healthy', | |
| 'Tiwda Downy Mildew': 'Lathyrus___Downy_Mildew', | |
| 'Tiwda Rust': 'Lathyrus___Rust', | |
| 'Tiwda healthy': 'Lathyrus___healthy', | |
| # Oilseeds (Soybean, Mustard, Groundnut, Niger) | |
| 'Soybean Girdle Beetle': 'Soybean___Girdle_Beetle', | |
| 'Soybean Yellow Mosaic': 'Soybean___Yellow_Mosaic_Virus', | |
| 'Soybean Rust': 'Soybean___Rust', | |
| 'Soybean Anthracnose': 'Soybean___Anthracnose', | |
| 'Soybean Stem Fly': 'Soybean___Stem_Fly', | |
| 'Soybean Defoliator': 'Soybean___Spodoptera_Litura', | |
| 'Healthy Soybean Plant': 'Soybean___healthy', | |
| 'Soybean healthy': 'Soybean___healthy', | |
| 'Mustard Aphid': 'Mustard___Aphid', | |
| 'Mustard White Rust': 'Mustard___White_Rust', | |
| 'Mustard Alternaria Blight': 'Mustard___Alternaria_Blight', | |
| 'Mustard Powdery Mildew': 'Mustard___Powdery_Mildew', | |
| 'Mustard Sclerotinia Stem Rot': 'Mustard___Sclerotinia_Stem_Rot', | |
| 'Mustard healthy': 'Mustard___healthy', | |
| 'Groundnut Tikka Leaf Spot': 'Groundnut___Tikka_Leaf_Spot', | |
| 'Groundnut Collar Rot': 'Groundnut___Collar_Rot', | |
| 'Groundnut Rust': 'Groundnut___Rust', | |
| 'Groundnut healthy': 'Groundnut___healthy', | |
| # Cash Crops (Cotton, Sugarcane) | |
| 'Cotton Pink Bollworm': 'Cotton___Pink_Bollworm', | |
| 'Cotton Whitefly': 'Cotton___Whitefly', | |
| 'Cotton Bacterial Blight': 'Cotton___Bacterial_Blight', | |
| 'Cotton Leaf Curl Virus': 'Cotton___Leaf_Curl_Virus', | |
| 'Cotton Boll Rot': 'Cotton___Boll_Rot_Complex', | |
| 'Cotton healthy': 'Cotton___healthy', | |
| 'Sugarcane Red Rot': 'Sugarcane___Red_Rot', | |
| 'Sugarcane Early Shoot Borer': 'Sugarcane___Early_Shoot_Borer', | |
| 'Sugarcane Pyrilla': 'Sugarcane___Pyrilla', | |
| 'Sugarcane Smut': 'Sugarcane___Smut', | |
| 'Sugarcane healthy': 'Sugarcane___healthy', | |
| # Vegetables (Tomato, Potato, Chilli, Brinjal, Okra) | |
| 'Tomato with Bacterial Spot': 'Tomato___Bacterial_spot', | |
| 'Tomato_Bacterial_spot': 'Tomato___Bacterial_spot', | |
| 'Tomato Bacterial Spot': 'Tomato___Bacterial_spot', | |
| 'Tomato with Early Blight': 'Tomato___Early_blight', | |
| 'Tomato_Early_blight': 'Tomato___Early_blight', | |
| 'Tomato Early Blight': 'Tomato___Early_blight', | |
| 'Tomato with Late Blight': 'Tomato___Late_blight', | |
| 'Tomato_Late_blight': 'Tomato___Late_blight', | |
| 'Tomato Late Blight': 'Tomato___Late_blight', | |
| 'Tomato with Leaf Mold': 'Tomato___Leaf_Mold', | |
| 'Tomato_Leaf_Mold': 'Tomato___Leaf_Mold', | |
| 'Tomato with Septoria Leaf Spot': 'Tomato___Septoria_leaf_spot', | |
| 'Tomato_Septoria_leaf_spot': 'Tomato___Septoria_leaf_spot', | |
| 'Tomato with Spider Mites or Two-spotted Spider Mite': 'Tomato___Spider_mites Two-spotted_spider_mite', | |
| 'Tomato_Spider_mites_Two_spotted_spider_mite': 'Tomato___Spider_mites Two-spotted_spider_mite', | |
| 'Tomato with Target Spot': 'Tomato___Target_Spot', | |
| 'Tomato__Target_Spot': 'Tomato___Target_Spot', | |
| 'Tomato Yellow Leaf Curl Virus': 'Tomato___Tomato_Yellow_Leaf_Curl_Virus', | |
| 'Tomato__Tomato_YellowLeaf__Curl_Virus': 'Tomato___Tomato_Yellow_Leaf_Curl_Virus', | |
| 'Tomato Mosaic Virus': 'Tomato___Tomato_mosaic_virus', | |
| 'Tomato__Tomato_mosaic_virus': 'Tomato___Tomato_mosaic_virus', | |
| 'Tomato Fruit Borer': 'Tomato___Fruit_Borer', | |
| 'Healthy Tomato Plant': 'Tomato___healthy', | |
| 'Tomato_healthy': 'Tomato___healthy', | |
| 'Tomato healthy': 'Tomato___healthy', | |
| 'Potato with Early Blight': 'Potato___Early_blight', | |
| 'Potato_Early_blight': 'Potato___Early_blight', | |
| 'Potato Early Blight': 'Potato___Early_blight', | |
| 'Potato with Late Blight': 'Potato___Late_blight', | |
| 'Potato_Late_blight': 'Potato___Late_blight', | |
| 'Potato Late Blight': 'Potato___Late_blight', | |
| 'Potato Bacterial Wilt': 'Potato___Bacterial_Wilt', | |
| 'Healthy Potato Plant': 'Potato___healthy', | |
| 'Potato_healthy': 'Potato___healthy', | |
| 'Potato healthy': 'Potato___healthy', | |
| 'Chilli Leaf Curl Virus': 'Chilli___Leaf_Curl_Virus', | |
| 'Chilli Anthracnose Fruit Rot': 'Chilli___Anthracnose_Dieback', | |
| 'Chilli Thrips': 'Chilli___Thrips', | |
| 'Chilli healthy': 'Chilli___healthy', | |
| 'Brinjal Shoot and Fruit Borer': 'Brinjal___Shoot_and_Fruit_Borer', | |
| 'Brinjal Phomopsis Blight': 'Brinjal___Phomopsis_Blight_Fruit_Rot', | |
| 'Brinjal Little Leaf': 'Brinjal___Little_Leaf_Disease', | |
| 'Brinjal healthy': 'Brinjal___healthy', | |
| 'Okra Yellow Vein Mosaic Virus': 'Okra___Yellow_Vein_Mosaic_Virus', | |
| 'Okra Shoot and Fruit Borer': 'Okra___Shoot_and_Fruit_Borer', | |
| 'Okra Powdery Mildew': 'Okra___Powdery_Mildew', | |
| 'Okra healthy': 'Okra___healthy', | |
| # Fruits & Alliums (Mango, Papaya, Citrus, Onion, Garlic, Cucurbits) | |
| 'Mango Powdery Mildew': 'Mango___Powdery_Mildew', | |
| 'Mango Anthracnose': 'Mango___Anthracnose', | |
| 'Mango Hopper': 'Mango___Hopper', | |
| 'Mango Malformation': 'Mango___Malformation', | |
| 'Papaya Ringspot Virus': 'Papaya___Ringspot_Virus', | |
| 'Papaya Mealybug': 'Papaya___Mealybug', | |
| 'Citrus Canker': 'Citrus___Canker', | |
| 'Citrus Greening': 'Citrus___Greening_Huanglongbing', | |
| 'Citrus Leaf Miner': 'Citrus___Leaf_Miner', | |
| 'Orange with Citrus Greening': 'Orange___Haunglongbing_(Citrus_greening)', | |
| 'Onion Purple Blotch': 'Onion_Garlic___Purple_Blotch', | |
| 'Onion Thrips': 'Onion_Garlic___Thrips', | |
| 'Garlic Stemphylium Blight': 'Onion_Garlic___Stemphylium_Blight', | |
| 'Cucurbit Downy Mildew': 'Cucurbits___Downy_Mildew', | |
| 'Cucurbit Powdery Mildew': 'Cucurbits___Powdery_Mildew', | |
| 'Cucurbit Fruit Fly': 'Cucurbits___Fruit_Fly', | |
| # Benchmark PlantVillage | |
| 'Apple Scab': 'Apple___Apple_scab', | |
| 'Apple with Black Rot': 'Apple___Black_rot', | |
| 'Cedar Apple Rust': 'Apple___Cedar_apple_rust', | |
| 'Healthy Apple': 'Apple___healthy', | |
| 'Healthy Blueberry Plant': 'Blueberry___healthy', | |
| 'Cherry with Powdery Mildew': 'Cherry___Powdery_mildew', | |
| 'Healthy Cherry Plant': 'Cherry___healthy', | |
| 'Grape with Black Rot': 'Grape___Black_rot', | |
| 'Grape with Esca (Black Measles)': 'Grape___Esca_(Black_Measles)', | |
| 'Grape with Isariopsis Leaf Spot': 'Grape___Leaf_blight_(Isariopsis_Leaf_Spot)', | |
| 'Healthy Grape Plant': 'Grape___healthy', | |
| 'Peach with Bacterial Spot': 'Peach___Bacterial_spot', | |
| 'Healthy Peach Plant': 'Peach___healthy', | |
| 'Bell Pepper with Bacterial Spot': 'Pepper,_bell___Bacterial_spot', | |
| 'Pepper__bell___Bacterial_spot': 'Pepper,_bell___Bacterial_spot', | |
| 'Healthy Bell Pepper Plant': 'Pepper,_bell___healthy', | |
| 'Pepper__bell___healthy': 'Pepper,_bell___healthy', | |
| 'Healthy Raspberry Plant': 'Raspberry___healthy', | |
| 'Squash with Powdery Mildew': 'Squash___Powdery_mildew', | |
| 'Strawberry with Leaf Scorch': 'Strawberry___Leaf_scorch', | |
| 'Healthy Strawberry Plant': 'Strawberry___healthy', | |
| } | |
| HF_CLASS_MAP.update(get_all_hf_aliases()) | |
| DEFAULT_UNKNOWN_DISEASE: Dict[str, Any] = { | |
| "name": "General Foliar Condition / Mild Anomaly", | |
| "scientific_name": "Pathology Under Observation", | |
| "crop": "General Crop", | |
| "category": "Anomaly", | |
| "severity": "Moderate", | |
| "is_healthy": False, | |
| "season_and_weather": "Variable conditions; monitor field microclimate closely", | |
| "economic_injury_level": "Inspect 20 random plants across field diagonals", | |
| "symptoms": [ | |
| "Visual anomaly detected on the leaf surface", | |
| "Possible localized chlorosis, pigmentation irregularity, or mechanical injury", | |
| "Requires further inspection in bright natural daylight" | |
| ], | |
| "treatment": { | |
| "immediate_action": [ | |
| "Isolate the affected branch or plant to prevent potential contagion", | |
| "Ensure leaf is clean and retake photo in bright natural daylight" | |
| ], | |
| "organic_control": [ | |
| "Spray neem oil solution (0.5% - 80ml per 16L tank) as a broad-spectrum preventive bio-agent", | |
| "Ensure balanced compost and micro-nutrient foliar spray" | |
| ], | |
| "chemical_control": [ | |
| "Consult with an agricultural extension officer (KVK / Krishi Mitr) before applying systemic chemical sprays" | |
| ] | |
| }, | |
| "prevention": [ | |
| "Maintain good farm sanitation and remove weed hosts", | |
| "Monitor crop weekly and avoid prolonged leaf wetness" | |
| ], | |
| "expert_consultation_recommended": True | |
| } | |
| def get_disease_info(class_id: str) -> Dict[str, Any]: | |
| """ | |
| Look up disease metadata from canonical class ID, HuggingFace label, or normalized query. | |
| Returns comprehensive agronomic details including tank dosages, organic controls, and symptoms. | |
| """ | |
| # 1. Direct dictionary match | |
| if class_id in DISEASE_KNOWLEDGE_BASE: | |
| info = DISEASE_KNOWLEDGE_BASE[class_id].copy() | |
| info["id"] = class_id | |
| return info | |
| # 2. Check Hugging Face explicit alias map | |
| if class_id in HF_CLASS_MAP: | |
| mapped_key = HF_CLASS_MAP[class_id] | |
| if mapped_key in DISEASE_KNOWLEDGE_BASE: | |
| info = DISEASE_KNOWLEDGE_BASE[mapped_key].copy() | |
| info["id"] = mapped_key | |
| return info | |
| # 3. Normalized fuzzy search | |
| clean_id = class_id.replace(" ", "_").replace("-", "_").replace("__", "_").lower() | |
| for key, data in DISEASE_KNOWLEDGE_BASE.items(): | |
| clean_key = key.replace(" ", "_").replace("-", "_").replace("__", "_").lower() | |
| if clean_key == clean_id: | |
| info = data.copy() | |
| info["id"] = key | |
| return info | |
| # 4. Partial substring match in knowledge base keys | |
| for key, data in DISEASE_KNOWLEDGE_BASE.items(): | |
| if class_id.lower() in key.lower() or key.lower() in class_id.lower(): | |
| info = data.copy() | |
| info["id"] = key | |
| return info | |
| # 5. Fallback representation | |
| info = DEFAULT_UNKNOWN_DISEASE.copy() | |
| parts = class_id.split("___") | |
| if len(parts) == 2: | |
| info["crop"] = parts[0].replace("_", " ").title() | |
| info["name"] = f"{info['crop']} {parts[1].replace('_', ' ').title()}" | |
| else: | |
| info["crop"] = "Unknown Crop" | |
| info["name"] = class_id.replace("_", " ").title() | |
| info["id"] = class_id | |
| return info | |