Source code for iteraa.runAA

import pickle
import sys
from time import time

import numpy as np
from spams import archetypalAnalysis



[docs] def runAA(fName, nArchetypes, outputsPicklesPath='.', splitKeyword='data', robust=False, tolerance=0.001, computeXtX=False, stepsFISTA=3, stepsAS=50, randominit=False, numThreads=-1, onlyZ=False): """Executes archetypal analysis. Parameters ---------- fName : str Path to pickle file containing data. Returns ------- None """ startTime = time() with open(fName, 'rb') as f: idxs, subsetX = pickle.load(f) subsetZ, subsetA, subsetB = archetypalAnalysis(np.asfortranarray(subsetX), Z0=None, p=nArchetypes, returnAB=True, robust=robust, epsilon=tolerance, computeXtX=computeXtX, stepsFISTA=stepsFISTA, stepsAS=stepsAS, randominit=randominit, numThreads=numThreads) dataName = fName.split('/')[-1].split(splitKeyword)[0] subsetID = fName.split(splitKeyword)[-1].split('.pkl')[0] outputsDict = {'subsetZ': subsetZ, 'runTime': time() - startTime} if not onlyZ: outputsDict['subsetA'] = subsetA.toarray() outputsDict['subsetB'] = subsetB.toarray() outputsDict['subsetsSampleIdxs'] = idxs with open(f"{outputsPicklesPath}/{dataName}output{subsetID}.pkl", 'wb') as f: pickle.dump(outputsDict, f)
if __name__ == '__main__': runAA(fName=sys.argv[1], nArchetypes=int(sys.argv[2]), outputsPicklesPath=sys.argv[3], splitKeyword=sys.argv[4])