diff options
Diffstat (limited to 'megapixels')
| -rw-r--r-- | megapixels/commands/datasets/msc_flickr_embassies.py | 195 | ||||
| -rw-r--r-- | megapixels/notebooks/bs4_scratch.ipynb | 2 | ||||
| -rw-r--r-- | megapixels/notebooks/config/__init__.py | 0 | ||||
| -rw-r--r-- | megapixels/notebooks/config/config.py | 11 | ||||
| -rw-r--r-- | megapixels/notebooks/datasets/brainwash/brainwash_bboxes.ipynb | 2 | ||||
| -rw-r--r-- | megapixels/notebooks/datasets/uccs/uccs_vis_bboxes.ipynb | 2 | ||||
| -rw-r--r-- | megapixels/notebooks/msc/duckduckgo_flickr_embassies.ipynb | 297 | ||||
| -rw-r--r-- | megapixels/notebooks/msc/plotter.ipynb | 340 | ||||
| -rw-r--r-- | megapixels/notebooks/msc/test.pdf | bin | 0 -> 8918 bytes |
9 files changed, 835 insertions, 14 deletions
diff --git a/megapixels/commands/datasets/msc_flickr_embassies.py b/megapixels/commands/datasets/msc_flickr_embassies.py new file mode 100644 index 00000000..945f037c --- /dev/null +++ b/megapixels/commands/datasets/msc_flickr_embassies.py @@ -0,0 +1,195 @@ +"""Create screenshots for YouTube.com URLs in the IJB dataset + +TODO +- grey out boxes in sidebar +- resize driver screenshot area to include author text + +Installing webdrivers: + +Chrome +wget https://chromedriver.storage.googleapis.com/73.0.3683.20/chromedriver_linux64.zip + +Firefox +wget https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux64.tar.gz + +PhantomJS +npm install -g phantomjs +""" + +import click + +from app.settings import app_cfg + +# The search result title must contain one of these words +valid_title_words = ['embassy', 'botschaft'] + +@click.command() +@click.option('-i', '--input', 'opt_fp_in', required=True, + help='Input CSV with list of embassies') +@click.option('-o', '--output', 'opt_fp_out', required=True, + help='Output CSV') +@click.option('-t', '--threads', 'opt_threads', default=20, + help='Number of threads') +@click.option('--slice', 'opt_slice', type=(int, int), default=(None, None), + help='Slice list of files') +@click.pass_context +def cli(ctx, opt_fp_in, opt_fp_out, opt_threads, opt_slice, opt_verify): + """IJB-C screenshot sources""" + + import sys + import os + from glob import glob + from os.path import join + from pathlib import Path + import time + from functools import partial + from multiprocessing.dummy import Pool as ThreadPool + + import pandas as pd + from PIL import Image + import io + from tqdm import tqdm + + from selenium import webdriver + from selenium.webdriver.support import expected_conditions as EC + from selenium.webdriver.support.wait import WebDriverWait + from selenium.webdriver.common.by import By + + from app.utils import file_utils, im_utils, logger_utils + + log = logger_utils.Logger.getLogger() + + chrome_options = webdriver.ChromeOptions() + chrome_options.add_argument('--no-sandbox') + chrome_options.add_argument('--headless') + chrome_options.add_argument('--disable-dev-shm-usage') + + + def pool_process(route, chrome_options): + # Threaded image resize function + try: + pbar.update(1) + + driver = webdriver.Chrome(chrome_options=chrome_options) + driver.set_window_size(1920,3600) # accommodate vertical videos + + url = route['url'] + fp_out = route['dst'] + log.debug(f'url: {url}, dst: {fp_out}') + driver.get(url) + + if 'youtube.com' in url: + try: + #wait = WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CLASS_NAME,'ytd-video-secondary-info-renderer'))) + wait = WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.ID,'player-container-outer'))) + except Exception as e: + log.debug(f'WebDriver error: {e}') + pass + else: + wait = WebDriverWait(driver,10) + time.sleep(1) # wait for element + + time.sleep(5) # wait for element + #el_vid = driver.find_element_by_id('player-container-outer') + el_shelf = driver.find_element_by_id('results_links_deep') + el_related = driver.find_element_by_id('related') + el_primary = driver.find_element_by_id('primary') + err = False + try: + el_error = driver.find_element_by_id('error-screen') + if not(el_error.location['x'] == 0 and el_error.location['width'] == 0): + err = True + except: + pass + + margin_left = 24 + margin_bottom = 24 if err else 0 + box = (el_primary.location['x'] - margin_left, el_primary.location['y'], + el_primary.location['x'] + el_primary.size['width'], el_shelf.location['y'] + margin_bottom) + im_bytes = driver.get_screenshot_as_png() + im = Image.open(io.BytesIO(im_bytes)) + im = im.crop(box) + + file_utils.mkdirs(fp_out) + log.debug(f'save to: {fp_out}') + #driver.get_screenshot_as_file(fp_out) + im.save(fp_out) + driver.quit() + + return True + except: + return False + + # load + routes = [] + video_ids = [] + + df_licenses = pd.read_csv(opt_fp_in) + log.info(f'{len(df_licenses)} rows') + for df_idx, df_license in tqdm(df_licenses.iterrows(), total=len(df_licenses)): + filepath = df_license['Media ID'] + if not 'video/' in filepath: + continue + url = str(df_license['Media URL']) + try: + video_id = url.split('?v=')[1] + except Exception as e: + log.debug(f'error parsing url: "{url}"') + if video_id in video_ids: + continue + video_ids.append(video_id) + if not ('http://' in url or 'https://' in url): + url = 'http://' + url + #fp_media = filepath.replace(Path(filepath).suffix, '.png') + #fp_out = join(opt_fp_out, fp_media) + fp_out = join(opt_fp_out, f'{video_id}.png') + if Path(fp_out).exists() and (os.stat(fp_out).st_size // 1000) > 13: + continue + obj = {'url': url, 'dst': fp_out} + routes.append(obj) + + if opt_slice: + routes = routes[opt_slice[0]:opt_slice[1]] + log.debug(f'processing: {len(routes)}') + + # setup multithreading + results = [] + pbar = tqdm(total=len(routes)) + pool_process = partial(pool_process, chrome_options=chrome_options) + pool = ThreadPool(opt_threads) + with tqdm(total=len(routes)) as pbar: + results = pool.map(pool_process, routes) + pbar.close() + + + + + + + + + +#wait = WebDriverWait(driver,3).until(EC.presence_of_element_located((By.CLASS_NAME,'ytd-watch-next-secondary-results-renderer'))) +#wait = WebDriverWait(driver,3).until(EC.text_to_be_present_in_element_value((By.CLASS_NAME,'yt-next-continuation'), 'show')) +#wait = WebDriverWait(driver,10).until(EC.presence_of_element_located((By.CLASS_NAME,'ytd-video-secondary-info-renderer'))) +#driver.execute_script("document.getElementById('related').style.display = 'None';") + +''' +title_is +title_contains +presence_of_element_located +visibility_of_element_located +visibility_of +presence_of_all_elements_located +text_to_be_present_in_element +text_to_be_present_in_element_value +frame_to_be_available_and_switch_to_it +invisibility_of_element_located +element_to_be_clickable - it is Displayed and Enabled. +staleness_of +element_to_be_selected +element_located_to_be_selected +element_selection_state_to_be +element_located_selection_state_to_be +alert_is_present +'''
\ No newline at end of file diff --git a/megapixels/notebooks/bs4_scratch.ipynb b/megapixels/notebooks/bs4_scratch.ipynb index eeaa618d..480bbb5b 100644 --- a/megapixels/notebooks/bs4_scratch.ipynb +++ b/megapixels/notebooks/bs4_scratch.ipynb @@ -459,7 +459,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.8" + "version": "3.6.7" } }, "nbformat": 4, diff --git a/megapixels/notebooks/config/__init__.py b/megapixels/notebooks/config/__init__.py deleted file mode 100644 index e69de29b..00000000 --- a/megapixels/notebooks/config/__init__.py +++ /dev/null diff --git a/megapixels/notebooks/config/config.py b/megapixels/notebooks/config/config.py deleted file mode 100644 index 89cdca8c..00000000 --- a/megapixels/notebooks/config/config.py +++ /dev/null @@ -1,11 +0,0 @@ -import os -import os.path as osp - -# Setup directory paths -project_root = os.path.dirname(os.path.realpath('')) -DATA_STORE = osp.join(project_root,'data_bodega') -OUTPUT_DIR = osp.join(DATA_STORE,'output') - -# Asset directories -IMAGES_DIR = osp.join(DATA_STORE,'images') -MODELS_DIR = osp.join(DATA_STORE,'models')
\ No newline at end of file diff --git a/megapixels/notebooks/datasets/brainwash/brainwash_bboxes.ipynb b/megapixels/notebooks/datasets/brainwash/brainwash_bboxes.ipynb index bd357ad3..48b32b6f 100644 --- a/megapixels/notebooks/datasets/brainwash/brainwash_bboxes.ipynb +++ b/megapixels/notebooks/datasets/brainwash/brainwash_bboxes.ipynb @@ -774,7 +774,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.8" + "version": "3.6.7" } }, "nbformat": 4, diff --git a/megapixels/notebooks/datasets/uccs/uccs_vis_bboxes.ipynb b/megapixels/notebooks/datasets/uccs/uccs_vis_bboxes.ipynb index bad4b82f..cca207f8 100644 --- a/megapixels/notebooks/datasets/uccs/uccs_vis_bboxes.ipynb +++ b/megapixels/notebooks/datasets/uccs/uccs_vis_bboxes.ipynb @@ -468,7 +468,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.8" + "version": "3.6.7" } }, "nbformat": 4, diff --git a/megapixels/notebooks/msc/duckduckgo_flickr_embassies.ipynb b/megapixels/notebooks/msc/duckduckgo_flickr_embassies.ipynb new file mode 100644 index 00000000..d9183bc7 --- /dev/null +++ b/megapixels/notebooks/msc/duckduckgo_flickr_embassies.ipynb @@ -0,0 +1,297 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Get Embassies on Flickr" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'urllib2'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-18-84be92165eff>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 11\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mbs4\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mBeautifulSoup\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0murllib\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 13\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0murllib2\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 14\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mre\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'urllib2'" + ] + } + ], + "source": [ + "%reload_ext autoreload\n", + "%autoreload 2\n", + "\n", + "import os\n", + "from os.path import join\n", + "from pathlib import Path\n", + "from glob import glob\n", + "import json\n", + "from pprint import pprint\n", + "\n", + "from bs4 import BeautifulSoup\n", + "import urllib\n", + "import urllib2\n", + "import re\n", + "import numpy as np\n", + "import pandas as pd\n", + "from PIL import Image, ImageDraw\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "from tqdm import tqdm_notebook as tqdm" + ] + }, + { + "cell_type": "code", + "execution_count": 74, + "metadata": {}, + "outputs": [], + "source": [ + "url = \"http://duckduckgo.com/html/?q=\"\n", + "query = 'flickr.com+us+embassy'\n", + "fp_html = '/data_store/datasets/msc/us_embassy.html'\n", + "with open(fp_html,'r') as fp:\n", + " html = fp.readlines()\n", + "html = html[0]" + ] + }, + { + "cell_type": "code", + "execution_count": 76, + "metadata": {}, + "outputs": [], + "source": [ + "soup = BeautifulSoup(html, \"html.parser\")" + ] + }, + { + "cell_type": "code", + "execution_count": 77, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Found 169 results\n", + "US Embassy | Flickr https://www.flickr.com/photos/us_embassy_newzealand/\n", + "Flickr: US Embassy New Zealand https://www.flickr.com/people/us_embassy_newzealand/\n", + "U.S. Embassy London | Flickr https://www.flickr.com/photos/usembassylondon/\n", + "United States Embassy Kuala Lumpur | Flickr https://www.flickr.com/photos/usembassykl/\n", + "US Embassy Tegucigalpa | Flickr https://www.flickr.com/photos/usembassyteg/\n", + "US Embassy Guatemala | Flickr https://www.flickr.com/photos/usembassyguatemala\n", + "US Embassy South Africa | Flickr https://www.flickr.com/photos/USEmbassySA\n", + "US Embassy Seoul | Flickr https://www.flickr.com/photos/usembassyseoul/\n", + "Flickr: US Embassy Athens' Photostream https://www.flickr.com/photos/40169011@N07/\n", + "Flickr: US Embassy New Zealand's Photostream https://www.flickr.com/photos/46907600@N02\n", + "Flickr: U.S. Embassy Nairobi's Photostream https://www.flickr.com/photos/us_embassy_nairobi/\n", + "US Embassy Sweden | Flickr https://www.flickr.com/photos/usembsweden\n", + "Flickr: U.S. Embassy Bern, Switzerland's Photostream https://www.flickr.com/photos/usembassybern/page3\n", + "US Embassy Panama | Flickr https://www.flickr.com/photos/usembassypanama\n", + "U.S. Embassy Romania | Flickr https://www.flickr.com/photos/usembassyromania/\n", + "U.S. Embassy Bern, Switzerland | Flickr https://www.flickr.com/photos/usembassybern/\n", + "U.S. Embassy in the Philippines | Flickr https://www.flickr.com/photos/usembassymanila\n", + "US Embassy Lisbon Portugal | Flickr https://www.flickr.com/photos/usembassylisbon/\n", + "U.S. Embassy Namibia | Flickr https://www.flickr.com/photos/usembassynamibia/\n", + "Flickr: U.S. Embassy Lilongwe's Photostream https://www.flickr.com/photos/usembassylilongwe/\n", + "usembassykyiv - Find your inspiration. | Flickr https://www.flickr.com/people/usembassykyiv/\n", + "Flag Day | To celebrate Flag Day, the U.S. Embassy's Public ... https://www.flickr.com/photos/usembassyromania/7401175050/\n", + "U.S. Embassy Yaounde | Flickr https://www.flickr.com/photos/usembyaounde/\n", + "New London Embassy Construction | Flickr https://www.flickr.com/photos/usembassylondon/albums/72157635166293639/\n", + "U.S. Embassy, Jakarta | Flickr https://www.flickr.com/photos/usembassyjakarta/\n", + "U.S. Embassy Valletta, Malta's albums | Flickr https://www.flickr.com/photos/usembmalta/albums\n", + "Embajada de los Estados Unidos en Bogotá | Flickr https://www.flickr.com/photos/usembassybogota\n", + "Michael A. McCarthy | Flickr https://www.flickr.com/photos/usembassysa/albums/72157683619571002/\n", + "U.S. Embassy Nigeria | Flickr https://www.flickr.com/photos/usembassynigeria\n", + "U.S. Embassy Ghana | Flickr https://www.flickr.com/photos/usembghana/\n", + "U.S. Embassy Dhaka | Flickr https://www.flickr.com/photos/usembassydhaka\n", + "US Embassy Canada | Flickr https://www.flickr.com/photos/us_mission_canada/\n", + "Flickr: U.S. Embassy Tokyo https://www.flickr.com/people/usembassytokyo/\n", + "Collection: Ottawa - U.S. Embassy - Flickr https://www.flickr.com/photos/us_mission_canada/collections/72157622101856611/\n", + "U.S. Embassy Bamako | Flickr https://www.flickr.com/photos/usembassymali\n", + "Flickr: US Embassy Honduras https://www.flickr.com/people/usembassyteg/\n", + "US Embassy Guatemala's albums | Flickr https://www.flickr.com/photos/usembassyguatemala/albums\n", + "usembassy photos on Flickr | Flickr https://www.flickr.com/photos/tags/usembassy\n", + "U.S. Embassy, Singapore | Flickr https://www.flickr.com/photos/singaporeusembassy/\n", + "US Embassy Panama's albums | Flickr https://www.flickr.com/photos/usembassypanama/albums/\n", + "U.S. Embassy Brasilia | Flickr https://www.flickr.com/photos/embaixadaeua-brasil/\n", + "US Embassy San Salvador | Flickr https://www.flickr.com/photos/40236643@N04/\n", + "US Embassy Kabul Afghanistan | Flickr https://www.flickr.com/photos/kabulpublicdiplomacy\n", + "Flickr: U.S. Embassy Montevideo https://www.flickr.com/people/usembassy_montevideo/\n", + "5 - The U.S. Civil Rights Movement | Members of the ... - Flickr https://www.flickr.com/photos/usembassythehague/8443765507\n", + "US ARMY 1969-1970 South photos on Flickr | Flickr https://www.flickr.com/photos/tags/US%20ARMY%201969-1970%20South/\n", + "Flickr: usembassylondon https://www.flickr.com/people/usembassylondon/\n", + "Visita del Contraalmirante Sean Buck - an album on Flickr https://www.flickr.com/photos/usembassy_montevideo/albums/72157679561406348\n", + "US Embassy Madrid | Flickr https://www.flickr.com/photos/usembassymadrid\n", + "Flickr: U.S. Embassy in the Philippines https://www.flickr.com/people/42751184@N06\n", + "US Embassy's albums | Flickr https://www.flickr.com/photos/us_embassy_newzealand/albums/\n", + "U.S. Embassy Canberra | Flickr https://www.flickr.com/photos/usembassycanberra/\n", + "PAS China | Flickr https://www.flickr.com/photos/usembassybeijing\n", + "U.S. Embassy Kyiv Ukraine | Flickr https://www.flickr.com/photos/usembassykyiv/\n", + "Flickr: US Embassy Canada https://www.flickr.com/people/us_mission_canada/\n", + "Secretary of State Hillary Clinton in New Zealand - the se ... https://www.flickr.com/photos/us_embassy_newzealand/5156414057\n", + "US Embassy Kuwait | Flickr https://www.flickr.com/photos/usembassyq8\n", + "US Embassy Lisbon Portugal's albums | Flickr https://www.flickr.com/photos/usembassylisbon/albums\n", + "Flickr: US Embassy Guatemala https://www.flickr.com/people/usembassyguatemala/\n", + "Flickr: U.S. Embassy Panama https://www.flickr.com/people/usembassypanama/\n", + "U.S. Embassy France | Flickr https://www.flickr.com/photos/usembassyfrance/\n", + "US Embassy Dakar | Flickr https://www.flickr.com/photos/usembassydakar/\n", + "U.S. Embassy Tashkent | Flickr https://www.flickr.com/photos/us-embassy-tashkent/\n", + "USEmbassy Riga | Flickr https://www.flickr.com/photos/usembassyriga/\n", + "US Embassy Santiago, Chile's albums | Flickr https://www.flickr.com/photos/embajadaeeuu-chile/albums/\n", + "Flickr: Embassy of Italy in the US https://www.flickr.com/people/italianembassy/\n", + "Cameron Gawley from Buzzshift, in New Zealand for The Proj ... https://www.flickr.com/photos/us_embassy_newzealand/14138238773\n", + "Flickr: USEmbassyTbilisi https://www.flickr.com/people/usembassytbilisi/\n", + "US Embassy South Africa's albums | Flickr https://www.flickr.com/photos/usembassysa/albums\n", + "Flickr: U.S. Embassy Bern, Switzerland https://www.flickr.com/people/usembassybern/\n", + "Flickr: Embassy of Argentina in the US' Photostream https://www.flickr.com/photos/ARGinUSA\n", + "Flickr: U.S. Embassy The Hague https://www.flickr.com/people/usembassythehague/\n", + "6 - The U.S. Civil Rights Movement | \"Freedom Riders\" hang a ... https://www.flickr.com/photos/usembassythehague/8443765523\n", + "2018-11-05 EducationUSA- San Mateo College and UC Berkly https://www.flickr.com/photos/usembassyphnompenh/albums/72157704091251915/\n", + "U.S. Embassy Vienna | Flickr https://www.flickr.com/photos/usembassy_vienna/\n", + "US Embassy Colombo | Flickr https://www.flickr.com/photos/usembassycolombo\n", + "U.S. Embassy Qatar | Flickr https://www.flickr.com/photos/usembassyqatar/\n", + "us embassy | Flickr https://www.flickr.com/photos/usembassy/\n", + "Nepal Trade Preference Program - 2017 | Flickr https://www.flickr.com/photos/usembassykathmandu/albums/72157679864242964/\n", + "Flickr: U.S. Embassy New Delhi https://www.flickr.com/people/usembassynewdelhi/\n", + "Flickr: U.S. Embassy Dushanbe https://www.flickr.com/people/usembassydushanbe/\n", + "United States Embassy Kuala Lumpur's albums | Flickr https://www.flickr.com/photos/usembassykl/albums/\n", + "Ambassador Glass Presentation of Credentials - flickr.com https://www.flickr.com/photos/usembassylisbon/36915173035/in/album-72157685920310283/\n", + "U.S. Embassy, Jakarta | Flickr https://www.flickr.com/photos/39809323@N03/\n", + "US Embassy, Jul 1965, Seoul | US Embassy, Ulchi-ro. Flag at ... https://www.flickr.com/photos/88857036@N00/4182215366\n", + "U.S. Embassy New Delhi's albums | Flickr https://www.flickr.com/photos/usembassynewdelhi/albums/\n", + "Roosevelt reads from a Dutch family Bible before his ... https://www.flickr.com/photos/usembassythehague/8369526559\n", + "Collection: Montreal - U.S. Consulate General https://www.flickr.com/photos/us_mission_canada/collections/72157622226501154/\n", + "shubra photos on Flickr | Flickr https://www.flickr.com/photos/tags/shubra/\n", + "US Embassy Canada | Flickr https://www.flickr.com/photos/38144472@N04\n", + "Flickr: U.S. Embassy Djibouti https://www.flickr.com/people/usembassydjibouti/\n", + "President Obama Celebrating Birthdays - flickr.com https://www.flickr.com/photos/usembassynewdelhi/6000570229/\n", + "U.S. Embassy Celebrates the American Road Trip on ... https://www.flickr.com/photos/usembassythehague/albums/72157698243008854\n", + "Education USA Press Photos | Flickr https://www.flickr.com/photos/usembassysa/albums/72157684493034910/\n", + "US Embassy Suva | Flickr https://www.flickr.com/photos/167418767@N06\n", + "Flickr: U.S. Embassy Romania https://www.flickr.com/people/usembassyromania/\n", + "U.S. Embassy Oslo Historical Photos | Flickr https://www.flickr.com/photos/usembassyoslo/albums/72157655819966261/\n", + "United States Embassy South Sudan | Flickr https://www.flickr.com/photos/usembassysouthsudan\n", + "usembassybelgium | Flickr https://www.flickr.com/photos/usembassybelgium/\n", + "U.S. Embassy Valletta, Malta | Flickr https://www.flickr.com/photos/usembmalta\n", + "U.S. Embassy Moldova | Flickr https://www.flickr.com/photos/usembassymoldova\n", + "4 - The U.S. Civil Rights Movement | September 4, 1957, Eliz ... https://www.flickr.com/photos/usembassythehague/8443765489\n", + "U.S. Embassy Dublin's albums | Flickr https://www.flickr.com/photos/usembassydub/albums/\n", + "US Consul General Sherry Zalika Sykes - Flickr https://www.flickr.com/photos/usembassysa/36571316593\n", + "United States Embassy Zambia, Lusaka | Flickr https://www.flickr.com/photos/usembassyzambia\n", + "U.S. Response to the Ethiopian Drought | Flickr https://www.flickr.com/photos/usembassyaddisababa/albums/72157661696341960/\n", + "Visit of U.S.S. Sampson to Auckland, November 22, 2016 - an ... https://www.flickr.com/photos/us_embassy_newzealand/albums/72157672962462663\n", + "U.S. Embassy Tunis | Flickr https://www.flickr.com/photos/usembassytunis/\n", + "US Embassy Kabul logo | US Embassy Kabul Afghanistan | Flickr https://www.flickr.com/photos/kabulpublicdiplomacy/3244151780\n", + "Ambassador Hoekstra visits Fryslân - an album on Flickr https://www.flickr.com/photos/usembassythehague/albums/72157693808118171\n", + "2018-11-07 Career Development Club- Overview on Project ... https://www.flickr.com/photos/usembassyphnompenh/albums/72157704552786665/\n", + "Ambassador Rubin Visits U.S. Company Cargill Facilities in ... https://www.flickr.com/photos/usembassysofia/albums/72157690755210113\n", + "LIMA Exhibition 2019 | Flickr https://www.flickr.com/photos/usembassykl/albums/72157679554062678\n", + "US Embassy Santiago, Chile | Flickr https://www.flickr.com/photos/embajadaeeuu-chile/\n", + "11 - Civil Rights Movement - Flickr https://www.flickr.com/photos/usembassythehague/8444909206/\n", + "U.S. Embasy in Tbilisi | Flickr https://www.flickr.com/photos/usembassytbilisi\n", + "US Embassy - flickr.com https://www.flickr.com/photos/13476480@N07/4049465204\n", + "Late February - The Year 12 History class at Pakuranga ... https://www.flickr.com/photos/us_embassy_newzealand/4397231272/\n", + "U.S. Embassy Ankara,Turkey | ABD Büyükelçiliği ... - Flickr https://www.flickr.com/photos/usembassyankara/albums\n", + "Dinner for Karen Diver, hosted by Ambassador Gilbert | Flickr https://www.flickr.com/photos/us_embassy_newzealand/30382649570/\n", + "Independence Day 2015 | Flickr https://www.flickr.com/photos/usembassylisbon/albums/72157653326238334/\n", + "US Embassy Panama | Flickr https://www.flickr.com/photos/52474456@N04/\n", + "U.S. Embassy Khartoum | Flickr https://www.flickr.com/photos/usembassykhartoum/\n", + "New American embassy building site at Huseby | Flickr https://www.flickr.com/photos/usembassyoslo/albums/72157655830040705/\n", + "Proyecto ECHO (CDC/PEPFAR) - an album on Flickr https://www.flickr.com/photos/usembassyguatemala/sets/72157688137447250\n", + "Flickr: US Embassy in Costa Rica https://www.flickr.com/people/usembassysjo/\n", + "2018-12-14 Film Screening of \"Alice's Ordinary People The ... https://www.flickr.com/photos/usembassyphnompenh/albums/72157704618742275/\n", + "Flickr: USEmbassyPhnomPenh https://www.flickr.com/people/usembassyphnompenh/\n", + "Secretary of Defence James Mattis' Visit to the United ... https://www.flickr.com/photos/usembassylondon/albums/72157681958372486/\n", + "United States - Flickr https://www.flickr.com/groups/64566829@N00/discuss/72157642028711915/\n", + "Preserving Liliesleaf Farm's Rare Documents - an album on Flickr https://www.flickr.com/photos/usembassysa/sets/72157675103512465/\n", + "Art in the U.S. Embassy Ottawa | Flickr https://www.flickr.com/photos/us_mission_canada/albums/72157625319788766/\n", + "Flickr: US Embassy San Salvador https://www.flickr.com/people/40236643@N04/\n", + "US Embassy | Matt Brown | Flickr https://www.flickr.com/photos/londonmatt/11606999005\n", + "The Ambassadors Christmas Tree Event | Flickr https://www.flickr.com/photos/usembsweden/albums/72157666927606479\n", + "100th Anniversary U.S. Marines in Ponta Delgada | Flickr https://www.flickr.com/photos/usembassylisbon/sets/72157682736277172/\n", + "U.S. Embassy, Jakarta's albums | Flickr https://www.flickr.com/photos/usembassyjakarta/albums/\n", + "Ambassador Scott Brown and Gail Brown on their second visit ... https://www.flickr.com/photos/us_embassy_newzealand/albums/72157692928434925\n", + "Flickr: US Embassy Baku https://www.flickr.com/people/usembassybaku/\n", + "The Flags | Photo by Pascal Cornioley | U.S. Embassy Bern ... https://www.flickr.com/photos/usembassybern/7507448592\n", + "Vietnam Saigon Bombing 1965 | Injured Vietnamese ... - Flickr https://www.flickr.com/photos/thienmai/6547036861/\n", + "US Embassy Venezuela | Flickr https://www.flickr.com/photos/usembassyve\n", + "Vital Voices en Quiché (PAS) - an album on Flickr https://www.flickr.com/photos/usembassyguatemala/albums/72157687937588055/\n", + "Dangdut Cowboys Hadir di Indonesia Meriahkan Peringatan 70 ... https://www.flickr.com/photos/usembassyjakarta/albums/72157677565530337\n", + "Flickr: U.S. Embassy Dublin https://www.flickr.com/people/usembassydub/\n", + "PA US Embassy Maputo | Flickr https://www.flickr.com/photos/usembassymaputo/\n", + "Jim Adams - NASA | Flickr https://www.flickr.com/photos/usembassysa/albums/72157677976059474/\n", + "AmeriCarna Reception, 22 February 2011 - Flickr https://www.flickr.com/photos/us_embassy_newzealand/5469177289/\n", + "Middle School Students at Knightsbridge Schools Internatio ... https://www.flickr.com/photos/usembassypanama/14204669983\n", + "Rona Rathod, U.S. Embassy Rule of Law adviser, talks with ... https://www.flickr.com/photos/kabulpublicdiplomacy/5491661477\n", + "U.S. Embassy Djibouti's groups | Flickr https://www.flickr.com/people/usembassydjibouti/groups/\n", + "Nieuwjaarsduik 2017 | Flickr https://www.flickr.com/photos/usembassythehague/albums/72157674988873153/\n", + "United States Special Representative for Ukraine Negotiati ... https://www.flickr.com/photos/usembassykyiv/35325890653\n", + "Embajada de los Estados Unidos en Uruguay | Flickr https://www.flickr.com/photos/usembassy_montevideo/\n", + "La embajadora Powers junto a mujeres de la comunidad Ember ... https://www.flickr.com/photos/usembassypanama/5731319608\n", + "US Embassy Seoul's groups | Flickr https://www.flickr.com/people/usembassyseoul/groups/\n", + "Holiday Party de la Embajada de EE.UU. | Flickr https://www.flickr.com/photos/usembassypanama/albums/72157703158663661\n", + "PA US Embassy Maputo's albums | Flickr https://www.flickr.com/photos/usembassymaputo/albums/\n", + "Veterans Day 2018 | Flickr https://www.flickr.com/photos/usembassyluxembourg/albums/72157703436301924\n", + "US Embassy Canada's albums | Flickr https://www.flickr.com/photos/us_mission_canada/albums/\n", + "Flickr: U.S. Embassy Jerusalem https://www.flickr.com/people/46886434@N04/\n", + "Juego de Fútbol Estados Unidos vs Panamá | Flickr https://www.flickr.com/photos/usembassypanama/albums/72157680270741830/\n", + "Abidjan evacuation, April 2011 | U.S. Embassy staff ... - Flickr https://www.flickr.com/photos/usarmyafrica/5693157628\n", + "Super Chef Panama 2018 | Flickr https://www.flickr.com/photos/usembassypanama/albums/72157694410354945\n", + "New United States Embassy in South VN (rear view) - Flickr https://www.flickr.com/photos/13476480@N07/3757202154\n", + "Flickr: US Department of State https://www.flickr.com/people/iip-photo-archive/\n", + "Seal of the Consulate General | The Great Seal of the United ... https://www.flickr.com/photos/us_mission_canada/4770405952/\n", + "Senator Bob Corker (R-TN) and delegation visit the U.S ... https://www.flickr.com/photos/kabulpublicdiplomacy/albums/72157626093355080/\n", + "Flickr: Embajada de Estados Unidos en Perú's Photostream https://www.flickr.com/photos/usembassyperu\n" + ] + } + ], + "source": [ + "topics = soup.find_all('div', attrs={'class': 'results_links_deep'})\n", + "print(f'Found {len(topics)} results')\n", + "for topic in topics:\n", + " title = topic.find('h2', {'class': 'result__title'})\n", + " ahref = title.find('a')\n", + " url = ahref.get('href')\n", + " if 'flickr.com' in url:\n", + " print(ahref.text, ahref.get('href'))\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(results[0].text)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "megapixels", + "language": "python", + "name": "megapixels" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/megapixels/notebooks/msc/plotter.ipynb b/megapixels/notebooks/msc/plotter.ipynb new file mode 100644 index 00000000..68cf98c3 --- /dev/null +++ b/megapixels/notebooks/msc/plotter.ipynb @@ -0,0 +1,340 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plot Data Previews" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "%reload_ext autoreload\n", + "%autoreload 2\n", + "\n", + "import os\n", + "from os.path import join\n", + "from pathlib import Path\n", + "from glob import glob\n", + "import json\n", + "from pprint import pprint\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "from PIL import Image, ImageDraw\n", + "%matplotlib inline\n", + "import matplotlib.pyplot as plt\n", + "from tqdm import tqdm_notebook as tqdm" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "# Load files\n", + "fp_origins = '/data_store/datasets/msc/summaries/megapixels_origins.csv'\n", + "fp_overview = '/data_store/datasets/msc/summaries/megapixels_overview.csv'" + ] + }, + { + "cell_type": "code", + "execution_count": 47, + "metadata": {}, + "outputs": [], + "source": [ + "df_origins = pd.read_csv(fp_origins).fillna(0)\n", + "df_overview = pd.read_csv(fp_overview).fillna('')" + ] + }, + { + "cell_type": "code", + "execution_count": 52, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0 26580.0\n", + "1 0.0\n", + "2 4753520.0\n", + "3 0.0\n", + "4 0.0\n", + "5 0.0\n", + "6 0.0\n", + "7 0.0\n", + "8 0.0\n", + "9 0.0\n", + "10 0.0\n", + "11 0.0\n", + "12 798.0\n", + "13 1609.0\n", + "14 0.0\n", + "15 0.0\n", + "16 2330.0\n", + "17 1070000.0\n", + "18 0.0\n", + "19 37107.0\n", + "20 0.0\n", + "21 0.0\n", + "22 0.0\n", + "23 0.0\n", + "24 0.0\n", + "25 0.0\n", + "26 0.0\n", + "27 0.0\n", + "28 0.0\n", + "29 0.0\n", + " ... \n", + "90 0.0\n", + "91 0.0\n", + "92 0.0\n", + "93 0.0\n", + "94 0.0\n", + "95 0.0\n", + "96 0.0\n", + "97 0.0\n", + "98 0.0\n", + "99 0.0\n", + "100 0.0\n", + "101 0.0\n", + "102 0.0\n", + "103 0.0\n", + "104 0.0\n", + "105 0.0\n", + "106 0.0\n", + "107 0.0\n", + "108 0.0\n", + "109 0.0\n", + "110 0.0\n", + "111 0.0\n", + "112 0.0\n", + "113 0.0\n", + "114 0.0\n", + "115 0.0\n", + "116 0.0\n", + "117 0.0\n", + "118 0.0\n", + "119 0.0\n", + "Name: flickr, Length: 120, dtype: float64" + ] + }, + "execution_count": 52, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_origins_plt.flickr" + ] + }, + { + "cell_type": "code", + "execution_count": 48, + "metadata": {}, + "outputs": [], + "source": [ + "df_origins_plt = df_origins.drop(['images', 'videos', 'key', 'name_full'], axis=1)\n", + "origins_plt = df_origins_plt.to_dict('records')" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "imdb\n", + "wikimedia\n", + "flickr\n", + "search engines\n" + ] + }, + { + "ename": "TypeError", + "evalue": "unsupported operand type(s) for +: 'int' and 'str'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-53-aa9b7003a678>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdf_origins_plt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mkeys\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 4\u001b[0;31m \u001b[0msums\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf_origins_plt\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mk\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", + "\u001b[0;32m~/anaconda3/envs/megapixels/lib/python3.6/site-packages/pandas/core/generic.py\u001b[0m in \u001b[0;36mstat_func\u001b[0;34m(self, axis, skipna, level, numeric_only, min_count, **kwargs)\u001b[0m\n\u001b[1;32m 10929\u001b[0m skipna=skipna, min_count=min_count)\n\u001b[1;32m 10930\u001b[0m return self._reduce(f, name, axis=axis, skipna=skipna,\n\u001b[0;32m> 10931\u001b[0;31m numeric_only=numeric_only, min_count=min_count)\n\u001b[0m\u001b[1;32m 10932\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10933\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mset_function_name\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstat_func\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcls\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/envs/megapixels/lib/python3.6/site-packages/pandas/core/series.py\u001b[0m in \u001b[0;36m_reduce\u001b[0;34m(self, op, name, axis, skipna, numeric_only, filter_type, **kwds)\u001b[0m\n\u001b[1;32m 3628\u001b[0m 'numeric_only.'.format(name))\n\u001b[1;32m 3629\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0merrstate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mall\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'ignore'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3630\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdelegate\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mskipna\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mskipna\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3631\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3632\u001b[0m \u001b[0;31m# TODO(EA) dispatch to Index\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/envs/megapixels/lib/python3.6/site-packages/pandas/core/nanops.py\u001b[0m in \u001b[0;36m_f\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 74\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 75\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0merrstate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minvalid\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'ignore'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 76\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 77\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mValueError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 78\u001b[0m \u001b[0;31m# we want to transform an object array\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/envs/megapixels/lib/python3.6/site-packages/pandas/core/nanops.py\u001b[0m in \u001b[0;36mnansum\u001b[0;34m(values, axis, skipna, min_count, mask)\u001b[0m\n\u001b[1;32m 433\u001b[0m \u001b[0;32melif\u001b[0m \u001b[0mis_timedelta64_dtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 434\u001b[0m \u001b[0mdtype_sum\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfloat64\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 435\u001b[0;31m \u001b[0mthe_sum\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mvalues\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0maxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype_sum\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 436\u001b[0m \u001b[0mthe_sum\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_maybe_null_out\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mthe_sum\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmask\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmin_count\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmin_count\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 437\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m~/anaconda3/envs/megapixels/lib/python3.6/site-packages/numpy/core/_methods.py\u001b[0m in \u001b[0;36m_sum\u001b[0;34m(a, axis, dtype, out, keepdims, initial)\u001b[0m\n\u001b[1;32m 34\u001b[0m def _sum(a, axis=None, dtype=None, out=None, keepdims=False,\n\u001b[1;32m 35\u001b[0m initial=_NoValue):\n\u001b[0;32m---> 36\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mumr_sum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0ma\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mout\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkeepdims\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minitial\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 37\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 38\u001b[0m def _prod(a, axis=None, dtype=None, out=None, keepdims=False,\n", + "\u001b[0;31mTypeError\u001b[0m: unsupported operand type(s) for +: 'int' and 'str'" + ] + } + ], + "source": [ + "sums = {}\n", + "for k in df_origins_plt.keys():\n", + " print(k)\n", + " sums[k] = int(df_origins_plt[k].sum())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df_sums = pd.DataFrame('')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plot = df.plot.pie()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "ename": "TypeError", + "evalue": "__init__() got an unexpected keyword argument 'title'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m<ipython-input-13-7f370064c964>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m df = pd.DataFrame({'mass': [0.33, 4.87, 5.97], 'radius': [2439.7, 6051.8, 6378.1]}, \n\u001b[0;32m----> 2\u001b[0;31m index=['Mercury', 'Venus', 'Eart'], title='test')\n\u001b[0m", + "\u001b[0;31mTypeError\u001b[0m: __init__() got an unexpected keyword argument 'title'" + ] + } + ], + "source": [ + "df = pd.DataFrame({'mass': [0.33, 4.87, 5.97], 'radius': [2439.7, 6051.8, 6378.1]}, \n", + " index=['Mercury', 'Venus', 'Eartn'])" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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zJnzeWq+q/TTbUjFKWNMKbAGf5R4v7V2pDHmV8D71to7mn3uYOBJa+3Y4Pc/BUqttXFjzAvAVdbaxcaYAcAia+3g4POGATOBS4HzrLV/Scf38vbbb1eMGzcuJ6aGmbBjx46CsrKysmXLlq3o1avXHo9Bvv322weMGzducIaj7ZVGiOKUtXYn8CLwv3x5MuVZ4EdBWWKM6W+MObCFt6oAGq/7O6XxSWPMUGCNtfZW4HHgGykLL3v12GOPdR0xYsSY888/f/PeyjAb6cJsyQb3A38gmDpba58zxowGXgsO7O8E5gD7+oc1D3jIGHM20HQEeDowxxhTD2wCrk19fGlu9uzZO2bPnu25ztFWmjKLpIimzG2nKbOISJZSIYqIBFSIIiIBFaJISEyePHnkwoULuzV97tprrz1wzpw5B7vKlGt0llkkXeKRlG7/RTyxz+2/Tj311M+D3W22Nz63cOHCnjfddFNerM5JBRWipEc8EgF6Ar2C/3YCmq59tUA9UBM8aoFdwCbiicrMhg2Hs88+e9v111/fv7q62nTq1MmuWrWqePPmzR2OP/74nVdffXWfRx99tGddXZ2ZOXNm5S233LJh1apVxTNmzBg+efLknUuWLCnt06dP3bPPPru6tLTUTp48eeS8efM+Pvroo6s2btxYNHHixNHr16/3lixZUnLuuecOqa+vN8lkkoULF34YjUZrXX/vqaJClLaJRwqAIfjL6UYDI/E3ZOjZ5NGd/fm7FY9UARuBDc0e64PHcuIJXd7STN++fXePGzdu18KFCyNz5sypLC8v7zlr1qxtjz32WLfVq1eXvPPOOyustRx33HGHPP3006VDhw6t++ijj0rmz5+/5qijjlr33e9+d+i9997b4+KLL966t69x22239b744os/veiii7bW1NSYhoaGTH6LaadClD2LRwwwBojyZfk1rikuSfNX7wwMCx57y7cef63zsi/+G0+sSXOurHfaaadtffDBB3vMmTOn8g9/+EPPu+66q+Lee+/t+dJLL3UrKysrA6iqqipYuXJlydChQ+v69+9fe9RRR1UDHHrooVUVFRUd9/X+Rx555K558+b1++STT4rPOOOMbWEaHYIKURr5I7/xwLeCx1T80V626h88TvzimXgkAbyNX5AvAS8QT2zf46tD6qyzzqqcO3fuwEWLFnWuqakpmDJlSlV5eXnP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\n", + "text/plain": [ + "<Figure size 360x360 with 1 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot = df.plot.pie(y='mass', figsize=(5,5), title='test')" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAACtCAYAAAC9d3jeAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xl4VOXZ+PHvk0z2ZUIWAkLYIgjICCrFgqKAKOBKXYr6auNSrVr1Z99ai1brtLaVtlqrtq+1LjWuuBZRWhStCC5oAZHDDkLYISSQbZKZZGbu3x9nAiFkz0zOLM/nunIlmTnnzD25nsl9nl2JCJqmaVrsirM6AE3TNM1aOhFomqbFOJ0INE3TYpxOBJqmaTFOJwJN07QYpxOBpmlajNOJQNM0LcbpRKBpmhbjdCLQNE2LcToRaJqmxTidCDRN02KcTgSapmkxTicCTdO0GKcTgaZpWoyzWR1ArFmxYkVvm832DDCKJom4rKysT3p6emVycnJd42M1NTWZXq83ISsrq9yKWC3mB9Z4vd4fnnrqqaVWB6O1rbVyrbUo7Mq2TgQ9zGazPdOnT58ReXl5h+Li4g5vBrFv3z5cLld6YWFhWeNja9euze3fv/8uu91eY0201vH7/erAgQMj9+3b9wxwkdXxaG1rrVxrxwrHsq0TQc8b1dKHJScn59DevXv7+f1+FRcXJ263O9Hr9SZkZmbW7N69O7+ioiLb7/cru91eMWDAgD1utztx8+bNQ1NTU2tqa2vTExIS6ocOHbolPj5e1q9ff0L//v13ZmRk1DY0NNjWrVs3YvTo0YbL5UouKSkZLCJKRCgsLPw2NTXVY9Ufoi1xcXGSl5dXuW/fvlFWx6J1SIvlWjtWOJZtnQh6XlxLH5aEhARfamqq69ChQ/acnJyKsrKybLvdfqiioiLT4/Ekjxw5cj3Apk2bjq+srExPSkqq93g8yYMHD96anp6+ffPmzUPKy8t79e7d+2BrL1xaWpqXl5e3v3fv3gf9fr8K993pAn8n3cwQGVos11rLwq1s60QQRnr16nXw4MGDvXJycioqKiqyBw4cWFJeXp5dXV2duXbt2pEAfr8/zu12JyclJdUnJiZ60tPT6wBSUlJqPR5PUlvXT09Pd+3bt69vfX19YnZ29qFwrQ1omtazdCKw2KDZC0499tFN2eb37SNaPmvnwMM/vrLzqPNL5hTsBaTxbt/v96vG5/Ly8g6mp6e7UlNTR5133nl9X3755S1ZWVnVDQ0N9O7de/SYMWNcH3/88ZZuviVNa6Vcd13JnPNXtHeMUurUiy+++OC8efO2Aehy3XFhUzXRgicxMdHjcrnSAMrLy3s1Pl5XV5eYnJzsSUlJ8X/77bf+srKyVIB//vOfmfn5+Q2deY2Ghk4dHvTzNa25lJQU/8aNG1NqamoU6HLdGToRRKG+ffvuLysry1u3bt1wr9d7uNZXXl6evWbNmhOBuDPOOMO3ePFiL8Crr76afemllx7uW6iqqoq7/PLLB40aNWrEiBEjRr700ktZAI8//njOjBkzhkyZMuX4iRMnDgO477778ocNGzbyhBNOGHnrrbf2Axg3btwJS5YsSQXYu3evrV+/fo6Wzp85c+bgxmsDXHTRRYNffvllew/8ibQodfbZZ1e+8cYbWaDLdWfopqEolJqa6nY4HOsafx8wYMAegP79++/r37//PuDkG2+88dsHHnig71VXXXVw/fr1qTfccEP5559/ng5w77339p08eXLVG2+8UVJWVhY/duzYERdddFEVwMqVK9NXr169Nj8/3/f6669nLliwoNeKFSs2ZGRk+Pfv3x/fXmxNz1+wYEH6o48+mn/11VdXlJeXx69YsSL9rbfe2haiP4sWA6655pqDDzzwQN9Zs2ZV6HLdcbpGEKNOO+20ul27diU9/fTT2VOnTq1s+tzixYszH3300b7Dhw8fecYZZ5zg8XjUli1bEgEmTpxYlZ+f7wNYtGhR5tVXX12WkZHhB2h8vC1Nzz///PNrtm/fnrx7927bs88+m33++ecfSkhICP6b1WKGLtddo2sEoea024DCwFde/AX/zqRyVyJ+rw2/r907jVCaPn16xQMPPFDwwQcfbCwtLT1cFkSEN998c8vo0aOPGlX06aefpqWmpvqbHqeUojmbzSY+n/nZqa2tPeqApucDfP/73y9/5plnst96663s5557riQob0zrGU57b2AgUBB/4b8zzHLtiwex9AZTl+vO0zWCYHLa7TjtF+C0/wan/W2c9nWAC9gALACej2+o7oXrQF/qDuXhqcq2Mtxbbrml7Kc//emecePG1TV9fPLkyVWPPPJIvt9vlu3PPvsspaXzp0+fXvXiiy/mVldXxwE0VqELCgo8X331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\n", + "text/plain": [ + "<Figure size 432x216 with 2 Axes>" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot = df.plot.pie(subplots=True, figsize=(6,3))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plot[0].get_figure()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "fig.savefig('test.pdf')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "megapixels", + "language": "python", + "name": "megapixels" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.7" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/megapixels/notebooks/msc/test.pdf b/megapixels/notebooks/msc/test.pdf Binary files differnew file mode 100644 index 00000000..ddebea79 --- /dev/null +++ b/megapixels/notebooks/msc/test.pdf |
