Pipeline de Recherche Empirique
Transformez un « ensemble de documents hétéroclites » en « flux d’échantillons vérifiable + données codées/tracées reproductibles + modèles reproductibles + graphiques et manuscrit prêts à soumettre ». Ce skill n’est limité ni par discipline, ni par langue, ni par format de fichier ; les documents de jugements juridiques ne sont qu’un exemple de « codage textuel ». Les questionnaires, entretiens, articles de presse, documents politiques, enregistrements expérimentaux, données ouvertes, pages web et exportations de bases de données sont également pris en charge.
Les chiffres, noms de fichiers, chemins et valeurs de variables dans ce dépôt/package sont des exemples fictifs et ne contiennent aucune donnée réelle, aucun codage, aucune donnée SPSS ni aucun manuscrit de recherche.
Quand utiliser
- L’utilisateur fournit un dossier contenant un mélange de fichiers PDF, Word, Excel, CSV, texte, pages web, entretiens, images ou scans, et demande le tri, le codage, les statistiques, la création de graphiques ou la rédaction d’un article.
- Des données CSV/SPSS existantes nécessitent un nettoyage, une fusion, l’ajout de nouvelles sources, une correction de la définition de l’échantillon ou une ré‑exécution des modèles.
- Des questionnaires, entretiens, expériences, observations, données publiques, etc. nécessitent des statistiques descriptives, des comparaisons inter‑groupes, des régressions, des analyses d’hétérogénéité, de robustesse ou des évaluations prédictives.
- Il est nécessaire de produire un manuscrit Word/PDF où les chiffres (figures, tableaux, texte) sont cohérents.
- L’utilisateur dit « j’ai un matériel similaire à traiter à nouveau » et souhaite réutiliser le même processus.
Types de documents et limites de traitement
| Document | Traitement natif | Remarque |
|---|---|---|
| Couche texte, nombre de pages, nombre de caractères, nombre d’images, état de chiffrement | Les scans doivent d’abord être OCRisés ; les PDF purement image sont marqués image_only | |
| DOCX / ODT / PPTX | Paragraphes, tableaux, texte des diapositives | Les anciens formats .doc/.ppt doivent être convertis d’abord |
| XLSX / XLSM | Feuilles de calcul, texte des cellules ; ouverture en lecture seule | Les fichiers .xls doivent être convertis d’abord ; openpyxl recommandé |
| CSV / TSV / JSON / JSONL | Champs, nombre de lignes, encodage, valeurs manquantes ; audit de qualité des données tabulaires | Les feuilles de codage sautent les tableaux et passent directement à auto_stats |
| TXT / MD / HTML / XML / YAML / RTF | Extraction de texte brut ; HTML sans balises | Le texte principal des pages web est conservé ; les scripts/styles sont supprimés |
| Images (PNG/JPG/TIFF, etc.) | Liste des fichiers ; dimensions/nombre de pages | Doivent d’abord être OCRisées avant le codage ; ce skill ne fournit pas d’OCR intégré |
| Audio/Vidéo | Liste des fichiers | Doivent d’abord être transcrits/sous‑échantillonnés avant le codage ; ce skill ne fournit pas d’ASR intégré |
| Archives (zip, etc.) | Liste des fichiers | Doivent d’abord être décompressées ; l’audit marquera unsupported |
| Formats inconnus/propriétaires | Liste des fichiers | Doivent d’abord être convertis ou exportés dans l’un des formats ci‑dessus |
« Tout document » ne signifie pas que tout binaire peut être analysé directement. Ce skill inclut d’abord tous les fichiers dans l’audit et la vérification d’échantillon ; les formats non lisibles sont clairement marqués et une voie de conversion est proposée, sans omission silencieuse.
Six règles strictes
- Audit d’abord, codage/modélisation ensuite. Ne commencez aucune statistique avant de connaître le nombre de fichiers, le nombre de textes lisibles, les doublons, les champs manquants et les raisons d’exclusion.
- Déduplication par contenu, pas par nom de fichier. Deux fichiers de noms différents mais au contenu identique, ou de même nom mais de contenu différent, sont fréquents ; utilisez au moins MD5, puis contrôlez par titre/champs clés/extrait de texte.
- Une ligne = une unité d’analyse. Document, répondant, affaire, institution, région‑année ou questionnaire : l’unité doit être définie au début du projet ; si plusieurs unités coexistent, précisez‑les dans les limites.
- Chaque valeur codée/extraite doit être étayée par une preuve. Si le texte original ne mentionne pas la valeur, notez
NA / non mentionné, n’attribuez pas la valeur par défaut 0. Les affirmations négatives, suggestions d’autrui ou paraphrases ne constituent pas des faits définitifs. - La description de l’échantillon N ≠ l’échantillon du modèle N. Chaque modèle doit rapporter son propre N et ses conditions de sélection ; le texte, les tableaux, les figures et le résumé doivent utiliser le même N.
- Association n’est pas causalité. Écrivez « association / correspondance / plus probable », pas « entraîne / rend efficace / prouve ».
Vue d’ensemble du pipeline
0 Portée et question → 1 Audit des documents/données → 2 Protocole de codage/ extraction → 3 Jeu de données
↓
7 Vérification finale ← 6 Assemblage du manuscrit ← 5 Graphiques publication ← 4 Analyse statistique
Chaque phase comporte des « portes ». Si une porte n’est pas franchie, on ne passe pas à l’étape suivante.
Phase 0 : Portée et question
Rédigez d’abord une page scope.md comprenant au moins :
- Question de recherche, mécanisme théorique, contribution attendue.
- Types de documents et sources : bases de données, requêtes/cadre d’échantillonnage, période, langue, région.
- Unité d’analyse : un document / un répondant / une affaire / une institution / un questionnaire.
- Critères d’inclusion/exclusion : période, type, langue, nombre de caractères, doublons, fichiers non lisibles, champs clés manquants.
- Liste des variables attendues et leur rôle : variable dépendante, variable indépendante principale, variables de mécanisme/modération, variables de contrôle.
- Forme des données : texte, tableau, mixte ; nécessite‑t‑il un codage manuel, une échelle de questionnaire, une répartition expérimentale ou des données secondaires ?
Porte : Pouvoir dire en une phrase, pour chaque étape « documents bruts → documents lisibles → échantillon dans la portée → échantillon d’analyse », combien de documents sont perdus et pourquoi.
Phase 1 : Audit des documents et données (à exécuter en premier)
1A Audit au niveau des fichiers
Exécutez scripts/audit_corpus.py :
python scripts/audit_corpus.py --root "répertoire_documents" --out-dir "output/audit" --min-chars 100
Par défaut, tous les types supportés sont scannés, sans avoir à spécifier --ext individuellement ; utilisez --list-ext pour voir la liste complète. Il produit :
| Fichier | Usage |
|---|---|
corpus_audit.csv | Extension, type, taille en octets, nombre de pages/tableaux, nombre de caractères, nombre d’images, MD5, statut, erreur pour chaque fichier |
corpus_summary.json | Résumé lisible par machine |
corpus_duplicates.csv | Groupes de doublons, suggestions de conservation/suppression |
corpus_report.md | Rapport en français, directement utilisable dans le journal de projet |
Machine d’états (chaque fichier doit tomber dans une catégorie) :
| Statut | Signification | Inclus dans l’analyse ? |
|---|---|---|
valid | Ouvrable, texte/données suffisants | Oui |
metadata | Fichiers système ._*, .DS_Store, etc. | Non |
hidden | Fichiers/répertoires cachés | Non, sauf confirmation utilisateur |
unsupported | Format inconnu, archives, anciens Office, analyseur manquant | Non, d’abord convertir/décompresser |
quarantined | Situé dans _duplicates ou autre répertoire à ignorer | Non, déjà isolé |
zero_byte | 0 octet | Non |
corrupt | Fichier corrompu ou impossible à ouvrir | Non |
encrypted | Protégé par mot de passe/permissions | Non, sauf déchiffrement possible |
textless | Pages/cellules existantes mais texte insuffisant | Non, vérifier si le fichier est vide ou doit être réexporté |
image_only | Image/scan sans couche texte | Utilisable après OCR |
media | Audio/Vidéo | D’abord transcrire/sous‑échantillonner |
Les doublons ne sont pas un status indépendant : les fichiers de même contenu restent valid, mais sont marqués via dup_group/dup_role comme keeper/duplicate ; le rapport indique unique_valid_files en déduisant les copies.
Traitement détaillé :
._*,.DS_Store: métadonnées macOS, pas des documents de recherche ; comptez‑les comme « non‑documents », ne les incluez pas dans l’échantillon. Les._*lisibles sont signalés dans la colonne erreur, à vérifier manuellement.- Fichiers/répertoires cachés →
hidden; extensions non supportées →unsupported; répertoires_duplicates→quarantined. Aucun des trois n’entre dans l’échantillon, mais ils doivent figurer dans le total et le rapport. - 0 octet, fichier corrompu, chiffré, texte insuffisant → respectivement
zero_byte/corrupt/encrypted/textless; PDF purement image →image_only. - Les distributions par niveau/répertoire ne concernent que l’échantillon unique (
validet non copie) ; n’incluez pas les métadonnées, fichiers corrompus ou copies dans la structure de l’échantillon. - Doublons : regroupez par MD5 ; conservez la copie dont le nom contient un identifiant/année, le chemin est plus court, le texte est complet ; déplacez les autres dans
_duplicates/, ne les supprimez pas directement. - Troncature de nom, point final, chemins trop longs : courants sous Windows ; lisez avec Python et signalez dans le rapport, ne comptez pas manuellement avec l’explorateur.
- Même nom, contenu différent, ou même contenu mais métadonnées/export différents (MD5 différent) : vérifiez manuellement par titre/champs clés/extrait de texte, ne vous fiez pas uniquement au MD5 pour la déduplication.
Exécutez ensuite scripts/dedupe_corpus.py pour générer un plan de déduplication :
python scripts/dedupe_corpus.py --audit "output/audit/corpus_audit.csv" --root "répertoire_documents" --out-dir "output/audit" --apply
Porte : sample_flow.md doit pouvoir faire le bilan :
Nombre de fichiers bruts (incluant .DS_Store/fichiers sans extension)
- Fichiers de métadonnées/cachés
- Formats non supportés/à convertir (unsupported)
- Répertoires isolés comme _duplicates (quarantined)
- 0 octet/corrompus/chiffrés/texte insuffisant
= Nombre de documents lisibles
- Hors portée (période/type/langue)
= Nombre de documents valides
- Copies en doublon
= Nombre d’échantillons uniques (unique_valid_files)
- Variables clés manquantes/impossibles à coder
= Taille de l’échantillon d’analyse
Chaque modèle a son propre N ; n’utilisez pas un N unique pour tout.
1B Audit de qualité des données tabulaires
Si les données sont directement au format CSV/Excel/SPSS, faites d’abord un contrôle au niveau des champs avant le codage/modélisation :
- Nombre de lignes, nombre de colonnes, type de chaque colonne (numérique/catégoriel/texte/date), taux de valeurs manquantes, nombre de valeurs uniques.
- La clé primaire/ID est‑elle unique ? lignes en double ? enregistrements multiples pour la même unité ?
- Les valeurs des variables catégorielles sont‑elles orthographiées de manière incohérente (mélange « oui/non/1/0/VRAI ») ? plage de dates.
- Plage des variables continues, valeurs aberrantes, troncature au P99, besoin de transformation log.
- Questions inversées dans les échelles, décomposition des choix multiples, cohérence des unités.
- Encodage (UTF-8-SIG/GB18030), séparateur décimal, validité des noms de variables SPSS.
csv_to_spss_syntax.py nettoie les noms de variables illégaux/en double et génère .sps ; auto_stats.py produit des statistiques descriptives, des tests inter‑groupes et des corrélations pour détecter les problèmes de données, mais ne remplace pas les modèles formels.
Porte : Pouvoir expliquer, pour chaque colonne : origine, type, traitement des valeurs manquantes, traitement des valeurs aberrantes, et modèle dans lequel elle entre finalement.
Phase 2 : Protocole de codage/extraction
2.1 Codage textuel
- Rédigez d’abord une instance de
assets/codebook-template.md: chaque variable doit avoir définition, valeurs, règle de décision, emplacement de la preuve, exemple positif, contre‑exemple, règle de valeur manquante. - Utilisez
scripts/make_coding_sheet.pypour extraire le texte complet et les phrases de preuve candidates, générant une feuille de codage ; elle ne fournit que des fragments de preuve, pas le jugement final.- Par défaut
--profile generic: pour entretiens, articles, documents politiques, rapports, pages web, comptes‑rendus de réunions, etc. --profile legal: extrait en plus les tribunaux, numéros d’affaire, provinces, motifs candidats ; à utiliser uniquement pour les documents de jugements chinois.- Les tableaux CSV/TSV/JSON/XLSX sont ignorés et redirigés vers le processus statistique ; les images/audio/vidéo sont redirigés vers OCR/transcription d’abord.
- Par défaut
- Lors du codage (manuel/LLM), chaque enregistrement doit conserver la phrase de preuve
*_ev; tout codage sans phrase de preuve est considéré incomplet. - Échantillonnez 10–15 % des documents pour un double codage (deux codeurs/deux sessions) ; rapportez le taux d’accord ou le κ de Cohen ; les divergences sont tranchées avant de modifier le codebook.
- Une fois le codebook gelé, procédez au codage complet ; les modifications ultérieures doivent être documentées avec version et champ d’impact.
2.2 Questionnaire/échelle/extraction structurée
- Commencez par un dictionnaire de variables au niveau des items : numéro de question, libellé, valeurs, questions inversées, codes de valeurs manquantes.
- Les questions à choix multiple/classement sont décomposées en colonnes 0/1 ou multiples ; les scores d’échelle sont d’abord vérifiés pour leur fiabilité (α/ω) et leur dimensionnalité.
- Les questions ouvertes peuvent d’abord être codées par thème, puis transformées en variables de comptage/catégorielles ; ne confondez pas fréquence des mots avec thème.
- Les clés primaires, unités, champs temporels des données tabulaires doivent pouvoir être retracés jusqu’au fichier source.
Porte : Choisissez au hasard 10 enregistrements ; vous devez pouvoir remonter de « valeur codée → phrase de preuve/champ original → texte original/ligne originale ». Sinon, retournez au codebook.
Voir references/02-coding-protocol.md.
Phase 3 : Jeu de données
Ensemble recommandé :
data/coded.jsonl: détails du codage par document + fragments de preuve, faciles à retracer.data/analysis.csv: tableau large pour l’analyse, une ligne par unité d’analyse.data/analysis.sav: ouvrable directement dans SPSS, avec étiquettes de variables et de valeurs.
Colonnes de marquage obligatoires :
| Colonne | Signification |
|---|---|
in_scope | Appartient‑il à la portée de la recherche (période, type, région, langue) ? |
in_analysis | Inclus dans les statistiques descriptives (exclut les fichiers impossibles à coder/à clés manquantes) |
model1_sample, etc. | Marqueur d’échantillon spécifique à chaque modèle ; n’utilisez pas in_analysis comme substitut |
dup_group | ID du groupe de doublons ; 0 pour la copie conservée, 1 pour les copies |
exclusion_reason | Raison de l’exclusion, pour faciliter la description du flux d’échantillon |
Utilisez scripts/csv_to_spss_syntax.py pour générer .sps, évitant les erreurs de type de colonne lors de l’écriture manuelle de GET DATA. Si le CSV contient des valeurs binaires textuelles comme « oui/non, présent/absent, supporte/ne supporte pas », le script ajoute automatiquement un RECODE ... ('oui'=1) ('non'=0) INTO *_num ; les modèles Logistiques utilisent directement les colonnes numériques ; ajoutez --no-recode si non souhaité.
Porte : Le nombre de lignes du CSV, du JSONL, du SAV et le nombre d’échantillons uniques dans sample_flow.md doivent correspondre. Le N de chaque modèle doit pouvoir être recalculé à partir des conditions de filtre.
Phase 4 : Analyse statistique et extensions
Rédigez d’abord un plan d’analyse avant d’examiner les résultats. Par défaut, combinez « analyse principale + descriptives + bivarié + multivarié + diagnostic + hétérogénéité + robustesse », pas seulement un modèle principal.
Exécutez d’abord le script de dépistage automatique pour produire les statistiques descriptives, les tests inter‑groupes, les corrélations et les modèles univariés :
python scripts/auto_stats.py --data data/analysis.csv --config assets/chart_config.example.json --out output/analysis_pack
Il produit descriptives.csv, group_tests.csv, binary_rates.csv, correlations.csv, univariate_models.csv, univariate_skipped.csv et analysis_pack.md, utiles pour identifier les variables méritant une modélisation plus poussée ; les modèles finaux sont estimés selon les spécifications prédéfinies dans SPSS/R/Stata ; ne filtrez pas les variables en utilisant les p‑values du dépistage automatique.
Le script identifie automatiquement le type de variable de résultat :
- 0/1 → résultat binaire (Logistique/OR).
- Numérique continu → résultat continu (OLS/moyenne+IC), test inter‑groupe avec Kruskal–Wallis si plusieurs catégories.
- Multi‑catégoriel → résultat catégoriel, test inter‑groupe avec χ²/Cramér’s V ; les variables indépendantes multi‑catégorielles sont transformées en variables muettes pour les modèles univariés OLS/Logit, rapportées sous forme
variable_niveau. - Un résultat multi‑catégoriel n’est pas transformé en Logit binaire ; le modèle principal doit utiliser un Logit multinomial ou fusionner les catégories.
- Les étiquettes textuelles courantes comme « oui/non, présent/absent, supporte/ne supporte pas » sont automatiquement mappées en 0/1 ; pour tout autre texte binaire, utilisez l’option de configuration
outcome_map. - Les modèles univariés avec séparation complète ou estimation instable sont écrits dans
univariate_skipped.csv, sans OR aberrants. - Si la colonne de résultat est entièrement manquante, si le filtrage donne 0 ligne ou si
filter_queryest mal orthographié, le script échoue directement avec une erreur.
Incluez au minimum :
- Statistiques descriptives : N pour chaque groupe, proportion/moyenne, taux de résultat, intervalle de Wilson à 95 %.
- Modèle principal : Logistique binaire / OLS / Logit multinomial, en précisant variable dépendante, catégorie de référence, variable indépendante principale, variables de contrôle.
- Modèle de mécanisme/modération : termes d’interaction, pentes simples ou valeurs prédites par groupe.
- Robustesse : changement de variable dépendante, changement d’échantillon, ajout/suppression de variables de contrôle, avant/après déduplication.
- Diagnostics : multicolinéarité, séparation complète, cellules avec échantillon insuffisant, calibration/discrimination.
- Hétérogénéité : par catégorie/région/année/groupe.
- Explorations possibles : ACP, analyse des correspondances, clustering, ROC/calibration prédictive ; marquez‑les comme « exploratoire ».
Les tableaux de résultats doivent inclure : coefficient/OR, IC à 95 %, p, N, indicateurs d’ajustement, description de la catégorie de référence. Chaque modèle a sa propre ligne pour N.
Documentez les analyses effectuées et ignorées dans analysis_manifest.md (modèle dans references/08-analysis-expansion.md), ne rapportez pas seulement les résultats significatifs.
Les modèles de syntaxe SPSS et les normes d’interprétation se trouvent dans references/03-analysis-spss.md ; la liste des analyses étendues dans references/08-analysis-expansion.md.
Porte : Tout OR/β doit pouvoir être retracé en trois étapes : analysis.sps → fichier de sortie → tableau. analysis_manifest.md doit expliquer pourquoi chaque analyse est faite/ignorée, avec la taille d’échantillon. Le texte ne doit pas écrire « le document mentionne une situation » comme « la situation s’est réellement produite » en termes causaux.
Phase 5 : Graphiques de qualité publication (par défaut, vue d’ensemble, pas seulement 8 figures)
Exécutez d’abord scripts/auto_chart_pack.py pour générer un ensemble complet de graphiques, puis sélectionnez les figures principales pour le texte, les figures pour l’annexe et les graphiques supplémentaires nécessaires :
python scripts/auto_chart_pack.py \
--data data/analysis.csv \
--config assets/chart_config.example.json \
--out output/chart_pack --tiff
Pas besoin de modifier le script pour les résultats continus/multi‑catégoriels : le type de résultat est automatiquement commuté pour produire des graphiques de distribution + moyenne/composition par groupe ; les résultats textuels peuvent également être mappés via outcome_map. L’option --coef supporte les colonnes metric (OR/HR/RR/beta) et n, et les forêts de points sont annotées avec N par échantillon du modèle ; --pred supporte les étiquettes 0/1 ou « oui/non » ; en cas de prédiction constante ou de catégorie unique, les courbes ROC/PR/calibration sont ignorées avec justification. term_labels peut mapper des noms de colonnes comme lv3 en français. Les graphiques en haltères à double proportion nécessitent la spécification de deux colonnes 0/1 dans la config via dumbbell. Pour les données de suivi temporel et événement, utilisez --survival-time, --survival-event (avec éventuellement --survival-group) pour les courbes de Kaplan‑Meier.
Par défaut, 7 groupes sont couverts, environ 40–55 figures : environ 44 pour les résultats binaires, 51 avec entrées de modèle ; environ 42 pour les résultats continus, 41 pour les multi‑catégoriels. Le nombre réel peut varier selon les types de colonnes, valeurs manquantes et éléments ignorés ; consultez chart_manifest.csv.
- A Qualité des données : taux de valeurs manquantes, distribution de l’échantillon par catégorie/année/région, taux d’occurrence des variables binaires.
- B Univariate : distribution du résultat (binaire/continu/multi‑catégoriel traité séparément, avec Q‑Q pour les continus), composition du traitement (barres + anneau), distributions numériques, composition catégorielle.
- C Bivariate : catégorie × résultat, phase × résultat, heatmap/empilé catégorie × phase, différence région/niveau, heatmap de corrélation, nuage de points avec lissage, graphique à bulles ; pour les résultats continus, moyenne + IC à 95 %, pour les résultats multi‑catégoriels, diagramme empilé de composition intra‑groupe.
- D Multivariate : violon/boxplot, matrice de nuages de points, haltères, PCA (éboulis/bipolaire/heatmap des contributions), dendrogramme de clustering Ward, MDS classique.
- E Temporel : tendance du taux/moyenne du résultat, graphique de contrôle 3σ, taille de l’échantillon, barres empilées/surface de composition par phase ; pour les résultats multi‑catégoriels, tendance de composition par catégorie de résultat.
- F Diagnostic du modèle : forêt de points, ROC, calibration, distribution des prédictions, matrice de confusion, PR, Lift par décile (nécessite
--coef/--pred) ; Kaplan‑Meier (nécessite colonnes de suivi). - G Annexe : analyse des correspondances, Pareto.
Stratégie de création de figures :
- Chaque résultat principal doit avoir au moins 2 figures : figure du résultat principal + figure de robustesse/diagnostic/hétérogénéité.
- 7–10 figures dans le texte, 20–50 en annexe ; pas de limite supérieure.
- Pour chaque figure, commencez par écrire « Quelle question répond‑elle ? » ; ne dessinez pas sans question.
- Utilisez
references/07-chart-atlas.mdpour la sélection, couvrant les graphiques avancés courants de SPSS : barres groupées/empilées/100 %, lignes/surfaces, histogrammes, boxplots/violons, barres d’erreur, nuages de points/bulles, matrice de nuages de points, Pareto, ROC, calibration, Kaplan‑Meier (avec données de survie), éboulis, contributions factorielles, dendrogramme de clustering, analyse des correspondances, MDS, graphiques de contrôle, etc. - Chaque figure est enregistrée dans
chart_manifest.csv: numéro de figure, question, type, variables, N, légende, chemin de fichier. - Cohérence des couleurs dans tout le manuscrit : même phase/même catégorie utilise la même couleur dans chaque figure.
- La légende de la figure indique N, source des données, spécification du modèle, catégorie de référence ; les figures exploratoires (PCA/CA/clustering) doivent porter la mention « exploratoire ».
Utilisez scripts/pubfig.py pour un style unifié :
from pubfig import set_style, save_fig, wilson_ci, forest_plot
set_style() # 15 cm de largeur, Police SimSun/Times New Roman, 600 dpi
Normes :
- Largeur physique 15 cm (dans A4, largeur du texte ≤ 15,4 cm), taille de police 7,2–8,5 pt.
- Police chinoise SimSun, police occidentale Times New Roman ; intégration des polices dans le PDF (Type 42).
- Pas de titre dans la figure ; le titre et la légende sont placés dans le document Word.
- Sortie simultanée PNG 600 dpi, PDF vectoriel, TIFF LZW (avec
--tiff). - Les barres d’erreur indiquent IC à 95 % ; dans les forêts de points, points pleins = significatifs, points vides = non significatifs.
- Les variables continues asymétriques sont transformées en log10 ou tronquées au P99, avec mention dans les étiquettes d’axe/légende.
Porte : Chaque figure dans chart_manifest.csv a une question, N, légende et fichier ; les figures principales du texte et celles de l’annexe ne se chevauchent pas ; la largeur des images intégrées dans le PDF est ≥ 3000 px (environ 600 dpi pour 15 cm de large) ; légende, figure et citation dans le texte sont tous présents.
Voir references/04-figures-publication.md et references/07-chart-atlas.md.
Phase 6 : Assemblage du manuscrit
Exigences de mise en page Word :
- Les figures, titres de figures et légendes doivent être paramétrés en « même page que le paragraphe suivant » pour éviter les sauts de page au milieu d’une figure.
- Les lignes des tableaux ne doivent pas être coupées par un saut de page ; répétez l’en‑tête du tableau sur chaque page.
- La légende du tableau figure sous le tableau ; donnez d’abord N, puis les règles de significativité.
- La première référence à une figure/tableau dans le texte doit utiliser le même numéro que le fichier (Figure 1, Tableau 1, Figure annexe 1).
- Les N et pourcentages dans le résumé, le texte, les tableaux, les figures et l’annexe doivent provenir de la même source ; le N de
chart_manifest.csvest renvoyé dans les légendes.
Lors de l’exportation Word vers PDF, Word réduit souvent les images 600 dpi à environ 200 dpi. Utilisez scripts/export_pdf_hires.py pour exporter puis réinsérer les images originales :
python scripts/export_pdf_hires.py --docx "manuscript.docx" --out-pdf "manuscript.pdf" --figure-map "figure_map.json"
Porte : Le nombre de pages, de figures et de titres de figures du PDF sont cohérents ; chaque image intégrée a une largeur ≥ 3000 px ; les tableaux ne présentent pas de lignes coupées/d’en‑tête manquant.
Voir references/05-manuscript-assembly.md.
Phase 7 : Vérification finale
Exécutez :
python scripts/qa_outputs.py --docx "manuscript.docx" --pdf "manuscript.pdf" --figures "figures" --data "data/analysis.csv" --audit "output/audit/corpus_audit.csv" --manifest "output/chart_pack/chart_manifest.csv" --strict
Puis passez en revue manuellement selon references/06-qa-checklist.md. Les points essentiels ne sont pas le format, mais :
- Chaque nombre dans le flux d’échantillon doit correspondre.
- Les copies en doublon ont été retirées de l’échantillon d’analyse, ou leur impact doit être clairement rapporté.
- Chaque N dans le texte correspond à celui de la table/figure/modèle correspondant.
- Les figures et le texte indiquent la même direction : pas de « figure en hausse, texte dit baisse ».
- Les numéros de légende dans le PDF doivent être reconnaissables (par ex. « Figure 1 : », « Figure 1. », « Table 1 : ») ; la vérification de faible résidence ne concerne que les images suffisamment grandes ; un CSV vide provoque une erreur directe.
- Les variables de codage théorique doivent être clairement expliquées dans la section Méthodes, sans être présentées comme mesurées directement à partir des documents bruts.
- Les conclusions utilisent « association/corrélation », pas de langage causal.
Liste des scripts
Les commandes ci‑dessous supposent que le répertoire courant est la racine du skill ; si vous exécutez depuis un répertoire de projet, remplacez scripts/ par le chemin absolu du skill.
| Script | Rôle |
|---|---|
scripts/audit_corpus.py | Scanne n’importe quel répertoire de documents : statut des fichiers, texte/nombre de pages, MD5, doublons, distribution des formats, indices d’année |
scripts/dedupe_corpus.py | Génère un plan de déduplication basé sur l’audit ; --apply déplace vers _duplicates/ |
scripts/make_coding_sheet.py | Extrait le texte intégral et les phrases de preuve clés depuis PDF/Word/PPT/HTML/texte ; --profile legal extrait en plus les tribunaux/numéros d’affaire |
scripts/text_extract.py | Extraction de texte et vérification de fichiers généralisée (PDF/DOCX/ODT/PPTX/XLSX/HTML/texte/images/audio/vidéo) |
scripts/analysis_utils.py | Fonctions internes partagées : filtrage d’échantillon, identification du type de résultat, encodage des étiquettes binaires ; importé par les scripts de stats/figures automatiques |
scripts/csv_to_spss_syntax.py | Génère la syntaxe SPSS GET DATA à partir de l’en‑tête CSV ; nettoie les noms de variables illégaux/en double et écrit les étiquettes de variables |
scripts/auto_stats.py | Statistiques descriptives automatiques, tests inter‑groupes, corrélations, modèles univariés (variables muettes pour les catégorielles), détection de séparation complète |
scripts/auto_chart_pack.py | Génère automatiquement 40–55 figures de qualité/ distribution/bivariées/clustering/temporelles/diagnostic de modèle/survie + manifest, selon le rôle des colonnes |
scripts/pubfig.py | Style unifié pour les figures de publication, Wilson CI, forêt de points, heatmap, violon, ROC/PR, PCA, MDS, clustering, KM, graphiques de contrôle, etc. (30+ types) |
scripts/export_pdf_hires.py | Exporte Word → PDF et réinsère les images originales en 600 dpi |
scripts/qa_outputs.py | Vérifie la résolution des figures PDF, le nombre de figures/tableaux dans le docx, les données vides, les doublons de clés, le N/les légendes/les chemins du manifest |
Documentation de référence
| Fichier | Quand le lire |
|---|---|
references/01-corpus-audit.md | Au début de l’audit, lorsqu’on rencontre des doublons/fichiers corrompus/scans/formats multiples |
references/02-coding-protocol.md | Lors de la conception des variables, de la rédaction du codebook, du test de fiabilité |
references/03-analysis-spss.md | Lors de la définition du modèle, de l’écriture de la syntaxe SPSS, de l’interprétation des OR |
references/04-figures-publication.md | Lors du dessin des figures, du choix des couleurs, de l’exportation pour soumission |
references/05-manuscript-assembly.md | Lors de la mise en page Word, de l’exportation PDF, du traitement des légendes |
references/06-qa-checklist.md | Avant soumission/livraison, pour une vérification exhaustive |
references/07-chart-atlas.md | Pour choisir les types de figures, correspondre aux graphiques SPSS avancés, déterminer le nombre de figures |
references/08-analysis-expansion.md | Pour savoir quelles analyses supplémentaires exécuter en dehors du modèle principal, comment documenter ce qui est fait/ignoré |
Modèles
assets/scope-template.md: squelette de la portée de recherche, critères d’inclusion/exclusion, flux d’échantillon.assets/codebook-template.md: squelette du manuel de codage des variables.assets/figure-spec-template.md: tableau de spécifications des légendes et des figures.assets/figure_map.example.json: exemple de mappage des figures pour le renvoi Word → PDF.assets/delivery-checklist.md: liste de contrôle de livraison.assets/coding-keywords.json: dictionnaire de mots‑clés remplaçables (exemple de placeholder générique).assets/chart_config.example.json: exemple de configuration des colonnes, étiquettes, filtre d’échantillon d’analyse (filter_query).assets/analysis-manifest-template.md: liste des analyses principales/étendues/ignorées.
Points d’échec les plus fréquents
- Prendre le nombre de fichiers dans un dossier comme taille d’échantillon. Il faut d’abord retirer les métadonnées, fichiers corrompus, doublons, formats non supportés, hors portée.
- Dédupliquer uniquement par nom de fichier. Un même contenu peut avoir plusieurs versions avec/sans identifiant, « - copie », « (2) ».
- Confondre le N des statistiques descriptives avec le N du modèle. Les modèles ont des valeurs manquantes, des filtres ; le N est toujours plus petit.
- Considérer que « le document mentionne une situation » signifie « la situation s’est réellement produite ». C’est une association textuelle, pas un effet causal.
- Le PDF exporté depuis Word semble correct, mais les images ne font que 200 dpi. Il faut réinsérer les images et vérifier leur largeur intégrée.
- Ne dessiner qu’une seule figure principale du résultat. Les distributions, l’hétérogénéité, la robustesse, les diagnostics ne sont pas produits ; l’utilisateur devra demander des précisions.
- Considérer le contenu des citations/annexes comme du matériel principal. Les types de documents, rapports, navigation web doivent être déterminés par la structure du titre/du corps, pas seulement par les mots‑clés du texte intégral.
- Traiter le résultat textuel « oui/non » comme une variable continue. Utilisez
outcome_mappour définir la classe positive, ou codez en 0/1 dans le CSV ; le script ne devine pas la direction. - Auditer un seul format de fichier et ignorer silencieusement les autres. Tous les fichiers doivent avoir un statut ;
total_filesdoit correspondre à l’explorateur de fichiers. - Mettre des données tabulaires dans le processus de codage textuel. Les CSV/Excel passent directement par
auto_stats/SPSS ; le codage textuel est adapté aux documents non structurés comme les entretiens, les pages web.