# -*- coding: utf-8 -*- """ Update Readme.md and cumulative_gans.jpg """ from __future__ import print_function from __future__ import division from wordcloud import WordCloud from wordcloud import STOPWORDS import numpy as np import matplotlib.pyplot as plt import sys import datetime import pandas as pd import csv import json import os def load_data(): """ Load GANs data from the AllGAN.csv file """ import csv import codecs with codecs.open('AllGAN-r2.tsv',"rbU", "utf-8") as fid: reader = csv.DictReader(fid, delimiter='\t') gans = [row for row in reader] return gans def update_readme(gans): """ Update the Readme.md text file from a Jinja2 template """ import jinja2 as j2 gans.sort(key=lambda v: v['Title'].upper()) j2_env = j2.Environment(loader=j2.FileSystemLoader('.'), trim_blocks=True, lstrip_blocks=True) j2_env.globals['nowts'] = datetime.datetime.now() with open('README-one.md', 'w') as fid: print(j2_env.get_template('README.j2.md').render(gans=gans), file=fid) def update_index(gans): """ Update the index.html text file from a Jinja2 template """ import jinja2 as j2 try: gans.sort(key=lambda v: ((int(v['Year']) if v['Year'].isdigit() else v['Year']) , (int(v['Month']) if v['Month'].isdigit() else v['Month'])), reverse=True) except: pass j2_env = j2.Environment(loader=j2.FileSystemLoader('.'), trim_blocks=True, lstrip_blocks=True) j2_env.globals['nowts'] = datetime.datetime.now() with open('docs/index.html', 'w') as fid: print(j2_env.get_template('INDEX.j2.md').render(gans=gans), file=fid) def update_figure(gans): """ Update the figure cumulative_gans.jpg """ data = np.array([int(gan['Year']) + int(gan['Month']) / 12 for gan in gans]) x_range = int(np.ceil(np.max(data) - np.min(data)) * 12) + 1 y_range = int(np.ceil(data.size / 10)) * 10 + 1 with plt.style.context("seaborn"): plt.hist(data, x_range, cumulative="True") plt.xticks(range(2014, 2018)) plt.yticks(np.arange(0, y_range, 15)) plt.title("Cumulative number of named GAN papers by month") plt.xlabel("Year") plt.ylabel("Total number of papers") plt.savefig('cumulative_gans.jpg') def update_wordcloud_title(): """ Update the figure wordcloud_title.jpg """ data = pd.read_csv('AllGAN-r2.tsv',delimiter='\t', encoding='utf-8') # tmp_data = data['Title'].split(" ") for x in data # count_list = list([list(x) for x in data['Title'].value_counts().reset_index().values]) # wordcloud = WordCloud(stopwords=STOPWORDS,relative_scaling = 0.2, # max_words=2000, background_color='white').generate_from_frequencies(tmp_data) stopwords = set(STOPWORDS) #ganstop = ['Generative','Adversarial', 'Networks', 'Network', 'GAN', 'GANs', 'using', 'Learning', 'Training', 'Generation', # 'Neural', 'Net', 'Model', 'Nets', 'Deep', 'Based', 'Via', 'Conditional', 'Models', 'Examples'] #stopwords.add(ganstop) stopwords.add('Generative') stopwords.add('Adversarial') stopwords.add('Networks') stopwords.add('Network') stopwords.add('GAN') stopwords.add('GANs') stopwords.add('using') stopwords.add('Learning') stopwords.add('Training') stopwords.add('Generation') stopwords.add('Neural') stopwords.add('Net') stopwords.add('Model') stopwords.add('Nets') stopwords.add('Deep') stopwords.add('Based') stopwords.add('Via') stopwords.add('Conditional') stopwords.add('Models') stopwords.add('Examples') wordcloud = WordCloud(stopwords=stopwords,relative_scaling = 0.2, random_state=3, max_words=2000, background_color='white').generate(' '.join(data['Title'])) plt.figure(figsize=(12,12)) plt.imshow(wordcloud, interpolation="bilinear") plt.axis("off") #plt.show() #plt.savefig('wordcloud_title.png') wordcloud.to_file('wordcloud_title.png') wordcloud.to_file('docs/png/wordcloud_title.png') def update_wordcloud_category(): """ Update the figure wordcloud_category.jpg """ data = pd.read_csv('AllGAN-r2.tsv',delimiter='\t', encoding='utf-8') wordcloud = WordCloud(stopwords=STOPWORDS,relative_scaling = 0.2, random_state=3, max_words=2000, background_color='white').generate(' '.join(data['Category'])) plt.figure(figsize=(12,12)) plt.imshow(wordcloud, interpolation="bilinear") plt.axis("off") #plt.show() #plt.savefig('wordcloud_title.png') wordcloud.to_file('wordcloud_category.png') wordcloud.to_file('docs/png/wordcloud_category.png') def update_wordcloud_abbr(): """ Update the figure wordcloud_category.jpg """ data = pd.read_csv('AllGAN-r2.tsv',delimiter='\t', encoding='utf-8') wordcloud = WordCloud(stopwords=STOPWORDS,relative_scaling = 0.2, random_state=3, max_words=2000, background_color='white').generate(' '.join(data['Abbr.'])) plt.figure(figsize=(12,12)) plt.imshow(wordcloud, interpolation="bilinear") plt.axis("off") #plt.show() #plt.savefig('wordcloud_title.png') wordcloud.to_file('wordcloud_abbr.png') wordcloud.to_file('docs/png/wordcloud_abbr.png') def update_csv2json(): # COLUMNS = ('Mnum','Abbr.','Title','Year','Month','Citations','pdf','Arxiv','Official_Code','Tensorflow','PyTorch','KERAS', 'Stars','Web','No','SN','Medical','Category') with open('AllGan-r2.tsv', 'r') as f: reader = csv.DictReader(f, delimiter='\t') rows = list(reader) with open('docs/AllGan.json', 'w') as f: f.write(json.dumps(rows, sort_keys=False, separators=(',', ': '), ensure_ascii=False, indent=4)) if __name__ == '__main__': try: reload(sys) # Python 2 sys.setdefaultencoding('utf-8') except NameError: pass # Python 3 GANS = load_data() update_wordcloud_title() update_wordcloud_category() update_wordcloud_abbr() update_readme(GANS) update_index(GANS) update_csv2json() # update_figure(GANS)