{"id":46720,"date":"2022-08-30T00:00:00","date_gmt":"2022-08-30T07:00:00","guid":{"rendered":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/"},"modified":"2025-11-13T12:56:13","modified_gmt":"2025-11-13T20:56:13","slug":"alien-life-on-earth-analysis-using-griddb-and-python","status":"publish","type":"post","link":"https:\/\/www.griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/","title":{"rendered":"Alien Life on Earth \u2013 Analysis Using GridDB and Python"},"content":{"rendered":"<h2>Overview<\/h2>\n<p>Most Sci-fi movie enthusiasts are intrigued by the question \u2018Do we have alien life on earth?\u2019 In addition to being a sci-fi enthusiast, if you happen to be a data science enthusiast\/practitioner, then this blog is for you. Being a data science practitioner myself, I have often wondered if there is any dataset that has details of alien species on earth. I am happy to have found one in the Senckenberg (meta) data portal owned by Senckenberg World of Biodiversity.<\/p>\n<p>As per the Senckenberg (meta) data portal, this dataset is a detailed compilation of alien species around the world, ranging from algae to mammals. Without further ado, let\u2019s dive into the analysis. We will be using GridDB Cloud and Python for this analysis.<\/p>\n<p>A link to the jupyter file can be found here: https:\/\/github.com\/griddbnet\/Blogs\/tree\/alien_life<\/p>\n<h2>Overall Premise<\/h2>\n<p>We will be downloading the dataset from Senckenberg (meta) data portal and uploading it to GridDB Cloud using the GridDB WebApi. We will then be harnessing GridDB&#8217;s SQL capabilities for our analysis in Python. Below is an outline of the approach \u2013<\/p>\n<ol>\n<li>Data Preparation in Python <\/li>\n<li>Creating a Container structure for use in GridDB<\/li>\n<li>Using GridDB WebApi to set up the Container in GridDB Cloud<\/li>\n<li>Adding data to the container in GridDB<\/li>\n<li>Retrieving data from GridDB cloud<\/li>\n<li>The Analysis Phase &#8211; Harnessing the Power of GridDB&#8217;s SQL Engine<\/li>\n<\/ol>\n<p>Pre-requisites: i. Setting up GridDB with the web api ii. Creating a Cluster. Details for i and ii are available in &#8211; https:\/\/griddb.net\/en\/blog\/an-introduction-to-griddb-cloud\/. iii. A python environment (version 3+) and an IDE of your choice. iv. Dataset to be downloaded from https:\/\/dataportal.senckenberg.de\/dataset\/global-alien-species-first-record-database\/resource\/bfcc1603-c923-4299-a92a-3168a072d2a4<\/p>\n<h2>Data Preparation in Python<\/h2>\n<p>Data Preparation begins with reading the dataset that was downloaded from Senckenberg (meta) data portal. It also includes creating the container structure for the GridDB WebAPI.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\"># Read data from the downloaded dataset\nimport pandas as pd\nAlien_species_global_trends = pd.read_excel(\"Alien_Species.xlsx\", sheet_name=1, header=0,keep_default_na=False, index_col=None)<\/code><\/pre>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\"># Extracting column headers for the GridDB WebApi Container structure\ncol_vals = (list(Alien_species_global_trends.columns.values))\ncol_dtypes = (list(Alien_species_global_trends.dtypes))\ndata_tuples = list(zip(col_vals,col_dtypes)) # Binding lists to a tuple\n\n# Converting list of tuples to pandas dataframe\ncontainer_columns = pd.DataFrame(data_tuples, columns=['col_vals','col_datatypes'])\ncontainer_columns.to_csv('container_columns.csv',index=False)<\/code><\/pre>\n<\/div>\n<p>The dataframe thus created will have all the headers and their datatypes. This step is useful when you have a dataset with lots of headers. Note that the GridDB datatypes are different from Python datatypes. As an example, the column &#8216;Bryophytes&#8217; is an &#8216;object&#8217; in Python which is a &#8216;STRING&#8217; in GridDB.<\/p>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/download-5.png\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/download-5.png\" alt=\"\" width=\"651\" height=\"433\" class=\"aligncenter size-full wp-image-28642\" srcset=\"\/wp-content\/uploads\/2022\/08\/download-5.png 651w, \/wp-content\/uploads\/2022\/08\/download-5-300x200.png 300w, \/wp-content\/uploads\/2022\/08\/download-5-600x399.png 600w\" sizes=\"(max-width: 651px) 100vw, 651px\" \/><\/a><\/p>\n<h2>Creating a Container structure in GridDB using the GridDB WebAPI<\/h2>\n<p>As a pre-requisite, please read https:\/\/docs.griddb.net\/ to know more about containers in GridDB.<\/p>\n<p>The basic structure to create a container in your cluster is as below.<\/p>\n<p>curl &#8211;location &#8211;request POST <mark>:GridDBCloudURL\/:cluster\/dbs\/:database\/containers\/<\/mark>  &#8211;header &#8216;Authorization: Basic <mark>base encoded version of username:password<\/mark>  &#8211;header &#8216;Content-Type: application\/json; charset=UTF-8&#8217;  &#8211;data &#8216;{<br \/>\n&#8220;container_name&#8221;: <mark>\u201cContainer Name&#8221;<\/mark>,<br \/>\n&#8220;container_type&#8221;: <mark>\u201cContainer Type&#8221;<\/mark>,<br \/>\n&#8220;rowkey&#8221;: true,<br \/>\n&#8220;columns&#8221;: [<br \/>\n{<br \/>\n&#8220;name&#8221;: &#8220;timestamp&#8221;,<br \/>\n&#8220;type&#8221;: &#8220;TIMESTAMP&#8221;<br \/>\n},<br \/>\n{<br \/>\n&#8220;name&#8221;: \u201cHEADER_1&#8243;,<br \/>\n&#8220;type&#8221;: &#8220;BOOL&#8221;<br \/>\n},<br \/>\n{<br \/>\n&#8220;name&#8221;: \u201cHEADER_N&#8221;,<br \/>\n&#8220;type&#8221;: \u201cINTEGER&#8221;<br \/>\n}<br \/>\n]<br \/>\n}&#8217;<\/p>\n<p>Below is a code snippet in Python.<\/p>\n<h2>Using WebApi to set up the Container in GridDB Cloud<\/h2>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">import requests  # to make http calls\nimport http\nhttp.client.HTTPConnection.debuglevel = 1 #Tip - This command enables logging of http calls<\/code><\/pre>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Construct an object to hold the request headers\nheader_obj = {\"Authorization\":\"Basic U3ViaGE6Yjk+RWtDUA==\",\"Content-Type\":\"application\/json; charset=UTF-8\",\"User-Agent\":\"PostmanRuntime\/7.29.0\"}\n\n#Construct an object to hold the request body (i.e., the container that needs to be created)\ndata_obj = {\n    \"container_name\": \"Alien_Species_Analysis\",\n    \"container_type\": \"COLLECTION\",\n    \"rowkey\": True,\n    \"columns\": [\n    {\n    \"name\": \"Year\",\n    \"type\": \"INTEGER\"\n    },\n    {\n    \"name\": \"All\",\n    \"type\": \"INTEGER\"\n    },\n    {\n    \"name\": \"VascularPlants\",\n    \"type\": \"STRING\"\n    },\n    {\n    \"name\": \"Bryophytes\",\n    \"type\": \"STRING\"\n    },\n    {\n    \"name\": \"Algae\",\n    \"type\": \"STRING\"\n    },\n    {\n    \"name\": \"Mammals\",\n    \"type\": \"STRING\"\n    },\n    {\n    \"name\": \"Birds\",\n    \"type\": \"STRING\"\n    },\n    {\n    \"name\": \"Reptiles\",\n    \"type\": \"STRING\"\n    },\n    {\n    \"name\": \"Amphibians\",\n    \"type\": \"STRING\"\n    },\n    {\n    \"name\": \"Fishes\",\n    \"type\": \"STRING\"\n    },\n    {\n    \"name\": \"Insects\",\n    \"type\": \"STRING\"\n    },\n    {\n    \"name\": \"Molluscs\",\n    \"type\": \"STRING\"\n    },\n    {\n    \"name\": \"Crustaceans\",\n    \"type\": \"STRING\"\n    },\n    {\n    \"name\": \"Arachnids\",\n    \"type\": \"STRING\"\n    },\n    {\n    \"name\": \"Arthropods\",\n    \"type\": \"STRING\"\n    },\n    {\n    \"name\": \"Invertebrates\",\n    \"type\": \"STRING\"\n    },\n    {\n    \"name\": \"Fungi\",\n    \"type\": \"STRING\"\n    },\n    {\n    \"name\": \"BacteriaProtozoans\",\n    \"type\": \"STRING\"\n    }\n    ]\n}\n\n#Set up the GridDB WebAPI URL\nurl = 'https:\/\/cloud1.griddb.com\/trial1302\/griddb\/v2\/gs_clustertrial1302\/dbs\/public\/containers'\n\n#Invoke the GridDB WebAPI with the headers and the request body\nx = requests.post(url, json = data_obj, headers = header_obj})<\/code><\/pre>\n<\/div>\n<h2>Adding data to the container in GridDB<\/h2>\n<p>The next step is to add data in the newly created container (&#8216;Alien_Species_Analysis&#8217;). GridDB WebAPI provides an API to achieve this.<\/p>\n<p>The basic structure to create rows in the container is as below.<\/p>\n<p>curl &#8211;location &#8211;request PUT <mark>:GridDBCloudURL\/:cluster\/dbs\/:database\/containers\/:container\/rows<\/mark>  &#8211;header &#8216;Authorization: Basic <mark>base encoded version of username:password<\/mark>  &#8211;header &#8216;Content-Type: application\/json; charset=UTF-8&#8217;  &#8211;data &#8216;[<br \/>\n[<br \/>\n&#8220;Year&#8221;: &#8220;0&#8221;,<br \/>\n&#8220;All&#8221;: &#8220;1503&#8221;,<br \/>\n&#8220;Vascular plants&#8221;: &#8220;2&#8221;,<br \/>\n&#8220;Bryophytes&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Algae&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Mammals&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Birds&#8221;: &#8220;2&#8221;,<br \/>\n&#8220;Reptiles&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Amphibians&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Fishes&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Insects&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Molluscs&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Crustaceans&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Arachnids&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Arthropods p.p. (Myriapods, Diplopods etc.)&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Invertebrates (excl. Arthropods, Molluscs)&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Fungi&#8221;: &#8220;&#8221;,<br \/>\n&#8220;Bacteria and protozoans&#8221;: &#8220;&#8221;<br \/>\n]<br \/>\n]&#8217;<\/p>\n<p>Please refer http:\/\/www.toshiba-sol.co.jp\/en\/pro\/griddb\/docs-en\/v4_3\/GridDB_Web_API_Reference.html#%E3%83%AD%E3%82%A6%E7%99%BB%E9%8C%B2 to learn more.<\/p>\n<p>Below is a code snippet in Python.<\/p>\n<p>TIP: Note that the &#8216;to_json&#8217; function in pandas is used to convert the data in the dataframe to a json structure.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Convert the data in the dataframe to the JSON format\nAlien_species_global_trends_json = Alien_species_global_trends.to_json(orient='values')\nrequest_body = Alien_species_global_trends_json<\/code><\/pre>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Setup the URL to be used to invoke the GridDB WebAPI to register rows in the container created previously\nurl = 'https:\/\/cloud1.griddb.com\/trial1302\/griddb\/v2\/gs_clustertrial1302\/dbs\/public\/containers\/Alien_Species_Analysis\/rows'\n\n#Invoke the GridDB WebAPI using the request constructed\nx = requests.put(url, data=request_body, headers=header_obj)<\/code><\/pre>\n<\/div>\n<pre><code>send: b'PUT \/trial1302\/griddb\/v2\/gs_clustertrial1302\/dbs\/public\/containers\/Alien_Species_Analysis\/rows HTTP\/1.1rnHost: cloud1.griddb.comrnUser-Agent: PostmanRuntime\/7.29.0rnAccept-Encoding: gzip, deflate, brrnAccept: *\/*rnConnection: keep-alivernAuthorization: Basic U3ViaGE6Yjk+RWtDUA==rnContent-Type: application\/json; charset=UTF-8rnContent-Length: 24016rnrn'\nsend: b'[[1503,2,\"\",\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1504,2,1,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1508,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1509,3,1,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\"],[1511,10,\"\",\"\",\"\",10,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1512,2,\"\",\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1513,2,\"\",\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1515,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1517,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1520,2,\"\",\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1521,2,\"\",\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1523,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1525,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1526,2,1,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1529,1,\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1530,3,\"\",\"\",\"\",1,2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1531,3,\"\",\"\",\"\",\"\",3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1532,5,5,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1535,30,24,\"\",\"\",6,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1536,2,\"\",\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1538,6,6,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1544,2,\"\",\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1547,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1548,26,26,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1550,16,4,\"\",\"\",9,3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1551,8,8,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1553,7,7,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1554,2,2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1557,2,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1560,2,\"\",\"\",\"\",1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1561,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1562,11,11,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1563,4,3,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1565,3,2,\"\",\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1568,2,2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1570,10,10,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1572,1,\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1574,2,\"\",\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1575,1,\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1576,3,3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1577,2,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1578,3,2,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1579,2,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1580,2,1,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1581,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1583,3,3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1584,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1585,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1588,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1589,4,4,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1590,3,\"\",\"\",\"\",1,2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1595,1,\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1596,3,2,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1597,45,44,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1598,2,\"\",\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1599,5,2,\"\",\"\",2,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1600,58,44,\"\",\"\",4,3,\"\",\"\",1,2,4,\"\",\"\",\"\",\"\",\"\",\"\"],[1601,2,\"\",\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1602,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\"],[1604,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1605,2,1,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1606,5,4,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1607,3,2,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1610,3,1,\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1611,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1612,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1613,6,5,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1614,2,2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1615,1,\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1616,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1617,18,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",17,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1618,2,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1620,4,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",3,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1621,1,\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1622,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1625,3,3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1626,4,2,\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1628,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1629,9,9,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1630,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1631,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1632,9,9,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1633,13,13,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1634,6,4,\"\",\"\",\"\",\"\",\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1635,2,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1638,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1639,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1640,6,5,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1641,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1642,12,10,\"\",\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1644,2,2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1645,3,3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1648,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1649,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1650,29,10,\"\",\"\",8,11,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1651,2,2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1652,8,6,\"\",\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1653,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1654,5,1,\"\",\"\",4,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1656,5,3,\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1657,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1658,33,30,\"\",\"\",3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1659,2,1,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1660,7,6,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1661,14,14,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1662,10,10,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1663,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1665,2,2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1666,5,5,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1668,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1669,2,\"\",\"\",\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1670,11,7,\"\",\"\",1,\"\",\"\",\"\",\"\",3,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1672,19,17,\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1673,4,\"\",\"\",\"\",\"\",2,\"\",\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1674,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1675,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1677,3,3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1678,3,1,\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1679,2,1,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1680,6,4,\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1683,2,2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1684,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1685,12,9,\"\",\"\",3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1686,2,1,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1688,8,8,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1689,5,4,\"\",\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1690,10,7,\"\",\"\",1,2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1693,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",1,\"\",\"\"],[1694,10,9,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1695,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1696,4,3,\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1697,2,1,\"\",\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1699,12,11,\"\",\"\",\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1700,142,104,\"\",\"\",13,6,\"\",\"\",3,11,4,1,\"\",\"\",\"\",\"\",\"\"],[1701,10,5,\"\",\"\",3,\"\",\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1702,2,2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1703,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1704,4,4,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1705,3,1,\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1707,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1708,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1709,3,2,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1710,4,\"\",\"\",\"\",\"\",4,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1711,3,3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1713,7,7,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1714,1,\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1715,1,\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1716,3,3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1718,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1719,3,3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1720,6,4,\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1722,2,1,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1723,5,5,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1724,11,11,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1725,6,1,\"\",\"\",3,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1726,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1727,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1728,3,2,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1729,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1730,6,2,\"\",\"\",2,1,\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\"],[1731,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1732,14,11,\"\",\"\",\"\",3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1733,3,2,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1734,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1735,2,1,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1736,2,2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1737,8,7,\"\",\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1738,4,2,\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1739,3,\"\",\"\",\"\",\"\",3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1740,10,1,\"\",\"\",\"\",1,\"\",\"\",\"\",8,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1741,8,8,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1742,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1743,20,20,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1744,10,10,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1745,10,10,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1746,4,3,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1747,4,2,\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1748,4,3,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1749,2,2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1750,52,2,\"\",\"\",22,26,\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1752,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1753,4,4,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1754,3,1,\"\",\"\",\"\",1,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1755,3,3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1756,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1757,3,2,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1758,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1759,1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1760,24,20,\"\",\"\",1,2,\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1761,3,2,\"\",\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1762,12,9,\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",1,\"\",\"\"],[1763,10,8,\"\",\"\",1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1764,9,2,\"\",\"\",6,\"\",\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\"],[1765,5,2,\"\",\"\",\"\",2,\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\"],[1767,11,6,\"\",\"\",2,3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1768,7,5,\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1769,7,4,\"\",\"\",1,1,\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1770,25,11,\"\",\"\",5,5,\"\",\"\",\"\",4,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1771,2,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1772,26,23,\"\",\"\",2,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1773,8,3,\"\",\"\",1,4,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1774,5,1,\"\",\"\",4,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1775,21,19,\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1776,3,2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1777,16,14,\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1778,21,10,\"\",\"\",7,\"\",\"\",1,\"\",1,2,\"\",\"\",\"\",\"\",\"\",\"\"],[1779,6,3,\"\",\"\",3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1780,10,7,\"\",\"\",1,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1781,4,3,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1782,4,4,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1783,3,3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1784,7,6,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1785,14,12,1,\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1786,7,6,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1787,13,11,\"\",\"\",1,\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1788,18,8,\"\",\"\",6,4,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1789,8,4,\"\",\"\",1,1,\"\",\"\",\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\"],[1790,21,9,\"\",\"\",4,7,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1791,47,41,\"\",\"\",1,1,\"\",\"\",\"\",4,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1792,14,14,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1793,13,10,\"\",\"\",3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1794,25,22,\"\",\"\",1,1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1795,10,8,\"\",\"\",1,\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1796,12,10,\"\",\"\",\"\",1,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1797,16,12,\"\",\"\",3,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1798,14,12,\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1799,29,22,\"\",\"\",2,4,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1800,122,65,\"\",\"\",22,8,1,\"\",1,19,5,\"\",\"\",\"\",1,\"\",\"\"],[1801,21,11,\"\",\"\",\"\",2,\"\",1,\"\",2,4,1,\"\",\"\",\"\",\"\",\"\"],[1802,24,19,\"\",\"\",\"\",\"\",\"\",1,\"\",4,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1803,24,19,\"\",\"\",2,\"\",1,\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\"],[1804,41,38,\"\",\"\",1,\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1805,26,22,\"\",\"\",\"\",\"\",2,\"\",\"\",1,\"\",1,\"\",\"\",\"\",\"\",\"\"],[1806,22,20,\"\",\"\",\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1807,14,12,\"\",\"\",1,\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1808,12,8,\"\",1,\"\",\"\",1,\"\",\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\"],[1809,27,22,\"\",\"\",2,1,1,\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1810,23,10,\"\",\"\",6,6,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1811,25,24,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\"],[1812,8,7,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1813,61,55,\"\",\"\",1,3,\"\",\"\",\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1814,15,14,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1815,16,11,\"\",\"\",4,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1816,16,16,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1817,26,24,\"\",\"\",1,\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1818,24,22,\"\",\"\",1,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1819,47,44,\"\",\"\",3,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1820,55,32,\"\",\"\",6,6,1,1,1,7,1,\"\",\"\",\"\",\"\",\"\",\"\"],[1821,65,64,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\"],[1822,15,14,\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1823,22,19,\"\",\"\",2,\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1824,39,32,\"\",\"\",2,1,1,\"\",\"\",\"\",3,\"\",\"\",\"\",\"\",\"\",\"\"],[1825,55,47,\"\",\"\",3,\"\",\"\",\"\",\"\",5,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1826,41,32,\"\",\"\",2,2,\"\",\"\",\"\",3,2,\"\",\"\",\"\",\"\",\"\",\"\"],[1827,42,34,\"\",\"\",\"\",3,\"\",\"\",\"\",3,\"\",2,\"\",\"\",\"\",\"\",\"\"],[1828,19,18,\"\",\"\",\"\",\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1829,17,9,\"\",\"\",4,1,\"\",\"\",\"\",3,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1830,59,51,\"\",\"\",6,2,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1831,14,10,\"\",\"\",1,\"\",\"\",\"\",2,1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1832,49,37,\"\",1,6,1,\"\",\"\",1,2,\"\",1,\"\",\"\",\"\",\"\",\"\"],[1833,32,26,\"\",\"\",1,1,\"\",1,\"\",2,1,\"\",\"\",\"\",\"\",\"\",\"\"],[1834,69,65,\"\",\"\",\"\",\"\",\"\",1,\"\",3,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1835,57,43,\"\",\"\",2,2,\"\",\"\",\"\",7,2,1,\"\",\"\",\"\",\"\",\"\"],[1836,40,35,\"\",\"\",1,1,\"\",1,\"\",2,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1837,63,55,\"\",\"\",2,\"\",\"\",1,\"\",4,\"\",\"\",\"\",1,\"\",\"\",\"\"],[1838,215,208,\"\",\"\",1,2,\"\",\"\",\"\",4,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1839,35,23,\"\",1,1,4,1,\"\",\"\",4,1,\"\",\"\",\"\",\"\",\"\",\"\"],[1840,89,56,\"\",\"\",7,8,1,1,\"\",8,5,1,\"\",\"\",1,1,\"\"],[1841,41,29,\"\",\"\",2,\"\",\"\",\"\",\"\",9,1,\"\",\"\",\"\",\"\",\"\",\"\"],[1842,107,104,\"\",\"\",\"\",2,\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1843,63,62,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1844,82,68,\"\",\"\",1,1,\"\",2,\"\",2,\"\",7,\"\",\"\",\"\",1,\"\"],[1845,71,59,\"\",\"\",4,4,\"\",\"\",\"\",\"\",1,\"\",\"\",\"\",\"\",3,\"\"],[1846,71,60,\"\",\"\",3,2,\"\",\"\",\"\",2,4,\"\",\"\",\"\",\"\",\"\",\"\"],[1847,78,65,\"\",\"\",1,2,\"\",\"\",\"\",8,2,\"\",\"\",\"\",\"\",\"\",\"\"],[1848,91,80,1,\"\",1,\"\",\"\",\"\",\"\",7,1,\"\",\"\",\"\",1,\"\",\"\"],[1849,54,51,\"\",\"\",\"\",1,1,\"\",\"\",1,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1850,213,99,\"\",1,30,45,\"\",\"\",1,27,5,2,1,\"\",1,1,\"\"],[1851,66,49,\"\",\"\",6,4,\"\",\"\",\"\",7,\"\",\"\",\"\",\"\",\"\",\"\",\"\"],[1852,70,57,\"\",\"\",2,4,\"\",\"\",\"\",6,\"\",\"\",1,\"\",\"\",\"\",\"\"],[1853,69,50,\"\",\"\",2,4,\"\",\"\",2,6,4,1,\"\",\"\",\"\",\"\",\"\"],[1854,67,48,\"\",\"\",4,5,1,\"\",1,6,1,1,\"\",\"\",\"\",\"\",\"\"],[1855,54,42,\"\",\"\",2,6,\"\",\"\",\"\",2,1,\"\",\"\",\"\",1,\"\",\"\"],[1856,39,21,\"\",\"\",2,5,\"\",\"\",2,6,2,\"\",\"\",\"\",1,\"\",\"\"],[1857,79,72,\"\",\"\",1,2,\"\",\"\",1,1,\"\",1,\"\",\"\",1,\"\",\"\"],[1858,94,74,\"\",1,6,4,\"\",\"\",\"\",5,1,2,\"\",\"\",1,\"\",\"\"],[1859,100,80,\"\",\"\",\"\",3,\"\",\"\",2,7,3,\"\",3,1,\"\",1,\"\"],[1860,116,58,\"\",\"\",14,19,2,1,2,15,3,\"\",1,\"\",1,\"\",\"\"],[1861,72,57,\"\",\"\",1,9,\"\",\"\",1,3,\"\",\"\",1,\"\",\"\",\"\",\"\"],[1862,106,81,1,\"\",6,12,1,\"\",1,\"\",2,1,\"\",\"\",\"\",1,\"\"],[1863,52,34,\"\",\"\",1,8,\"\",1,2,5,\"\",\"\",\"\",\"\",1,\"\",\"\"],[1864,97,81,\"\",\"\",3,6,\"\",\"\",1,4,1,1,\"\",\"\",\"\",\"\",\"\"],[1865,131,106,\"\",\"\",2,10,1,\"\",1,7,1,\"\",\"\",\"\",1,2,\"\"],[1866,194,177,\"\",\"\",1,6,\"\",\"\",1,4,4,1,\"\",\"\",\"\",\"\",\"\"],[1867,161,132,\"\",\"\",5,7,1,2,4,7,1,\"\",1,\"\",1,\"\",\"\"],[1868,123,103,\"\",\"\",\"\",6,\"\",\"\",1,12,1,\"\",\"\",\"\",\"\",\"\",\"\"],[1869,131,109,\"\",\"\",4,10,1,\"\",\"\",6,1,\"\",\"\",\"\",\"\",\"\",\"\"],[1870,167,104,\"\",\"\",25,8,\"\",1,4,19,3,1,\"\",\"\",1,1,\"\"],[1871,93,83,\"\",\"\",2,\"\",\"\",\"\",2,5,1,\"\",\"\",\"\",\"\",\"\",\"\"],[1872,124,87,\"\",\"\",2,7,1,\"\",5,19,2,1,\"\",\"\",\"\",\"\",\"\"],[1873,68,42,\"\",\"\",3,3,1,\"\",4,10,1,\"\",2,1,1,\"\",\"\"],[1874,106,83,\"\",\"\",6,1,1,\"\",1,9,2,1,\"\",\"\",2,\"\",\"\"],[1875,145,96,\"\",\"\",4,8,2,3,1,29,\"\",\"\",\"\",\"\",1,1,\"\"],[1876,158,125,\"\",\"\",2,4,3,\"\",4,16,1,\"\",2,\"\",\"\",1,\"\"],[1877,110,68,\"\",\"\",3,3,1,1,10,18,2,1,1,\"\",1,1,\"\"],[1878,127,88,\"\",\"\",3,6,\"\",\"\",6,21,1,1,1,\"\",\"\",\"\",\"\"],[1879,153,105,1,\"\",1,5,\"\",3,3,21,8,1,\"\",\"\",4,1,\"\"],[1880,205,115,\"\",\"\",15,19,3,2,7,33,2,1,2,\"\",3,3,\"\"],[1881,181,154,\"\",\"\",3,1,\"\",1,1,17,3,\"\",\"\",\"\",1,\"\",\"\"],[1882,190,164,\"\",\"\",5,5,\"\",\"\",8,7,\"\",\"\",\"\",\"\",1,\"\",\"\"],[1883,158,125,\"\",1,9,5,2,1,6,5,1,\"\",1,\"\",2,\"\",\"\"],[1884,172,127,\"\",\"\",6,6,\"\",1,6,19,1,\"\",\"\",\"\",6,\"\",\"\"],[1885,198,154,\"\",\"\",7,11,\"\",3,7,12,\"\",\"\",\"\",\"\",2,2,\"\"],[1886,160,120,\"\",\"\",2,9,\"\",1,5,19,2,1,\"\",\"\",\"\",1,\"\"],[1887,165,124,\"\",\"\",3,6,1,1,3,21,2,2,\"\",\"\",2,\"\",\"\"],[1888,183,148,\"\",1,7,6,\"\",\"\",7,11,\"\",\"\",\"\",\"\",3,\"\",\"\"],[1889,108,70,\"\",\"\",\"\",4,\"\",\"\",4,19,\"\",\"\",\"\",1,10,\"\",\"\"],[1890,198,116,\"\",\"\",9,20,\"\",1,10,31,7,3,\"\",\"\",1,\"\",\"\"],[1891,157,125,1,\"\",2,5,\"\",1,6,13,2,1,\"\",\"\",1,\"\",\"\"],[1892,124,93,1,\"\",3,1,\"\",1,3,18,2,1,\"\",\"\",\"\",1,\"\"],[1893,142,111,\"\",\"\",2,2,\"\",\"\",1,15,8,\"\",1,\"\",\"\",2,\"\"],[1894,254,218,\"\",1,4,4,1,\"\",6,18,1,\"\",1,\"\",\"\",\"\",\"\"],[1895,222,147,\"\",1,12,9,\"\",2,5,38,5,\"\",\"\",1,1,1,\"\"],[1896,201,151,\"\",2,4,6,\"\",\"\",5,19,4,5,\"\",3,\"\",2,\"\"],[1897,172,137,\"\",\"\",3,4,1,1,4,18,4,\"\",\"\",\"\",\"\",\"\",\"\"],[1898,221,178,\"\",1,1,7,\"\",1,3,20,7,2,1,\"\",\"\",\"\",\"\"],[1899,230,144,\"\",2,5,7,1,2,5,54,4,2,\"\",\"\",2,2,\"\"],[1900,422,185,\"\",3,28,27,5,2,20,120,14,3,1,\"\",10,4,\"\"],[1901,131,92,\"\",\"\",5,3,1,\"\",3,22,2,\"\",\"\",1,2,\"\",\"\"],[1902,220,152,\"\",6,3,4,\"\",\"\",7,35,3,1,1,3,1,3,1],[1903,250,202,\"\",3,3,10,1,\"\",1,22,2,2,2,1,1,\"\",\"\"],[1904,204,134,\"\",2,8,10,1,2,13,27,1,\"\",\"\",\"\",1,5,\"\"],[1905,232,138,\"\",5,7,8,3,\"\",14,43,5,2,1,\"\",6,\"\",\"\"],[1906,216,136,\"\",1,1,8,1,\"\",7,52,5,\"\",1,1,\"\",3,\"\"],[1907,185,121,\"\",5,5,2,1,\"\",5,42,\"\",1,\"\",1,\"\",2,\"\"],[1908,175,111,1,3,3,4,\"\",\"\",7,40,2,2,\"\",\"\",\"\",2,\"\"],[1909,228,167,\"\",\"\",3,2,3,\"\",1,41,3,2,\"\",\"\",3,3,\"\"],[1910,289,183,1,2,25,20,1,3,7,43,2,1,\"\",\"\",1,\"\",\"\"],[1911,192,120,\"\",2,8,4,1,\"\",4,44,4,\"\",1,\"\",2,2,\"\"],[1912,223,144,\"\",\"\",9,5,\"\",1,4,45,2,6,2,\"\",4,1,\"\"],[1913,217,147,\"\",\"\",4,9,2,\"\",3,42,5,2,2,\"\",1,\"\",\"\"],[1914,216,144,\"\",\"\",8,\"\",\"\",1,9,51,\"\",1,\"\",\"\",2,\"\",\"\"],[1915,217,131,\"\",\"\",4,7,1,2,6,53,3,1,1,\"\",6,1,\"\"],[1916,205,144,\"\",\"\",3,2,\"\",2,4,46,1,2,\"\",\"\",1,\"\",\"\"],[1917,157,103,\"\",\"\",1,5,1,\"\",\"\",43,2,\"\",\"\",\"\",1,1,\"\"],[1918,158,112,1,\"\",2,4,\"\",1,1,32,2,\"\",\"\",\"\",2,1,\"\"],[1919,130,83,1,1,1,7,\"\",1,2,27,3,1,1,\"\",2,\"\",\"\"],[1920,299,144,\"\",1,26,31,4,4,10,69,5,1,\"\",\"\",2,1,1],[1921,160,68,\"\",1,4,4,1,\"\",12,55,1,4,\"\",\"\",9,1,\"\"],[1922,208,120,\"\",3,3,13,2,2,11,41,2,5,1,\"\",5,\"\",\"\"],[1923,238,151,\"\",2,4,6,1,\"\",3,63,1,1,1,\"\",3,2,\"\"],[1924,219,97,\"\",2,7,6,1,2,17,51,1,18,2,2,8,5,\"\"],[1925,255,139,\"\",\"\",2,21,1,1,16,65,1,5,\"\",\"\",3,1,\"\"],[1926,216,130,\"\",4,3,10,1,\"\",4,57,2,3,\"\",\"\",1,\"\",1],[1927,220,114,\"\",1,7,9,3,1,16,51,4,3,1,\"\",5,5,\"\"],[1928,229,120,1,\"\",7,15,1,1,14,50,8,6,\"\",\"\",5,1,\"\"],[1929,270,130,2,1,16,17,2,\"\",21,52,5,12,2,\"\",9,1,\"\"],[1930,327,146,1,3,30,16,2,2,25,72,3,13,2,3,8,1,\"\"],[1931,260,147,\"\",2,14,13,\"\",2,9,58,4,7,\"\",\"\",3,1,\"\"],[1932,305,186,1,1,18,6,4,5,6,64,4,5,\"\",\"\",3,2,\"\"],[1933,253,115,2,1,14,10,\"\",3,5,77,2,11,\"\",1,12,\"\",\"\"],[1934,252,146,\"\",1,7,9,1,2,10,59,6,6,\"\",1,3,1,\"\"],[1935,274,131,\"\",2,14,16,2,7,17,56,11,6,\"\",\"\",8,3,\"\"],[1936,209,116,\"\",1,8,6,1,2,6,55,5,3,1,\"\",3,2,\"\"],[1937,267,136,\"\",1,11,13,\"\",3,16,65,6,6,\"\",1,8,1,\"\"],[1938,224,125,\"\",3,10,22,1,2,10,44,2,2,\"\",\"\",2,\"\",1],[1939,246,119,\"\",3,12,12,4,2,12,67,6,3,1,\"\",3,2,\"\"],[1940,275,155,1,\"\",18,13,3,5,17,40,\"\",8,1,\"\",10,3,\"\"],[1941,144,87,1,1,6,4,4,1,3,27,1,2,\"\",\"\",6,\"\",\"\"],[1942,153,89,1,1,2,\"\",1,1,10,40,1,1,\"\",1,3,2,\"\"],[1943,146,79,1,1,3,6,\"\",\"\",10,37,2,3,\"\",1,2,1,\"\"],[1944,186,123,2,7,5,4,\"\",1,5,30,\"\",2,1,\"\",5,1,\"\"],[1945,205,108,\"\",2,7,14,1,1,9,55,2,1,\"\",\"\",2,3,\"\"],[1946,212,99,2,1,6,24,\"\",\"\",10,49,5,5,1,\"\",7,3,\"\"],[1947,206,146,\"\",2,3,3,1,\"\",5,33,1,5,\"\",\"\",5,2,\"\"],[1948,218,98,2,20,8,2,2,\"\",18,40,5,5,1,2,10,4,\"\"],[1949,196,85,\"\",3,5,6,1,1,15,57,7,7,1,\"\",4,3,1],[1950,377,145,1,6,24,21,2,1,34,99,10,12,3,1,11,5,1],[1951,233,91,1,2,7,9,2,2,27,68,2,10,1,2,5,4,\"\"],[1952,286,125,3,2,14,7,4,2,12,76,8,10,6,3,14,\"\",\"\"],[1953,259,113,1,\"\",15,7,2,2,19,74,3,8,3,\"\",7,4,1],[1954,327,165,1,1,24,5,1,1,36,74,5,4,3,\"\",5,2,\"\"],[1955,333,134,3,2,6,33,3,3,46,52,14,16,2,3,12,4,\"\"],[1956,289,135,\"\",2,21,13,4,\"\",33,55,2,14,2,\"\",8,\"\",\"\"],[1957,312,138,1,8,15,14,1,\"\",29,86,4,9,1,\"\",6,\"\",\"\"],[1958,245,113,2,1,8,9,2,1,28,54,8,4,2,1,10,2,\"\"],[1959,306,124,\"\",1,11,25,2,1,23,83,8,14,5,\"\",8,\"\",1],[1960,545,267,1,5,17,53,4,6,48,87,12,22,4,2,12,4,1],[1961,320,133,2,4,10,37,5,1,28,66,8,9,3,1,10,1,1],[1962,345,168,1,1,10,14,5,2,40,68,5,11,1,\"\",16,1,1],[1963,337,159,1,3,8,16,4,3,33,63,14,7,2,\"\",22,2,\"\"],[1964,379,160,1,7,4,10,9,4,29,115,10,11,7,\"\",8,4,\"\"],[1965,353,140,6,1,9,46,5,1,35,63,9,7,5,3,12,9,\"\"],[1966,374,166,3,9,5,10,2,1,32,101,9,7,2,\"\",18,4,3],[1967,316,127,4,6,11,11,1,3,25,91,9,10,2,\"\",13,1,\"\"],[1968,367,183,2,3,5,19,5,3,27,74,14,7,3,1,18,1,1],[1969,325,148,\"\",8,6,21,2,3,18,71,11,18,\"\",1,12,5,\"\"],[1970,436,179,3,15,17,33,7,2,28,100,19,13,5,\"\",14,1,\"\"],[1971,443,240,1,6,17,17,9,1,28,79,7,5,6,\"\",22,3,1],[1972,327,114,1,6,7,23,8,6,27,70,15,15,3,2,24,6,\"\"],[1973,323,132,8,13,3,20,4,2,13,78,18,13,1,1,11,5,1],[1974,370,155,3,7,5,22,9,1,21,98,14,3,4,1,17,7,3],[1975,427,132,8,8,4,47,4,5,38,131,10,14,2,4,12,8,\"\"],[1976,373,147,3,10,7,15,8,2,25,106,11,14,5,2,12,4,1],[1977,353,138,4,6,4,15,1,2,20,112,8,18,4,\"\",16,4,1],[1978,417,159,2,16,5,19,7,1,27,123,20,15,3,\"\",17,2,\"\"],[1979,324,116,2,13,6,28,7,3,25,89,12,8,1,\"\",10,3,1],[1980,365,155,3,10,11,16,6,2,13,89,22,6,2,\"\",18,9,1],[1981,400,117,1,8,3,81,5,1,18,105,17,19,11,1,7,5,1],[1982,402,158,3,8,2,37,7,5,23,108,13,10,1,\"\",20,2,4],[1983,373,127,3,6,3,32,8,4,26,110,15,14,5,1,16,3,\"\"],[1984,415,188,\"\",15,3,31,5,3,32,109,14,6,3,\"\",5,\"\",1],[1985,479,182,1,15,4,39,3,2,23,143,24,11,4,1,14,11,2],[1986,409,110,2,24,5,21,5,5,26,113,49,16,4,2,15,4,5],[1987,421,160,\"\",13,4,34,3,5,21,138,11,11,4,\"\",10,6,\"\"],[1988,391,137,1,7,2,37,2,3,14,131,24,7,3,\"\",14,5,2],[1989,514,158,2,15,2,40,8,\"\",13,217,16,11,8,1,12,7,4],[1990,473,161,\"\",12,9,18,8,6,24,166,22,8,8,2,23,4,1],[1991,401,114,1,26,2,30,7,5,16,142,19,13,5,1,12,6,2],[1992,439,165,1,14,3,20,6,2,29,133,22,19,2,2,17,3,1],[1993,438,160,2,17,3,36,11,6,20,121,15,17,4,\"\",17,4,3],[1994,431,135,3,19,3,21,6,2,16,159,19,19,5,2,19,1,\"\"],[1995,492,133,5,11,6,22,6,2,24,204,15,29,8,1,15,6,3],[1996,585,160,1,14,1,132,10,4,13,144,23,22,4,2,22,13,19],[1997,474,176,1,15,4,22,7,6,23,124,20,29,7,\"\",28,8,1],[1998,490,125,2,20,6,89,5,2,22,130,24,26,4,2,26,3,2],[1999,494,190,2,24,5,33,1,1,23,128,18,26,8,4,15,9,5],[2000,507,182,3,16,3,31,4,\"\",23,147,25,27,17,7,16,4,\"\"],[2001,443,172,3,26,2,24,3,3,21,116,22,15,6,3,12,12,1],[2002,407,121,\"\",15,\"\",20,2,1,29,124,16,31,7,2,31,6,1],[2003,459,147,\"\",18,3,53,4,1,19,116,36,24,4,\"\",30,2,2],[2004,439,151,2,20,\"\",12,2,3,18,129,12,29,15,4,15,17,4],[2005,484,104,1,9,3,107,2,\"\",26,164,12,18,8,2,13,11,2],[2006,382,100,1,16,1,31,2,\"\",9,152,11,16,4,1,22,11,4],[2007,299,72,2,8,\"\",38,\"\",2,15,111,12,8,10,2,7,10,2],[2008,266,58,1,28,1,13,1,\"\",21,87,3,10,8,\"\",16,12,5],[2009,266,61,2,3,\"\",41,1,1,21,90,8,16,3,\"\",15,4,\"\"],[2010,202,46,\"\",\"\",\"\",60,\"\",\"\",15,53,6,7,\"\",\"\",10,3,2],[2011,159,36,\"\",1,2,16,\"\",\"\",8,81,3,3,\"\",\"\",8,1,\"\"],[2012,78,16,\"\",3,\"\",2,\"\",\"\",2,42,\"\",3,\"\",\"\",6,3,1],[2013,53,13,\"\",\"\",1,1,\"\",\"\",3,24,2,3,\"\",1,2,3,\"\"],[2014,28,2,\"\",\"\",\"\",\"\",\"\",\"\",1,19,1,4,\"\",\"\",\"\",1,\"\"]]'\nreply: 'HTTP\/1.1 200 rn'\nheader: Date: Thu, 14 Jul 2022 20:09:04 GMT\nheader: Content-Type: application\/json;charset=UTF-8\nheader: Transfer-Encoding: chunked\nheader: Connection: keep-alive\nheader: Server: Apache\/2.4.6 (CentOS)\n<\/code><\/pre>\n<p>Ensure that you get a response with a status code 200. Below is a snippet of the response message received in our case.<\/p>\n<p>reply: <mark>&#8216;HTTP\/1.1 200 rn&#8217;<\/mark><br \/>\nheader: Date: Thu, 14 Jul 2022 20:09:04 GMT<br \/>\nheader: Content-Type: application\/json;charset=UTF-8<br \/>\nheader: Transfer-Encoding: chunked<br \/>\nheader: Connection: keep-alive<br \/>\nheader: Server: Apache\/2.4.6 (CentOS)<\/p>\n<h2>The Analysis Phase &#8211; Harnessing the Power of GridDB&#8217;s SQL Engine<\/h2>\n<p>It&#8217;s a known fact that GridDB is a no-sql database that is suited for processes that require highly scalability and performance. However, GridDB also offers a SQL utility for developers who are comfortable with SQL query syntax. The good news is that the SQL utility offered by GridDB is not only easy to use but is also extremely fast in retrieving results. As part of our Analysis, we will be querying the alien species data in GridDB using different SQL statements and will plot the results in Python.<\/p>\n<p>An example is as below &#8211; request_body = &#8216;[{&#8220;type&#8221;:&#8221;sql-select&#8221;, &#8220;stmt&#8221;:&#8221;select * from Alien_Species_Analysis where Year=2000&#8243;}]&#8217; x = requests.post(url, data=request_body, headers=header_obj)<\/p>\n<p>Note that the table name here is the container name that you had created.<\/p>\n<h3>How many alien species have we had across different centuries?<\/h3>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Setup the URL to be used to invoke the GridDB WebAPI to retrieve data from the container\nurl = 'https:\/\/cloud1.griddb.com\/trial1302\/griddb\/v2\/gs_clustertrial1302\/dbs\/public\/sql'\n\n#Construct the request body which has the SQL that is to be used to retrieve the data\nrequest_body = '[{\"type\":\"sql-select\", \"stmt\":\"SELECT CASE when Year between 1500 and 1599 then 16 when Year between 1600 and 1699 then 17 when Year between 1700 and 1799 then 18 when Year between 1800 and 1899 then 19 when Year between 1900 and 1999 then 20 when Year between 2000 and 2099 then 21 end as Century, sum([All]) as cnt from Alien_Species_Analysis group by 1\"}]'\n\n#Invoke the GridDB WebAPI\nx = requests.post(url, data=request_body, headers=header_obj)\n<\/code><\/pre>\n<\/div>\n<pre><code>send: b'POST \/trial1302\/griddb\/v2\/gs_clustertrial1302\/dbs\/public\/sql HTTP\/1.1rnHost: cloud1.griddb.comrnUser-Agent: PostmanRuntime\/7.29.0rnAccept-Encoding: gzip, deflate, brrnAccept: *\/*rnConnection: keep-alivernAuthorization: Basic U3ViaGE6Yjk+RWtDUA==rnContent-Type: application\/json; charset=UTF-8rnContent-Length: 358rnrn'\nsend: b'[{\"type\":\"sql-select\", \"stmt\":\"SELECT CASE when Year between 1500 and 1599 then 16 when Year between 1600 and 1699 then 17 when Year between 1700 and 1799 then 18 when Year between 1800 and 1899 then 19 when Year between 1900 and 1999 then 20 when Year between 2000 and 2099 then 21 end as Century, sum([All]) as cnt from Alien_Species_Analysis group by 1\"}]'\nreply: 'HTTP\/1.1 200 rn'\nheader: Date: Thu, 14 Jul 2022 21:24:39 GMT\nheader: Content-Type: application\/json;charset=UTF-8\nheader: Transfer-Encoding: chunked\nheader: Connection: keep-alive\nheader: Server: Apache\/2.4.6 (CentOS)\n\n\n\n'[{\"columns\":[{\"name\":\"Century\",\"type\":\"LONG\"},{\"name\":\"cnt\",\"type\":\"LONG\"}],\"results\":[[16,265],[17,438],[18,922],[19,9270],[20,30446],[21,4472]]}]'\n<\/code><\/pre>\n<p>Tip: My dataset has a column &#8216;All&#8217;. In the above query, I&#8217;ve used SUM([All]) enclosed in square brackets. This is because &#8216;All&#8217; is a reserved keyword in SQL.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Process the response received and construct a Pandas dataframe with the data from the response\nmyJson = x.json()\n\nAlien_spcs_centuries = pd.DataFrame(myJson[0][\"results\"], columns=[myJson[0][\"columns\"][0][\"name\"], myJson[0][\"columns\"][1][\"name\"]])\n<\/code><\/pre>\n<\/div>\n<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }<\/p>\n<p>    .dataframe tbody tr th {\n        vertical-align: top;\n    }<\/p>\n<p>    .dataframe thead th {\n        text-align: right;\n    }\n  <\/style>\n<table border=\"1\" class=\"dataframe\">\n<thead>\n<tr style=\"text-align: right;\">\n<th>\n        <\/th>\n<th>\n          Century\n        <\/th>\n<th>\n          cnt\n        <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<th>\n          0\n        <\/th>\n<td>\n          16\n        <\/td>\n<td>\n          265\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          1\n        <\/th>\n<td>\n          17\n        <\/td>\n<td>\n          438\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          2\n        <\/th>\n<td>\n          18\n        <\/td>\n<td>\n          922\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          3\n        <\/th>\n<td>\n          19\n        <\/td>\n<td>\n          9270\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          4\n        <\/th>\n<td>\n          20\n        <\/td>\n<td>\n          30446\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          5\n        <\/th>\n<td>\n          21\n        <\/td>\n<td>\n          4472\n        <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Plot a barplot using Seaborn\n\nimport seaborn as sns\n\nplt.figure(figsize = (15,8))\nax = sns.barplot(x = 'Century', y = 'cnt', data = Alien_spcs_centuries)\nax.set_xticklabels(['16th Century', '17th Century', '18th Century', '19th Century', '20st Century', '21st Century'])\nax.set(ylabel='Number of alien species')\nax.set_title ('How many alien species have we had across different centuries?',fontsize=22)<\/code><\/pre>\n<\/div>\n<pre><code>Text(0.5, 1.0, 'How many alien species have we had across different centuries?')\n<\/code><\/pre>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/output_27_1.png\"><img decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/output_27_1.png\" alt=\"\" width=\"904\" height=\"502\" class=\"aligncenter size-full wp-image-28620\" srcset=\"\/wp-content\/uploads\/2022\/08\/output_27_1.png 904w, \/wp-content\/uploads\/2022\/08\/output_27_1-300x167.png 300w, \/wp-content\/uploads\/2022\/08\/output_27_1-768x426.png 768w, \/wp-content\/uploads\/2022\/08\/output_27_1-600x333.png 600w\" sizes=\"(max-width: 904px) 100vw, 904px\" \/><\/a><\/p>\n<p>Inference: The most number of alien species were recorded around the 20th century. However, this may also be due to the increased population in the 20th century as well as advanced technology being available compared to earlier centuries. The overall number for the 21st century seems low as only 20 out of the 100 years in the century have elapsed and data is available only for 14 of the 20 elapsed years. Numbers for the 21st century are on track to be higher than the numbers for the 20th century once the 21st century has completely elapsed.<\/p>\n<h3>What types of alien species have been recorded so far?<\/h3>\n<p>Tip: The below query uses type-casting. GridDB supports standard SQL type-casting.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Constuct the SQL query to be used to retrieve the data for each alien type.\nsql =(\"SELECT 'Vascular Plants' AS AlienType, SUM(CASE WHEN LENGTH(VascularPlants)=0 THEN 0 ELSE CAST(VascularPlants AS INTEGER) END) AS Count \" \n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Bryophytes', SUM(CASE WHEN LENGTH(Bryophytes)=0 THEN 0 ELSE CAST(Bryophytes AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Algae', SUM(CASE WHEN LENGTH(Algae)=0 THEN 0 ELSE CAST(Algae AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Mammals', SUM(CASE WHEN LENGTH(Mammals)=0 THEN 0 ELSE CAST(Mammals AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Birds', SUM(CASE WHEN LENGTH(Birds)=0 THEN 0 ELSE CAST(Birds AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Reptiles', SUM(CASE WHEN LENGTH(Reptiles)=0 THEN 0 ELSE CAST(Reptiles AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Amphibians', SUM(CASE WHEN LENGTH(Amphibians)=0 THEN 0 ELSE CAST(Amphibians AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Fishes', SUM(CASE WHEN LENGTH(Fishes)=0 THEN 0 ELSE CAST(Fishes AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Insects', SUM(CASE WHEN LENGTH(Insects)=0 THEN 0 ELSE CAST(Insects AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Molluscs', SUM(CASE WHEN LENGTH(Molluscs)=0 THEN 0 ELSE CAST(Molluscs AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Crustaceans', SUM(CASE WHEN LENGTH(Crustaceans)=0 THEN 0 ELSE CAST(Crustaceans AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Arachnids', SUM(CASE WHEN LENGTH(Arachnids)=0 THEN 0 ELSE CAST(Arachnids AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Arthropods', SUM(CASE WHEN LENGTH(Arthropods)=0 THEN 0 ELSE CAST(Arthropods AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Invertebrates', SUM(CASE WHEN LENGTH(Invertebrates)=0 THEN 0 ELSE CAST(Invertebrates AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Fungi', SUM(CASE WHEN LENGTH(Fungi)=0 THEN 0 ELSE CAST(Fungi AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'BacteriaProtozoans', SUM(CASE WHEN LENGTH(BacteriaProtozoans)=0 THEN 0 ELSE CAST(BacteriaProtozoans AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1\")<\/code><\/pre>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Setup the GridDB WebAPI URL to retrieve data from the previously created container\nurl = 'https:\/\/cloud1.griddb.com\/trial1302\/griddb\/v2\/gs_clustertrial1302\/dbs\/public\/sql'\n\n#Construct the request to be used for the GridDB WebAPI call\nrequest_body = '[{\"type\":\"sql-select\", \"stmt\":\"'+sql+'\"}]'\n\n#Invoke the GridDB WebAPI\nx = requests.post(url, data=request_body, headers=header_obj)\n<\/code><\/pre>\n<\/div>\n<pre><code>send: b'POST \/trial1302\/griddb\/v2\/gs_clustertrial1302\/dbs\/public\/sql HTTP\/1.1rnHost: cloud1.griddb.comrnUser-Agent: PostmanRuntime\/7.29.0rnAccept-Encoding: gzip, deflate, brrnAccept: *\/*rnConnection: keep-alivernAuthorization: Basic U3ViaGE6Yjk+RWtDUA==rnContent-Type: application\/json; charset=UTF-8rnContent-Length: 2360rnrn'\nsend: b'[{\"type\":\"sql-select\", \"stmt\":\"SELECT 'Vascular Plants' AS AlienType, SUM(CASE WHEN LENGTH(VascularPlants)=0 THEN 0 ELSE CAST(VascularPlants AS INTEGER) END) AS Count  from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Bryophytes', SUM(CASE WHEN LENGTH(Bryophytes)=0 THEN 0 ELSE CAST(Bryophytes AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Algae', SUM(CASE WHEN LENGTH(Algae)=0 THEN 0 ELSE CAST(Algae AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Mammals', SUM(CASE WHEN LENGTH(Mammals)=0 THEN 0 ELSE CAST(Mammals AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Birds', SUM(CASE WHEN LENGTH(Birds)=0 THEN 0 ELSE CAST(Birds AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Reptiles', SUM(CASE WHEN LENGTH(Reptiles)=0 THEN 0 ELSE CAST(Reptiles AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Amphibians', SUM(CASE WHEN LENGTH(Amphibians)=0 THEN 0 ELSE CAST(Amphibians AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Fishes', SUM(CASE WHEN LENGTH(Fishes)=0 THEN 0 ELSE CAST(Fishes AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Insects', SUM(CASE WHEN LENGTH(Insects)=0 THEN 0 ELSE CAST(Insects AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Molluscs', SUM(CASE WHEN LENGTH(Molluscs)=0 THEN 0 ELSE CAST(Molluscs AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Crustaceans', SUM(CASE WHEN LENGTH(Crustaceans)=0 THEN 0 ELSE CAST(Crustaceans AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Arachnids', SUM(CASE WHEN LENGTH(Arachnids)=0 THEN 0 ELSE CAST(Arachnids AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Arthropods', SUM(CASE WHEN LENGTH(Arthropods)=0 THEN 0 ELSE CAST(Arthropods AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Invertebrates', SUM(CASE WHEN LENGTH(Invertebrates)=0 THEN 0 ELSE CAST(Invertebrates AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'Fungi', SUM(CASE WHEN LENGTH(Fungi)=0 THEN 0 ELSE CAST(Fungi AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT 'BacteriaProtozoans', SUM(CASE WHEN LENGTH(BacteriaProtozoans)=0 THEN 0 ELSE CAST(BacteriaProtozoans AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1\"}]'\nreply: 'HTTP\/1.1 200 rn'\nheader: Date: Fri, 15 Jul 2022 00:47:46 GMT\nheader: Content-Type: application\/json;charset=UTF-8\nheader: Transfer-Encoding: chunked\nheader: Connection: keep-alive\nheader: Server: Apache\/2.4.6 (CentOS)\n\n\n\n\n\n'[{\"columns\":[{\"name\":\"AlienType\",\"type\":\"STRING\"},{\"name\":\"Count\",\"type\":\"LONG\"}],\"results\":[[\"Insects\",10023],[\"Arthropods\",99],[\"Fishes\",2153],[\"Birds\",2909],[\"Vascular Plants\",23354],[\"Reptiles\",375],[\"Bryophytes\",145],[\"Amphibians\",257],[\"Molluscs\",1193],[\"Invertebrates\",1172],[\"BacteriaProtozoans\",104],[\"Mammals\",1389],[\"Fungi\",414],[\"Algae\",746],[\"Crustaceans\",1099],[\"Arachnids\",322]]}]'\n<\/code><\/pre>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Process the response received from the GriDB WebAPI invocation\nmyJson = x.json()\n\n#Create a Pandas dataframe from the response received\nTypes_Alien_spcs = pd.DataFrame(myJson[0][\"results\"], columns=[myJson[0][\"columns\"][0][\"name\"], myJson[0][\"columns\"][1][\"name\"]])\n<\/code><\/pre>\n<\/div>\n<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }<\/p>\n<p>    .dataframe tbody tr th {\n        vertical-align: top;\n    }<\/p>\n<p>    .dataframe thead th {\n        text-align: right;\n    }\n  <\/style>\n<table border=\"1\" class=\"dataframe\">\n<thead>\n<tr style=\"text-align: right;\">\n<th>\n        <\/th>\n<th>\n          AlienType\n        <\/th>\n<th>\n          Count\n        <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<th>\n          0\n        <\/th>\n<td>\n          Insects\n        <\/td>\n<td>\n          10023\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          1\n        <\/th>\n<td>\n          Arthropods\n        <\/td>\n<td>\n          99\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          2\n        <\/th>\n<td>\n          Fishes\n        <\/td>\n<td>\n          2153\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          3\n        <\/th>\n<td>\n          Birds\n        <\/td>\n<td>\n          2909\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          4\n        <\/th>\n<td>\n          Vascular Plants\n        <\/td>\n<td>\n          23354\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          5\n        <\/th>\n<td>\n          Reptiles\n        <\/td>\n<td>\n          375\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          6\n        <\/th>\n<td>\n          Bryophytes\n        <\/td>\n<td>\n          145\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          7\n        <\/th>\n<td>\n          Amphibians\n        <\/td>\n<td>\n          257\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          8\n        <\/th>\n<td>\n          Molluscs\n        <\/td>\n<td>\n          1193\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          9\n        <\/th>\n<td>\n          Invertebrates\n        <\/td>\n<td>\n          1172\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          10\n        <\/th>\n<td>\n          BacteriaProtozoans\n        <\/td>\n<td>\n          104\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          11\n        <\/th>\n<td>\n          Mammals\n        <\/td>\n<td>\n          1389\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          12\n        <\/th>\n<td>\n          Fungi\n        <\/td>\n<td>\n          414\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          13\n        <\/th>\n<td>\n          Algae\n        <\/td>\n<td>\n          746\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          14\n        <\/th>\n<td>\n          Crustaceans\n        <\/td>\n<td>\n          1099\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          15\n        <\/th>\n<td>\n          Arachnids\n        <\/td>\n<td>\n          322\n        <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Calculating percentage of totals for each type of species\npct_alien_types= (Types_Alien_spcs['Count']\/Types_Alien_spcs['Count'].sum())*100\nTypes_Alien_spcs['pct_alien_types'] = pct_alien_types\n\n#Create a vertical stem plot\nfig, ax = plt.subplots(figsize=(15,10))\n\nplt.hlines(y=Types_Alien_spcs['AlienType'], \n           xmin=0, xmax=Types_Alien_spcs['pct_alien_types'], \n           color='blue',\n           linestyle='dashed', linewidth=2)\n\nplt.plot(Types_Alien_spcs['pct_alien_types'],Types_Alien_spcs['AlienType'],\"pc\",alpha=0.5,markersize=18)\n\nplt.title('Types of Alien Species recorded so far', fontsize=22)\nplt.xlim(0,55)\nplt.yticks(fontsize=12)\nplt.xticks(fontsize=12)\nax.tick_params()\nsns.despine()\nplt.show()<\/code><\/pre>\n<\/div>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/output_34_0.png\"><img decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/output_34_0.png\" alt=\"\" width=\"974\" height=\"600\" class=\"aligncenter size-full wp-image-28619\" srcset=\"\/wp-content\/uploads\/2022\/08\/output_34_0.png 974w, \/wp-content\/uploads\/2022\/08\/output_34_0-300x185.png 300w, \/wp-content\/uploads\/2022\/08\/output_34_0-768x473.png 768w, \/wp-content\/uploads\/2022\/08\/output_34_0-600x370.png 600w\" sizes=\"(max-width: 974px) 100vw, 974px\" \/><\/a><\/p>\n<p>Inference: The above plot shows that vascular plants have been the most recorded alien species; followed by insects.<\/p>\n<h3>In the 20th century, what does the distribution of alien species look like?<\/h3>\n<p>GridDB supports SQL sub-queries too. In this case, I am using a sub-query to aggregate alien types by century.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Construct the sub-query SQL to be used\nsql = (\"SELECT CASE when Year between 1500 and 1599 then 16 when Year between 1600 and 1699 then 17 when Year between 1700 and 1799 then 18 when Year between 1800 and 1899 then 19 when Year between 1900 and 1999 then 20 when Year between 2000 and 2099 then 21 end as Century, AlienType, SUM(Count) As Count FROM (\"\n\"SELECT Year,'Vascular Plants' AS AlienType, SUM(CASE WHEN LENGTH(VascularPlants)=0 THEN 0 ELSE CAST(VascularPlants AS INTEGER) END) AS Count \" \n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Bryophytes', SUM(CASE WHEN LENGTH(Bryophytes)=0 THEN 0 ELSE CAST(Bryophytes AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Algae', SUM(CASE WHEN LENGTH(Algae)=0 THEN 0 ELSE CAST(Algae AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Mammals', SUM(CASE WHEN LENGTH(Mammals)=0 THEN 0 ELSE CAST(Mammals AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Birds', SUM(CASE WHEN LENGTH(Birds)=0 THEN 0 ELSE CAST(Birds AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Reptiles', SUM(CASE WHEN LENGTH(Reptiles)=0 THEN 0 ELSE CAST(Reptiles AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Amphibians', SUM(CASE WHEN LENGTH(Amphibians)=0 THEN 0 ELSE CAST(Amphibians AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Fishes', SUM(CASE WHEN LENGTH(Fishes)=0 THEN 0 ELSE CAST(Fishes AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Insects', SUM(CASE WHEN LENGTH(Insects)=0 THEN 0 ELSE CAST(Insects AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Molluscs', SUM(CASE WHEN LENGTH(Molluscs)=0 THEN 0 ELSE CAST(Molluscs AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Crustaceans', SUM(CASE WHEN LENGTH(Crustaceans)=0 THEN 0 ELSE CAST(Crustaceans AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Arachnids', SUM(CASE WHEN LENGTH(Arachnids)=0 THEN 0 ELSE CAST(Arachnids AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Arthropods', SUM(CASE WHEN LENGTH(Arthropods)=0 THEN 0 ELSE CAST(Arthropods AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Invertebrates', SUM(CASE WHEN LENGTH(Invertebrates)=0 THEN 0 ELSE CAST(Invertebrates AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Fungi', SUM(CASE WHEN LENGTH(Fungi)=0 THEN 0 ELSE CAST(Fungi AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'BacteriaProtozoans', SUM(CASE WHEN LENGTH(BacteriaProtozoans)=0 THEN 0 ELSE CAST(BacteriaProtozoans AS INTEGER) END) \"\n\" from Alien_Species_Analysis GROUP BY 1 \"\n\") Table_A GROUP BY 1,2\")<\/code><\/pre>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Construct the URL to be used to invoke the GridDB WebAPI to retrieve data\nurl = 'https:\/\/cloud1.griddb.com\/trial1302\/griddb\/v2\/gs_clustertrial1302\/dbs\/public\/sql'\n\n#Construct the request to be used during the GridDB WebAPI invocation \nrequest_body = '[{\"type\":\"sql-select\", \"stmt\":\"'+sql+'\"}]'\n\n#Invoke the GridDB WebAPI\nx = requests.post(url, data=request_body, headers=header_obj)<\/code><\/pre>\n<\/div>\n<pre><code>send: b'POST \/trial1302\/griddb\/v2\/gs_clustertrial1302\/dbs\/public\/sql HTTP\/1.1rnHost: cloud1.griddb.comrnUser-Agent: PostmanRuntime\/7.29.0rnAccept-Encoding: gzip, deflate, brrnAccept: *\/*rnConnection: keep-alivernAuthorization: Basic U3ViaGE6Yjk+RWtDUA==rnContent-Type: application\/json; charset=UTF-8rnContent-Length: 2768rnrn'\nsend: b'[{\"type\":\"sql-select\", \"stmt\":\"SELECT CASE when Year between 1500 and 1599 then 16 when Year between 1600 and 1699 then 17 when Year between 1700 and 1799 then 18 when Year between 1800 and 1899 then 19 when Year between 1900 and 1999 then 20 when Year between 2000 and 2099 then 21 end as Century, AlienType, SUM(Count) As Count FROM (SELECT Year,'Vascular Plants' AS AlienType, SUM(CASE WHEN LENGTH(VascularPlants)=0 THEN 0 ELSE CAST(VascularPlants AS INTEGER) END) AS Count  from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Bryophytes', SUM(CASE WHEN LENGTH(Bryophytes)=0 THEN 0 ELSE CAST(Bryophytes AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Algae', SUM(CASE WHEN LENGTH(Algae)=0 THEN 0 ELSE CAST(Algae AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Mammals', SUM(CASE WHEN LENGTH(Mammals)=0 THEN 0 ELSE CAST(Mammals AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Birds', SUM(CASE WHEN LENGTH(Birds)=0 THEN 0 ELSE CAST(Birds AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Reptiles', SUM(CASE WHEN LENGTH(Reptiles)=0 THEN 0 ELSE CAST(Reptiles AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Amphibians', SUM(CASE WHEN LENGTH(Amphibians)=0 THEN 0 ELSE CAST(Amphibians AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Fishes', SUM(CASE WHEN LENGTH(Fishes)=0 THEN 0 ELSE CAST(Fishes AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Insects', SUM(CASE WHEN LENGTH(Insects)=0 THEN 0 ELSE CAST(Insects AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Molluscs', SUM(CASE WHEN LENGTH(Molluscs)=0 THEN 0 ELSE CAST(Molluscs AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Crustaceans', SUM(CASE WHEN LENGTH(Crustaceans)=0 THEN 0 ELSE CAST(Crustaceans AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Arachnids', SUM(CASE WHEN LENGTH(Arachnids)=0 THEN 0 ELSE CAST(Arachnids AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Arthropods', SUM(CASE WHEN LENGTH(Arthropods)=0 THEN 0 ELSE CAST(Arthropods AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Invertebrates', SUM(CASE WHEN LENGTH(Invertebrates)=0 THEN 0 ELSE CAST(Invertebrates AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'Fungi', SUM(CASE WHEN LENGTH(Fungi)=0 THEN 0 ELSE CAST(Fungi AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 UNION SELECT Year,'BacteriaProtozoans', SUM(CASE WHEN LENGTH(BacteriaProtozoans)=0 THEN 0 ELSE CAST(BacteriaProtozoans AS INTEGER) END)  from Alien_Species_Analysis GROUP BY 1 ) Table_A GROUP BY 1,2\"}]'\nreply: 'HTTP\/1.1 200 rn'\nheader: Date: Fri, 15 Jul 2022 03:12:56 GMT\nheader: Content-Type: application\/json;charset=UTF-8\nheader: Transfer-Encoding: chunked\nheader: Connection: keep-alive\nheader: Server: Apache\/2.4.6 (CentOS)\n<\/code><\/pre>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Process the response received from the invocation of the GridDB WebAPI\nmyJson = x.json()\n\n#Construct a Pandas dataframe with the data from the response\nAlien_Dist_century = pd.DataFrame(myJson[0][\"results\"], columns=[myJson[0][\"columns\"][0][\"name\"], myJson[0][\"columns\"][1][\"name\"],myJson[0][\"columns\"][2][\"name\"]])\n<\/code><\/pre>\n<\/div>\n<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }<\/p>\n<p>    .dataframe tbody tr th {\n        vertical-align: top;\n    }<\/p>\n<p>    .dataframe thead th {\n        text-align: right;\n    }\n  <\/style>\n<table border=\"1\" class=\"dataframe\">\n<thead>\n<tr style=\"text-align: right;\">\n<th>\n        <\/th>\n<th>\n          Century\n        <\/th>\n<th>\n          AlienType\n        <\/th>\n<th>\n          Count\n        <\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<th>\n          0\n        <\/th>\n<td>\n          19\n        <\/td>\n<td>\n          Insects\n        <\/td>\n<td>\n          831\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          1\n        <\/th>\n<td>\n          20\n        <\/td>\n<td>\n          Reptiles\n        <\/td>\n<td>\n          315\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          2\n        <\/th>\n<td>\n          20\n        <\/td>\n<td>\n          Bryophytes\n        <\/td>\n<td>\n          124\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          3\n        <\/th>\n<td>\n          18\n        <\/td>\n<td>\n          Vascular Plants\n        <\/td>\n<td>\n          636\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          4\n        <\/th>\n<td>\n          18\n        <\/td>\n<td>\n          Reptiles\n        <\/td>\n<td>\n          0\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          &#8230;\n        <\/th>\n<td>\n          &#8230;\n        <\/td>\n<td>\n          &#8230;\n        <\/td>\n<td>\n          &#8230;\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          91\n        <\/th>\n<td>\n          18\n        <\/td>\n<td>\n          Molluscs\n        <\/td>\n<td>\n          10\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          92\n        <\/th>\n<td>\n          20\n        <\/td>\n<td>\n          Arachnids\n        <\/td>\n<td>\n          220\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          93\n        <\/th>\n<td>\n          16\n        <\/td>\n<td>\n          Birds\n        <\/td>\n<td>\n          24\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          94\n        <\/th>\n<td>\n          21\n        <\/td>\n<td>\n          Arthropods\n        <\/td>\n<td>\n          22\n        <\/td>\n<\/tr>\n<tr>\n<th>\n          95\n        <\/th>\n<td>\n          19\n        <\/td>\n<td>\n          Arachnids\n        <\/td>\n<td>\n          20\n        <\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>\n    96 rows \u00d7 3 columns\n  <\/p>\n<\/div>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Create a Strip Plot with the data\nfig, ax = plt.subplots(figsize=(16,9))\nsns.set(style='darkgrid')\nplt.title(\"Distribution of Alien Species across centuries\", fontsize=16)\nplt.ylim(0,1000)\nplt.xticks(rotation=45)\nplt.yticks([-40,-20,0,20,40,60,80,100,150,200,400,600])\nsns.stripplot(x='AlienType',y='Count',hue='Century',data=Alien_Dist_century)<\/code><\/pre>\n<\/div>\n<pre><code>&lt;AxesSubplot:title={'center':'Distribution of Alien Species across centuries'}, xlabel='AlienType', ylabel='Count'&gt;\n<\/code><\/pre>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/output_41_1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/output_41_1.png\" alt=\"\" width=\"949\" height=\"620\" class=\"aligncenter size-full wp-image-28618\" srcset=\"\/wp-content\/uploads\/2022\/08\/output_41_1.png 949w, \/wp-content\/uploads\/2022\/08\/output_41_1-300x196.png 300w, \/wp-content\/uploads\/2022\/08\/output_41_1-768x502.png 768w, \/wp-content\/uploads\/2022\/08\/output_41_1-600x392.png 600w\" sizes=\"(max-width: 949px) 100vw, 949px\" \/><\/a><\/p>\n<p>Inference: Alien forms of Fungi seem to have been prevalent almost across all centuries. Insects were first recorded as early as the 16th century. Alien Vascular Plants have been recorded in the 16th and 17th centuries. Alien Arachnids, Amphibians, Reptiles have been recorded in the 20th and 21st centuries.<\/p>\n<h3>Are there any anomalies in the distribution of alien species?<\/h3>\n<p>Let&#8217;s reuse the data from the earlier GridDB WebAPI invocation.<\/p>\n<div class=\"clipboard\">\n<pre><code class=\"language-python\">#Construct a scatter plot\nfig = plt.figure(figsize=(14, 7), dpi= 80, facecolor='w', edgecolor='k')    \nplt.scatter('AlienType', 'Century', data=Alien_Dist_century, s='Count', c='Count', cmap='Reds', edgecolors='black', linewidths=.5)\nplt.title(\"Density Mapping of Alien types \", fontsize=16)\nplt.xlabel('AlienType', fontsize=18)\nplt.ylabel('Century', fontsize=18)\nplt.xticks(rotation=90)\nplt.colorbar()\nplt.show()<\/code><\/pre>\n<\/div>\n<p><a href=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/output_45_0.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/griddb.net\/wp-content\/uploads\/2022\/08\/output_45_0.png\" alt=\"\" width=\"866\" height=\"600\" class=\"aligncenter size-full wp-image-28617\" srcset=\"\/wp-content\/uploads\/2022\/08\/output_45_0.png 866w, \/wp-content\/uploads\/2022\/08\/output_45_0-300x208.png 300w, \/wp-content\/uploads\/2022\/08\/output_45_0-768x532.png 768w, \/wp-content\/uploads\/2022\/08\/output_45_0-600x416.png 600w\" sizes=\"(max-width: 866px) 100vw, 866px\" \/><\/a><\/p>\n<p>Inference: There are 3 major anomalies observed among Vascular Plants and Insects. There is an alarmingly high incidence of Vascular Plants in the 19th and 20th centuries. Insects too have had a high incidence as of the 20th century. Another interesting anomaly is that among alien species of Fishes and Mammals. While looking at the historic trend of fishes and mammals, fishes have always had a lower incidence than mammals. However, in the 20th century, the incidence of alien fishes has been way higher than that of mammals.<\/p>\n<h2>Concluding Remarks<\/h2>\n<p>This article explained about GridDB&#8217;s SQL capabilities and the power of GridDB&#8217;s WebAPI and its ease of integration with custom python applications.&#96;<code><\/code><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Overview Most Sci-fi movie enthusiasts are intrigued by the question \u2018Do we have alien life on earth?\u2019 In addition to being a sci-fi enthusiast, if you happen to be a data science enthusiast\/practitioner, then this blog is for you. Being a data science practitioner myself, I have often wondered if there is any dataset that [&hellip;]<\/p>\n","protected":false},"author":41,"featured_media":28631,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[121],"tags":[],"class_list":["post-46720","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Alien Life on Earth \u2013 Analysis Using GridDB and Python | GridDB: Open Source Time Series Database for IoT<\/title>\n<meta name=\"description\" content=\"Overview Most Sci-fi movie enthusiasts are intrigued by the question \u2018Do we have alien life on earth?\u2019 In addition to being a sci-fi enthusiast, if you\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Alien Life on Earth \u2013 Analysis Using GridDB and Python | GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"og:description\" content=\"Overview Most Sci-fi movie enthusiasts are intrigued by the question \u2018Do we have alien life on earth?\u2019 In addition to being a sci-fi enthusiast, if you\" \/>\n<meta property=\"og:url\" content=\"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/\" \/>\n<meta property=\"og:site_name\" content=\"GridDB: Open Source Time Series Database for IoT\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/griddbcommunity\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-08-30T07:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-13T20:56:13+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.griddb.net\/wp-content\/uploads\/2022\/08\/download-1.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1229\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"griddb-admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:site\" content=\"@GridDBCommunity\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"griddb-admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"21 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/\"},\"author\":{\"name\":\"griddb-admin\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233\"},\"headline\":\"Alien Life on Earth \u2013 Analysis Using GridDB and Python\",\"datePublished\":\"2022-08-30T07:00:00+00:00\",\"dateModified\":\"2025-11-13T20:56:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/\"},\"wordCount\":1260,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2022\/08\/download-1.jpeg\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/\",\"url\":\"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/\",\"name\":\"Alien Life on Earth \u2013 Analysis Using GridDB and Python | GridDB: Open Source Time Series Database for IoT\",\"isPartOf\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/#primaryimage\"},\"thumbnailUrl\":\"\/wp-content\/uploads\/2022\/08\/download-1.jpeg\",\"datePublished\":\"2022-08-30T07:00:00+00:00\",\"dateModified\":\"2025-11-13T20:56:13+00:00\",\"description\":\"Overview Most Sci-fi movie enthusiasts are intrigued by the question \u2018Do we have alien life on earth?\u2019 In addition to being a sci-fi enthusiast, if you\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/#primaryimage\",\"url\":\"\/wp-content\/uploads\/2022\/08\/download-1.jpeg\",\"contentUrl\":\"\/wp-content\/uploads\/2022\/08\/download-1.jpeg\",\"width\":1920,\"height\":1229},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website\",\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/\",\"name\":\"GridDB: Open Source Time Series Database for IoT\",\"description\":\"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL\",\"publisher\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization\",\"name\":\"Fixstars\",\"url\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"contentUrl\":\"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png\",\"width\":200,\"height\":83,\"caption\":\"Fixstars\"},\"image\":{\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/griddbcommunity\/\",\"https:\/\/x.com\/GridDBCommunity\",\"https:\/\/www.linkedin.com\/company\/griddb-by-toshiba\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233\",\"name\":\"griddb-admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g\",\"caption\":\"griddb-admin\"},\"url\":\"https:\/\/www.griddb.net\/en\/author\/griddb-admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Alien Life on Earth \u2013 Analysis Using GridDB and Python | GridDB: Open Source Time Series Database for IoT","description":"Overview Most Sci-fi movie enthusiasts are intrigued by the question \u2018Do we have alien life on earth?\u2019 In addition to being a sci-fi enthusiast, if you","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/","og_locale":"en_US","og_type":"article","og_title":"Alien Life on Earth \u2013 Analysis Using GridDB and Python | GridDB: Open Source Time Series Database for IoT","og_description":"Overview Most Sci-fi movie enthusiasts are intrigued by the question \u2018Do we have alien life on earth?\u2019 In addition to being a sci-fi enthusiast, if you","og_url":"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/","og_site_name":"GridDB: Open Source Time Series Database for IoT","article_publisher":"https:\/\/www.facebook.com\/griddbcommunity\/","article_published_time":"2022-08-30T07:00:00+00:00","article_modified_time":"2025-11-13T20:56:13+00:00","og_image":[{"width":1920,"height":1229,"url":"https:\/\/www.griddb.net\/wp-content\/uploads\/2022\/08\/download-1.jpeg","type":"image\/jpeg"}],"author":"griddb-admin","twitter_card":"summary_large_image","twitter_creator":"@GridDBCommunity","twitter_site":"@GridDBCommunity","twitter_misc":{"Written by":"griddb-admin","Est. reading time":"21 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/#article","isPartOf":{"@id":"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/"},"author":{"name":"griddb-admin","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233"},"headline":"Alien Life on Earth \u2013 Analysis Using GridDB and Python","datePublished":"2022-08-30T07:00:00+00:00","dateModified":"2025-11-13T20:56:13+00:00","mainEntityOfPage":{"@id":"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/"},"wordCount":1260,"commentCount":0,"publisher":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization"},"image":{"@id":"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2022\/08\/download-1.jpeg","articleSection":["Blog"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/","url":"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/","name":"Alien Life on Earth \u2013 Analysis Using GridDB and Python | GridDB: Open Source Time Series Database for IoT","isPartOf":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/#primaryimage"},"image":{"@id":"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/#primaryimage"},"thumbnailUrl":"\/wp-content\/uploads\/2022\/08\/download-1.jpeg","datePublished":"2022-08-30T07:00:00+00:00","dateModified":"2025-11-13T20:56:13+00:00","description":"Overview Most Sci-fi movie enthusiasts are intrigued by the question \u2018Do we have alien life on earth?\u2019 In addition to being a sci-fi enthusiast, if you","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb.net\/en\/blog\/alien-life-on-earth-analysis-using-griddb-and-python\/#primaryimage","url":"\/wp-content\/uploads\/2022\/08\/download-1.jpeg","contentUrl":"\/wp-content\/uploads\/2022\/08\/download-1.jpeg","width":1920,"height":1229},{"@type":"WebSite","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#website","url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/","name":"GridDB: Open Source Time Series Database for IoT","description":"GridDB is an open source time-series database with the performance of NoSQL and convenience of SQL","publisher":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#organization","name":"Fixstars","url":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/","url":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","contentUrl":"https:\/\/griddb.net\/wp-content\/uploads\/2019\/04\/fixstars_logo_web_tagline.png","width":200,"height":83,"caption":"Fixstars"},"image":{"@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/griddbcommunity\/","https:\/\/x.com\/GridDBCommunity","https:\/\/www.linkedin.com\/company\/griddb-by-toshiba"]},{"@type":"Person","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/4fe914ca9576878e82f5e8dd3ba52233","name":"griddb-admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/griddb-linux-hte8hndjf8cka8ht.westus-01.azurewebsites.net\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5bceca1cafc06886a7ba873e2f0a28011a1176c4dea59709f735b63ae30d0342?s=96&d=mm&r=g","caption":"griddb-admin"},"url":"https:\/\/www.griddb.net\/en\/author\/griddb-admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/posts\/46720","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/users\/41"}],"replies":[{"embeddable":true,"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/comments?post=46720"}],"version-history":[{"count":1,"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/posts\/46720\/revisions"}],"predecessor-version":[{"id":51392,"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/posts\/46720\/revisions\/51392"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/media\/28631"}],"wp:attachment":[{"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/media?parent=46720"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/categories?post=46720"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.griddb.net\/en\/wp-json\/wp\/v2\/tags?post=46720"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}