Git Product home page Git Product logo

origami's Introduction

Origami is an open-source research tool. It automatically scraps Google Scholar pages to retrieve "cited by" papers and presents the results as an interactive graph.

demo

Download

Download for Linux Download for macOS Download for Windows

Visit the Releases page to download Origami for other platforms.

Color theme

To change the color theme, edit colors.json. You can find it at:

  • Origami/resources/app/colors.json on Linux
  • Origami.app/Contents/Resources/app/colors.json on macOS (right-click on the app and choose Show Package Contents)
  • Origami\resources\app\colors.json on Windows

The themes directory of this repository contains several themes suggestions.

Formats

Multiple DOIs import

Origami can load several DOIs at once from a JSON formated file with the following structure:

[
    "10.1109/biorob.2016.7523449",
    "10.3389/fnins.2017.00350",
    "10.3389/fnins.2017.00535",
    "10.1109/tbcas.2017.2759700",
    "10.3389/fnins.2016.00594",
    "10.1007/s11263-017-1050-6"
]

Saves

Origami saves and loads collections in JSON format. The generated files have the following structure:

{
  "appVersion": "0.11.1", # the version of the app used to generate this save
  "display": 0, # the current display's index (0 for graph, 1 for list)
  "knownDois": ["10.1109/tpami.2016.2574707"], # list of DOIs clicked at least once (used to highlight new publications)
  "crossref": # pending requests to crossref.org
    [
      {
        "type": "CROSSREF_REQUEST_TYPE_VALIDATION",
        "doi": "10.1038/nature06293"
      },
      {
        "type": "CROSSREF_REQUEST_TYPE_CITER_METADATA",
        "parentDoi": "10.1109/tpami.2016.2574707",
        "title": "A Motion-Based Feature for Event-Based Pattern Recognition",
        "authors": ["X Clady", "JM Maro", "S Barré", "RB Benosman"],
        "dateAsString": "2017"
      },
      {
        "type": "CROSSREF_REQUEST_TYPE_IMPORTED_METADATA",
        "title": "EMVS: Event-Based Multi-View Stereo—3D Reconstruction with an Event Camera in Real-Time",
        "authors":
          [
            "Henri Rebecq",
            "Guillermo Gallego",
            "Elias Mueggler",
            "Davide Scaramuzza"
          ],
        "dateAsString": "2017"
      }
    ],
  "doi": [{ "doi": "10.1038/nature06293" }], # pending requests to doi.org
  "scholar": [ # pending requests to scholar.google.com
      "requests":
        [
          {
            "type": "SCHOLAR_REQUEST_TYPE_INITIALIZE",
            "doi": "10.3389/fnins.2016.00594",
            "url": "https://scholar.google.com/scholar?hl=en&q=10.3389%2Ffnins.2016.00594"
          },
          {
            "type": "SCHOLAR_REQUEST_TYPE_CITERS",
            "doi": "10.1109/biorob.2016.7523449",
            "url": "https://scholar.google.com/scholar?cites=3831926773876645447&start=0&hl=en",
            "number": 1,
            "total": 1
          }
        ],
      "minimumRefractoryPeriod": 2000, # minimum waiting time between scholar requests, in milliseconds
      "maximumRefractoryPeriod": 8000 # maximum waiting time between scholar requests, in milliseconds
    ],
  "graph": {
      "threshold": 1, # the current threshold used to filter suggestions, non-zero integer
      "zoom": 0, # the current zoom level, integer in the range [-50, 50]
      "xOffset": 0, # the current graph positions' x coordinate, float
      "yOffset": 0, # the current graph positions' y coordinate, float
      "sticky": false # false means that the 'sticky' box is unchecked
    },
  "publications": [ # list of known publications
      [
        # each publication is a two-elements list containg a string and an object
        "10.1109/tpami.2016.2574707", # the publication's DOI
        {
          # object containing the publication's data
          "status":
            "PUBLICATION_STATUS_IN_COLLECTION" # the publication's status in Origami, which can be:
            #     "PUBLICATION_STATUS_UNVALIDATED": the DOI was added, but not validated
            #     "PUBLICATION_STATUS_DEFAULT": suggested publication
            #     "PUBLICATION_STATUS_IN_COLLECTION": in-collection publication,
          "title": "HOTS: A Hierarchy of Event-Based Time-Surfaces for Pattern Recognition",
          "authors":
            [
              "Xavier Lagorce",
              "Garrick Orchard",
              "Francesco Galluppi",
              "Bertram E. Shi",
              "Ryad B. Benosman"
            ],
          "journal": "Institute of Electrical and Electronics Engineers (IEEE)",
          "date": [2016, 7, 14], # the publication's release date, list of one to three integer values (optional month and day)
          "citers":
            [
              "10.1109/biorob.2016.7523449",
              "10.3389/fnins.2017.00350",
              "10.3389/fnins.2017.00535",
              "10.1109/tbcas.2017.2759700",
              "10.3389/fnins.2016.00594",
              "10.1007/s11263-017-1050-6"
            ],
          "updated": 1513430331442, # last metadata update, in milliseconds since 1970-01-01
          "selected":
            false # false means that the publication is not selected
                  # only one publication can be selected
          "bibtex": "@article{...}", # the article's BibTeX as a string
          "x": 1.0813568646326681, # the publication's node position's x coordinate in the graph, float
          "y": -1.563450690825733, # the publication's node position's y coordinate in the graph, float
          "locked": false, # false means that the publication's node's position is not stuck
        }
      ]
    ],
  "search": "", # the current regular expression in the search input
  "tabs": 0, # the active tab (0 for information, 1 for search, 2 for warnings)
  "warnings": # list of warnings
    [
      {
        "title": "The Crossref request for 'Poker-DVS and MNIST-DVS. Their history, how they were made, and other details' failed",
        "subtitle": "The returned article was older than the cited one (10.1109/tpami.2016.2574707)",
        "level": "warning"
      }
    ]
}

Contribute

Install

Origami is build with Electron, React and Redux.

Follow these steps to download the source code, edit and build Origami:

  1. install Node.js
  2. clone the repository by running from a terminal git clone https://github.com/aMarcireau/origami.git
  3. go to the created origami folder and run npm install

For development, run the command npm run-script watch from the origami folder. A development build is triggered every time a file in the souce directory is modified.

To create a new release:

  1. create a personal access token (see https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token)
  2. create a file auth.json in the origami directory with the following structure:
{
    "username": "Github username",
    "token": "personal access token"
}
  1. generate a production build for each supported platform with npm run-script build
  2. create a new Github release (requires administration rights on this repository) with npm run-script release

To build Windows apps with macOS Catalina, one must patch Wine (see electron/node-rcedit#51 (comment)).

Code documentation: Wiki.

License

See the LICENSE file for license rights and limitations (MIT).

origami's People

Contributors

amarcireau avatar chiptuned avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

chiptuned

origami's Issues

Graph performance

Consider adding a refractory period for the graph reloading on state change (this could greatly increase fluidity when adding a lot of new publications).

User guide and documentation

Add a user guide describing the software feature and capacities, with screenshots, and a documentation describing code organisation.

These improvements probably involve a README.md refactoring.

Undefined author

Add a stronger filtering to authors (see 10.1101/196139) to avoid 'undefined'.

Date is not as expected

Some articles (as an example, 10.1007/s00221-003-1446-0 or 10.1007/BF00238522) do not have the expected release date.

BibTeX

Sort BibTeX entries before saving them.

[Suggestions] DOI http link, and author/year on node

Hi,
Is it possible to add a DOI with its http link attached (with the "https://doi.org/" prefix)?
Also, it would be more convenient for me to visualise nodes with the first letters of the author and the year (the 2 last digits), for instance "Go99" for a 1999 paper from Tim Gollish, and so on.
Thanks

[Suggestion] BibteX import

One nice feature would be to import nodes from a BibteX (in the current version, that would imply that only the DOIs of papers would be imported), then if we export as BibteX, it would be "consolidated".

Bug when starting v0.10.0

Whatever the mode and owning of chrome-sandbow :

[30906:0919/162257.529632:FATAL:setuid_sandbox_host.cc(157)] The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /home/dardelet/Origami/chrome-sandbox is owned by root and has mode 4755.
Trace/breakpoint trap

Generate a directed graph

Hi,
First, I wanted to thank you for this great piece of software, it looks like I'll be using it a lot in the future.
Just a small suggestion, I think it would be easier to visualize and understand the graph if it was directed.
Something like: A cites B becoming A -> B instead of the current A - B.

Cheers,

Add an existing DOI

Adding a suggested, existing DOI should promote it to "in collection" and trigger requests. So far, it only promotes it.

Check if the behavior is as expected with BibTeX imports.

Zoom bug

Zoom keeps jumping. Source not identified.

Colors

Show cited articles in yellow in PublicationsList as well.

Authors names

Some authors have no first name, which is shown as 'undefined' by Information and PublicationsList.

[Feature] Short DOIs

Hello,
It would be nice to handle short DOIs, like "ckpd".

Seems like some refactoring is needed to do so. What do you think about it?
Chiptuned

State debugging

Write a tool to debug and/or correct a JSON state file (js utility for devs and beta-testers).

Import of Mendely generated .bib fails

The header seams to pose a problem:

Automatically generated by Mendeley Desktop 1.17.12
Any changes to this file will be lost if it is regenerated by Mendeley.

BibTeX export options can be customized via Preferences -> BibTeX in Mendeley Desktop

@article{Mead1988,
abstract = {An analog model of the first stages of retinal processing has been constructed on a single silicon

Graph zoom

Sometimes, the graph zoom seems to jump. Exact circumstances not found yet.

Automate the removal of releases' attachments

The attachments will end up taking a lot of space if not removed. The following policy could be applied:

  • remove any previous patch with the same major and minor
  • keep the previous minor's last patch (as an alternative if the update induced regressions)
  • keep the previous major's last minor and patch if the major is strictly larger than one

As an example, when 2.3.2 is released, the following releases would keep their attachments:

  • 2.3.2 (current)
  • 2.2.5 (previous minor's last patch)
  • 1.4.8 (previous major's last minor and patch)

Research pane

And a tab that can be used to search for an article in the collection.

Version number

Add an app version number to saved files, in order to manage retro-compatibility in the future.

Terminal messages

Several messages are printed when opening the application from a terminal, such as: "2017-11-23 15:40:18.658 Origami Helper[1796:13431] Couldn't set selectedTextBackgroundColor from default ()".

Try to find the cause for these messages. Different platform may generate different messages.

[Suggestion] Visualise a "citation" relation

Hi,
The relation between two nodes are sometimes ambiguous and I need to click on one of the two nodes in order to see the papers which are citing the papers, aka the green nodes.
Could we have another color for "citation" papers?
Is it relevant in the current state of development?

screenshot from 2017-11-24 11-08-43
In this case, with a dense graph, I don't know the relation (or let's say folding), between Ca17 and the other nodes, because no one cites it, and I would like to know which ones in my graph are used in this paper.

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.