Different NMF algorithms:
- additive_NMF.py : updates based on gradient descent for a generalized cost function for NMF
- can change parameters controlling degree of orthogonality
- master_SNMF.py: multiplicative updates for NMF
- majority are some variant of semi-orthogonal W or semi-orthogonal H
Helper functions:
- xavier_scripts.py: useful helper function for notebooks