dual_threshold_optimization 2.0.1

Dual Threshold Optimization compares two ranked lists of features (e.g. genes) to determine the rank threshold for each list that minimizes the hypergeometric p-value of the overlap of features. It then calculates a permutation based empirical p-value and an FDR. Details can be found [in this paper](https://doi.org/10.1101/gr.259655.119)
Documentation
name: Rust Tests

on:
  push:
    branches:
      - main
      - dev
  pull_request:
    branches:
      - main
      - dev

jobs:
  test:
    name: Run Cargo Tests
    runs-on: ubuntu-latest

    steps:
      # Checkout the code from the repository
      - name: Checkout Code
        uses: actions/checkout@v3
      
      # Install OpenMPI
      - name: Install OpenMPI
        run: sudo apt-get update && sudo apt-get install -y libopenmpi-dev openmpi-bin

      # Set up Rust
      - name: Set up Rust
        uses: actions-rs/toolchain@v1
        with:
          toolchain: stable
          override: true

      # Cache Cargo dependencies
      - name: Cache Cargo Dependencies
        uses: actions/cache@v3
        with:
          path: |
            ~/.cargo/registry
            ~/.cargo/git
          key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: |
            ${{ runner.os }}-cargo-

      # Run cargo test
      - name: Run Tests
        run: cargo test --all --verbose