https://github.com/osmoai/publications
Tip revision: 5aa9d2cd06a9b4dcae8b5fce2ec5e5d0f763fbd8 authored by Rick Gerkin on 31 August 2023, 16:00:39 UTC
Fixed paths and authors
Fixed paths and authors
Tip revision: 5aa9d2c
base.py
"""Functions for RATA analysis"""
from pathlib import Path
import IPython.display
import pandas as pd
import seaborn as sns
DATA_PATH = Path(__file__).parent.parent / 'data'
FIGURE_PATH = Path(__file__).parent.parent / 'figures'
ODOR_LABEL_LIST = [
u'alcoholic', u'aldehydic', u'alliaceous', u'almond', u'amber', u'animal',
u'anisic', u'apple', u'apricot', u'aromatic', u'balsamic', u'banana',
u'beefy', u'bergamot', u'berry', u'bitter', u'black currant', u'brandy',
u'burnt', u'buttery', u'cabbage', u'camphoreous', u'caramellic', u'cedar',
u'celery', u'chamomile', u'cheesy', u'cherry', u'chocolate', u'cinnamon',
u'citrus', u'clean', u'clove', u'cocoa', u'coconut', u'coffee', u'cognac',
u'cooked', u'cooling', u'cortex', u'coumarinic', u'creamy', u'cucumber',
u'dairy', u'dry', u'earthy', u'ethereal', u'fatty', u'fermented', u'fishy',
u'floral', u'fresh', u'fruit skin', u'fruity', u'garlic', u'gassy',
u'geranium', u'grape', u'grapefruit', u'grassy', u'green', u'hawthorn',
u'hay', u'hazelnut', u'herbal', u'honey', u'hyacinth', u'jasmin', u'juicy',
u'ketonic', u'lactonic', u'lavender', u'leafy', u'leathery', u'lemon',
u'lily', u'malty', u'meaty', u'medicinal', u'melon', u'metallic', u'milky',
u'mint', u'muguet', u'mushroom', u'musk', u'musty', u'natural', u'nutty',
u'odorless', u'oily', u'onion', u'orange', u'orangeflower', u'orris',
u'ozone', u'peach', u'pear', u'phenolic', u'pine', u'pineapple', u'plum',
u'popcorn', u'potato', u'powdery', u'pungent', u'radish', u'raspberry',
u'ripe', u'roasted', u'rose', u'rummy', u'sandalwood', u'savory', u'sharp',
u'smoky', u'soapy', u'solvent', u'sour', u'spicy', u'strawberry',
u'sulfurous', u'sweaty', u'sweet', u'tea', u'terpenic', u'tobacco',
u'tomato', u'tropical', u'vanilla', u'vegetable', u'vetiver', u'violet',
u'warm', u'waxy', u'weedy', u'winey', u'woody'
]
MONELL_CLASS_LIST = [
'Green', 'Grassy', 'Cucumber', 'Tomato', 'Hay', 'Herbal', 'Mint',
'Woody', 'Pine', 'Floral', 'Jasmine', 'Rose', 'Honey', 'Fruity',
'Citrus', 'Lemon', 'Orange', 'Tropical', 'Berry', 'Peach', 'Apple',
'Sour', 'Fermented', 'Alcoholic', 'Winey', 'Rummy', 'Caramellic',
'Vanilla', 'Spicy', 'Coffee', 'Smoky', 'Roasted', 'Meaty', 'Nutty',
'Fatty', 'Coconut', 'Waxy', 'Dairy', 'Buttery', 'Cheesy', 'Sulfurous',
'Garlic', 'Earthy', 'Musty', 'Animal', 'Musk', 'Powdery', 'Sweet',
'Cooling', 'Sharp', 'Medicinal', 'Camphoreous', 'Metallic', 'Ozone',
'Fishy'
]
CLUSTERED_MONELL_CLASS_LIST = ['Fishy',
'Sour', 'Fermented',
'Earthy', 'Musty', 'Metallic', 'Ozone', 'Smoky', 'Animal',
'Mint', 'Cooling', 'Medicinal', 'Camphoreous', 'Alcoholic', 'Sharp',
'Cucumber', 'Spicy', 'Green', 'Grassy', 'Pine', 'Herbal', 'Hay', 'Woody',
'Coconut', 'Coffee', 'Caramellic', 'Vanilla',
'Buttery', 'Dairy', 'Cheesy', 'Tomato', 'Garlic',
'Fatty', 'Meaty', 'Sulfurous', 'Roasted', 'Nutty',
'Lemon', 'Citrus', 'Orange',
'Sweet', 'Peach', 'Tropical', 'Apple', 'Fruity', 'Berry', 'Honey', 'Winey', 'Rummy',
'Floral', 'Jasmine', 'Rose', 'Musk', 'Powdery', 'Waxy',
]
import collections
assert set(MONELL_CLASS_LIST) == set(CLUSTERED_MONELL_CLASS_LIST), "Missing labels {}".format(set(MONELL_CLASS_LIST) ^ CLUSTERED_MONELL_CLASS_LIST)
assert len(MONELL_CLASS_LIST) == len(CLUSTERED_MONELL_CLASS_LIST), "Duplicate labels {} {}".format(collections.Counter(MONELL_CLASS_LIST).most_common(3),
collections.Counter(CLUSTERED_MONELL_CLASS_LIST).most_common(3))
def translate_monell_google_odor(odor_name):
return {'Jasmine': 'jasmin'}.get(odor_name, odor_name).lower()
CLASS_LIST = [translate_monell_google_odor(c) for c in MONELL_CLASS_LIST]
def set_visual_settings(dpi: int = 75, usetex: bool = False, font: str = 'Fira Sans') -> None:
""""Change matplotlib settings."""
sns.set(font_scale=1.25)
sns.set_style('whitegrid')
IPython.display.set_matplotlib_formats('retina')
pd.set_option('display.precision', 3)
def print_module_versions(module_list):
"""Print module versions"""
for module in module_list:
print(f'{module.__name__:<10s}: {module.__version__}')
