<jupyter_start><jupyter_text>Conclusion du test On constate que les p values sont très faibles et on peut donc rejeter H0 et conclure de la dépendance très nette entre la variables 'global assessment score' et les variables genre et age Nous pouvons donc procéder au découpage du dataset en stratifiant sur ces 2 variables<jupyter_code>#Création d'un Xtrain X_test factices pour obtenir notre X test avec nos 30 controle stratified selon l'age et le genre du patient
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.09, random_state=42, stratify=df_all[['CUSTOM_Age','Gender']])
X_test.groupby('clinical_group')['sample_id'].count()
#comparaison des répartitions des ages et des genres entre notre df initial et notre df découpé
fig, ax = plt.subplots(2,2,figsize=(19, 10))
sns.distplot(X_test['CUSTOM_Age'],ax=ax[0,0])
sns.distplot(df_all['CUSTOM_Age'],ax=ax[0,1])
sns.countplot(X_test['Gender'],order=['Female','Male'],ax=ax[1,0])
sns.countplot(df_all['Gender'],order=['Female','Male'],ax=ax[1,1])
#création d'un df ctl avec les 32 patients controle et ajout d'une colonne status pour les différencier des autres patients 
df_ctl = X_test[X_test['clinical_group']=='CTRL']
df_ctl['statut'] = 'CTL stratified'
df_ctl.groupby('clinical_group')['MAARS_identifier'].nunique()
#les p value des 2 variables sont autour de 0 ce qui démontrent que peut rejeter H0 et qu'elles très fortement dépendante au scorad
#Cela nous démontre 

import statsmodels.formula.api as sm
for i in ['Gender', 'CUSTOM_Age']:
    regressor_OLS = sm.OLS(y, np.asarray(X[i])).fit()
    maxVar = max(regressor_OLS.pvalues).astype(float)
    print('{} {}'.format(i,regressor_OLS.summary()))
#fusion des données cliniques avec notre nouveau df_ctl afin d'identifier les patients représentatifs de l'échantillon ctl
df_ctl = df_ctl[['MAARS_identifier','statut']]
df_final = df_all.merge(df_ctl,how='left',left_on='MAARS_identifier',right_on='MAARS_identifier')
print('null :{} sur {}'.format(df_final['statut'].isnull().sum(),len(df_final['statut'])))
df_final['statut'].fillna(df_final['clinical_group'],inplace=True)
set(df_final.statut)
df_final.groupby('statut').count()
#je filtre uniquement sur les patients AD et CTRL
df_final = df_final.loc[(df_final['clinical_group'] == 'AD') | (df_final['clinical_group'] == 'CTRL')]
df_final.shape
#verification qu'on a bien le bon nombre de patient par catégories sur la col statut
df_final.groupby('statut')['MAARS_identifier'].nunique()
#1. nous prenons uniquement les échantillons CTL stratified et finissant par 3 et 4 car ils sont dans le dataset transcriptomme
def div(s):
    return s[-2:]

filter_sample = ['03' , '04']
mask_ctl = ((df_final['statut'] =='CTL stratified') & (df_final['sample_id'].map(div).isin(filter_sample)))
CTL_strat = df_final[mask_ctl]
CTL_strat.shape
#verification qu'on a bien les échantillons dans le dataset transcriptome et nous retirons ceux qui n'y sont pas (1 seul ici)
CTL_strat = CTL_strat.assign(InTransc=CTL_strat.sample_id.isin(transc.index).astype(int))
CTL_strat = CTL_strat[CTL_strat['InTransc'] == 1]
CTL_strat.shape
# pour finir nous faisons en sorte de sélectionner uniquement les échantillons d'un patient unique
# et non pas plusieurs échantillons d'un même patient

# Pour ce faire, nous prenons mettons dans un premier temps les identifiants uniques des patients dans une listes 
unique_id  = set(CTL_strat['MAARS_identifier'])
list_unique = []
for i in unique_id:
    list_unique.append(i)

#Puis nous découpons cette listes en 2 pour associer par la suite à ces identifiants l'extension 03 ou 04 
#qui permettra d'obtenir des prélèvements des 2 types de façon équilibrée

list_id03 = list_unique[:16]
list_id04 = list_unique[16:]
print('longueur liste03 : {} et longeur de la liste04 : {}'.format(len(list_id03),len(list_id04)))
ext03 = '_03'
ext04 = '_04'

#associons l'extension pour nos 2 listes ==> Nous passons d'un id patients à un id prélèvement

list_sample03 = [s + ext03 for s in list_id03]
list_sample04 = [s + ext04 for s in list_id04]

list_sample03_fin = []
list_sample04_fin = []

#nous vérifions que ces prélèvements existes bien dans notre colonne Sample id

for i in CTL_strat['sample_id']:
    for j in list_sample03:
        if i == j:
            list_sample03_fin.append(j)
            
for i in CTL_strat['sample_id']:
    for j in list_sample04:
        if i == j:
            list_sample04_fin.append(j)
print('Nous avons au final {} prélèvements 03 et {} prélèvements 04.'.format(len(list_sample03_fin),len(list_sample04_fin)))
#fusion des 2 listes pour obtenir notre liste finale d'échantillons CTL stratifié
list_finale = list_sample03_fin
list_finale.extend(list_sample04_fin)
print(len(list_finale))
mask = [s in list_finale for s in CTL_strat['sample_id']]
df_final  = CTL_strat[mask].iloc[:,:-4]
df_final.head()
#envoi en csv
df_final.to_csv(r'../Data/clinical_dataset_with_stratified_CTRL_patients.csv')<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.11315106765116743, 'fraction_numerical': 0.021353023348633007, 'mean_word_length': 6.089108910891089, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 6, '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': '1', 'dir': 'jupyter-structured-clean-dedup', 'id': '575789', 'license': 'MIT', 'n_tokens_mistral': 1882, 'n_tokens_neox': 1760, 'n_words': 500, 'path': 'Resampling/Resampling echantillon controle.ipynb', 'repo_name': 'dataforgoodfr/batch6_eczema', 'size': '5011'}