Browse Source

added flat model label reader

Dimitri Korsch 3 years ago
parent
commit
9d8700e288

+ 9 - 0
labels/flat_moth_label_provider/configuration.json

@@ -0,0 +1,9 @@
+{
+  "name": "Flat Moth Labels Provider",
+  "description": "Provides labels for 228 moth species without additional hierarchy information (e.g. Subfamily or Family)",
+  "code": {
+    "module": "moth_labels",
+    "class": "FlatMothLabels"
+  },
+  "mapping": "mapping.json"
+}

+ 1 - 0
labels/flat_moth_label_provider/lepiforum_moths.csv

@@ -0,0 +1 @@
+/home/AMMOD_data/moths/Lepiforums-Europaliste_Schmetterlinge_Version_7_Stand_2020_01_01_bearbeitet_GBrehm.csv

+ 69 - 0
labels/flat_moth_label_provider/lepiforum_reader.py

@@ -0,0 +1,69 @@
+#!/usr/bin/env python
+if __name__ != '__main__': raise Exception("Do not import me!")
+
+import csv
+import json
+
+from argparse import ArgumentParser
+from collections import namedtuple
+
+columns = ["KR-Nr.", "Überfamilie", "Familie", "Unterfamilie", "Tribus", "Gattung", "Art", "Seltenheit"]
+Row = namedtuple("Row", "kr superfamily family subfamily tribus genus species rarity")
+
+
+class ClassName(namedtuple("ClassName", "genus species")):
+	__slots__ = ()
+	alt = {
+		"mesapamea_spec": "mesapamea_secalis",
+		"amphipyra_pyramidea_-_berberea": "amphipyra_pyramidea",
+		"aplocera_plagiata_-_efformata": "aplocera_plagiata",
+		"chlroclystis_v-ata": "chloroclystis_v-ata",
+		"epirrita_autumnata_-_dilutata_-_christyi": "epirrita_autumnata",
+		"noctua_janthina_-_janthe": "noctua_janthina",
+		"oligia_latruncula_-_strigilis_-_versicolor": "oligia_latruncula",
+		"thera_variata_-_britannica": "thera_variata"
+	}
+
+	@classmethod
+	def new(cls, name_string: str):
+		name_string = name_string.strip()
+
+		name_string = cls.alt.get(name_string, name_string)
+		genus, _, spec = name_string.partition("_")
+		return cls(genus, spec)
+
+
+def main(args):
+	global columns
+
+	with open(args.class_names) as f:
+		class_names = list(map(ClassName.new, f))
+
+	with open(args.csv_file, newline="") as f:
+		reader = csv.DictReader(f, delimiter="\t")
+		rows = [Row(*[row[col] for col in columns]) for row in reader]
+
+	not_mapped = []
+	mapping = {}
+	for i, name in enumerate(class_names):
+		mapped = False
+
+		for row in rows:
+			if name.genus == row.genus.lower() and name.species == row.species.lower():
+				mapped = True
+				mapping[i] = dict(class_name="_".join(name), **row._asdict())
+				continue
+
+		if not mapped:
+			not_mapped.append(name)
+
+	with open(args.output, "w") as f:
+		json.dump(mapping, f, indent=2)
+
+
+parser = ArgumentParser()
+parser.add_argument("csv_file")
+parser.add_argument("class_names")
+parser.add_argument("--output", default="mapping.json")
+
+main(parser.parse_args())

+ 2202 - 0
labels/flat_moth_label_provider/mapping.json

@@ -0,0 +1,2202 @@
+{
+  "0": {
+    "class_name": "abrostola_tripartita",
+    "kr": "9091",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Plusiinae",
+    "tribus": "Abrostolini",
+    "genus": "Abrostola",
+    "species": "tripartita",
+    "rarity": ""
+  },
+  "1": {
+    "class_name": "abrostola_triplasia",
+    "kr": "9093",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Plusiinae",
+    "tribus": "Abrostolini",
+    "genus": "Abrostola",
+    "species": "triplasia",
+    "rarity": ""
+  },
+  "2": {
+    "class_name": "achlya_flavicornis",
+    "kr": "7498",
+    "superfamily": "Drepanoidea",
+    "family": "Drepanidae",
+    "subfamily": "Thyatirinae",
+    "tribus": "",
+    "genus": "Achlya",
+    "species": "flavicornis",
+    "rarity": ""
+  },
+  "3": {
+    "class_name": "acronicta_aceris",
+    "kr": "8778",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Acronictinae",
+    "tribus": "",
+    "genus": "Acronicta",
+    "species": "aceris",
+    "rarity": "5"
+  },
+  "4": {
+    "class_name": "acronicta_leporina",
+    "kr": "8779",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Acronictinae",
+    "tribus": "",
+    "genus": "Acronicta",
+    "species": "leporina",
+    "rarity": "3"
+  },
+  "5": {
+    "class_name": "acronicta_megacephala",
+    "kr": "8780",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Acronictinae",
+    "tribus": "",
+    "genus": "Acronicta",
+    "species": "megacephala",
+    "rarity": ""
+  },
+  "6": {
+    "class_name": "acronicta_psi",
+    "kr": "8777",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Acronictinae",
+    "tribus": "",
+    "genus": "Acronicta",
+    "species": "psi",
+    "rarity": "5"
+  },
+  "7": {
+    "class_name": "aglia_tau",
+    "kr": "6788",
+    "superfamily": "Bombycoidea",
+    "family": "Saturniidae",
+    "subfamily": "Agliinae",
+    "tribus": "",
+    "genus": "Aglia",
+    "species": "tau",
+    "rarity": "4"
+  },
+  "8": {
+    "class_name": "agriopis_aurantiaria",
+    "kr": "7695",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Boarmiini",
+    "genus": "Agriopis",
+    "species": "aurantiaria",
+    "rarity": ""
+  },
+  "9": {
+    "class_name": "agriopis_leucophaearia",
+    "kr": "7693",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Boarmiini",
+    "genus": "Agriopis",
+    "species": "leucophaearia",
+    "rarity": ""
+  },
+  "10": {
+    "class_name": "agriopis_marginaria",
+    "kr": "7696",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Boarmiini",
+    "genus": "Agriopis",
+    "species": "marginaria",
+    "rarity": ""
+  },
+  "11": {
+    "class_name": "agrochola_litura",
+    "kr": "9586",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Xylenini",
+    "genus": "Agrochola",
+    "species": "litura",
+    "rarity": "4"
+  },
+  "12": {
+    "class_name": "agrochola_lunosa",
+    "kr": "9591",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Xylenini",
+    "genus": "Agrochola",
+    "species": "lunosa",
+    "rarity": ""
+  },
+  "13": {
+    "class_name": "agrochola_macilenta",
+    "kr": "9571",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Xylenini",
+    "genus": "Agrochola",
+    "species": "macilenta",
+    "rarity": ""
+  },
+  "14": {
+    "class_name": "agrotis_exclamationis",
+    "kr": "10348",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Noctuinae",
+    "tribus": "Agrotini",
+    "genus": "Agrotis",
+    "species": "exclamationis",
+    "rarity": "2"
+  },
+  "15": {
+    "class_name": "agrotis_ipsilon",
+    "kr": "10346",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Noctuinae",
+    "tribus": "Agrotini",
+    "genus": "Agrotis",
+    "species": "ipsilon",
+    "rarity": "5"
+  },
+  "16": {
+    "class_name": "agrotis_puta",
+    "kr": "10343",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Noctuinae",
+    "tribus": "Agrotini",
+    "genus": "Agrotis",
+    "species": "puta",
+    "rarity": ""
+  },
+  "17": {
+    "class_name": "alcis_repandata",
+    "kr": "7777",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Boarmiini",
+    "genus": "Alcis",
+    "species": "repandata",
+    "rarity": ""
+  },
+  "18": {
+    "class_name": "alsophila_aescularia",
+    "kr": "7953",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Alsophilini",
+    "genus": "Alsophila",
+    "species": "aescularia",
+    "rarity": "3"
+  },
+  "19": {
+    "class_name": "amphipyra_pyramidea",
+    "kr": "9307",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Amphipyrinae",
+    "tribus": "",
+    "genus": "Amphipyra",
+    "species": "pyramidea",
+    "rarity": "5"
+  },
+  "20": {
+    "class_name": "anorthoa_munda",
+    "kr": "10050",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Hadeninae",
+    "tribus": "Orthosiini",
+    "genus": "Anorthoa",
+    "species": "munda",
+    "rarity": "4"
+  },
+  "21": {
+    "class_name": "apamea_monoglypha",
+    "kr": "9748",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Apameini",
+    "genus": "Apamea",
+    "species": "monoglypha",
+    "rarity": "3"
+  },
+  "22": {
+    "class_name": "apamea_scolopacina",
+    "kr": "9774",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Apameini",
+    "genus": "Apamea",
+    "species": "scolopacina",
+    "rarity": ""
+  },
+  "23": {
+    "class_name": "aplocera_plagiata",
+    "kr": "8620",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Chesiadini",
+    "genus": "Aplocera",
+    "species": "plagiata",
+    "rarity": "4"
+  },
+  "24": {
+    "class_name": "apocheima_hispidaria",
+    "kr": "7671",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Boarmiini",
+    "genus": "Apocheima",
+    "species": "hispidaria",
+    "rarity": ""
+  },
+  "25": {
+    "class_name": "apoda_limacodes",
+    "kr": "3907",
+    "superfamily": "Zygaenoidea",
+    "family": "Limacodidae",
+    "subfamily": "",
+    "tribus": "",
+    "genus": "Apoda",
+    "species": "limacodes",
+    "rarity": "3"
+  },
+  "26": {
+    "class_name": "arctia_caja",
+    "kr": "10598",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Arctiinae",
+    "tribus": "Arctiini",
+    "genus": "Arctia",
+    "species": "caja",
+    "rarity": "3"
+  },
+  "27": {
+    "class_name": "asthena_albulata",
+    "kr": "8656",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Asthenini",
+    "genus": "Asthena",
+    "species": "albulata",
+    "rarity": ""
+  },
+  "28": {
+    "class_name": "atolmis_rubricollis",
+    "kr": "10483",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Arctiinae",
+    "tribus": "Lithosiini",
+    "genus": "Atolmis",
+    "species": "rubricollis",
+    "rarity": ""
+  },
+  "29": {
+    "class_name": "autographa_gamma",
+    "kr": "9056",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Plusiinae",
+    "tribus": "Plusiini",
+    "genus": "Autographa",
+    "species": "gamma",
+    "rarity": "5"
+  },
+  "30": {
+    "class_name": "axylia_putris",
+    "kr": "10082",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Noctuinae",
+    "tribus": "Noctuini",
+    "genus": "Axylia",
+    "species": "putris",
+    "rarity": "4"
+  },
+  "31": {
+    "class_name": "biston_betularia",
+    "kr": "7686",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Boarmiini",
+    "genus": "Biston",
+    "species": "betularia",
+    "rarity": ""
+  },
+  "32": {
+    "class_name": "biston_strataria",
+    "kr": "7685",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Boarmiini",
+    "genus": "Biston",
+    "species": "strataria",
+    "rarity": ""
+  },
+  "33": {
+    "class_name": "cabera_exanthemata",
+    "kr": "7826",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Caberini",
+    "genus": "Cabera",
+    "species": "exanthemata",
+    "rarity": "3"
+  },
+  "34": {
+    "class_name": "cabera_pusaria",
+    "kr": "7824",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Caberini",
+    "genus": "Cabera",
+    "species": "pusaria",
+    "rarity": "5"
+  },
+  "35": {
+    "class_name": "callimorpha_dominula",
+    "kr": "10603",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Arctiinae",
+    "tribus": "Arctiini",
+    "genus": "Callimorpha",
+    "species": "dominula",
+    "rarity": "4"
+  },
+  "36": {
+    "class_name": "calliteara_pudibunda",
+    "kr": "10387",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Lymantriinae",
+    "tribus": "Orgyiini",
+    "genus": "Calliteara",
+    "species": "pudibunda",
+    "rarity": "5"
+  },
+  "37": {
+    "class_name": "campaea_margaritaria",
+    "kr": "7836",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Campaeini",
+    "genus": "Campaea",
+    "species": "margaritaria",
+    "rarity": ""
+  },
+  "38": {
+    "class_name": "camptogramma_bilineata",
+    "kr": "8289",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Xanthorhoini",
+    "genus": "Camptogramma",
+    "species": "bilineata",
+    "rarity": "5"
+  },
+  "39": {
+    "class_name": "caradrina_clavipalpis",
+    "kr": "9433",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Caradrini",
+    "genus": "Caradrina",
+    "species": "clavipalpis",
+    "rarity": "3"
+  },
+  "40": {
+    "class_name": "catocala_nupta",
+    "kr": "8874",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Erebinae",
+    "tribus": "Catocalini",
+    "genus": "Catocala",
+    "species": "nupta",
+    "rarity": "3"
+  },
+  "41": {
+    "class_name": "cerapteryx_graminis",
+    "kr": "10062",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Hadeninae",
+    "tribus": "Tholerini",
+    "genus": "Cerapteryx",
+    "species": "graminis",
+    "rarity": ""
+  },
+  "42": {
+    "class_name": "charanyca_trigrammica",
+    "kr": "9456",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Caradrini",
+    "genus": "Charanyca",
+    "species": "trigrammica",
+    "rarity": "3"
+  },
+  "43": {
+    "class_name": "chesias_legatella",
+    "kr": "8609",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Chesiadini",
+    "genus": "Chesias",
+    "species": "legatella",
+    "rarity": ""
+  },
+  "44": {
+    "class_name": "chloroclysta_siterata",
+    "kr": "8341",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Cidariini",
+    "genus": "Chloroclysta",
+    "species": "siterata",
+    "rarity": ""
+  },
+  "45": {
+    "class_name": "chloroclystis_v-ata",
+    "kr": "8601",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Eupitheciini",
+    "genus": "Chloroclystis",
+    "species": "v-ata",
+    "rarity": ""
+  },
+  "46": {
+    "class_name": "colocasia_coryli",
+    "kr": "10372",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Pantheinae",
+    "tribus": "",
+    "genus": "Colocasia",
+    "species": "coryli",
+    "rarity": ""
+  },
+  "47": {
+    "class_name": "colostygia_pectinataria",
+    "kr": "8385",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Cidariini",
+    "genus": "Colostygia",
+    "species": "pectinataria",
+    "rarity": ""
+  },
+  "48": {
+    "class_name": "colotois_pennaria",
+    "kr": "7663",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Colotoini",
+    "genus": "Colotois",
+    "species": "pennaria",
+    "rarity": "4"
+  },
+  "49": {
+    "class_name": "conistra_erythrocephala",
+    "kr": "9611",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Xylenini",
+    "genus": "Conistra",
+    "species": "erythrocephala",
+    "rarity": ""
+  },
+  "50": {
+    "class_name": "conistra_rubiginosa",
+    "kr": "9603",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Xylenini",
+    "genus": "Conistra",
+    "species": "rubiginosa",
+    "rarity": ""
+  },
+  "51": {
+    "class_name": "conistra_vaccinii",
+    "kr": "9600",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Xylenini",
+    "genus": "Conistra",
+    "species": "vaccinii",
+    "rarity": "5"
+  },
+  "52": {
+    "class_name": "cosmia_pyralina",
+    "kr": "9549",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Xylenini",
+    "genus": "Cosmia",
+    "species": "pyralina",
+    "rarity": ""
+  },
+  "53": {
+    "class_name": "cosmia_trapezina",
+    "kr": "9550",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Xylenini",
+    "genus": "Cosmia",
+    "species": "trapezina",
+    "rarity": "5"
+  },
+  "54": {
+    "class_name": "cosmorhoe_ocellata",
+    "kr": "8319",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Cidariini",
+    "genus": "Cosmorhoe",
+    "species": "ocellata",
+    "rarity": "3"
+  },
+  "55": {
+    "class_name": "craniophora_ligustri",
+    "kr": "8789",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Acronictinae",
+    "tribus": "",
+    "genus": "Craniophora",
+    "species": "ligustri",
+    "rarity": ""
+  },
+  "56": {
+    "class_name": "cryphia_algae",
+    "kr": "8801",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Bryophilinae",
+    "tribus": "",
+    "genus": "Cryphia",
+    "species": "algae",
+    "rarity": ""
+  },
+  "57": {
+    "class_name": "cybosia_mesomella",
+    "kr": "10477",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Arctiinae",
+    "tribus": "Lithosiini",
+    "genus": "Cybosia",
+    "species": "mesomella",
+    "rarity": "4"
+  },
+  "58": {
+    "class_name": "cyclophora_linearia",
+    "kr": "8024",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Sterrhinae",
+    "tribus": "Cosymbiini",
+    "genus": "Cyclophora",
+    "species": "linearia",
+    "rarity": ""
+  },
+  "59": {
+    "class_name": "cyclophora_punctaria",
+    "kr": "8022",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Sterrhinae",
+    "tribus": "Cosymbiini",
+    "genus": "Cyclophora",
+    "species": "punctaria",
+    "rarity": "3"
+  },
+  "60": {
+    "class_name": "cymatophorina_diluta",
+    "kr": "7492",
+    "superfamily": "Drepanoidea",
+    "family": "Drepanidae",
+    "subfamily": "Thyatirinae",
+    "tribus": "",
+    "genus": "Cymatophorina",
+    "species": "diluta",
+    "rarity": ""
+  },
+  "61": {
+    "class_name": "deilephila_elpenor",
+    "kr": "6862",
+    "superfamily": "Bombycoidea",
+    "family": "Sphingidae",
+    "subfamily": "Macroglossinae",
+    "tribus": "Macroglossini",
+    "genus": "Deilephila",
+    "species": "elpenor",
+    "rarity": "3"
+  },
+  "62": {
+    "class_name": "deilephila_porcellus",
+    "kr": "6863",
+    "superfamily": "Bombycoidea",
+    "family": "Sphingidae",
+    "subfamily": "Macroglossinae",
+    "tribus": "Macroglossini",
+    "genus": "Deilephila",
+    "species": "porcellus",
+    "rarity": ""
+  },
+  "63": {
+    "class_name": "deileptenia_ribeata",
+    "kr": "7775",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Boarmiini",
+    "genus": "Deileptenia",
+    "species": "ribeata",
+    "rarity": ""
+  },
+  "64": {
+    "class_name": "deltote_pygarga",
+    "kr": "9114",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Eustrotiinae",
+    "tribus": "",
+    "genus": "Deltote",
+    "species": "pygarga",
+    "rarity": "3"
+  },
+  "65": {
+    "class_name": "diarsia_brunnea",
+    "kr": "10092",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Noctuinae",
+    "tribus": "Noctuini",
+    "genus": "Diarsia",
+    "species": "brunnea",
+    "rarity": "4"
+  },
+  "66": {
+    "class_name": "diarsia_mendica",
+    "kr": "10089",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Noctuinae",
+    "tribus": "Noctuini",
+    "genus": "Diarsia",
+    "species": "mendica",
+    "rarity": "4"
+  },
+  "67": {
+    "class_name": "drepana_falcataria",
+    "kr": "7508",
+    "superfamily": "Drepanoidea",
+    "family": "Drepanidae",
+    "subfamily": "Drepaninae",
+    "tribus": "",
+    "genus": "Drepana",
+    "species": "falcataria",
+    "rarity": "4"
+  },
+  "68": {
+    "class_name": "drymonia_obliterata",
+    "kr": "8723",
+    "superfamily": "Noctuoidea",
+    "family": "Notodontidae",
+    "subfamily": "Notodontinae",
+    "tribus": "Notodontini",
+    "genus": "Drymonia",
+    "species": "obliterata",
+    "rarity": ""
+  },
+  "69": {
+    "class_name": "drymonia_ruficornis",
+    "kr": "8722",
+    "superfamily": "Noctuoidea",
+    "family": "Notodontidae",
+    "subfamily": "Notodontinae",
+    "tribus": "Notodontini",
+    "genus": "Drymonia",
+    "species": "ruficornis",
+    "rarity": ""
+  },
+  "70": {
+    "class_name": "dysstroma_truncata",
+    "kr": "8348",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Cidariini",
+    "genus": "Dysstroma",
+    "species": "truncata",
+    "rarity": "4"
+  },
+  "71": {
+    "class_name": "ecliptopera_capitata",
+    "kr": "8339",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Cidariini",
+    "genus": "Ecliptopera",
+    "species": "capitata",
+    "rarity": ""
+  },
+  "72": {
+    "class_name": "ecliptopera_silaceata",
+    "kr": "8338",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Cidariini",
+    "genus": "Ecliptopera",
+    "species": "silaceata",
+    "rarity": ""
+  },
+  "73": {
+    "class_name": "ectropis_crepuscularia",
+    "kr": "7796",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Boarmiini",
+    "genus": "Ectropis",
+    "species": "crepuscularia",
+    "rarity": ""
+  },
+  "74": {
+    "class_name": "eilema_complana",
+    "kr": "10490",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Arctiinae",
+    "tribus": "Lithosiini",
+    "genus": "Eilema",
+    "species": "complana",
+    "rarity": ""
+  },
+  "75": {
+    "class_name": "eilema_depressa",
+    "kr": "10487",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Arctiinae",
+    "tribus": "Lithosiini",
+    "genus": "Eilema",
+    "species": "depressa",
+    "rarity": ""
+  },
+  "76": {
+    "class_name": "eilema_sororcula",
+    "kr": "10499",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Arctiinae",
+    "tribus": "Lithosiini",
+    "genus": "Eilema",
+    "species": "sororcula",
+    "rarity": ""
+  },
+  "77": {
+    "class_name": "elaphria_venustula",
+    "kr": "9396",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Elaphriini",
+    "genus": "Elaphria",
+    "species": "venustula",
+    "rarity": ""
+  },
+  "78": {
+    "class_name": "ennomos_fuscantaria",
+    "kr": "7635",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Ennomini",
+    "genus": "Ennomos",
+    "species": "fuscantaria",
+    "rarity": ""
+  },
+  "79": {
+    "class_name": "epirrhoe_alternata",
+    "kr": "8275",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Xanthorhoini",
+    "genus": "Epirrhoe",
+    "species": "alternata",
+    "rarity": "5"
+  },
+  "80": {
+    "class_name": "epirrita_autumnata",
+    "kr": "8444",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Operophterini",
+    "genus": "Epirrita",
+    "species": "autumnata",
+    "rarity": ""
+  },
+  "81": {
+    "class_name": "erannis_defoliaria",
+    "kr": "7699",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Boarmiini",
+    "genus": "Erannis",
+    "species": "defoliaria",
+    "rarity": ""
+  },
+  "82": {
+    "class_name": "eupithecia_abbreviata",
+    "kr": "8578",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Eupitheciini",
+    "genus": "Eupithecia",
+    "species": "abbreviata",
+    "rarity": ""
+  },
+  "83": {
+    "class_name": "eupithecia_icterata",
+    "kr": "8538",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Eupitheciini",
+    "genus": "Eupithecia",
+    "species": "icterata",
+    "rarity": "3"
+  },
+  "84": {
+    "class_name": "eupithecia_succenturiata",
+    "kr": "8539",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Eupitheciini",
+    "genus": "Eupithecia",
+    "species": "succenturiata",
+    "rarity": "3"
+  },
+  "85": {
+    "class_name": "eupithecia_tantillaria",
+    "kr": "8596",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Eupitheciini",
+    "genus": "Eupithecia",
+    "species": "tantillaria",
+    "rarity": "3"
+  },
+  "86": {
+    "class_name": "euplexia_lucipara",
+    "kr": "9503",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Phlogophorini",
+    "genus": "Euplexia",
+    "species": "lucipara",
+    "rarity": "3"
+  },
+  "87": {
+    "class_name": "eupsilia_transversa",
+    "kr": "9596",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Xylenini",
+    "genus": "Eupsilia",
+    "species": "transversa",
+    "rarity": "5"
+  },
+  "88": {
+    "class_name": "eustroma_reticulata",
+    "kr": "8366",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Cidariini",
+    "genus": "Eustroma",
+    "species": "reticulata",
+    "rarity": ""
+  },
+  "89": {
+    "class_name": "geometra_papilionaria",
+    "kr": "7969",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Geometrinae",
+    "tribus": "Geometrini",
+    "genus": "Geometra",
+    "species": "papilionaria",
+    "rarity": ""
+  },
+  "90": {
+    "class_name": "gymnoscelis_rufifasciata",
+    "kr": "8599",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Eupitheciini",
+    "genus": "Gymnoscelis",
+    "species": "rufifasciata",
+    "rarity": ""
+  },
+  "91": {
+    "class_name": "habrosyne_pyritoides",
+    "kr": "7483",
+    "superfamily": "Drepanoidea",
+    "family": "Drepanidae",
+    "subfamily": "Thyatirinae",
+    "tribus": "",
+    "genus": "Habrosyne",
+    "species": "pyritoides",
+    "rarity": ""
+  },
+  "92": {
+    "class_name": "hada_plebeja",
+    "kr": "9925",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Hadeninae",
+    "tribus": "Hadenini",
+    "genus": "Hada",
+    "species": "plebeja",
+    "rarity": "5"
+  },
+  "93": {
+    "class_name": "hemithea_aestivaria",
+    "kr": "7980",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Geometrinae",
+    "tribus": "Hemitheini",
+    "genus": "Hemithea",
+    "species": "aestivaria",
+    "rarity": ""
+  },
+  "94": {
+    "class_name": "herminia_grisealis",
+    "kr": "8846",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Herminiinae",
+    "tribus": "",
+    "genus": "Herminia",
+    "species": "grisealis",
+    "rarity": ""
+  },
+  "95": {
+    "class_name": "herminia_tarsicrinalis",
+    "kr": "8845",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Herminiinae",
+    "tribus": "",
+    "genus": "Herminia",
+    "species": "tarsicrinalis",
+    "rarity": ""
+  },
+  "96": {
+    "class_name": "herminia_tarsipennalis",
+    "kr": "8858",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Herminiinae",
+    "tribus": "",
+    "genus": "Herminia",
+    "species": "tarsipennalis",
+    "rarity": ""
+  },
+  "97": {
+    "class_name": "hoplodrina_octogenaria",
+    "kr": "9449",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Caradrini",
+    "genus": "Hoplodrina",
+    "species": "octogenaria",
+    "rarity": "3"
+  },
+  "98": {
+    "class_name": "horisme_tersata",
+    "kr": "8402",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Melanthiini",
+    "genus": "Horisme",
+    "species": "tersata",
+    "rarity": ""
+  },
+  "99": {
+    "class_name": "hydriomena_impluviata",
+    "kr": "8392",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Hydriomenini",
+    "genus": "Hydriomena",
+    "species": "impluviata",
+    "rarity": "3"
+  },
+  "100": {
+    "class_name": "hylaea_fasciaria",
+    "kr": "7839",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Campaeini",
+    "genus": "Hylaea",
+    "species": "fasciaria",
+    "rarity": "4"
+  },
+  "101": {
+    "class_name": "hypena_proboscidalis",
+    "kr": "8994",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Hypeninae",
+    "tribus": "",
+    "genus": "Hypena",
+    "species": "proboscidalis",
+    "rarity": "5"
+  },
+  "102": {
+    "class_name": "hypomecis_punctinalis",
+    "kr": "7784",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Boarmiini",
+    "genus": "Hypomecis",
+    "species": "punctinalis",
+    "rarity": ""
+  },
+  "103": {
+    "class_name": "idaea_aversata",
+    "kr": "8184",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Sterrhinae",
+    "tribus": "Sterrhini",
+    "genus": "Idaea",
+    "species": "aversata",
+    "rarity": "3"
+  },
+  "104": {
+    "class_name": "idaea_biselata",
+    "kr": "8132",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Sterrhinae",
+    "tribus": "Sterrhini",
+    "genus": "Idaea",
+    "species": "biselata",
+    "rarity": "3"
+  },
+  "105": {
+    "class_name": "idaea_dimidiata",
+    "kr": "8161",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Sterrhinae",
+    "tribus": "Sterrhini",
+    "genus": "Idaea",
+    "species": "dimidiata",
+    "rarity": ""
+  },
+  "106": {
+    "class_name": "idaea_seriata",
+    "kr": "8155",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Sterrhinae",
+    "tribus": "Sterrhini",
+    "genus": "Idaea",
+    "species": "seriata",
+    "rarity": "3"
+  },
+  "107": {
+    "class_name": "lacanobia_oleracea",
+    "kr": "9917",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Hadeninae",
+    "tribus": "Hadenini",
+    "genus": "Lacanobia",
+    "species": "oleracea",
+    "rarity": "5"
+  },
+  "108": {
+    "class_name": "lampropteryx_otregiata",
+    "kr": "8317",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Cidariini",
+    "genus": "Lampropteryx",
+    "species": "otregiata",
+    "rarity": ""
+  },
+  "109": {
+    "class_name": "lampropteryx_suffumata",
+    "kr": "8316",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Cidariini",
+    "genus": "Lampropteryx",
+    "species": "suffumata",
+    "rarity": ""
+  },
+  "110": {
+    "class_name": "laothoe_populi",
+    "kr": "6824",
+    "superfamily": "Bombycoidea",
+    "family": "Sphingidae",
+    "subfamily": "Smerinthinae",
+    "tribus": "Smerinthini",
+    "genus": "Laothoe",
+    "species": "populi",
+    "rarity": "4"
+  },
+  "111": {
+    "class_name": "laspeyria_flexula",
+    "kr": "8975",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Boletobiinae",
+    "tribus": "Aventiini",
+    "genus": "Laspeyria",
+    "species": "flexula",
+    "rarity": ""
+  },
+  "112": {
+    "class_name": "ligdia_adustata",
+    "kr": "7530",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Abraxini",
+    "genus": "Ligdia",
+    "species": "adustata",
+    "rarity": ""
+  },
+  "113": {
+    "class_name": "lobophora_halterata",
+    "kr": "8665",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Trichopterygini",
+    "genus": "Lobophora",
+    "species": "halterata",
+    "rarity": ""
+  },
+  "114": {
+    "class_name": "lomaspilis_marginata",
+    "kr": "7527",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Cassymini",
+    "genus": "Lomaspilis",
+    "species": "marginata",
+    "rarity": "3"
+  },
+  "115": {
+    "class_name": "lomographa_temerata",
+    "kr": "7829",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Baptini",
+    "genus": "Lomographa",
+    "species": "temerata",
+    "rarity": ""
+  },
+  "116": {
+    "class_name": "lymantria_dispar",
+    "kr": "10376",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Lymantriinae",
+    "tribus": "Lymantriini",
+    "genus": "Lymantria",
+    "species": "dispar",
+    "rarity": "5"
+  },
+  "117": {
+    "class_name": "lymantria_monacha",
+    "kr": "10375",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Lymantriinae",
+    "tribus": "Lymantriini",
+    "genus": "Lymantria",
+    "species": "monacha",
+    "rarity": "6"
+  },
+  "118": {
+    "class_name": "macaria_alternata",
+    "kr": "7540",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Macariini",
+    "genus": "Macaria",
+    "species": "alternata",
+    "rarity": ""
+  },
+  "119": {
+    "class_name": "macaria_liturata",
+    "kr": "7542",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Macariini",
+    "genus": "Macaria",
+    "species": "liturata",
+    "rarity": ""
+  },
+  "120": {
+    "class_name": "macaria_notata",
+    "kr": "7539",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Macariini",
+    "genus": "Macaria",
+    "species": "notata",
+    "rarity": ""
+  },
+  "121": {
+    "class_name": "melanthia_procellata",
+    "kr": "8411",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Melanthiini",
+    "genus": "Melanthia",
+    "species": "procellata",
+    "rarity": ""
+  },
+  "122": {
+    "class_name": "mesapamea_secalis",
+    "kr": "9789",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Apameini",
+    "genus": "Mesapamea",
+    "species": "secalis",
+    "rarity": "3"
+  },
+  "123": {
+    "class_name": "mesoligia_furuncula",
+    "kr": "9786",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Apameini",
+    "genus": "Mesoligia",
+    "species": "furuncula",
+    "rarity": ""
+  },
+  "124": {
+    "class_name": "mimas_tiliae",
+    "kr": "6819",
+    "superfamily": "Bombycoidea",
+    "family": "Sphingidae",
+    "subfamily": "Smerinthinae",
+    "tribus": "Smerinthini",
+    "genus": "Mimas",
+    "species": "tiliae",
+    "rarity": "4"
+  },
+  "125": {
+    "class_name": "mythimna_albipuncta",
+    "kr": "10002",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Hadeninae",
+    "tribus": "Leucaniini",
+    "genus": "Mythimna",
+    "species": "albipuncta",
+    "rarity": "3"
+  },
+  "126": {
+    "class_name": "mythimna_ferrago",
+    "kr": "10001",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Hadeninae",
+    "tribus": "Leucaniini",
+    "genus": "Mythimna",
+    "species": "ferrago",
+    "rarity": "3"
+  },
+  "127": {
+    "class_name": "mythimna_impura",
+    "kr": "10006",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Hadeninae",
+    "tribus": "Leucaniini",
+    "genus": "Mythimna",
+    "species": "impura",
+    "rarity": ""
+  },
+  "128": {
+    "class_name": "mythimna_l-album",
+    "kr": "10022",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Hadeninae",
+    "tribus": "Leucaniini",
+    "genus": "Mythimna",
+    "species": "l-album",
+    "rarity": "4"
+  },
+  "129": {
+    "class_name": "noctua_comes",
+    "kr": "10099",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Noctuinae",
+    "tribus": "Noctuini",
+    "genus": "Noctua",
+    "species": "comes",
+    "rarity": ""
+  },
+  "130": {
+    "class_name": "noctua_fimbriata",
+    "kr": "10100",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Noctuinae",
+    "tribus": "Noctuini",
+    "genus": "Noctua",
+    "species": "fimbriata",
+    "rarity": ""
+  },
+  "131": {
+    "class_name": "noctua_interjecta",
+    "kr": "10105",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Noctuinae",
+    "tribus": "Noctuini",
+    "genus": "Noctua",
+    "species": "interjecta",
+    "rarity": ""
+  },
+  "132": {
+    "class_name": "noctua_janthina",
+    "kr": "10102",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Noctuinae",
+    "tribus": "Noctuini",
+    "genus": "Noctua",
+    "species": "janthina",
+    "rarity": ""
+  },
+  "133": {
+    "class_name": "noctua_pronuba",
+    "kr": "10096",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Noctuinae",
+    "tribus": "Noctuini",
+    "genus": "Noctua",
+    "species": "pronuba",
+    "rarity": "5"
+  },
+  "134": {
+    "class_name": "nola_confusalis",
+    "kr": "10429",
+    "superfamily": "Noctuoidea",
+    "family": "Nolidae",
+    "subfamily": "Nolinae",
+    "tribus": "Nolini",
+    "genus": "Nola",
+    "species": "confusalis",
+    "rarity": ""
+  },
+  "135": {
+    "class_name": "notodonta_dromedarius",
+    "kr": "8716",
+    "superfamily": "Noctuoidea",
+    "family": "Notodontidae",
+    "subfamily": "Notodontinae",
+    "tribus": "Notodontini",
+    "genus": "Notodonta",
+    "species": "dromedarius",
+    "rarity": "4"
+  },
+  "136": {
+    "class_name": "nycteola_revayana",
+    "kr": "10441",
+    "superfamily": "Noctuoidea",
+    "family": "Nolidae",
+    "subfamily": "Chloephorinae",
+    "tribus": "",
+    "genus": "Nycteola",
+    "species": "revayana",
+    "rarity": ""
+  },
+  "137": {
+    "class_name": "ochropacha_duplaris",
+    "kr": "7490",
+    "superfamily": "Drepanoidea",
+    "family": "Drepanidae",
+    "subfamily": "Thyatirinae",
+    "tribus": "",
+    "genus": "Ochropacha",
+    "species": "duplaris",
+    "rarity": ""
+  },
+  "138": {
+    "class_name": "ochropleura_plecta",
+    "kr": "10086",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Noctuinae",
+    "tribus": "Noctuini",
+    "genus": "Ochropleura",
+    "species": "plecta",
+    "rarity": "3"
+  },
+  "139": {
+    "class_name": "odontopera_bidentata",
+    "kr": "7647",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Odontoperini",
+    "genus": "Odontopera",
+    "species": "bidentata",
+    "rarity": ""
+  },
+  "140": {
+    "class_name": "oligia_fasciuncula",
+    "kr": "9784",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Apameini",
+    "genus": "Oligia",
+    "species": "fasciuncula",
+    "rarity": ""
+  },
+  "141": {
+    "class_name": "oligia_latruncula",
+    "kr": "9782",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Apameini",
+    "genus": "Oligia",
+    "species": "latruncula",
+    "rarity": "3"
+  },
+  "142": {
+    "class_name": "operophtera_brumata",
+    "kr": "8447",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Operophterini",
+    "genus": "Operophtera",
+    "species": "brumata",
+    "rarity": "1"
+  },
+  "143": {
+    "class_name": "opisthograptis_luteolata",
+    "kr": "7613",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Epionini",
+    "genus": "Opisthograptis",
+    "species": "luteolata",
+    "rarity": ""
+  },
+  "144": {
+    "class_name": "orthosia_cerasi",
+    "kr": "10044",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Hadeninae",
+    "tribus": "Orthosiini",
+    "genus": "Orthosia",
+    "species": "cerasi",
+    "rarity": "5"
+  },
+  "145": {
+    "class_name": "orthosia_cruda",
+    "kr": "10039",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Hadeninae",
+    "tribus": "Orthosiini",
+    "genus": "Orthosia",
+    "species": "cruda",
+    "rarity": ""
+  },
+  "146": {
+    "class_name": "orthosia_gothica",
+    "kr": "10038",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Hadeninae",
+    "tribus": "Orthosiini",
+    "genus": "Orthosia",
+    "species": "gothica",
+    "rarity": "3"
+  },
+  "147": {
+    "class_name": "orthosia_incerta",
+    "kr": "10037",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Hadeninae",
+    "tribus": "Orthosiini",
+    "genus": "Orthosia",
+    "species": "incerta",
+    "rarity": "3"
+  },
+  "148": {
+    "class_name": "ourapteryx_sambucaria",
+    "kr": "7659",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Ennomini",
+    "genus": "Ourapteryx",
+    "species": "sambucaria",
+    "rarity": "4"
+  },
+  "149": {
+    "class_name": "parectropis_similaria",
+    "kr": "7800",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Boarmiini",
+    "genus": "Parectropis",
+    "species": "similaria",
+    "rarity": ""
+  },
+  "150": {
+    "class_name": "pareulype_berberata",
+    "kr": "8414",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Triphosini",
+    "genus": "Pareulype",
+    "species": "berberata",
+    "rarity": ""
+  },
+  "151": {
+    "class_name": "pasiphila_rectangulata",
+    "kr": "8603",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Eupitheciini",
+    "genus": "Pasiphila",
+    "species": "rectangulata",
+    "rarity": "3"
+  },
+  "152": {
+    "class_name": "peribatodes_rhomboidaria",
+    "kr": "7754",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Boarmiini",
+    "genus": "Peribatodes",
+    "species": "rhomboidaria",
+    "rarity": ""
+  },
+  "153": {
+    "class_name": "peribatodes_secundaria",
+    "kr": "7762",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Boarmiini",
+    "genus": "Peribatodes",
+    "species": "secundaria",
+    "rarity": ""
+  },
+  "154": {
+    "class_name": "perizoma_alchemillata",
+    "kr": "8456",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Perizomini",
+    "genus": "Perizoma",
+    "species": "alchemillata",
+    "rarity": "4"
+  },
+  "155": {
+    "class_name": "petrophora_chlorosata",
+    "kr": "7596",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Lithinini",
+    "genus": "Petrophora",
+    "species": "chlorosata",
+    "rarity": ""
+  },
+  "156": {
+    "class_name": "phalera_bucephala",
+    "kr": "8750",
+    "superfamily": "Noctuoidea",
+    "family": "Notodontidae",
+    "subfamily": "Phalerinae",
+    "tribus": "",
+    "genus": "Phalera",
+    "species": "bucephala",
+    "rarity": "5"
+  },
+  "157": {
+    "class_name": "pheosia_gnoma",
+    "kr": "8728",
+    "superfamily": "Noctuoidea",
+    "family": "Notodontidae",
+    "subfamily": "Notodontinae",
+    "tribus": "Notodontini",
+    "genus": "Pheosia",
+    "species": "gnoma",
+    "rarity": ""
+  },
+  "158": {
+    "class_name": "pheosia_tremula",
+    "kr": "8727",
+    "superfamily": "Noctuoidea",
+    "family": "Notodontidae",
+    "subfamily": "Notodontinae",
+    "tribus": "Notodontini",
+    "genus": "Pheosia",
+    "species": "tremula",
+    "rarity": "4"
+  },
+  "159": {
+    "class_name": "phigalia_pilosaria",
+    "kr": "7672",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Boarmiini",
+    "genus": "Phigalia",
+    "species": "pilosaria",
+    "rarity": ""
+  },
+  "160": {
+    "class_name": "phlogophora_meticulosa",
+    "kr": "9505",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Phlogophorini",
+    "genus": "Phlogophora",
+    "species": "meticulosa",
+    "rarity": "3"
+  },
+  "161": {
+    "class_name": "phragmatobia_fuliginosa",
+    "kr": "10550",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Arctiinae",
+    "tribus": "Arctiini",
+    "genus": "Phragmatobia",
+    "species": "fuliginosa",
+    "rarity": "3"
+  },
+  "162": {
+    "class_name": "poecilocampa_populi",
+    "kr": "6728",
+    "superfamily": "Lasiocampoidea",
+    "family": "Lasiocampidae",
+    "subfamily": "Poecilocampinae",
+    "tribus": "Poecilocampini",
+    "genus": "Poecilocampa",
+    "species": "populi",
+    "rarity": ""
+  },
+  "163": {
+    "class_name": "polia_nebulosa",
+    "kr": "9993",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Hadeninae",
+    "tribus": "Hadenini",
+    "genus": "Polia",
+    "species": "nebulosa",
+    "rarity": "3"
+  },
+  "164": {
+    "class_name": "pseudoips_prasinana",
+    "kr": "10451",
+    "superfamily": "Noctuoidea",
+    "family": "Nolidae",
+    "subfamily": "Chloephorinae",
+    "tribus": "",
+    "genus": "Pseudoips",
+    "species": "prasinana",
+    "rarity": "3"
+  },
+  "165": {
+    "class_name": "pseudoterpna_pruinata",
+    "kr": "7965",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Geometrinae",
+    "tribus": "Pseudoterpnini",
+    "genus": "Pseudoterpna",
+    "species": "pruinata",
+    "rarity": ""
+  },
+  "166": {
+    "class_name": "pterostoma_palpina",
+    "kr": "8732",
+    "superfamily": "Noctuoidea",
+    "family": "Notodontidae",
+    "subfamily": "Notodontinae",
+    "tribus": "Notodontini",
+    "genus": "Pterostoma",
+    "species": "palpina",
+    "rarity": "3"
+  },
+  "167": {
+    "class_name": "ptilodon_capucina",
+    "kr": "8738",
+    "superfamily": "Noctuoidea",
+    "family": "Notodontidae",
+    "subfamily": "Notodontinae",
+    "tribus": "Notodontini",
+    "genus": "Ptilodon",
+    "species": "capucina",
+    "rarity": "5"
+  },
+  "168": {
+    "class_name": "pungeleria_capreolaria",
+    "kr": "7844",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Ennominae",
+    "tribus": "Campaeini",
+    "genus": "Pungeleria",
+    "species": "capreolaria",
+    "rarity": ""
+  },
+  "169": {
+    "class_name": "rivula_sericealis",
+    "kr": "9008",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Rivulinae",
+    "tribus": "",
+    "genus": "Rivula",
+    "species": "sericealis",
+    "rarity": "4"
+  },
+  "170": {
+    "class_name": "scopula_nigropunctata",
+    "kr": "8042",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Sterrhinae",
+    "tribus": "Scopulini",
+    "genus": "Scopula",
+    "species": "nigropunctata",
+    "rarity": ""
+  },
+  "171": {
+    "class_name": "sphinx_ligustri",
+    "kr": "6832",
+    "superfamily": "Bombycoidea",
+    "family": "Sphingidae",
+    "subfamily": "Sphinginae",
+    "tribus": "Sphingini",
+    "genus": "Sphinx",
+    "species": "ligustri",
+    "rarity": "3"
+  },
+  "172": {
+    "class_name": "sphinx_pinastri",
+    "kr": "6834",
+    "superfamily": "Bombycoidea",
+    "family": "Sphingidae",
+    "subfamily": "Sphinginae",
+    "tribus": "Sphingini",
+    "genus": "Sphinx",
+    "species": "pinastri",
+    "rarity": "3"
+  },
+  "173": {
+    "class_name": "spilarctia_lutea",
+    "kr": "10566",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Arctiinae",
+    "tribus": "Arctiini",
+    "genus": "Spilarctia",
+    "species": "lutea",
+    "rarity": ""
+  },
+  "174": {
+    "class_name": "spilosoma_lubricipeda",
+    "kr": "10567",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Arctiinae",
+    "tribus": "Arctiini",
+    "genus": "Spilosoma",
+    "species": "lubricipeda",
+    "rarity": "3"
+  },
+  "175": {
+    "class_name": "stauropus_fagi",
+    "kr": "8758",
+    "superfamily": "Noctuoidea",
+    "family": "Notodontidae",
+    "subfamily": "Heterocampinae",
+    "tribus": "",
+    "genus": "Stauropus",
+    "species": "fagi",
+    "rarity": ""
+  },
+  "176": {
+    "class_name": "sunira_circellaris",
+    "kr": "9566",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Xylenini",
+    "genus": "Sunira",
+    "species": "circellaris",
+    "rarity": "4"
+  },
+  "177": {
+    "class_name": "tethea_or",
+    "kr": "7486",
+    "superfamily": "Drepanoidea",
+    "family": "Drepanidae",
+    "subfamily": "Thyatirinae",
+    "tribus": "",
+    "genus": "Tethea",
+    "species": "or",
+    "rarity": "4"
+  },
+  "178": {
+    "class_name": "tetheella_fluctuosa",
+    "kr": "7488",
+    "superfamily": "Drepanoidea",
+    "family": "Drepanidae",
+    "subfamily": "Thyatirinae",
+    "tribus": "",
+    "genus": "Tetheella",
+    "species": "fluctuosa",
+    "rarity": ""
+  },
+  "179": {
+    "class_name": "thera_variata",
+    "kr": "8357",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Cidariini",
+    "genus": "Thera",
+    "species": "variata",
+    "rarity": "5"
+  },
+  "180": {
+    "class_name": "tholera_decimalis",
+    "kr": "10065",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Hadeninae",
+    "tribus": "Tholerini",
+    "genus": "Tholera",
+    "species": "decimalis",
+    "rarity": "3"
+  },
+  "181": {
+    "class_name": "thumatha_senex",
+    "kr": "10466",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Arctiinae",
+    "tribus": "Lithosiini",
+    "genus": "Thumatha",
+    "species": "senex",
+    "rarity": ""
+  },
+  "182": {
+    "class_name": "thyatira_batis",
+    "kr": "7481",
+    "superfamily": "Drepanoidea",
+    "family": "Drepanidae",
+    "subfamily": "Thyatirinae",
+    "tribus": "",
+    "genus": "Thyatira",
+    "species": "batis",
+    "rarity": "3"
+  },
+  "183": {
+    "class_name": "tiliacea_aurago",
+    "kr": "9557",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Xylenini",
+    "genus": "Tiliacea",
+    "species": "aurago",
+    "rarity": ""
+  },
+  "184": {
+    "class_name": "timandra_comae",
+    "kr": "8028",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Sterrhinae",
+    "tribus": "Timandrini",
+    "genus": "Timandra",
+    "species": "comae",
+    "rarity": ""
+  },
+  "185": {
+    "class_name": "trachea_atriplicis",
+    "kr": "9501",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Xyleninae",
+    "tribus": "Dypterygiini",
+    "genus": "Trachea",
+    "species": "atriplicis",
+    "rarity": "3"
+  },
+  "186": {
+    "class_name": "triodia_sylvina",
+    "kr": "63",
+    "superfamily": "Hepialoidea",
+    "family": "Hepialidae",
+    "subfamily": "",
+    "tribus": "",
+    "genus": "Triodia",
+    "species": "sylvina",
+    "rarity": "4"
+  },
+  "187": {
+    "class_name": "trisateles_emortualis",
+    "kr": "9169",
+    "superfamily": "Noctuoidea",
+    "family": "Erebidae",
+    "subfamily": "Boletobiinae",
+    "tribus": "Phytometrini",
+    "genus": "Trisateles",
+    "species": "emortualis",
+    "rarity": ""
+  },
+  "188": {
+    "class_name": "watsonalla_binaria",
+    "kr": "7503",
+    "superfamily": "Drepanoidea",
+    "family": "Drepanidae",
+    "subfamily": "Drepaninae",
+    "tribus": "",
+    "genus": "Watsonalla",
+    "species": "binaria",
+    "rarity": ""
+  },
+  "189": {
+    "class_name": "watsonalla_cultraria",
+    "kr": "7505",
+    "superfamily": "Drepanoidea",
+    "family": "Drepanidae",
+    "subfamily": "Drepaninae",
+    "tribus": "",
+    "genus": "Watsonalla",
+    "species": "cultraria",
+    "rarity": "4"
+  },
+  "190": {
+    "class_name": "xanthorhoe_biriviata",
+    "kr": "8248",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Xanthorhoini",
+    "genus": "Xanthorhoe",
+    "species": "biriviata",
+    "rarity": "4"
+  },
+  "191": {
+    "class_name": "xanthorhoe_designata",
+    "kr": "8249",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Xanthorhoini",
+    "genus": "Xanthorhoe",
+    "species": "designata",
+    "rarity": ""
+  },
+  "192": {
+    "class_name": "xanthorhoe_ferrugata",
+    "kr": "8253",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Xanthorhoini",
+    "genus": "Xanthorhoe",
+    "species": "ferrugata",
+    "rarity": "5"
+  },
+  "193": {
+    "class_name": "xanthorhoe_fluctuata",
+    "kr": "8256",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Xanthorhoini",
+    "genus": "Xanthorhoe",
+    "species": "fluctuata",
+    "rarity": "5"
+  },
+  "194": {
+    "class_name": "xanthorhoe_montanata",
+    "kr": "8255",
+    "superfamily": "Geometroidea",
+    "family": "Geometridae",
+    "subfamily": "Larentiinae",
+    "tribus": "Xanthorhoini",
+    "genus": "Xanthorhoe",
+    "species": "montanata",
+    "rarity": "5"
+  },
+  "195": {
+    "class_name": "xestia_baja",
+    "kr": "10204",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Noctuinae",
+    "tribus": "Noctuini",
+    "genus": "Xestia",
+    "species": "baja",
+    "rarity": "4"
+  },
+  "196": {
+    "class_name": "xestia_c-nigrum",
+    "kr": "10199",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Noctuinae",
+    "tribus": "Noctuini",
+    "genus": "Xestia",
+    "species": "c-nigrum",
+    "rarity": "2"
+  },
+  "197": {
+    "class_name": "xestia_triangulum",
+    "kr": "10201",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Noctuinae",
+    "tribus": "Noctuini",
+    "genus": "Xestia",
+    "species": "triangulum",
+    "rarity": "4"
+  },
+  "198": {
+    "class_name": "xestia_xanthographa",
+    "kr": "10212",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Noctuinae",
+    "tribus": "Noctuini",
+    "genus": "Xestia",
+    "species": "xanthographa",
+    "rarity": "3"
+  },
+  "199": {
+    "class_name": "xylocampa_areola",
+    "kr": "9676",
+    "superfamily": "Noctuoidea",
+    "family": "Noctuidae",
+    "subfamily": "Psaphidinae",
+    "tribus": "Xylocampini",
+    "genus": "Xylocampa",
+    "species": "areola",
+    "rarity": ""
+  }
+}

+ 28 - 0
labels/flat_moth_label_provider/moth_labels.py

@@ -0,0 +1,28 @@
+import json
+import typing as T
+
+from pycs.interfaces.LabelProvider import LabelProvider
+from pathlib import Path
+
+class FlatMothLabels(LabelProvider):
+
+    def __init__(self, root_folder: str, configuration: dict):
+
+        mapping_file = Path(root_folder, configuration["mapping"])
+        with open(mapping_file) as f:
+            self.mapping = json.load(f)
+
+    def close(self):
+        pass
+
+    def get_labels(self) -> T.List[dict]:
+
+        labels = []
+        for key, entries in self.mapping.items():
+            display_name = f"{entries['genus']} {entries['species']} ({entries['kr']})"
+            print(key, display_name)
+            label = self.create_label(key, display_name)
+            labels.append(label)
+
+        return labels
+

+ 5 - 1
models/moth_scanner/scanner/__init__.py

@@ -22,15 +22,19 @@ class Scanner(Interface):
     def execute(self, storage: MediaStorage, file: MediaFile):
 
         im = self.read_image(file.path)
+        im = cv2.cvtColor(im, cv2.COLOR_BGR2RGB)
         bw_im = cv2.cvtColor(im, cv2.COLOR_RGB2GRAY)
 
         detections = self.detector(bw_im)
 
+        labels = {ml.reference: ml for ml in storage.labels()}
+
         for bbox, info in detections:
             if not info.selected:
                 continue
             x0, y0, x1, y1 = bbox
-            label = self.classifier(bbox.crop(im, enlarge=True))
+            cls_id = self.classifier(bbox.crop(im, enlarge=True))
+            label = labels.get(str(cls_id), cls_id)
             file.add_bounding_box(x0, y0, bbox.w, bbox.h, label=label)
 
     def read_image(self, path: str, mode: int = cv2.IMREAD_COLOR) -> np.ndarray:

+ 5 - 3
models/moth_scanner/scanner/classifier.py

@@ -1,3 +1,4 @@
+import chainer
 import numpy as np
 import typing as T
 
@@ -44,13 +45,14 @@ class Classifier(object):
 
         if im.ndim == 3:
             # expand first axis
-            # CxHxW -> 1xCxHxW
+            # HxWxC -> 1xHxWxC
             im = im[None]
 
+
         im = [self._transform(_im) for _im in im]
         x = self.backbone.xp.array(im)
-        pred = self.backbone(x)
+        with chainer.using_config("train", False), chainer.no_backprop_mode():
+            pred = self.backbone(x)
         pred.to_cpu()
 
         return int(np.argmax(pred.array, axis=1))
-

+ 4 - 3
models/moth_scanner/scanner/detector.py

@@ -43,11 +43,12 @@ class BBox(namedtuple("BBox", "x0 y0 x1 y1")):
 
         # enlarge to a square extent
         if enlarge:
-            h, w = int(self.h * H), int(self.h * W)
+            h, w = int(self.h * H), int(self.w * W)
             size = max(h, w)
             dw, dh = (size - w) / 2, (size - h) / 2
-            x0, x1 = max(int(x0 - dw), 0), int(x0 - dw + size)
-            y0, y1 = max(int(y0 - dh), 0), int(y0 - dh + size)
+            x0, y0 = max(int(x0 - dw), 0), max(int(y0 - dh), 0)
+            x1, y1 = int(x0 + size), int(y0 + size)
+
 
         if im.ndim == 2:
             return im[y0:y1, x0:x1]