GithubHelp home page GithubHelp logo

skumarbigdata / papermemory Goto Github PK

View Code? Open in Web Editor NEW

This project forked from vict0rsch/papermemory

0.0 1.0 0.0 56.77 MB

Your browser's reference manager: automatic paper detection (Arxiv, OpenReview & more), publication venue matching and code repository discovery! Also enhances ArXiv: BibTex citation, Markdown link, direct download and more!

Home Page: https://chrome.google.com/webstore/detail/arxivtools/hmebhknlgddhfbbdhgplnillngljgmdi

License: MIT License

JavaScript 74.53% HTML 16.36% CSS 8.33% Python 0.78%

papermemory's Introduction

My Paper Memory ⚡


🏪 Official stores
Chrome & Brave  •  Firefox



An automated, web-based and minimalist reference manager that also finds code repositories.

It is not meant to replace, rather complete more standard reference managers as Zotero etc.

This browser extension allows you to do automatically store research papers you read, find a code repository and much more:

  1. 🏬 Automatically record papers you open, without clicking anywhere. You can then search them, tag them, comment them and link a code repository.
  2. 💻 Automatically find code repositories using PapersWithCode's API
  3. 🤝 Match pre-prints to publications using 3 different databases
  4. 🎬 Change a pdf's webpage title to the article's title, because who cares about that saved bookmark 1812.10889.pdf when it could be InstaGAN Instance-aware Image-to-Image Translation.pdf
  5. 🎫 BibTex citation, because citing papers should not be a hassle you can copy a BibTex citation to your clipboard or export the Memory itself as a .bib file
  6. 🔗 Markdown link, [title](url) because it's the little things that make sharing a paper easier (to be used in issues, PRs, Readme, HackMD.io etc.)
  7. 🗂 Direct download button with a nice name including the paper's title, so that you don't have to open the pdf's webpage and then download it from your browser.
  8. 📄 Go back from a pdf to its abstract page. For instance: from https://arxiv.org/pdf/1703.06907.pdf to https://arxiv.org/abs/1703.06907 in a click.
  9. 🏛️ Export your data as a .json file or a .bib full BibTex export



Supported Venues  •  Demo  •  Keyboard Navigation  •  User Guide  •  Advanced features  •  Install from source  •  About preprints  •  Discovering code Repositories  •  FAQ


Supported venues

  • Arxiv (PaperMemory will try to find if a pre-print has been published and create a corresponding note to the paper (see preprints))
  • BioRxiv
  • NeurIPS
  • Open Review (ICLR etc.)
  • Computer Vision Foundation (I/ECCV, CVPR etc.)
  • Proceedings of Machine Learning Research (PMLR) (AISTATS, ICML, CoRL, CoLT, ALT, UAI etc.)
  • Association for Computational Linguistics (ACL) (EMNLP, ACL, CoNLL, NAACL etc.)
  • Proceedings of the National Academy of Sciences (PNAS)
  • SciRate
  • Nature (Nature, Nature Communications, Nature Machine Intelligence etc.)
  • American Chemical Society (ACS)
  • IOPscience
  • PubMed Central
  • International Joint Conferences on Artificial Intelligence (IJCAI)
  • Association for Computing Machinery (ACM)
  • IEEE
  • Springer (books, chapters and, of course, articles)
  • Add more

About finding published papers from preprints

Privacy

All the data collected is stored locally on your computer and you can export it to json it from the options page.

Feature requests

I'm regularly adding feature ideas in the issues. Feel free to go upvote the ones you'd like to see happen or submit your own requests.

Demo

Customize features in the menu:

Switch between Light and Dark mode


Share ideas 💡 in issues and love with stars ⭐️:)

Keyboard Navigation

  • Keyboard navigation:
    • Open the popup:
      • cmd/ctrl + shift + e
    • Open the Memory
      • a from the popup's home will open it
      • navigate to the bottom left button with tab and hit enter
    • Search
      • Search field is automatically focused on memory open
      • Navigate to the top input with tab or shift + tab
    • Navigate papers
      • tab will iterate through papers down the list
      • shift + tab will go back up the list
    • Edit a paper
      • Press e to edit the paper's metadata: tags, code and note when the paper is focused (from click or keyboard tab navigation)
        • Navigate through fields with (shift+) tab: tags and note if you're on a paper's page.
      • Press enter to open a focused paper (focus an existing tab with the paper or create a new tab to the paper's pdf if it's not open already)
      • backspace to delete a focused paper (a confirmation will be prompted first don't worry 👮‍♀️)
    • Close Memory or Menu
      • esc closes the memory (or the menu -- not in Firefox)
  • Search
    • In a paper's authors, title and note.
      • Split queries on spaces: gan im will look for: all papers whose (title OR author) contain ("gan" AND "im")
    • In a paper's code link
      • Start the search query with c: to only search code links
    • Paper years
      • Start the search query with y: ${year}, optionally with , separating requested years or starting with > or < to filter paper published after/before a given year (stricly)
        • y: 20,21,22 will display papers published in 2020 OR 2021 OR 2022
        • y: <2015 will display papers published before (strictly) 2015
        • y: >19 will display papers published after (strictly) 2019
    • Paper tags
      • Start the search query with t: to filter by tags
      • t: gan will look for all papers whose tag-list contains at least 1 tag containing "gan"
      • t: gan tim will look for all papers whose tag-list contains (at least 1 tag containing "gan") AND (at least 1 tag containing "tim")
  • Export your memory as json file (in the extension's Menu)

Guides

Advanced

In the extension's options (right click on the icon or in the popup's menu) you will find advanced customization features:

  • Auto-tagging: add tags to papers based on regexs matched on authors and titles
  • Source filtering: filter out some paper sources you don't want to record papers from
  • Custom title function: provide Javascript code to generate your own web page titles and pdf filenames based on a paper's attributes
  • Data management: export/load your memory data and export the bibliography as a .bib file

Install from source (Brave & Chrome)

  • Download/clone the repo
  • Go to Chrome/Brave's extension manager
  • Enable developer mode
  • Click on "load unpackaged extension"
  • Select the downloaded folder :)

Preprints

There currently exists, to my knowledge, no centralized source for matching a preprint to its subsequent published article. This makes it really hard to try and implement best practices in terms of citing published papers rather than their preprint.

My approach with PaperMemory is to try and notify you that a publication likely exists by utilizing the note field. You will occasionally notice Accepted @ X in a Paper's notes. This will be added automatically if you are on a known published venue's website (as Nature, PMLR or NeurIPS) but also from:

  • PapersWithCode.com(https://paperswithcode.com/api/v1/docs/)
    • As PaperMemory retrieves code, it also looks for a proceeding field in PWC's response.
    • If it exists and is not null then it is expected to look like ${conf}-${year}-${month}.
    • In this case a note is added to the paper: Accepted @ ${conf} ${year} -- [paperswithcode.com]
  • CrossRef.org
  • dblp.org
    • A query is sent to their api for an exact paper title match
    • The oldest hit in the response which is not a preprint (hit.venue !== "CoRR") is used
    • If such a match is found, a note is added as: Accepted @ ${venue} ${year} -- [dblp.org]

There's room for improvement here^, please contact me (an issue will do) if you want to help

Discovering Code repositories

PaperMemory uses the PapersWithCode API in order to discover code repositories. If the paper being added to the Memory is from Arxiv, PaperMemory will use PWC's arxiv_id search field. Otherwise it will query per title. PaperMemory then expects exactly 1 result from the API. Any different count in the response will make PaperMemory consider there is no match.

If a match is found, the selected repo is the official (if it exists) one with the most stars.

Here's an example return value from PWC's API

"https://paperswithcode.com/api/v1/papers/?title=climategan"

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": "climategan-raising-climate-change-awareness",
      "arxiv_id": "2110.02871",
      "nips_id": null,
      "url_abs": "https://arxiv.org/abs/2110.02871v1",
      "url_pdf": "https://arxiv.org/pdf/2110.02871v1.pdf",
      "title": "ClimateGAN: Raising Climate Change Awareness by Generating Images of Floods",
      "abstract": "...",
      "authors": ["..."],
      "published": "2021-10-06",
      "conference": "climategan-raising-climate-change-awareness-1",
      "conference_url_abs": "https://openreview.net/forum?id=EZNOb_uNpJk",
      "conference_url_pdf": "https://openreview.net/pdf?id=EZNOb_uNpJk",
      "proceeding": "iclr-2022-4"
    }
  ]
}

"https://paperswithcode.com/api/v1/papers/climategan-raising-climate-change-awareness/repositories/"

{
  "count": 2,
  "next": null,
  "previous": null,
  "results": [
    {
      "url": "https://github.com/cc-ai/climategan",
      "owner": "cc-ai",
      "name": "climategan",
      "description": "Code and pre-trained model for the algorithm generating visualisations of 3 climate change related events: floods, wildfires and smog. ",
      "stars": 25,
      "framework": "pytorch",
      "is_official": true
    },
    {
      "url": "https://github.com/cc-ai/mila-simulated-floods",
      "owner": "cc-ai",
      "name": "mila-simulated-floods",
      "description": "",
      "stars": 7,
      "framework": "pytorch",
      "is_official": true
    }
  ]
}

FAQ

Why does PaperMemory require access to all urls?
Because Chrome & Brave will disable an extension by default when it auto-updates with new permissions. In this case, any new addition of a paper source will require new permissions to access the data necessary to parse the paper data and will therefore disable the extension until users re-enable it.
The button to go from an abstract to its pdf does not work
In general there can be 2 reasons:
  1. It's a bug, it can happen, I'm sorry about this: you should raise an issue, and ideally even provide a fix in a Pull Resquest
  2. More likely, the pdf is behind a paywall and the standard abstract -> pdf path was redirected by the venue's website
How do you match Arxiv.org pre-prints to actual publications?

It's all there: preprints 😃

Contributions and ideas on how to improve the process and potentially add publication sources from titles or arxiv id are welcome!

Where does PaperMemory store my data?
It's all stored locally in your browser's local storage. If you want to transfer data to a new browser/computer, use the export/import tools in the extension's options.
Can I access the memory full-screen?
Sure! In the extension popup's menu, there's a link at the bottom to the full-page memory. You can also just go to this url (Thanks @kaixin96!):
chrome-extension://ehchlpggdaffcncbeopdopnndhdjelbc/src/fullMemory/fullMemory.html
Can I exclude a paper source?
Yep. In the extension popup's advanced options page: right-click the extension's icon and click on `Options`. Or click on the link at the bottom of the popup menu. Or go to this url (Thanks @kaixin96!):
chrome-extension://ehchlpggdaffcncbeopdopnndhdjelbc/src/options/options.html
How can I retrieve a backup?
There is no straightforward way to do this currently, it will require a little coding:
  1. Open the extension's options (either right clicking its icon, or from the extension's menu, at the bottom)
  2. On the options page, open the Javascript Console with cmd/ctrl + alt + i or right click > Inspect
  3. Do the following in the Javascript Console:
    const backups = await getStorage("weeklyBackups")
    console.log(Object.keys(backups)) // this shows you available backup dates
    const overwrite = backups["<some key from above>"]
    console.log(overwrite) // inspect this and make sure it is what you want
    setStorage("papers", overwrite) // Careful! This will overwrite the current data with the backup data

Todo

  • Improve Contributing.md
  • Write many more tests! Help is wanted (it's not so hard to write unittests 😄) (see Contributing.md)

Help

  • Firefox
    • Using Firefox? #9 🚁

papermemory's People

Contributors

vict0rsch avatar dependabot[bot] avatar louisgv avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.