spinalcordtoolbox / spinalcordtoolbox

Comprehensive and open-source library of analysis tools for MRI of the spinal cord.
https://spinalcordtoolbox.com
GNU Lesser General Public License v3.0
198 stars 100 forks source link

Automate SCT references #3169

Closed alexfoias closed 1 year ago

alexfoias commented 3 years ago

For the moment it's done manually. The idea is to have a bot that looks on google scholar for publications that cite SCT.

jcohenadad commented 3 years ago

tagging @nekohayo so he is aware

nekohayo commented 3 years ago

I don't really know how to do this technically so I'm totally relying on Alexandru here, and hoping he doesn't mind me asking: wouldn't scraping Scholar with an in-house script be potentially error-prone if dependent on Google's HTML/DOM/layout (in addition to the problems of getting locked out by Google)?

Also, throwing some vague ideas for consideration in case that can help: could Zotero somehow be used to facilitate this? And should this be centralized somehow?

alexfoias commented 2 years ago

@joshuacwnewton @jcohenadad I have some news from my investigations.

I'm able to use Project Academic Knowledge API. To get the cited by for SCT.

https://academic.microsoft.com/paper/2528727157/citedby/search?q=SCT%3A%20Spinal%20Cord%20Toolbox%2C%20an%20open-source%20software%20for%20processing%20spinal%20cord%20MRI%20data&qe=RId%253D2528727157&f=&orderBy=0

Here is an example for the info : Id,DN,Pt,DOI,J.JN,AA.DAuN,AA.S,Y

Query syntax: https://api.labs.cognitive.microsoft.com/academic/v1.0/evaluate?expr=RId=2528727157&attributes=Id,DN,Pt,DOI,J.JN,AA.DAuN,AA.S,Y&count=10000&orderby=Y:desc

Example of one of the results:

{
    "logprob": -19.558,
    "prob": 3.2067752E-09,
    "Id": 3158520367,
    "Pt": "8",
    "Y": 2021,
    "DN": "Tools for efficient analysis of neurons in a 3D reference atlas of whole mouse spinal cord",
    "DOI": "10.1101/2021.05.06.443008",
    "AA": [{
      "DAuN": "Felix Fiederling",
      "S": 1
    }, {
      "DAuN": "Luke A. Hammond",
      "S": 2
    }, {
      "DAuN": "David Ng",
      "S": 3
    }, {
      "DAuN": "Carol Mason",
      "S": 4
    }, {
      "DAuN": "Jane Dodd",
      "S": 5
    }],
    "J": {
      "JN": "biorxiv"
    }
  },

I will try to integrate Academic Search API - Evaluate in the CI to give you a better example.

alexfoias commented 2 years ago

Here is an example of a query for the first 5 citations sorted by Year descending.

https://api.labs.cognitive.microsoft.com/academic/v1.0/evaluate?expr=RId=2528727157&attributes=Id,DN,Pt,DOI,J.JN,AA.DAuN,AA.S,Y&count=5&orderby=Y:desc

Request-Context: appId=cid-v1:8d5cbad1-6ca8-4d39-8271-8f3a8d671eae
Date: Fri, 15 Oct 2021 15:56:46 GMT
X-Powered-By: ASP.NET
Content-Length: 9495
Content-Type: application/json; charset=utf-8

{
  "expr": "RId=2528727157",
  "entities": [{
    "logprob": -19.271,
    "prob": 4.272785E-09,
    "Id": 3194760139,
    "Pt": "1",
    "Y": 2021,
    "DN": "Open-access quantitative MRI data of the spinal cord and reproducibility across participants, sites and manufacturers.",
    "DOI": "10.1038/S41597-021-00941-8",
    "AA": [{
      "DAuN": "Julien Cohen-Adad",
      "S": 1
    }, {
      "DAuN": "Julien Cohen-Adad",
      "S": 1
    }, {
      "DAuN": "Eva Alonso-Ortiz",
      "S": 2
    }, {
      "DAuN": "Mihael Abramovic",
      "S": 3
    }, {
      "DAuN": "Carina Arneitz",
      "S": 4
    }, {
      "DAuN": "Nicole Atcheson",
      "S": 5
    }, {
      "DAuN": "Laura Barlow",
      "S": 6
    }, {
      "DAuN": "Robert L. Barry",
      "S": 7
    }, {
      "DAuN": "Robert L. Barry",
      "S": 7
    }, {
      "DAuN": "Markus Barth",
      "S": 8
    }, {
      "DAuN": "Marco Battiston",
      "S": 9
    }, {
      "DAuN": "Christian Büchel",
      "S": 10
    }, {
      "DAuN": "Matthew Budde",
      "S": 11
    }, {
      "DAuN": "Virginie Callot",
      "S": 12
    }, {
      "DAuN": "Anna J. E. Combes",
      "S": 13
    }, {
      "DAuN": "Benjamin De Leener",
      "S": 14
    }, {
      "DAuN": "Maxime Descoteaux",
      "S": 15
    }, {
      "DAuN": "Paulo Loureiro de Sousa",
      "S": 16
    }, {
      "DAuN": "Marek Dostál",
      "S": 17
    }, {
      "DAuN": "Julien Doyon",
      "S": 18
    }, {
      "DAuN": "Adam Dvorak",
      "S": 19
    }, {
      "DAuN": "Falk Eippert",
      "S": 20
    }, {
      "DAuN": "Karla R. Epperson",
      "S": 21
    }, {
      "DAuN": "Kevin S. Epperson",
      "S": 22
    }, {
      "DAuN": "Patrick Freund",
      "S": 23
    }, {
      "DAuN": "Jürgen Finsterbusch",
      "S": 24
    }, {
      "DAuN": "Alexandru Foias",
      "S": 25
    }, {
      "DAuN": "Michela Fratini",
      "S": 26
    }, {
      "DAuN": "Issei Fukunaga",
      "S": 27
    }, {
      "DAuN": "Claudia A. M. Gandini Wheeler-Kingshott",
      "S": 28
    }, {
      "DAuN": "Claudia A. M. Gandini Wheeler-Kingshott",
      "S": 28
    }, {
      "DAuN": "Giancarlo Germani",
      "S": 29
    }, {
      "DAuN": "Guillaume Gilbert",
      "S": 30
    }, {
      "DAuN": "Federico Giove",
      "S": 31
    }, {
      "DAuN": "Charley Gros",
      "S": 32
    }, {
      "DAuN": "Charley Gros",
      "S": 32
    }, {
      "DAuN": "Francesco Grussu",
      "S": 33
    }, {
      "DAuN": "Akifumi Hagiwara",
      "S": 34
    }, {
      "DAuN": "Pierre-Gilles Henry",
      "S": 35
    }, {
      "DAuN": "Tomáš Horák",
      "S": 36
    }, {
      "DAuN": "Masaaki Hori",
      "S": 37
    }, {
      "DAuN": "James Joers",
      "S": 38
    }, {
      "DAuN": "Kouhei Kamiya",
      "S": 39
    }, {
      "DAuN": "Haleh Karbasforoushan",
      "S": 40
    }, {
      "DAuN": "Haleh Karbasforoushan",
      "S": 40
    }, {
      "DAuN": "Miloš Keřkovský",
      "S": 41
    }, {
      "DAuN": "Ali Khatibi",
      "S": 42
    }, {
      "DAuN": "Joo-Won Kim",
      "S": 43
    }, {
      "DAuN": "Nawal Kinany",
      "S": 44
    }, {
      "DAuN": "Nawal Kinany",
      "S": 44
    }, {
      "DAuN": "Hagen H. Kitzler",
      "S": 45
    }, {
      "DAuN": "Shannon Kolind",
      "S": 46
    }, {
      "DAuN": "Yazhuo Kong",
      "S": 47
    }, {
      "DAuN": "Yazhuo Kong",
      "S": 47
    }, {
      "DAuN": "Petr Kudlička",
      "S": 48
    }, {
      "DAuN": "Paul Kuntke",
      "S": 49
    }, {
      "DAuN": "Nyoman D. Kurniawan",
      "S": 50
    }, {
      "DAuN": "Slawomir Kusmia",
      "S": 51
    }, {
      "DAuN": "Slawomir Kusmia",
      "S": 51
    }, {
      "DAuN": "Slawomir Kusmia",
      "S": 51
    }, {
      "DAuN": "René Labounek",
      "S": 52
    }, {
      "DAuN": "Maria Marcella Laganà",
      "S": 53
    }, {
      "DAuN": "Cornelia Laule",
      "S": 54
    }, {
      "DAuN": "Christine S. Law",
      "S": 55
    }, {
      "DAuN": "Christophe Lenglet",
      "S": 56
    }, {
      "DAuN": "Tobias Leutritz",
      "S": 57
    }, {
      "DAuN": "Yaou Liu",
      "S": 58
    }, {
      "DAuN": "Sara Llufriu",
      "S": 59
    }, {
      "DAuN": "Sean Mackey",
      "S": 60
    }, {
      "DAuN": "Eloy Martinez-Heras",
      "S": 61
    }, {
      "DAuN": "Loan Mattera",
      "S": 62
    }, {
      "DAuN": "Igor Nestrasil",
      "S": 63
    }, {
      "DAuN": "Kristin P. O’Grady",
      "S": 64
    }, {
      "DAuN": "Nico Papinutto",
      "S": 65
    }, {
      "DAuN": "Daniel Papp",
      "S": 66
    }, {
      "DAuN": "Daniel Papp",
      "S": 66
    }, {
      "DAuN": "Deborah Pareto",
      "S": 67
    }, {
      "DAuN": "Todd B. Parrish",
      "S": 68
    }, {
      "DAuN": "Anna Pichiecchio",
      "S": 69
    }, {
      "DAuN": "Ferran Prados",
      "S": 70
    }, {
      "DAuN": "Ferran Prados",
      "S": 70
    }, {
      "DAuN": "Ferran Prados",
      "S": 70
    }, {
      "DAuN": "Àlex Rovira",
      "S": 71
    }, {
      "DAuN": "Marc J. Ruitenberg",
      "S": 72
    }, {
      "DAuN": "Rebecca S. Samson",
      "S": 73
    }, {
      "DAuN": "Giovanni Savini",
      "S": 74
    }, {
      "DAuN": "Maryam Seif",
      "S": 75
    }, {
      "DAuN": "Maryam Seif",
      "S": 75
    }, {
      "DAuN": "Alan C. Seifert",
      "S": 76
    }, {
      "DAuN": "Alex K. Smith",
      "S": 77
    }, {
      "DAuN": "Seth A. Smith",
      "S": 78
    }, {
      "DAuN": "Zachary A. Smith",
      "S": 79
    }, {
      "DAuN": "Elisabeth Solana",
      "S": 80
    }, {
      "DAuN": "Y. Suzuki",
      "S": 81
    }, {
      "DAuN": "George Tackley",
      "S": 82
    }, {
      "DAuN": "Alexandra Tinnermann",
      "S": 83
    }, {
      "DAuN": "Jan Valošek",
      "S": 84
    }, {
      "DAuN": "Dimitri Van De Ville",
      "S": 85
    }, {
      "DAuN": "Dimitri Van De Ville",
      "S": 85
    }, {
      "DAuN": "Marios C. Yiannakas",
      "S": 86
    }, {
      "DAuN": "Kenneth A. Weber Ii",
      "S": 87
    }, {
      "DAuN": "Nikolaus Weiskopf",
      "S": 88
    }, {
      "DAuN": "Nikolaus Weiskopf",
      "S": 88
    }, {
      "DAuN": "Richard G. Wise",
      "S": 89
    }, {
      "DAuN": "Richard G. Wise",
      "S": 89
    }, {
      "DAuN": "Patrik O. Wyss",
      "S": 90
    }, {
      "DAuN": "Junqian Xu",
      "S": 91
    }],
    "J": {
      "JN": "scientific data"
    }
  }, {
    "logprob": -19.271,
    "prob": 4.272785E-09,
    "Id": 2780737922,
    "Pt": "1",
    "Y": 2021,
    "DN": "Generic acquisition protocol for quantitative MRI of the spinal cord.",
    "DOI": "10.1038/S41596-021-00588-0",
    "AA": [{
      "DAuN": "Julien Cohen-Adad",
      "S": 1
    }, {
      "DAuN": "Julien Cohen-Adad",
      "S": 1
    }, {
      "DAuN": "Eva Alonso-Ortiz",
      "S": 2
    }, {
      "DAuN": "Mihael Abramovic",
      "S": 3
    }, {
      "DAuN": "Carina Arneitz",
      "S": 4
    }, {
      "DAuN": "Nicole Atcheson",
      "S": 5
    }, {
      "DAuN": "Laura Barlow",
      "S": 6
    }, {
      "DAuN": "Robert L. Barry",
      "S": 7
    }, {
      "DAuN": "Robert L. Barry",
      "S": 7
    }, {
      "DAuN": "Markus Barth",
      "S": 8
    }, {
      "DAuN": "Marco Battiston",
      "S": 9
    }, {
      "DAuN": "Christian Büchel",
      "S": 10
    }, {
      "DAuN": "Matthew Budde",
      "S": 11
    }, {
      "DAuN": "Virginie Callot",
      "S": 12
    }, {
      "DAuN": "Anna J. E. Combes",
      "S": 13
    }, {
      "DAuN": "Benjamin De Leener",
      "S": 14
    }, {
      "DAuN": "Maxime Descoteaux",
      "S": 15
    }, {
      "DAuN": "Paulo Loureiro de Sousa",
      "S": 16
    }, {
      "DAuN": "Marek Dostál",
      "S": 17
    }, {
      "DAuN": "Julien Doyon",
      "S": 18
    }, {
      "DAuN": "Adam Dvorak",
      "S": 19
    }, {
      "DAuN": "Falk Eippert",
      "S": 20
    }, {
      "DAuN": "Karla R. Epperson",
      "S": 21
    }, {
      "DAuN": "Kevin S. Epperson",
      "S": 22
    }, {
      "DAuN": "Patrick Freund",
      "S": 23
    }, {
      "DAuN": "Jürgen Finsterbusch",
      "S": 24
    }, {
      "DAuN": "Alexandru Foias",
      "S": 25
    }, {
      "DAuN": "Michela Fratini",
      "S": 26
    }, {
      "DAuN": "Issei Fukunaga",
      "S": 27
    }, {
      "DAuN": "Claudia A. M. Gandini Wheeler-Kingshott",
      "S": 28
    }, {
      "DAuN": "Claudia A. M. Gandini Wheeler-Kingshott",
      "S": 28
    }, {
      "DAuN": "Giancarlo Germani",
      "S": 29
    }, {
      "DAuN": "Guillaume Gilbert",
      "S": 30
    }, {
      "DAuN": "Federico Giove",
      "S": 31
    }, {
      "DAuN": "Charley Gros",
      "S": 32
    }, {
      "DAuN": "Charley Gros",
      "S": 32
    }, {
      "DAuN": "Francesco Grussu",
      "S": 33
    }, {
      "DAuN": "Akifumi Hagiwara",
      "S": 34
    }, {
      "DAuN": "Pierre-Gilles Henry",
      "S": 35
    }, {
      "DAuN": "Tomáš Horák",
      "S": 36
    }, {
      "DAuN": "Masaaki Hori",
      "S": 37
    }, {
      "DAuN": "James Joers",
      "S": 38
    }, {
      "DAuN": "Kouhei Kamiya",
      "S": 39
    }, {
      "DAuN": "Haleh Karbasforoushan",
      "S": 40
    }, {
      "DAuN": "Haleh Karbasforoushan",
      "S": 40
    }, {
      "DAuN": "Miloš Keřkovský",
      "S": 41
    }, {
      "DAuN": "Ali Khatibi",
      "S": 42
    }, {
      "DAuN": "Ali Khatibi",
      "S": 42
    }, {
      "DAuN": "Joo-Won Kim",
      "S": 43
    }, {
      "DAuN": "Nawal Kinany",
      "S": 44
    }, {
      "DAuN": "Nawal Kinany",
      "S": 44
    }, {
      "DAuN": "Hagen Kitzler",
      "S": 45
    }, {
      "DAuN": "Shannon Kolind",
      "S": 46
    }, {
      "DAuN": "Yazhuo Kong",
      "S": 47
    }, {
      "DAuN": "Yazhuo Kong",
      "S": 47
    }, {
      "DAuN": "Petr Kudlička",
      "S": 48
    }, {
      "DAuN": "Paul Kuntke",
      "S": 49
    }, {
      "DAuN": "Nyoman D. Kurniawan",
      "S": 50
    }, {
      "DAuN": "Slawomir Kusmia",
      "S": 51
    }, {
      "DAuN": "Slawomir Kusmia",
      "S": 51
    }, {
      "DAuN": "Slawomir Kusmia",
      "S": 51
    }, {
      "DAuN": "René Labounek",
      "S": 52
    }, {
      "DAuN": "Maria Marcella Laganà",
      "S": 53
    }, {
      "DAuN": "Cornelia Laule",
      "S": 54
    }, {
      "DAuN": "Christine S. Law",
      "S": 55
    }, {
      "DAuN": "Christophe Lenglet",
      "S": 56
    }, {
      "DAuN": "Tobias Leutritz",
      "S": 57
    }, {
      "DAuN": "Yaou Liu",
      "S": 58
    }, {
      "DAuN": "Sara Llufriu",
      "S": 59
    }, {
      "DAuN": "Sean Mackey",
      "S": 60
    }, {
      "DAuN": "Eloy Martinez-Heras",
      "S": 61
    }, {
      "DAuN": "Loan Mattera",
      "S": 62
    }, {
      "DAuN": "Igor Nestrasil",
      "S": 63
    }, {
      "DAuN": "Kristin P. O’Grady",
      "S": 64
    }, {
      "DAuN": "Nico Papinutto",
      "S": 65
    }, {
      "DAuN": "Daniel Papp",
      "S": 66
    }, {
      "DAuN": "Daniel Papp",
      "S": 66
    }, {
      "DAuN": "Deborah Pareto",
      "S": 67
    }, {
      "DAuN": "Todd B. Parrish",
      "S": 68
    }, {
      "DAuN": "Anna Pichiecchio",
      "S": 69
    }, {
      "DAuN": "Ferran Prados",
      "S": 70
    }, {
      "DAuN": "Ferran Prados",
      "S": 70
    }, {
      "DAuN": "Ferran Prados",
      "S": 70
    }, {
      "DAuN": "Àlex Rovira",
      "S": 71
    }, {
      "DAuN": "Marc J. Ruitenberg",
      "S": 72
    }, {
      "DAuN": "Rebecca S. Samson",
      "S": 73
    }, {
      "DAuN": "Giovanni Savini",
      "S": 74
    }, {
      "DAuN": "Maryam Seif",
      "S": 75
    }, {
      "DAuN": "Maryam Seif",
      "S": 75
    }, {
      "DAuN": "Alan C. Seifert",
      "S": 76
    }, {
      "DAuN": "Alex K. Smith",
      "S": 77
    }, {
      "DAuN": "Seth A. Smith",
      "S": 78
    }, {
      "DAuN": "Zachary A. Smith",
      "S": 79
    }, {
      "DAuN": "Elisabeth Solana",
      "S": 80
    }, {
      "DAuN": "Yuichi Suzuki",
      "S": 81
    }, {
      "DAuN": "George Tackley",
      "S": 82
    }, {
      "DAuN": "Alexandra Tinnermann",
      "S": 83
    }, {
      "DAuN": "Jan Valošek",
      "S": 84
    }, {
      "DAuN": "Dimitri Van De Ville",
      "S": 85
    }, {
      "DAuN": "Dimitri Van De Ville",
      "S": 85
    }, {
      "DAuN": "Marios C. Yiannakas",
      "S": 86
    }, {
      "DAuN": "Kenneth A. Weber",
      "S": 87
    }, {
      "DAuN": "Nikolaus Weiskopf",
      "S": 88
    }, {
      "DAuN": "Nikolaus Weiskopf",
      "S": 88
    }, {
      "DAuN": "Richard G. Wise",
      "S": 89
    }, {
      "DAuN": "Richard G. Wise",
      "S": 89
    }, {
      "DAuN": "Patrik O. Wyss",
      "S": 90
    }, {
      "DAuN": "Junqian Xu",
      "S": 91
    }],
    "J": {
      "JN": "nature protocols"
    }
  }, {
    "logprob": -19.334,
    "prob": 4.0119036E-09,
    "Id": 3101403112,
    "Pt": "1",
    "Y": 2021,
    "DN": "Segmented quantitative diffusion tensor imaging evaluation of acute traumatic cervical spinal cord injury.",
    "DOI": "10.1259/BJR.20201000",
    "AA": [{
      "DAuN": "Mahmud Mossa-Basha",
      "S": 1
    }, {
      "DAuN": "Daniel J Peterson",
      "S": 2
    }, {
      "DAuN": "Daniel S Hippe",
      "S": 3
    }, {
      "DAuN": "Justin E Vranic",
      "S": 4
    }, {
      "DAuN": "Christoph Hofstetter",
      "S": 5
    }, {
      "DAuN": "Maria Reyes",
      "S": 6
    }, {
      "DAuN": "Charles Bombardier",
      "S": 7
    }, {
      "DAuN": "Jeffrey G Jarvik",
      "S": 8
    }],
    "J": {
      "JN": "british journal of radiology"
    }
  }, {
    "logprob": -19.402,
    "prob": 3.7481629E-09,
    "Id": 3122444501,
    "Pt": "1",
    "Y": 2021,
    "DN": "Comparative neuroanatomy of the lumbosacral spinal cord of the rat, cat, pig, monkey, and human.",
    "DOI": "10.1038/S41598-021-81371-9",
    "AA": [{
      "DAuN": "Amirali Toossi",
      "S": 1
    }, {
      "DAuN": "Amirali Toossi",
      "S": 1
    }, {
      "DAuN": "Bradley Bergin",
      "S": 2
    }, {
      "DAuN": "Maedeh Marefatallah",
      "S": 3
    }, {
      "DAuN": "Behdad Parhizi",
      "S": 4
    }, {
      "DAuN": "Neil Tyreman",
      "S": 5
    }, {
      "DAuN": "Dirk G. Everaert",
      "S": 6
    }, {
      "DAuN": "Sabereh Rezaei",
      "S": 7
    }, {
      "DAuN": "Peter Seres",
      "S": 8
    }, {
      "DAuN": "J. Christopher Gatenby",
      "S": 9
    }, {
      "DAuN": "Steve I. Perlmutter",
      "S": 10
    }, {
      "DAuN": "Steve I. Perlmutter",
      "S": 10
    }, {
      "DAuN": "Vivian K. Mushahwar",
      "S": 11
    }],
    "J": {
      "JN": "scientific reports"
    }
  }, {
    "logprob": -19.558,
    "prob": 3.2067752E-09,
    "Id": 3199305089,
    "Pt": "0",
    "Y": 2021,
    "DN": "Tools for efficient analysis of neurons in a 3D reference atlas of whole mouse spinal cord",
    "DOI": "10.1016/J.CRMETH.2021.100074",
    "AA": [{
      "DAuN": "Felix Fiederling",
      "S": 1
    }, {
      "DAuN": "Luke A. Hammond",
      "S": 2
    }, {
      "DAuN": "David Ng",
      "S": 3
    }, {
      "DAuN": "Carol Mason",
      "S": 4
    }, {
      "DAuN": "Jane Dodd",
      "S": 5
    }]
  }],
  "timed_out": false
}
jcohenadad commented 2 years ago

This is very cool @alexfoias ! thank you for those investigations. But now i have some after thoughts about the robustness of these algorithms-- i would be more confident in manually filtering/sorting the citations. However this tool can definitely be of help to make sure we did not forget to add citations.

Another benefits of maintaining our own citation DB (as done for DSI studio) is that we can come up with statistics like this one, which we could (should) add in our SCT documentation:

image

image

image

alexfoias commented 2 years ago

Sure no problem. At least we have an idea of what output we would have from the Microsoft API.

joshuacwnewton commented 2 years ago

Thanks for assigning me this issue, @alexfoias!

Just to summarize the existing discussion: From what I can tell, there are 7 possible ideas for things to automate here:

  1. Automatic collection of all citations for SCT
  2. Automatic detection of new citations (i.e. tracking searches and alerting when new results occur)
  3. Automatic parsing of citations (i.e. selecting specific metadata from each citation)
  4. Automatic tagging of citations (i.e. with pathology, tools, etc. metadata)
  5. Automatic importing of new/missing citations into a spreadsheet or database
  6. Automatic detection of missing citations (i.e. comparing metadata to citations in an existing database)
  7. Automatic formatting of new/missing citations into a PR to update studies.rst

And, from what I can tell, @alexfoias has mainly worked on task 1 (collecting all citations) and task 3 (parsing citations), using:

And from @jcohenadad's suggestion in https://github.com/spinalcordtoolbox/spinalcordtoolbox/issues/3169#issuecomment-944423706:

i would be more confident in manually filtering/sorting the citations

It sounds like the current proposal is to automate task 1 (collection of all citations), but still manually perform tasks 2-7.

Does that sound about right?


Personally, I feel like whether or not it's worth pursing tasks 2-7 depends a lot on the current approach (i.e. how much time is spent manually doing each task, how much time would be saved by automating that task, and how much effort it would take to automate each task).

Since I've volunteered on the "tasks spreadsheet" to take over for @alexfoias for SCT's citations (updating citation spreadsheet, updating studies.rst), I'd maybe like to try spending a month or two just seeing what the workload is like first, before deciding whether or not to try automating anything. Does that sound reasonable?

joshuacwnewton commented 2 years ago

Also, just as a quick aside, for task 2:

  1. Automatic detection of new citations (i.e. tracking searches and alerting when new results occur)

I've set up a Google Scholar alert for the SCT publication:

image

And, I can make sure to do the same for all of other the SCT-related publications.

But, I'm assuming that @jcohenadad already has something like this set up? (Just to check -- Is this how you've been finding new citations to post in #sct_general, by chance?)

jcohenadad commented 2 years ago

Just to check -- Is this how you've been finding new citations to post in #sct_general, by chance?)

yes, but i am using pubmed, here is my filter: ("spinal cord"[Title]) AND (MRI[Title/Abstract] OR diffusion[Title/Abstract] OR DWI[Title/Abstract] OR magnetization[Title/Abstract])

however i need to curate it carefully (usually there is one out of ten citations that is relevant)

jcohenadad commented 2 years ago

also, just to clarify: i do not directly search for papers that cite SCT, because i am assuming (maybe wrongly) that papers which are not publicly available would not list this information (eg: sometimes i need to fetch the paper via Poly or by contacting the authors if there is an embargo from the publisher, read the paper and figure out if SCT was used/cited).

joshuacwnewton commented 2 years ago

also, just to clarify: i do not directly search for papers that cite SCT, because i am assuming (maybe wrongly) that papers which are not publicly available would not list this information (eg: sometimes i need to fetch the paper via Poly or by contacting the authors if there is an embargo from the publisher, read the paper and figure out if SCT was used/cited).

Ahhhhh, thank you for clarifying. That makes perfect sense.

It also adds some extra background information for what you said earlier:

But now i have some after thoughts about the robustness of these algorithms-- i would be more confident in manually filtering/sorting the citations. However this tool can definitely be of help to make sure we did not forget to add citations.

Now I feel especially convinced that automation is better suited as a supplementary tool, rather than a replacement for manual searching and filtering. Since, the automated approaches tested by @alexfoias I believe rely on direct citations for the SCT publication.

joshuacwnewton commented 1 year ago

Since I've volunteered to take over for @alexfoias for SCT's citations (updating citation spreadsheet, updating studies.rst), I'd maybe like to try spending a month or two just seeing what the workload is like first, before deciding whether or not to try automating anything.

It's been about a year since I took over the task of updating SCT's references, using Google Scholar's automated alerts + manually updating the spreadsheet/website.

In that time, I've noticed that updating the gsheet/website involves a lot more manual filtering than I first realized. It's necessary to skim the paper, find the SCT reference, and evaluate the nature of the reference to ensure it's substantial enough to be worth including.

To me, this complicates the effort significantly. Overall, I think the only real places we can automate references are:

  1. Automatic parsing of citations (i.e. selecting specific metadata from each citation)
  2. Automatic formatting of new/missing citations

In other words, taking away some of the manual effort involved in copying/pasting/formatting metadata.

I think this could be done using a similar script to https://github.com/spinalcordtoolbox/spinalcordtoolbox/pull/3170, but done in a much simpler way, since the script would only need to be fed a single Google Scholar link at a time (since we have the link already,

However, since this task is being done by a single person (myself), and right now I'm content with the manual workload, I think I'm going to close this issue for now. But, I'll add a note in our Dev Wiki page that highlights the possibility of automating formatting.