Skip to content

Services Layer

The following API reference is generated directly from the project's Python docstrings.

Data loading

Data loading and preprocessing service for the Mangetamain application.

This module centralizes all CSV file reading operations from the data/ folder. All loading functions use standardized paths and consistent parameters.

filter_recipes

filter_recipes(
    recipes_df,
    prep_range=(0, 180),
    ingredients_range=(1, 30),
    calories_range=(0, 1000),
    vegetarian_only=False,
    nutrition_grades=None,
)

Filters recipes according to specified criteria.

Parameters:

Name Type Description Default
recipes_df DataFrame

Recipes DataFrame

required
prep_range tuple

Tuple (min, max) for preparation time

(0, 180)
ingredients_range tuple

Tuple (min, max) for number of ingredients

(1, 30)
calories_range tuple

Tuple (min, max) for calories

(0, 1000)
vegetarian_only bool

Filter only vegetarian recipes

False
nutrition_grades list

List of accepted nutritional grades (A, B, C, D, E)

None

Returns:

Type Description
DataFrame

Filtered DataFrame

get_recipe_details

get_recipe_details(recipe_id, recipes_df)

Retrieves all details of a recipe.

Parameters:

Name Type Description Default
recipe_id int

Recipe ID

required
recipes_df DataFrame

Recipes DataFrame

required

Returns:

Type Description
dict

Dictionary with recipe details

get_recipe_name

get_recipe_name(recipe_id, recipes_df)

Retrieves the readable name of a recipe from its tokens.

Parameters:

Name Type Description Default
recipe_id int

Recipe ID

required
recipes_df DataFrame

Recipes DataFrame

required

Returns:

Type Description
str

Recipe name (approximate based on tokens)

get_recipe_stats

get_recipe_stats(recipes_df)

Calculates global statistics on recipes.

Parameters:

Name Type Description Default
recipes_df DataFrame

Recipes DataFrame

required

Returns:

Type Description
dict

Dictionary with statistics

load_recipes

load_recipes(data_dir=None)

Loads and preprocesses recipe data from preprocessed_recipes.csv

The file now includes popularity statistics (review_count, average_rating, popularity_score) calculated from RAW_interactions.csv.

Returns:

Type Description
DataFrame

DataFrame with preprocessed columns including popularity statistics

read_csv_file

read_csv_file(
    filename,
    data_dir=None,
    usecols=None,
    dtype=None,
    nrows=None,
    **kwargs,
)

Centralized function to read any CSV file from the data/ folder. In production mode (ENV=prod), reads from Google Drive. In development mode, reads from local data/ directory.

This function standardizes CSV reading with error handling and integrated Streamlit caching.

Parameters:

Name Type Description Default
filename str

Name of the CSV file (e.g., "preprocessed_recipes.csv")

required
data_dir Optional[str]

Directory containing the data (default: "data/")

None
usecols Optional[List[str]]

List of columns to load (default: all)

None
dtype Optional[dict]

Dictionary of column types

None
nrows Optional[int]

Maximum number of rows to read

None
**kwargs

Additional arguments for pd.read_csv()

{}

Returns:

Type Description
DataFrame

pd.DataFrame: DataFrame containing the data

Raises:

Type Description
FileNotFoundError

If the file does not exist

read_pickle_file

read_pickle_file(filename, data_dir=None)

Centralized function to read any pickle file from the data/ folder. In production mode (ENV=prod), reads from Google Drive. In development mode, reads from local data/ directory.

This function standardizes pickle reading with error handling and integrated Streamlit caching.

Parameters:

Name Type Description Default
filename str

Name of the pickle file (e.g., "similarity_matrix.pkl")

required
data_dir Optional[str]

Directory containing the data (default: "data/")

None

Returns:

Type Description
Dict[str, Any]

Dict[str, Any]: Dictionary containing the pickled data

Raises:

Type Description
FileNotFoundError

If the file does not exist

Recommendation engine

Système de recommandations basé sur une matrice de similarité pré-calculée.

RecipeRecommender

RecipeRecommender(recipes_df)

Système de recommandations de recettes utilisant une matrice de similarité pré-calculée.

Initialise le système de recommandations.

Parameters:

Name Type Description Default
recipes_df DataFrame

DataFrame contenant les recettes

required

get_similar_recipes

get_similar_recipes(recipe_id, k=10)

Trouve les k recettes les plus similaires à une recette donnée. Utilise uniquement la matrice de similarité pré-calculée.

Parameters:

Name Type Description Default
recipe_id int

ID de la recette de référence

required
k int

Nombre de recommandations à retourner

10

Returns:

Type Description
List[Tuple[Series, float]]

Liste de tuples (recette, score de similarité)

recommend_by_filters

recommend_by_filters(
    prep_range,
    ingredients_range,
    calories_range,
    vegetarian_only=False,
    k=12,
)

Recommande des recettes basées sur des filtres.

Parameters:

Name Type Description Default
prep_range Tuple[int, int]

Tuple (min, max) pour le temps de préparation

required
ingredients_range Tuple[int, int]

Tuple (min, max) pour le nombre d'ingrédients

required
calories_range Tuple[int, int]

Tuple (min, max) pour les calories

required
vegetarian_only bool

Filtrer uniquement les recettes végétariennes

False
k int

Nombre de recommandations

12

Returns:

Type Description
List[Series]

Liste de recettes recommandées

format_recommendations_for_display

format_recommendations_for_display(recommendations)

Formate les recommandations pour l'affichage.

Parameters:

Name Type Description Default
recommendations List[Tuple[Series, float]]

Liste de tuples (recette, score)

required

Returns:

Type Description
List[dict]

Liste de dictionnaires avec les informations formatées

get_recommender

get_recommender(recipes_df)

Crée et met en cache le système de recommandations.

Parameters:

Name Type Description Default
recipes_df DataFrame

DataFrame des recettes

required

Returns:

Type Description
RecipeRecommender

Instance de RecipeRecommender

Search utilities

Moteur de recherche optimisé pour les recettes. Utilise la recherche textuelle et le ranking par pertinence.

format_description

format_description(recipe, max_length=180)

Génère une description courte pour une recette.

Parameters:

Name Type Description Default
recipe Series

Série pandas de la recette

required
max_length int

Longueur maximale de la description

180

Returns:

Type Description
str

Description formatée

format_recipe_title

format_recipe_title(recipe)

Génère un titre lisible pour une recette.

Parameters:

Name Type Description Default
recipe Series

Série pandas de la recette

required

Returns:

Type Description
str

Titre formaté

get_recipe_by_id

get_recipe_by_id(recipes_df, recipe_id)

Récupère une recette par son ID.

Parameters:

Name Type Description Default
recipes_df DataFrame

DataFrame des recettes

required
recipe_id int

ID de la recette

required

Returns:

Type Description
Optional[Series]

Série pandas de la recette ou None

get_trending_recipes(recipes_df, limit=20)

Récupère les recettes "tendances" (fallback quand pas de recherche). Tri par health score ou random.

Parameters:

Name Type Description Default
recipes_df DataFrame

DataFrame des recettes

required
limit int

Nombre de recettes à retourner

20

Returns:

Type Description
DataFrame

DataFrame des recettes tendances

search_recipes

search_recipes(
    recipes_df,
    query="",
    prep_time_max=180,
    ingredients_max=30,
    calories_max=1000,
    vegetarian_only=False,
    nutrition_grades=None,
    sort_by="relevance",
    page=1,
    page_size=20,
)

Recherche et filtre les recettes avec pagination.

Parameters:

Name Type Description Default
recipes_df DataFrame

DataFrame complet des recettes

required
query str

Texte de recherche

''
prep_time_max int

Temps de préparation maximum

180
ingredients_max int

Nombre d'ingrédients maximum

30
calories_max int

Calories maximum

1000
vegetarian_only bool

Filtrer les recettes végétariennes uniquement

False
nutrition_grades List[str]

Liste des grades nutritionnels acceptés

None
sort_by str

Tri (relevance, health_score, prep_time)

'relevance'
page int

Numéro de page

1
page_size int

Nombre de résultats par page

20

Returns:

Type Description
Tuple[DataFrame, int]

Tuple (DataFrame paginé, nombre total de résultats)