#!/usr/bin/python # -*- coding: utf-8 -*- import csv import collections import itertools import re from distutils.version import LooseVersion def get_data(filename): '''function to read the data form the input csv file to use in the analysis''' reader = [] # Just in case the file open fails with open(filename, 'rb') as f: reader = csv.reader(f, delimiter=',') # returns all the data from the csv file in list form # f.close() # May need to close the file when done return list(reader) # only return the reader when you have finished. your_list = [] your_list += get_data('./scripts/anselm.csv') your_list += get_data('./scripts/salomon.csv') your_list += get_data('./scripts/uv2000.csv') your_list += get_data('./scripts/phi.csv') your_list += get_data('./scripts/dgx.csv') your_list += get_data('./scripts/barbora.csv') print your_list counts = dict() for i in your_list: # print i[0] # print int(i[1]) counts[i[0]] = counts.get(i[0], 0) + int(i[1]) # 1 2 4 8 16 32 l = ['A', 'S', 'U', 'P', 'D', 'B'] c = [] mask = ''.join(reversed(l)) from itertools import product for bits in product([0, 1], repeat=len(l)): s = "".join(str(bit) for bit in bits) ns = "" for i in range(len(s)): if s[i] == "1": ns += mask[i] else: ns += "-" c.append(ns) print '!!! Hint "Cluster Acronyms"' print ' ```' print ' B D P U S A' print ' | | | | | |' print ' | | | | | +----> Anselm' print ' | | | | +------> Salomon' print ' | | | +--------> UV2000' print ' | | +----------> Phi' print ' | +------------> DGX-2' print ' +--------------> Barbora' print ' ```' print print '| Module </br><form><input id="searchInput" placeholder="🔍 Filter" style="width: 8rem; border-radius: 0.2rem; color: black; padding-left: .2rem;"></form> | Versions | Clusters |' print "| ------ | -------- | -------- |" software = dict() versions = '' clusters = '' prev = '' for m, i in sorted(counts.items()): # print m split = m.split('/') # print split if len(split) > 1: a = split[0] b = split[1] if split[0] <> prev: software[a] = {} software[a][b] = '`' + c[i] + '`' prev = a for m in sorted(software.items(), key=lambda i: i[0].lower()): software = m[0] versions = [] clusters = [] for key in sorted(m[1], key=LooseVersion): versions.append(key) clusters.append(m[1][key]) print "| %s | %s | %s |" % (software, '</br>'.join(versions), '</br>'.join(clusters)) print print '---8<--- "modules_matrix_search.md"'