Skip to content

Instantly share code, notes, and snippets.

@ivsanro1
ivsanro1 / xor_buttons.py
Created September 13, 2023 16:09
Alternating buttons in streamlit: When press button A, hide button A and show button B, and viceversa
import streamlit as st
if 'show_a' not in st.session_state:
st.session_state.show_a = True
if 'show_b' not in st.session_state:
st.session_state.show_b = False
st.header("Alternating Buttons")
@ivsanro1
ivsanro1 / minimal_asyncio_example_jupyter_notebook.ipynb
Created May 10, 2023 10:31
How to easily run async tasks in jupyter and await for futures
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@ivsanro1
ivsanro1 / README.md
Created April 24, 2023 14:48
Expand in README.md
Description

Long text, code snippet, image, etc.

@ivsanro1
ivsanro1 / README.md
Last active September 7, 2022 15:11
Capture variables in runtime

Disclaimer

BEWARE OF USING IT WITH CACHED FUNCTIONS!

Unexpected behavior when used with cached functions. Disable all cache (like functools.lru_cache) that don't let the functions run normally in certain conditions.

THIS IS FOR ACADEMIC/LEARNING PURPOSES!

Do not blindly rely on the results this can give you as it has not been fully tested.

Usage example

@ivsanro1
ivsanro1 / json_normalize_and_concat.py
Last active September 5, 2022 15:05
json_normalize_and_concat
import pandas as pd
def json_normalize_and_concat(df: pd.DataFrame, col: str) -> pd.DataFrame:
index_name = df.reset_index().columns[0]
df_json_norm = pd.json_normalize(df[col], max_level=0).reset_index(drop=True)
df_ret = pd.concat([
df.reset_index().drop([c for c in df_json_norm.columns if c in df.columns], axis=1),
df_json_norm
], axis=1).set_index(index_name).drop(col, axis=1)
@ivsanro1
ivsanro1 / df_merge_fuzzy.py
Last active August 10, 2022 14:30
Optimally merge dataframes with cost function (e.g. fuzzy merge)
from thefuzz import fuzz
from scipy.optimize import linear_sum_assignment
def df_merge_fuzzy_optimal_with_cost(
df_left: pd.DataFrame,
df_right: pd.DataFrame,
left_on: str,
right_on: str,
fn_cost: Optional[Callable] = lambda x, y: 100 - fuzz.ratio(x, y)
) -> pd.DataFrame:
@ivsanro1
ivsanro1 / get_root.py
Last active August 5, 2022 09:24
Simple but useful utility to get the root of the current project (has to be a git project)
import git
import os
from pathlib import Path
def get_root() -> Path:
return Path(git.Repo(os.getcwd(), search_parent_directories=True).working_dir)
@ivsanro1
ivsanro1 / ALS Matrix Factorization in Spark.ipynb
Created May 3, 2022 11:28 — forked from twolodzko/ALS Matrix Factorization in Spark.ipynb
Using ALS Matrix Factorization for Making Recommendations in Spark
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@ivsanro1
ivsanro1 / read_avro.py
Created March 31, 2022 10:12
Easily read avro records from bytes
def read_avro(bytes_buff_or_file):
import avro.schema
from avro.datafile import DataFileReader, DataFileWriter
from avro.io import DatumReader, DatumWriter
from io import BytesIO
import json
if type(bytes_buff_or_file) == bytes:
from tempfile import TemporaryFile
# Has to be a file yes or yes because of how avro lib is made
with TemporaryFile() as tmp:
@ivsanro1
ivsanro1 / extract_image_features_restnet50_tensorflow.py
Created March 15, 2022 09:55
Extract Image Features using Resnet50 pre-trained with imagenet using Tensorflow
from tensorflow.keras.applications.resnet50 import ResNet50, preprocess_input, decode_predictions
from tensorflow.keras.preprocessing import image as tf_image_preproc
model = ResNet50(weights='imagenet')
from tensorflow.keras.models import Model
resnet50_without_softmax = Model(inputs=model.input,
outputs=model.get_layer('avg_pool').output)