<jupyter_start><jupyter_text>Analisis básicoEn esta notebook se hace un análisis muy básico de la dataNo tiene que hacer nada más que entenderla<jupyter_code>df = pd.read_csv('data/acetylcholinesterase_02_bioactivity_data_preprocessed.csv')
df
df['molecule_chembl_id'].unique().shape
# Rango dinámico del standar value
df['standard_value'].max(), df['standard_value'].min()<jupyter_output><empty_output><jupyter_text>Histograma de longitudes de los smiles<jupyter_code>df['canonical_len'] = df['canonical_smiles'].apply(lambda x: len(x))
df['canonical_len'].hist(bins=100)
#Longitud promedio de caracteres aprox. 50
# Max y min 
max_sequence_len = df['canonical_len'].max()
max_sequence_len, df['canonical_len'].min()
max_len_idx = df['canonical_len'].argmax()
min_len_idx = df['canonical_len'].argmin()
# Ejemplo de molécula más larga
df.iloc[max_len_idx].canonical_smiles
# Ejemplo de molécula más corta
df.iloc[min_len_idx].canonical_smiles<jupyter_output><empty_output><jupyter_text>Histograma de caracteres<jupyter_code>from collections import Counter
# Uno todos las cadenas smile en una sola
text = ''
for cs in df['canonical_smiles']:
    text = text + cs
#cuento la cant. de veces q aparece cada caracter
vocab_hist = dict(Counter(text))
vocab_hist<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11188811188811189, 'fraction_numerical': 0.005439005439005439, 'mean_word_length': 8.2, 'pattern_counts': {'":': 0, '<': 13, '<?xml version=': 0, '>': 13, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '3', 'dir': 'jupyter-structured-clean-dedup', 'id': '46218', 'license': 'Apache-2.0', 'n_tokens_mistral': 488, 'n_tokens_neox': 466, 'n_words': 101, 'path': '002_Basic_Analysis.ipynb', 'repo_name': 'GuilleBur/tp_final_bioinformatica', 'size': '1287'}