<commit_before>* Travis-CI `linux`and `osx` builds [![Travis Build Status](https://travis-ci.org/omnia-md/conda-recipes.svg?branch=master)](https://travis-ci.org/omnia-md/conda-recipes)
* Appveyor-CI `win` builds [![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/fyjgl66t943tf2yg/branch/master?svg=true)](https://ci.appveyor.com/project/jchodera/conda-recipes/branch/master)


# omnia-md/conda-recipes

The recipes here create conda packages for scientific and numerical software components associated with the [`omnia`](http://omnia.md) project.
The packages built from these recipes are shared with the community on [anaconda.org](https://anaconda.org/omnia). 
These packages also depend on the `conda-forge` conda channel.

## Installing packages from omnia

To install a package (`mdtraj` for example)
```bash
# Set the channel priority behavior
conda config --set channel_priority false
# Add conda-forge as the lower priority (FILO format for priority)
conda config --add channels conda-forge
# Add the omnia channel
conda config --add channels omnia
# Install the 'mdtraj' a package
conda install mdtraj
```

The `channel_priority` behavior we configure gives priority to the highest version of the package over all channels.
 
The default behavior (`channel_priority true`) pulls packages from the highest priority chanel, independent of package 
version numbers. i.e. an older version package on a higher priority channel will be installed over a newer version 
of the same package on a lower priority channel.

### Important!

These packages must use the old style of conda channel priority until omnia is entierly on conda-forge!
The instructions below enforce the old channel priority format, please visit 
[the conda documentations on channel priority](https://conda.io/docs/channels.html) 
for more information.

## Migration to conda-forge
The Omnia project has started migrating to [`conda-forge`](https://conda-forge.github.io/). New packages that 
 do not depend on OpenMM should be developed on `conda-forge` and exiting packages which do not depend on OpenMM 
 should start migrating if possible.

### Planed Migration Stages

1. (**Current**) Update build image to CentOS 6 from CentOS 5

    The base Docker image for linux builds will be updated to CentOS 6 with its new glibc. The base image is the 
    `conda-forge` anvil, with some [custom addons](https://hub.docker.com/r/jchodera/omnia-linux-anvil/~/dockerfile/) 
    to include things like the AMD SDK, TexLive, and CUDA for GPU builds. The updated version will ensure packages 
    can work on the `conda-forge` platform which is CentOS 6 based.
    
1. Stop building packages that appear in `conda-forge`

    We want to minimize the amount of work we have to do as maintainers. To that end, we will stop building things 
    which freely appear on `conda-forge` and maintained by someone other than us!
    For reproducibility purposes, we will keep our previously compiled versions, but they will not longer be updated.  
     
1. Begin migration of "nearly-pure Python" and non-OpenMM dependent packages

   * Packages which do not depend on OpenMM and can be run on CPUs only should start migrating over to `conda-forge` 
   in preparation for the total migration. 
   * Packages which can compile with just the `conda-forge` linux-anvil should also start migrating.
   * *We highly encourage devs of individual packages to start migrating now.* 
   * **Once a package is on conda-forge, it should no longer depend packages from omnia!**
   
1. Begin migration of `omnia` dependent (but not OpenMM dependent) packages to `conda-forge`

   * As more of the `omnia` dependencies appear on `conda-forge`, more packages can start moving over.
   * This stage can 

1. Determine the appropriate way to build packages which require more than the `conda-forge` linux-anvil can provide

   * The `conda-forge` linux-anvil does not support some things such as some LaTeX packages, AMD SDK, and CUDA files. 
   * We will need to reach out to the conda-forge people to see what the best course of action is
   
1. Move OpenMM to `conda-forge`

    * This will highly depend on the previous point and will probably have the longest time frame.
      
1. Move packages which depend on OpenMM to `conda-forge`

1. Finish the move of all packages to `conda-forge`
   * Also ensure that all former omnia packages can be installed without the `omnia` conda channel  

1. Change this repo into an archive for reproducibility.

### How to migrate to `conda-forge` (for existing packages)

PLACEHOLDER

### Supported versions

Python packages are built against latest two releases of python (3.5 and 3.6) and python 2.7.
Packages which have a binary dependency on [numpy](http://www.numpy.org/) are built against the latest two releases of numpy (1.10 and 1.11).

**WARNING: Python 3.4 support will be phased out now that python 3.6 has been released.**<commit_msg>Update readme again<commit_after>* Travis-CI `linux`and `osx` builds [![Travis Build Status](https://travis-ci.org/omnia-md/conda-recipes.svg?branch=master)](https://travis-ci.org/omnia-md/conda-recipes)
* Appveyor-CI `win` builds [![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/fyjgl66t943tf2yg/branch/master?svg=true)](https://ci.appveyor.com/project/jchodera/conda-recipes/branch/master)


# omnia-md/conda-recipes

The recipes here create conda packages for scientific and numerical software components associated with the [`omnia`](http://omnia.md) project.
The packages built from these recipes are shared with the community on [anaconda.org](https://anaconda.org/omnia). 
These packages also depend on the `conda-forge` conda channel.

## Installing packages from omnia

To install a package (`mdtraj` for example)
```bash
# Set the channel priority behavior
conda config --set channel_priority false
# Add conda-forge and omnia to your channel list
conda config --add channels conda-forge --add channels omnia
# Install the 'mdtraj' a package
conda install mdtraj
```

The `channel_priority` behavior we configure gives priority to the highest version of the package over all channels.
 
The default behavior (`channel_priority true`) pulls packages from the highest priority chanel, independent of package 
version numbers. An older version package on a higher priority channel will be installed over a newer version 
of the same package on a lower priority channel.

### Important: Channel priority behavior must be disabled for `omnia` to work!

These packages must use the old style of conda channel priority until omnia is entirely on conda-forge!
The instructions below enforce the old channel priority format, please visit 
[the conda documentations on channel priority](https://conda.io/docs/channels.html) 
for more information.

## Migration to conda-forge
The Omnia project has started migrating to [`conda-forge`](https://conda-forge.github.io/). New packages that 
 do not depend on OpenMM should be developed on `conda-forge` and existing packages which do not depend on OpenMM 
 should start migrating if possible.

### Planed Migration Stages

1. (**Current**) Update build image to CentOS 6 from CentOS 5

    The base Docker image for linux builds will be updated to CentOS 6 with its new glibc. The base image is the 
    `conda-forge` anvil, with some [custom addons](https://hub.docker.com/r/jchodera/omnia-linux-anvil/~/dockerfile/) 
    to include things like the AMD SDK, TexLive, and CUDA for GPU builds. The updated version will ensure packages 
    can work on the `conda-forge` platform which is CentOS 6 based.
    
1. For packages that appear in `conda-forge`, remove the corresponding recipes in `omnia`

    We want to minimize the amount of work we have to do as maintainers. To that end, we will stop building things 
    which freely appear on `conda-forge` and maintained by someone other than us!
    For reproducibility purposes, we will keep our previously compiled versions, but they will not longer be updated.  
     
1. Allow recipes that do not depend on OpenMM to migrate from omnia to conda-forge

   * Packages which do not depend on OpenMM and can be run on CPUs only should start migrating over to `conda-forge` 
   in preparation for the total migration. 
   * Packages which can compile with just the `conda-forge` linux-anvil should also start migrating.
   * *We highly encourage devs of individual packages to start migrating now.* 
   * **Once a package is on conda-forge, it should no longer depend packages from omnia!**

1. Determine the appropriate way to build packages which require more than the `conda-forge` linux-anvil can provide

   * The `conda-forge` linux-anvil does not support some things such as some LaTeX packages, AMD SDK, and CUDA files. 
   * We will need to reach out to the conda-forge people to see what the best course of action is
   
1. Migrate OpenMM to `conda-forge`

    * This requires us to identify the best way to add CUDA and AMD APP SDK developer tools to the `conda-forge` 
      linux-anvil docker image. We have some ideas, but no concrete solution yet.

1. Move the remainder of packages to `conda-forge`
   * Also ensure that all former omnia packages can be installed without the `omnia` conda channel  

1. Change this repo into an archive for reproducibility.

### How to migrate to `conda-forge` (for existing packages)

PLACEHOLDER

### Supported versions

Python packages are built against latest two releases of python (3.5 and 3.6) and python 2.7.
Packages which have a binary dependency on [numpy](http://www.numpy.org/) are built against the latest two releases of numpy (1.10 and 1.11).

**WARNING: Python 3.4 support will be phased out now that python 3.6 has been released.**
{'fraction_non_alphanumeric': 0.0717722944609399, 'fraction_numerical': 0.0069622197194635, 'mean_word_length': 4.103448275862069, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 16, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2666407', 'n_tokens_mistral': 2814, 'n_tokens_neox': 2610, 'n_words': 1305}