event-rank
    TypeScript icon, indicating that this package has built-in type declarations

    0.0.10 • Public • Published

    EventRank

    npm version Build Status

    Overview

    Usage Notes

    This library uses the es2015 Set type, Object.assign, and Array.from, so you may need an es6/es2015 polyfill if your environment does not support those features.

    Algorithms

    Installation

    npm
    npm install --save event-rank

    Usage

    To calculate EventRanks of correspondents involved in a series of events sorted by time...

     
    import { EventRank } from 'event-rank';
     
    /**
      * Events should be an Array of objects of the form...
      *    { time: <Number>, to: <String|Array<String>>, from: <String> }
      * sorted by the time property.
      *
      * NOTE: default parameters assume time is in milliseconds since the epoch
      */
    const events = [ /* Add events here... */ ];
     
    const R = new EventRank({ events });
     
    // compute EventRank values
    R.compute();
     
    console.log(R.ranks); // => { ranks... }
     
     
    /**
      * To lazily compute a stream of events, call step()...
      *
      * Note, the model will need to be initially fed a set of
      * correspondents to track
      */
     
    const correspondents = [
      // email address (or whatever is in the to/from properties of the events) 1...
      // email address 2...
    ];
     
    const R = new EventRank({ correspondents });
     
    eventStream.on('event', event => {
      R.step(event);
    });
     
    // if lazily computing, the ranks need to be finished by calling done();
    R.done();
     
    console.log(R.ranks); // => { ranks... }
     
     
    /**
     * If 2 (or more) events can occur at the exact same time,
     * EventRank can process "bucketed" events...
     */
     
    const correspondents = [
      // email address 1...
      // email address 2...
    ];
     
    const R = new EventRank({ correspondents });
     
    let bucket;
    eventStream.on('event', event => {
      if (bucket && bucket.time !== event.time) {
        R.step(bucket);
        bucket = { events: [ event ], time: event.time };
      } else if (!bucket) {
        bucket = { events: [ event ], time: event.time };
      } else {
        bucket.events.push(event);
      }
    });
     
    // include last bucket...
    R.step(bucket);
     
    // if lazily computing, the ranks need to be finished by calling done();
    R.done();
     
    console.log(R.ranks); // => { ranks... }

    Install

    npm i event-rank

    DownloadsWeekly Downloads

    3

    Version

    0.0.10

    License

    Apache-2.0

    Last publish

    Collaborators

    • bsouthga
    • christian.yang