Skip to content

Commit

Permalink
update halathon2022 paris cité
Browse files Browse the repository at this point in the history
  • Loading branch information
ml4rrieu committed May 6, 2022
1 parent c4b8532 commit 9b011ff
Show file tree
Hide file tree
Showing 3 changed files with 154 additions and 48 deletions.
137 changes: 111 additions & 26 deletions 2022_halathon.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -33,21 +33,26 @@
"name": "stdout",
"output_type": "stream",
"text": [
"nb de DOI importés depuis fichier \t1113\n"
"nb de DOI importés depuis fichier \t500\n"
]
}
],
"source": [
"## option A : utiliser un fichier local \n",
"\n",
"utiliser_fichier_local = True # True pour oui False pour non\n",
"utiliser_fichier_local = True\n",
"\n",
"if utiliser_fichier_local : \n",
" ## un fichier local placé dans le dossier *data*\n",
" ## doit être un fichier .csv avec encodage utf8 et ',' comme séparateur\n",
" ## avec au moins une colonne *doi* \n",
" #(pour scopus remplacer DOI par doi)\n",
" df_mydois = pd.read_csv(\"data/2022-04-sciences-ipgp-scopus.csv\", usecols=[\"doi\"]) \n",
" ## precier le nom de cette colonne (DOI, doiId_s etc. )\n",
" doi_col_name = \"DOI\"\n",
" df_mydois = pd.read_csv(\"data/2022-05-05-scopus-sci-ipgp.csv\", usecols=[doi_col_name])\n",
" # dans la suite du code la colonne doit être nommée doi\n",
" df_mydois.rename(columns = {doi_col_name : \"doi\"}, inplace = True)\n",
" ## limiter le nombre de ligne/publication\n",
" df_mydois = df_mydois[:500]\n",
" #df_mydois = pd.read_csv(\"data/up/2021_12_02_scopus_fac_sh__doi.csv\", usecols=[\"doi\"]) \n",
" print(f\"nb de DOI importés depuis fichier \\t{len(df_mydois)}\")\n",
"else : \n",
Expand Down Expand Up @@ -101,12 +106,15 @@
"name": "stdout",
"output_type": "stream",
"text": [
" nb de DOI a traiter \t1113\n",
" /!\\ temps estimé ~37 minutes\n"
" nb de DOI a traiter \t500\n",
" /!\\ temps estimé ~17 minutes\n"
]
}
],
"source": [
"# retrait des publications sans DOI\n",
"df.dropna(subset=[\"doi\"], inplace = True)\n",
"# feedback nb de DOI et tps de traitement\n",
"print(f\" nb de DOI a traiter \\t{len(df)}\")\n",
"print(f\" /!\\ temps estimé ~{round(len(df) * 40/1200)} minutes\")"
]
Expand All @@ -129,7 +137,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
"nb DOI a verifier dans HAL 1113\n",
"nb DOI a verifier dans HAL 500\n",
"hal 10% \n",
"hal 20% \n",
"hal 30% \n",
Expand All @@ -139,9 +147,8 @@
"hal 70% \n",
"hal 80% \n",
"hal 90% \n",
"hal 100% \n",
"hal 100%\n",
"nb de DOI après retrait de ceux en TI Dans HAL 888\n"
"nb de DOI après retrait de ceux en TI dans HAL 411\n"
]
}
],
Expand All @@ -150,7 +157,7 @@
"df_hal = enrich_w_hal(df) # renseigner df[:50].copy() pour tester uniquement sur les 50 premiers DOI\n",
"#retirer ce qui est déjà déposé avec fichier\n",
"df_no_file = df_hal[ df_hal[\"submitType\"] != \"file\" ].copy()\n",
"print(f\"nb de DOI après retrait de ceux en TI Dans HAL {len(df_no_file)}\")"
"print(f\"nb de DOI après retrait de ceux en TI dans HAL {len(df_no_file)}\")"
]
},
{
Expand All @@ -163,17 +170,17 @@
"name": "stdout",
"output_type": "stream",
"text": [
"nb DOI a verifier dans upw \t888\n",
"nb DOI a verifier dans upw \t411\n",
"upw 10% \n",
"upw 20% \n",
"upw 30% \n",
"upw 40% \n",
"upw 50% \n",
"upw 59% \n",
"upw 69% \n",
"upw 79% \n",
"upw 89% \n",
"upw 99% \n",
"upw 60% \n",
"upw 70% \n",
"upw 80% \n",
"upw 90% \n",
"upw 100% \n",
"upw 100%\n"
]
}
Expand All @@ -185,7 +192,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 8,
"id": "2b7c568d",
"metadata": {},
"outputs": [],
Expand All @@ -198,18 +205,63 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 9,
"id": "f79cff8b",
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"doi problem w permissions 10.1038/s41598-022-10647-5\n",
"10.1515/ijmr-2005-0215 publishedVersion accepted ! ouraaaaah \n",
"10.1083/jcb.202110044 publishedVersion accepted ! ouraaaaah \n",
"10.1093/gji/ggac026 publishedVersion accepted ! ouraaaaah \n",
"10.1093/gji/ggac005 publishedVersion accepted ! ouraaaaah \n",
"doi problem w permissions 10.1016/j.rinp.2022.105443\n",
"10.1029/2021GL095557 publishedVersion accepted ! ouraaaaah \n",
"10.1103/PhysRevB.105.165403 acceptedVersion , no embargo\n",
"doi problem w permissions 10.1063/5.0081481\n",
"doi problem w permissions 10.1063/5.0082016\n",
"doi problem w permissions 10.1063/5.0081408\n",
"10.1029/2021JB023715 publishedVersion accepted ! ouraaaaah \n",
"10.1029/2022JB024131 publishedVersion accepted ! ouraaaaah \n",
"doi problem w permissions 10.3847/1538-4365/ac45f7\n",
"10.1107/S1600576722001406 acceptedVersion , no embargo\n",
"doi problem w permissions 10.1515/crelle-2021-0088\n",
"10.1109/TED.2022.3145767 acceptedVersion , no embargo\n",
"doi problem w permissions 10.1073/pnas.2115258119\n",
"10.1029/2021GL097156 publishedVersion accepted ! ouraaaaah \n",
"10.1063/5.0079588 publishedVersion accepted ! ouraaaaah \n",
"10.1029/2021JD036140 publishedVersion accepted ! ouraaaaah \n",
"10.1029/2021GL096990 publishedVersion accepted ! ouraaaaah \n",
"doi problem w permissions 10.1103/PhysRevD.105.064061\n",
"10.1103/PhysRevB.105.125420 acceptedVersion , no embargo\n",
"10.1103/PhysRevB.105.125112 acceptedVersion , no embargo\n",
"10.1242/dev.200159 publishedVersion accepted ! ouraaaaah \n",
"10.1063/5.0083282 publishedVersion accepted ! ouraaaaah \n",
"10.1126/science.abo5791 acceptedVersion , no embargo\n",
"10.1083/jcb.202011085 publishedVersion accepted ! ouraaaaah \n",
"10.1103/PhysRevLett.128.094503 acceptedVersion , no embargo\n",
"10.1182/BLOODADVANCES.2021005983 publishedVersion accepted ! ouraaaaah \n",
"10.1109/TCDS.2020.2986411 acceptedVersion , no embargo\n",
"10.1103/PhysRevC.105.034334 acceptedVersion , no embargo\n",
"10.1103/PhysRevE.105.034504 acceptedVersion , no embargo\n",
"10.1103/PhysRevC.105.034319 acceptedVersion , no embargo\n",
"doi problem w permissions 10.4230/LIPIcs.STACS.2022.9\n",
"doi problem w permissions 10.4230/LIPIcs.STACS.2022.35\n",
"10.1128/aem.02378-21 acceptedVersion , no embargo\n"
]
}
],
"source": [
"# 2.2. ajouter les possibilités de dépôt via l'API Permissions\n",
"df_upw[\"deposit_condition\"] = df_upw.apply(lambda row : add_permissions(row), axis = 1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 10,
"id": "b09e3df9",
"metadata": {},
"outputs": [],
Expand All @@ -228,12 +280,20 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 11,
"id": "05f25ddb",
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"nb DOI retiré car marqué 'open' dans HAL et repository dans upw 82\n"
]
}
],
"source": [
"df_final = df_permissions\n",
"df_final = df_upw\n",
"df_final.fillna(\"\", inplace = True)# sinon nan sera compris comme une string non vide\n",
"\n",
"## retirer ce qui est dans HAL qui a un lien extérieur et qui est signalé en repository dans upw\n",
Expand All @@ -244,10 +304,27 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 12,
"id": "1b7f56c3",
"metadata": {},
"outputs": [],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Statistiques\n",
"\n",
"nb de DOI a traiter\t\t\t329\n",
"creer ou retrouver la notice 123\n",
"ecrire a l auteur pour appliquer la LRN 119\n",
"selon la licence ajouter le PDF editeur 66\n",
"recuperer le PDF editeur et ecrire a l auteur pour accord 15\n",
"verifier les identifiants de la notice 2\n",
"Name: todo, dtype: int64\n"
]
}
],
"source": [
"# deduire la colonne todo\n",
"df_final[\"todo\"] = df_final.apply(lambda row : deduce_todo(row), axis = 1)\n",
Expand All @@ -258,7 +335,7 @@
},
{
"cell_type": "code",
"execution_count": null,
"execution_count": 13,
"id": "b40b4884",
"metadata": {},
"outputs": [],
Expand All @@ -274,6 +351,14 @@
"\n",
"df_final.to_csv(\"data\\dois_a_traiter_formules.csv\", index = False)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c37e1cc4",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
Expand Down
33 changes: 20 additions & 13 deletions casuhal_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,17 +148,24 @@ def add_permissions(row) :
if repository and res.get("version") :
if "publishedVersion" in res["version"] :
print(f"{row.doi} publishedVersion accepted ! ouraaaaah ")
return f"publishedVersion ; {res.get('licence')} ; {res.get('embargo_months')}"
return f"publishedVersion ; {res.get('licence')} ; {res.get('embargo_months')} months"


## si on peut deposer laccepted version dans un délai plus court que la loi
if repository and res.get("version") and res.get("embargo_months") :
## si on peut deposer l'accepted version dans un délai plus court que la loi
if repository and res.get("version") :
if "acceptedVersion" in res["version"] :
# fixer ici l'embargo en dessous duquel on récupère l'info
if isinstance(res["embargo_months"], int): # verifier l'embargo est bien du int
if res["embargo_months"] < 6 :
print(f"{row.doi} acceptedVersion embargo of {res.get('embargo_months')} months")
return f"{res['version']} ; {res.get('licence')} ; {res.get('embargo_months')} months"
# si le champs embargo est absent
if not res.get("embargo_months") :
print(f"{row.doi} acceptedVersion , no embargo")
return f"{res['version']} ; {res.get('licence')} ; no months"
else :
# s'assurer que l'embargo est bien du int
if isinstance(res["embargo_months"], int):
# ___PARAM___ fixer ici le nombre de mois d'embargo en dessous duquel l'info est récupérée
if res["embargo_months"] < 6 :
print(f"{row.doi} acceptedVersion embargo of {res.get('embargo_months')} months")
return f"{res['version']} ; {res.get('licence')} ; {res.get('embargo_months')} months"



def deduce_todo(row) :
Expand All @@ -168,23 +175,23 @@ def deduce_todo(row) :

#1. si possible archiver la publishedVersion
if "publishedVersion" in str(row["deposit_condition"]) :
return "recuperer PDF publisher et mailto auteur pour accord"
return "recuperer le PDF editeur et ecrire a l auteur pour accord"

#2. si publisher license AND NOT oa via reop
if row["oa_publisher_license"] and not row["oa_repo_link"] :
return "selon licence ajouter PDF publisher"
return "selon la licence ajouter le PDF editeur"

#3. si LRN applicable envoyer email incitation
if row["upw_state"] != "open" and row["has_issn"] :
return "mailto auteur pour appliquer LRN"
return "ecrire a l auteur pour appliquer la LRN"

#4. si c'est dans HAL, sans lien extérieur et pourtant dispo via upw
if row["halId"] and row["linkExtId"] == "" and row["upw_state"] == "open" :
return "verifier identifiants notice"
return "verifier les identifiants de la notice"

#4. si ce n'est pas dans HAL
if row["halId"] == "" :
return "creer/retrouver notice"
return "creer ou retrouver la notice"



Expand Down
32 changes: 23 additions & 9 deletions readme.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@

Code réalisé dans le cadre du [CasuHalathon 2021](https://casuhal2021.sciencesconf.org/resource/page/id/8) permettant de repérer les publications d'un établissement pouvant être déposées en texte intégral dans HAL. Le code récupère des données sur les publications et déduit des actions à réaliser. Les actions sont à réaliser manuellement.
Code initié dans le cadre du [CasuHalathon 2021](https://casuhal2021.sciencesconf.org/resource/page/id/8) et repris lors de Halathons institutionnels. Le code repère les publications d'un établissement pouvant être déposées en texte intégral. Les données sur les publications sont récupérées (HAL, Unpaywall, Permissions de OA.Works) et des actions à réaliser sont déduites. Les actions sont à réaliser manuellement.


## Fonctionnement
Expand All @@ -8,23 +8,23 @@ Code réalisé dans le cadre du [CasuHalathon 2021](https://casuhal2021.sciences

Cinq actions, à réaliser manuellement, sont différenciées :

* **Récupérer le PDF publisher et mailto auteur pour accord** :green_book: :pencil:
* **Récuperer le PDF éditeur et écrire a l'auteur pour accord** :green_book: :pencil:

La publication n'est pas en accès ouvert mais la politique du publisher autorise le partage en archive de la version éditée (eg. la revue [Physical Review B](https://aurehal.archives-ouvertes.fr/journal/read/id/153339)). Reste alors à contacter l'auteur pour avoir son accord.

* **Selon licence ajouter PDF publisher** :green_book:
* **Selon la licence ajouter le PDF éditeur** :green_book:

La publication est en accès ouvert sur le site du publisher avec la mention d'une licence. Si celle-ci le permet (eg. les Creative Commons) ajouter le PDF dans HAL. Nota : le code cible les publications qui ne sont pas déjà dans une archive ouverte (logique de pérennisation).
La publication est en accès ouvert sur le site du publisher avec la mention d'une licence. Si celle-ci le permet (Creative Commons) ajouter le PDF dans HAL. Nota : le code cible les publications qui ne sont pas déjà dans une archive ouverte (logique de pérennisation).

* **Mailto auteur pour appliquer LRN** :pencil:
* **Ecrire à l'auteur pour appliquer la LRN** :pencil:

La publication n'est pas en accès ouvert, solliciter l'auteur afin qu'il applique la Loi pour une République Numérique.

* **Vérifier identifiants notice** :link:
* **Vérifier les identifiants de la notice** :link:

La publication est référencée dans HAL, elle est bien marquée _open access_ dans Unpaywall mais HAL n'a pas fait le lien (métadonnée *linkExtId*). Il faut alors vérifier les identifiants (DOI, Arxiv) de la notice.

* **Créer/retrouver notice** :mag_right:
* **Créer ou retrouver la notice** :mag_right:

Le DOI n'a pas été trouvé dans HAL. Faites une recherche par titre dans HAL afin de rectifier un éventuel oubli du DOI, créer la notice si nécessaire.

Expand Down Expand Up @@ -73,7 +73,20 @@ Le DOI n'a pas été trouvé dans HAL. Faites une recherche par titre dans HAL a

### Statistiques

Obtenues pour Université Paris Cité avec des DOIs de 2021 venant de Scopus

Halathon 2022 Université Paris Cité (Faculté Sciences + IPGP). Scopus. Limités aux 500 récentes publications.
```
nb de DOI a traiter 329
creer ou retrouver la notice 123
ecrire a l auteur pour appliquer la LRN 119
selon la licence ajouter le PDF editeur 66
recuperer le PDF editeur et ecrire a l auteur pour accord 15
verifier les identifiants de la notice 2
```


CasuHalathon 2021 Université Paris Cité. Scopus.
```
nb de DOI a traiter 1062
mailto auteur pour appliquer LRN 564
Expand All @@ -82,7 +95,7 @@ selon licence ajouter PDF publisher 204
verifier identifiants notice 5
recuperer PDF publisher et mailto auteur pour accord 5
```
Traitements réalisés à Université de Paris (sur 3 semaines)
Traitements réalisés sur 3 semaines
```
DOI traités 200
mails envoyés 96
Expand All @@ -91,6 +104,7 @@ notices créées 53
```



Partagez les votres en issue dans github


Expand Down

0 comments on commit 9b011ff

Please sign in to comment.