Giter Site home page Giter Site logo

matthew-mosior / filtering-analysis-tool Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 59.56 MB

A Haskell script that takes in a tab-delimited file and provides an in depth view of a user-defined filtering scheme.

License: BSD 3-Clause "New" or "Revised" License

Haskell 100.00%
tsv-reader filter xlsxwriter haskell conditional-formatting xlsx-spreadsheet data-tree yaml-configuration

filtering-analysis-tool's Introduction

Filtering-Analysis-Tool: A Xlsx File Creation Tool

Introduction

Filtering-Analysis-Tool (FAT) is a software tool that takes tab-delimited files and transforms them into fully-featured XLSX files using FAT's own domain-specific language (DSL) to meet user-defined filtering parameters.

Prerequisites

FAT assumes you have the GHC compiler and packages installed that it imports. The easiest way to do this is to download the Haskell Platform.

Installing required packages

To install the peripheral packages FAT requires, you can call the following command assuming you have cabal, a package manager and build system for Haskell, installed on your system (it comes with the Haskell Platform).

$ cabal install [packagename]

Required packages

  • Codec.Xlsx
  • Control.Applicative
  • Control.Arrow
  • Control.Monad
  • Control.Monad (mzero)
  • Data.Aeson
  • Data.ByteString.Char8
  • Data.ByteString.Lazy
  • Data.Char
  • Data.Foldable
  • Data.Hashmap.Lazy
  • Data.Hashmap.Strict
  • Data.Ix
  • Data.List
  • Data.List.Split
  • Data.Map
  • Data.Map.Strict
  • Data.Maybe
  • Data.Set
  • Data.Text
  • Data.Time.Clock.POSIX
  • Data.Tree
  • Data.Tuple
  • Data.Yaml
  • GHC.Generics
  • System.Console.GetOpt
  • System.Environment
  • System.Exit
  • System.IO
  • System.IO.Temp
  • System.Process
  • Text.Read
  • Text.Regex
  • Text.Regex.TDFA
  • YamlParse.Applicative

Input

FAT requires two inputs:

  1. Configuration YAML - The first positional argument to FAT is the configuration YAML. This YAML defines the filtering that will be applied to the user-defined tab-delimited file.

    FAT uses a DSL to allow for filtering in an modular and extensible fashion.

    Please see the wiki for a full guide on how to set up complex filtering schemes using the configuration YAML.

  2. Tab-delimited (tsv) file - The second positional argument to FAT is the tab-delimited (tsv) file. The filtering scheme defined in the configuration YAML will be applied to this tab-delimited file to create the output XLSX file.

Usage

FAT is easy to use.

You can call it using the runghc command provided by the GHC compiler as such:
$ runghc fat.hs config.yaml input.tsv

For maximum performance, please compile and run the source code as follows:
$ ghc -O2 -o FAT fat.hs
$ ./FAT config.yaml input.tsv

Arguments

FAT is a simple, easy to use program:

Filtering Analysis Tool, Copyright (c) 2020 Matthew Mosior.
Usage: FAT [-h] [Configuration YAML] [Tab-delimited (tsv) file]
Filtering Analysis Tool (FAT), Version 1.0.
Please see https://github.com/Matthew-Mosior/Filtering-Analysis-Tool/wiki for more information.

  -h  --help  Print this help message.

Docker

A docker container exists that contains all the necessary software to run FAT: matthewmosior/filteringanalysistool:final

Credits

Documentation was added March 2021.
Author : Matthew Mosior

filtering-analysis-tool's People

Contributors

matthew-mosior avatar

Watchers

 avatar  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.