diff --git a/010-Mustjaab/Analysis-of-wait-times.py b/010-Mustjaab/Analysis-of-wait-times.py
new file mode 100644
index 0000000..a9f2a2e
--- /dev/null
+++ b/010-Mustjaab/Analysis-of-wait-times.py
@@ -0,0 +1,313 @@
+# /// script
+# requires-python = ">=3.12"
+# dependencies = [
+# "pandas==2.2.3",
+# "plotly==5.24.1",
+# "marimo",
+# ]
+# ///
+import marimo
+
+__generated_with = "0.9.7-dev1"
+app = marimo.App(width="medium")
+
+
+@app.cell
+def __():
+ import marimo as mo
+ import pandas as pd
+ import plotly.express as px
+ return mo, pd, px
+
+
+@app.cell
+def __(mo):
+ mo.md(r"""
Analysis of Wait Times for Priority Procedures """).style(
+ {"background-color": "crimson"}
+ )
+ return
+
+
+@app.cell
+def __(mo):
+ mo.md(
+ r"""
+ ## Sections
+
+ General Overview
+ 50th Percentiles
+ Comparing 90th Percentiles
+
+ """
+ )
+ return
+
+
+@app.cell
+def __(pd):
+ Wait_Times = pd.read_csv("Wait_Times_Data.csv")
+ return (Wait_Times,)
+
+
+@app.cell
+def __(mo):
+ mo.md(
+ r"""
+ ## General Overview
+ This notebook will compare the percentile of wait days (50th, and 90th) for various critical procedures in hospitals across Canada. Data was obtained from the Canadian Institute for Health Information (CIHI). Percentiles help us get a better understanding where a value in a dataset stands in comparison to others - is it on the lower end of the set? Is it on the higher end? Or is it smack in the middle? You can learn more about percentiles here.
+ """
+ )
+ return
+
+
+@app.cell
+def __(mo):
+ _df = mo.sql(
+ f"""
+ SELECT *
+ FROM "Wait_Times"
+ WHERE Indicator_result !='n/a'
+ LIMIT 50
+ """
+ )
+ return
+
+
+@app.cell
+def __(mo):
+ mo.md(r""" 50th Percentiles """)
+ return
+
+
+@app.cell
+def __(Bladder_Cancer_df, CABG_df, Lung_Cancer_df, mo):
+ Operation_Options = {
+ "Bladder Cancer Surgery": Bladder_Cancer_df,
+ "CABG": CABG_df,
+ "Lung Cancer Surgery": Lung_Cancer_df,
+ }
+
+ Operation_Choice = mo.ui.dropdown(
+ options=["Bladder Cancer Surgery", "CABG", "Lung Cancer Surgery"],
+ value="Bladder Cancer Surgery",
+ )
+ return Operation_Choice, Operation_Options
+
+
+@app.cell
+def __(Operation_Choice, Operation_Options):
+ Operation_Bar = Operation_Options[Operation_Choice.value]
+ return (Operation_Bar,)
+
+
+@app.cell
+def __(mo):
+ Bladder_Cancer_df = mo.sql(
+ f"""
+ SELECT Province_territory,Indicator,Metric,Data_year,Unit_of_measurement,Indicator_result
+ FROM "Wait_Times"
+ WHERE Province_territory !='Canada'
+ AND Indicator = 'Bladder Cancer Surgery'
+ AND Metric = '50th Percentile'
+ AND Data_year IN ('2013', '2023')
+ And Unit_of_measurement = 'Days'
+ AND Indicator_result !='n/a'
+ ORDER BY Indicator_result ASC
+ """, output=False
+ )
+ return (Bladder_Cancer_df,)
+
+
+@app.cell
+def __(mo):
+ CABG_df = mo.sql(
+ f"""
+ SELECT Province_territory,Indicator,Metric,Data_year,Unit_of_measurement,Indicator_result
+ FROM "Wait_Times"
+ WHERE Province_territory !='Canada'
+ AND Indicator = 'CABG'
+ AND Metric = '50th Percentile'
+ AND Data_year IN ('2013', '2023')
+ And Unit_of_measurement = 'Days'
+ AND Indicator_result !='n/a'
+ ORDER BY Indicator_result ASC
+ """, output=False
+ )
+ return (CABG_df,)
+
+
+@app.cell
+def __(mo):
+ Lung_Cancer_df = mo.sql(
+ f"""
+ SELECT Province_territory,Indicator,Metric,Data_year,Unit_of_measurement,Indicator_result
+ FROM "Wait_Times"
+ WHERE Province_territory !='Canada'
+ AND Indicator = 'Lung Cancer Surgery'
+ AND Metric = '50th Percentile'
+ AND Data_year IN ('2013', '2023')
+ And Unit_of_measurement = 'Days'
+ AND Indicator_result !='n/a'
+ ORDER BY Indicator_result ASC
+ """, output=False
+ )
+ return (Lung_Cancer_df,)
+
+
+@app.cell
+def __(Operation_Choice):
+ Operation_Choice
+ return
+
+
+@app.cell
+def __(Operation_Bar, px):
+ Bladder_Bar = px.bar(Operation_Bar,x='Province_territory',y='Indicator_result', color='Data_year', barmode='group')
+ Bladder_Bar
+ return (Bladder_Bar,)
+
+
+@app.cell
+def __(mo):
+ mo.md(r""" Bar chart comparing 50th percentiles of wait times between 2013 and 2023 across provinces. """).style({'background-color':'brown','color':'white'})
+ return
+
+
+@app.cell
+def __(mo):
+ mo.md(r"""## Comparing 90th Percentiles""")
+ return
+
+
+@app.cell
+def __(mo):
+ Bladder_Cancer_90th_Percentile_2013_df = mo.sql(
+ f"""
+ SELECT Province_territory,Indicator,Metric,Data_year,Unit_of_measurement,Indicator_result
+ FROM "Wait_Times"
+ WHERE Province_territory !='Canada'
+ AND Indicator = 'Bladder Cancer Surgery'
+ AND Metric = '90th Percentile'
+ AND Data_year = '2013'
+ And Unit_of_measurement = 'Days'
+ AND Indicator_result !='n/a'
+ ORDER BY Indicator_result ASC
+ """, output=False
+ )
+ return (Bladder_Cancer_90th_Percentile_2013_df,)
+
+
+@app.cell
+def __(mo):
+ Bladder_Cancer_90th_Percentile_2023_df = mo.sql(
+ f"""
+ SELECT Province_territory,Indicator,Metric,Data_year,Unit_of_measurement,Indicator_result
+ FROM "Wait_Times"
+ WHERE Province_territory != 'Canada'
+ AND Indicator = 'Bladder Cancer Surgery'
+ AND Metric = '90th Percentile'
+ AND Data_year IN ('2023')
+ And Unit_of_measurement = 'Days'
+ AND Indicator_result !='n/a'
+ ORDER BY Indicator_result ASC
+ """, output=False
+ )
+ return (Bladder_Cancer_90th_Percentile_2023_df,)
+
+
+@app.cell
+def __(mo):
+ Lung_Cancer_90th_Percentile_2013_df = mo.sql(
+ f"""
+ SELECT Province_territory,Indicator,Metric,Data_year,Unit_of_measurement,Indicator_result
+ FROM "Wait_Times"
+ WHERE Province_territory != 'Canada'
+ AND Indicator = 'Lung Cancer Surgery'
+ AND Metric = '90th Percentile'
+ AND Data_year IN ('2013')
+ And Unit_of_measurement = 'Days'
+ AND Indicator_result !='n/a'
+ ORDER BY Indicator_result ASC
+ """, output=False
+ )
+ return (Lung_Cancer_90th_Percentile_2013_df,)
+
+
+@app.cell
+def __(mo):
+ Lung_Cancer_90th_Percentile_2023_df = mo.sql(
+ f"""
+ SELECT Province_territory,Indicator,Metric,Data_year,Unit_of_measurement,Indicator_result
+ FROM "Wait_Times"
+ WHERE Province_territory != 'Canada'
+ AND Indicator = 'Bladder Cancer Surgery'
+ AND Metric = '90th Percentile'
+ AND Data_year IN ('2023')
+ And Unit_of_measurement = 'Days'
+ AND Indicator_result !='n/a'
+ ORDER BY Indicator_result ASC
+ """, output=False
+ )
+ return (Lung_Cancer_90th_Percentile_2023_df,)
+
+
+@app.cell
+def __(
+ Bladder_Cancer_90th_Percentile_2013_df,
+ Bladder_Cancer_90th_Percentile_2023_df,
+ Lung_Cancer_90th_Percentile_2013_df,
+ Lung_Cancer_90th_Percentile_2023_df,
+ px,
+):
+ Bladder_Cancer_2013 = px.pie(Bladder_Cancer_90th_Percentile_2013_df,values='Indicator_result', names='Province_territory')
+
+ Bladder_Cancer_2023 = px.pie(Bladder_Cancer_90th_Percentile_2023_df,values='Indicator_result', names='Province_territory')
+
+ Lung_Cancer_2013 = px.pie(Lung_Cancer_90th_Percentile_2013_df,values='Indicator_result', names='Province_territory')
+
+ Lung_Cancer_2023 = px.pie(Lung_Cancer_90th_Percentile_2023_df,values='Indicator_result', names='Province_territory')
+ return (
+ Bladder_Cancer_2013,
+ Bladder_Cancer_2023,
+ Lung_Cancer_2013,
+ Lung_Cancer_2023,
+ )
+
+
+@app.cell
+def __(mo):
+ Ten_Year_Journey = mo.ui.slider(2013,2023,10,value=2023, label = 'Ten Year Slider:')
+ Ten_Year_Journey
+ return (Ten_Year_Journey,)
+
+
+@app.cell
+def __(Ten_Year_Journey):
+ Time_Parameter = Ten_Year_Journey.value
+ return (Time_Parameter,)
+
+
+@app.cell
+def __(Bladder_Cancer_2013, Bladder_Cancer_2023):
+ def Percentile_Time_Machine(Time_Parameter):
+ if Time_Parameter == 2013:
+ return Bladder_Cancer_2013
+ if Time_Parameter == 2023:
+ return Bladder_Cancer_2023
+ return (Percentile_Time_Machine,)
+
+
+@app.cell
+def __(Percentile_Time_Machine, Time_Parameter):
+ Percentile_Time_Machine(Time_Parameter)
+ return
+
+
+@app.cell
+def __(mo):
+ mo.md(r""" Pie charts of 90th percentile values for each province over a span of 10 years. """).style({'background-color':'indigo'})
+ return
+
+
+if __name__ == "__main__":
+ app.run()
diff --git a/010-Mustjaab/Article_Summarizer.py b/010-Mustjaab/Article_Summarizer.py
new file mode 100644
index 0000000..f586805
--- /dev/null
+++ b/010-Mustjaab/Article_Summarizer.py
@@ -0,0 +1,180 @@
+# /// script
+# requires-python = ">=3.12"
+# dependencies = [
+# "marimo",
+# "beautifulsoup4==4.12.3",
+# "nltk==3.9.1",
+# "requests==2.32.3",
+# ]
+# ///
+
+import marimo
+
+__generated_with = "0.9.10"
+app = marimo.App()
+
+
+@app.cell
+def __(mo):
+ mo.md(rf" Summarize that Article! ")
+ return
+
+
+@app.cell
+def __():
+ import marimo as mo
+ import nltk
+ import requests
+ from bs4 import BeautifulSoup
+ from nltk.sentiment import SentimentIntensityAnalyzer
+ from nltk.tokenize import word_tokenize, sent_tokenize
+ from nltk.probability import FreqDist
+ from nltk.corpus import stopwords
+ from string import punctuation
+ import heapq
+ return (
+ BeautifulSoup,
+ FreqDist,
+ SentimentIntensityAnalyzer,
+ heapq,
+ mo,
+ nltk,
+ punctuation,
+ requests,
+ sent_tokenize,
+ stopwords,
+ word_tokenize,
+ )
+
+
+@app.cell
+def __(mo):
+ Article = mo.ui.text(label='Article:',
+ value="https://www.cbc.ca/news/politics/hackers-threat-national-security-1.6949645").form()
+
+ Points = mo.ui.number(5,10,label='Number of Bullet Points:')
+ return Article, Points
+
+
+@app.cell
+def __(Article, Points, mo):
+ mo.hstack([
+ Article,
+ Points
+ ])
+ return
+
+
+@app.cell
+def __(Article, mo):
+ mo.stop(Article.value is None, mo.md("Submit an article continue"))
+ return
+
+
+@app.cell
+def __(Article, BeautifulSoup, requests):
+ Article_url = Article.value
+
+ def CBC_article_reader(url):
+ response = requests.get(url)
+ soup = BeautifulSoup(response.content, 'html.parser')
+
+ # Find the HTML elements containing the news article content
+ article_content = soup.find('div', class_='story')
+
+ # Extract text from the article content
+ text = article_content.get_text(separator=' ')
+ return text
+ return Article_url, CBC_article_reader
+
+
+@app.cell
+def __(Article_url, CBC_article_reader):
+ article_text = CBC_article_reader(Article_url)
+ return (article_text,)
+
+
+@app.cell
+def __(
+ FreqDist,
+ Points,
+ SentimentIntensityAnalyzer,
+ article_text,
+ heapq,
+ punctuation,
+ sent_tokenize,
+ stopwords,
+ word_tokenize,
+):
+ tokens = word_tokenize(article_text.lower())
+
+
+ stop_words = set(stopwords.words('english') + list(punctuation))
+ filtered_tokens = [token for token in tokens if token not in stop_words]
+
+ # Step 3: Calculate word frequencies
+ word_freq = FreqDist(filtered_tokens)
+
+
+ tfidf = {}
+ for word, freq in word_freq.items():
+ tfidf[word] = freq * (len(tokens) / word_freq[word])
+
+
+ sia = SentimentIntensityAnalyzer()
+ sentiment_score = sia.polarity_scores(article_text)['compound']
+
+
+ summary = []
+ sentences = sent_tokenize(article_text)
+
+
+ sentence_scores = {}
+ for sentence in sentences:
+ words = word_tokenize(sentence.lower())
+ score = sentiment_score * sum(tfidf[word] for word in words if word in tfidf)
+ sentence_scores[sentence] = score
+
+ num_sentences_in_summary = Points.value
+ summary_sentences = heapq.nlargest(num_sentences_in_summary, sentence_scores, key=sentence_scores.get)
+
+
+ bulleted_summary = ['- ' + sentence for sentence in summary_sentences]
+ final_summary = '\n'.join(bulleted_summary)
+ return (
+ bulleted_summary,
+ filtered_tokens,
+ final_summary,
+ freq,
+ num_sentences_in_summary,
+ score,
+ sentence,
+ sentence_scores,
+ sentences,
+ sentiment_score,
+ sia,
+ stop_words,
+ summary,
+ summary_sentences,
+ tfidf,
+ tokens,
+ word,
+ word_freq,
+ words,
+ )
+
+
+@app.cell
+def __(mo):
+ mo.md(""" Final Summary """)
+ return
+
+
+@app.cell
+def __(final_summary, mo):
+ mo.md(rf"{final_summary}")
+ return
+
+
+if __name__ == "__main__":
+ app.run()
diff --git a/010-Mustjaab/C__Users_mustj_Fact_Checking_Model.py b/010-Mustjaab/C__Users_mustj_Fact_Checking_Model.py
new file mode 100644
index 0000000..3e8cf88
--- /dev/null
+++ b/010-Mustjaab/C__Users_mustj_Fact_Checking_Model.py
@@ -0,0 +1,426 @@
+# /// script
+# requires-python = ">=3.12"
+# dependencies = [
+# "scikit-learn==1.5.2",
+# "pandas==2.2.3",
+# "altair==5.4.1",
+# "nltk==3.9.1",
+# "marimo",
+# "plotly==5.24.1",
+# "numpy==1.26.4",
+# "gensim==4.3.3",
+# ]
+# ///
+import marimo
+
+__generated_with = "0.9.10"
+app = marimo.App(width="medium")
+
+
+@app.cell
+def __():
+ import marimo as mo
+ import pandas as pd
+ import numpy as np
+ from gensim.models import Word2Vec
+ from nltk.tokenize import word_tokenize
+ import nltk
+ from sklearn.model_selection import train_test_split
+ from sklearn.svm import SVC
+ from sklearn.metrics import accuracy_score, classification_report
+ import plotly.express as px
+ from sklearn.manifold import TSNE
+ import altair as alt
+ return (
+ SVC,
+ TSNE,
+ Word2Vec,
+ accuracy_score,
+ alt,
+ classification_report,
+ mo,
+ nltk,
+ np,
+ pd,
+ px,
+ train_test_split,
+ word_tokenize,
+ )
+
+
+@app.cell
+def __(mo):
+ mo.md(
+ r"""
+ # Resource Fact Checking Model
+
+ ## Table of Contents
+
+ - General Overview
+ - Model Choice
+ - Using the Model
+ - Performance Analysis
+ """
+ )
+ return
+
+
+@app.cell
+def __(mo):
+ mo.md(
+ r"""
+ ## General Overview
+
+ The purpose of this notebook is to build a fact-checking model. We can start off simple, and add features to fortify its scalability, reliability, validity, and (relevantly) accuracy.
+ """
+ )
+ return
+
+
+@app.cell
+def __():
+ Statement_about_Resources = [
+ ("Solar energy is a renewable resource.", True),
+ ("Coal is a renewable resource.", False),
+ ("Wind power can be depleted.", False),
+ ("Nuclear energy is considered a non-renewable resource.", True),
+ ("Hydroelectric power is a form of renewable energy.", True),
+ ("Natural gas is a clean, renewable resource.", False),
+ ("Biomass energy comes from renewable organic materials.", True),
+ ("Geothermal energy is inexhaustible.", True),
+ ("Tidal energy is a type of renewable energy.", True),
+ ("Fossil fuels are formed from renewable sources.", False),
+ ("Wind turbines generate electricity without consuming fuel.", True),
+ ("Oil reserves will replenish themselves within a human lifetime.", False),
+ ("Solar panels work efficiently at night.", False),
+ ("Uranium used in nuclear power plants is a renewable resource.", False),
+ ("Wave energy harnesses the power of ocean surface motion.", True),
+ ("Burning coal releases no greenhouse gases.", False),
+ ("Hydropower relies on the water cycle, which is naturally replenished.", True),
+ ("Geothermal energy taps into Earth's internal heat.", True),
+ ("Wind energy production causes significant air pollution.", False),
+ ("Biomass fuels are carbon-neutral.", True),
+ ("Solar energy can be harnessed in cloudy weather.", True),
+ ("Tidal power is predictable and consistent.", True),
+ ("Nuclear fusion is currently a widely used energy source.", False),
+ ("Offshore wind farms produce more energy than onshore ones.", True),
+ ("Fossil fuels will never run out.", False),
+ ("Photovoltaic cells convert sunlight directly into electricity.", True),
+ ("Hydroelectric dams have no environmental impact.", False),
+ ("Geothermal energy is only available in volcanic regions.", False),
+ ("Wind turbines kill more birds than any other human activity.", False),
+ ("Biomass energy always reduces greenhouse gas emissions.", False),
+ ("Solar panels require more energy to produce than they generate in their lifetime.", False),
+ ("Tidal barrages can affect local ecosystems.", True),
+ ("Nuclear power plants produce no radioactive waste.", False),
+ ("Wind energy is only viable in constantly windy areas.", False),
+ ("Oil shale is a renewable energy source.", False),
+ ("Concentrated solar power can store energy for nighttime use.", True),
+ ("Large hydroelectric dams can cause methane emissions.", True),
+ ("Geothermal power plants can trigger earthquakes.", True),
+ ("Wind turbines have a lifespan of over 20 years.", True),
+ ("Biomass fuels compete with food production for land use.", True),
+ ("Solar energy is not viable in cold climates.", False),
+ ("Tidal energy generation is widely used globally.", False),
+ ("Nuclear fission produces no carbon dioxide during operation.", True),
+ ("Wind energy is more expensive than fossil fuels.", False),
+ ("Natural gas is the cleanest burning fossil fuel.", True),
+ ("Solar farms require no water for operation.", True),
+ ("Pumped-storage hydroelectricity is a form of energy storage.", True),
+ ("Geothermal energy is available 24/7.", True),
+ ("Wind turbines cannot operate in very high winds.", True),
+ ("All biomass sources are environmentally friendly.", False),
+ ("Thin-film solar cells are less efficient than traditional silicon cells.", True),
+ ("Tidal energy can be harvested using underwater turbines.", True),
+ ("Nuclear power plants can be powered down quickly in emergencies.", False),
+ ("Vertical axis wind turbines are more efficient than horizontal axis turbines.", False),
+ ("Fracking for natural gas is a completely safe process.", False),
+ ("Passive solar design can reduce heating and cooling costs in buildings.", True),
+ ("Run-of-river hydroelectricity always requires a large dam.", False),
+ ("Enhanced geothermal systems can make geothermal energy viable in more locations.", True),
+ ("Wind energy cannot be stored.", False),
+ ("Algae-based biofuels are currently widely used in transportation.", False),
+ ("Perovskite solar cells are a promising new technology.", True),
+ ("Ocean thermal energy conversion (OTEC) works best in tropical regions.", True),
+ ("Thorium reactors are widely used in nuclear power generation.", False),
+ ("Airborne wind energy systems can harness high-altitude winds.", True),
+ ("Shale gas is a form of renewable energy.", False),
+ ("Community solar gardens allow multiple users to share solar power.", True),
+ ("Micro-hydropower systems can power individual homes.", True),
+ ("Geothermal heat pumps can be used for both heating and cooling.", True),
+ ("Wind power cannot provide baseload power.", False),
+ ("Cellulosic ethanol is made from non-food plant materials.", True),
+ ("Solar thermal collectors can be used for water heating.", True),
+ ("Tidal fences are less environmentally impactful than tidal barrages.", True),
+ ("Breeder reactors can produce more fissile material than they consume.", True),
+ ("Kite power systems are a form of wind energy.", True),
+ ("Tar sands oil extraction is environmentally friendly.", False),
+ ("Building-integrated photovoltaics can replace conventional building materials.", True),
+ ("Small-scale hydropower always disrupts river ecosystems.", False),
+ ("Hot dry rock geothermal systems require water injection.", True),
+ ("Wind turbines cannot be recycled at the end of their life.", False),
+ ("Biogas can be produced from animal waste.", True),
+ ("Solar roads can generate electricity from streets and parking lots.", True),
+ ("Wave energy converters can affect marine ecosystems.", True),
+ ("Pebble bed reactors are a type of nuclear fission reactor.", True),
+ ("Bladeless wind turbines produce no noise pollution.", True),
+ ("Coal seam gas is a renewable resource.", False),
+ ("Floatovoltaics are solar panels designed to float on water.", True),
+ ("All hydroelectric power requires damming rivers.", False),
+ ("Geothermal energy can be used directly for heating.", True),
+ ("Wind energy production causes significant noise pollution in nearby communities.", False),
+ ("Pyrolysis of biomass produces biochar, which can improve soil quality.", True),
+ ("Solar updraft towers use greenhouse effect and chimney effect.", True),
+ ("Tidal streams and ocean currents are the same thing.", False),
+ ("Molten salt reactors are a type of nuclear fission reactor.", True),
+ ("Vortex bladeless is a new type of wind energy technology.", True),
+ ("Lignite is a clean-burning type of coal.", False),
+ ("Agrivoltaics combines agriculture with solar energy production.", True),
+ ("Pumped-storage hydroelectricity facilities can only be built in mountainous areas.", False),
+ ("Ground source heat pumps can provide heating and cooling in all climates.", True),
+ ("Wind turbines kill more bats than birds.", True),
+ ("Biodiesel can be produced from used cooking oil.", True),
+ ("Transparent solar cells can be used in windows.", True),
+ ("Dynamic tidal power doesn't require a barrage or lagoon.", True),
+ ("Fast breeder reactors have been widely adopted globally.", False),
+ ("Airborne wind energy systems are commercially available.", False),
+ ("Oil drilling in the Arctic has no environmental risks.", False),
+ ("Solar thermal energy can be used for industrial processes.", True),
+ ("Run-of-river hydroelectricity has less environmental impact than large dams.", True),
+ ("Magma geothermal energy systems tap into underground magma chambers.", True),
+ ("Offshore wind turbines are less efficient than onshore turbines.", False),
+ ("Waste-to-energy plants can reduce landfill use.", True),
+ ("Luminescent solar concentrators can be used in building windows.", True),
+ ("Salinity gradient power harnesses energy from where rivers meet the sea.", True),
+ ("Small modular reactors are currently widely used in nuclear power generation.", False),
+ ("High-altitude wind power can provide more consistent energy than ground-level wind.", True),
+ ("Hydraulic fracturing only uses water and sand.", False),
+ ("Solar water heating systems can work in cold climates.", True),
+ ("Tidal lagoons have less environmental impact than tidal barrages.", True),
+ ("Deep geothermal systems can access heat at depths of several kilometers.", True),
+ ("Wind turbines can increase local temperatures.", True),
+ ("Biofuels always have a lower carbon footprint than fossil fuels.", False),
+ ("Photovoltaic noise barriers can generate electricity along highways.", True),
+ ("Marine current power is the same as tidal stream power.", False),
+ ("Traveling wave reactors can use depleted uranium as fuel.", True),
+ ("Kite wind generators can reach higher altitudes than traditional wind turbines.", True),
+ ("Clean coal technology eliminates all pollutants from coal burning.", False),
+ ("Solar canals combine water conservation with energy generation.", True),
+ ("Mini-hydro systems always require construction of a dam.", False),
+ ("Geothermal energy can be used for greenhouse heating in agriculture.", True),
+ ("Wind turbines cannot be placed close to urban areas.", False),
+ ("Torrefied biomass has properties similar to coal.", True),
+ ("Solar chimneys can generate electricity in arid regions.", True),
+ ("Osmotic power generates electricity from the difference in salt concentration between seawater and river water.", True),
+ ("Fusion power plants are currently in commercial operation.", False),
+ ("Makani power kites are a commercially successful form of wind energy.", False),
+ ("Deep water oil drilling is risk-free.", False),
+ ("Solar fabric can generate electricity from clothing.", True),
+ ("In-stream hydro turbines always obstruct fish migration.", False),
+ ("Engineered geothermal systems can make geothermal power viable in non-volcanic regions.", True),
+ ("Wind turbines cannot operate in extreme cold.", False),
+ ("Plasma gasification is a clean way to process municipal solid waste.", True),
+ ("Photovoltaic glass can generate electricity while remaining transparent.", True),
+ ("Tidal kite technology can generate power from low-velocity currents.", True),
+ ("Sodium-cooled fast reactors are the most common type of nuclear reactor.", False),
+ ("Crosswind kite power systems can generate more energy than traditional wind turbines.", True),
+ ("Natural gas extraction never contaminates groundwater.", False),
+ ("Solar balloons can generate electricity at high altitudes.", True),
+ ("Micro-hydro systems are suitable for most streams and rivers.", True),
+ ("Geothermal power plants always cause land subsidence.", False),
+ ("Wind turbines can be harmful to human health.", False),
+ ("Jatropha is a promising non-food crop for biodiesel production.", True),
+ ("Solar power satellites can beam energy to Earth from space.", True),
+ ("Vortex-induced vibrations can be used to generate electricity from slow water currents.", True),
+ ("Liquid fluoride thorium reactors are widely used in nuclear power generation.", False),
+ ("High-altitude wind kites are currently a major source of wind power.", False),
+ ("Offshore oil rigs have no impact on marine ecosystems.", False),
+ ("Building-integrated wind turbines can be incorporated into skyscrapers.", True),
+ ("All hydroelectric dams cause significant methane emissions.", False),
+ ("Shallow geothermal systems can be used for both heating and cooling buildings.", True),
+ ("Wind turbines significantly reduce property values in nearby areas.", False),
+ ("Microalgae can be used to produce biofuels without competing with food crops.", True),
+ ("Solar roadways are currently widely implemented.", False),
+ ("Underwater compressed air energy storage can be used with offshore wind farms.", True),
+ ("Nuclear fusion reactors produce long-lived radioactive waste.", False),
+ ("Vertical sky farms can combine wind energy with agriculture.", True),
+ ("Mountaintop removal mining is an environmentally friendly way to extract coal.", False),
+ ("Piezoelectric materials can generate electricity from pedestrian footsteps.", True),
+ ("All small hydropower projects are environmentally benign.", False),
+ ("Hot sedimentary aquifer power is a type of geothermal energy.", True),
+ ("Wind turbines cause significant electromagnetic interference.", False),
+ ("Biofuels derived from algae require less land than crop-based biofuels.", True),
+ ("Solar greenhouses can generate electricity while growing plants.", True),
+ ("Dynamic tidal power systems have been successfully implemented on a large scale.", False),
+ ("Generation IV nuclear reactors are currently in wide commercial use.", False),
+ ("Windbelts can generate electricity from wind without using turbines.", True),
+ ("Hydraulic fracturing never causes induced seismicity.", False),
+ ("Solar trees can provide both shade and electricity in urban areas.", True),
+ ("Fish-friendly turbines completely eliminate fish mortality in hydroelectric systems.", False),
+ ("Geothermal energy extraction always leads to the depletion of geothermal reservoirs.", False),
+ ("Wind turbine syndrome is a medically recognized condition.", False),
+ ("Sweet sorghum is a potential feedstock for ethanol production.", True),
+ ("Space-based solar power is currently a significant source of energy on Earth.", False),
+ ("Tidal fences can generate electricity without creating reservoirs.", True),
+ ("Accelerator-driven subcritical reactors are commonly used for power generation.", False),
+ ("Jet stream wind power is currently harnessed for electricity production.", False),
+ ("Deep sea oil drilling is completely safe for marine environments.", False),
+ ("Solar windows can generate electricity without significantly reducing transparency.", True),
+ ("All run-of-river hydroelectric systems are free from environmental impacts.", False),
+ ("Ground-source heat pumps require deep drilling in all cases.", False),
+ ("Wind turbines cause significant decrease in bird populations.", False),
+ ("Biofuels always produce lower greenhouse gas emissions than fossil fuels.", False),
+ ("Spray-on solar cells are widely used in commercial solar panels.", False),
+ ("Archimedes wave swing is a type of wave energy converter.", True),
+ ("Tokamak fusion reactors are currently used for commercial power generation.", False),
+ ("Kite-powered ships are widely used in commercial shipping.", False)
+ ]
+
+ Resource_Statements = [statement for statement, _ in Statement_about_Resources]
+ Verification = [label for _, label in Statement_about_Resources]
+ return Resource_Statements, Statement_about_Resources, Verification
+
+
+@app.cell
+def __(mo):
+ mo.callout("Be sure to use punkt through (nltk.download('punkt')",kind='warn')
+ return
+
+
+@app.cell
+def __(Resource_Statements, Word2Vec, word_tokenize):
+ tokenized_statements = [word_tokenize(statement.lower()) for statement in Resource_Statements]
+
+ word2vec_model = Word2Vec(sentences=tokenized_statements, vector_size=100, window=5, min_count=1, workers=4)
+ return tokenized_statements, word2vec_model
+
+
+@app.cell
+def __(np, word2vec_model, word_tokenize):
+ def document_vector(doc):
+ words = word_tokenize(doc.lower())
+ word_vectors = [word2vec_model.wv[word] for word in words if word in word2vec_model.wv]
+ return np.mean(word_vectors, axis=0) if word_vectors else np.zeros(100)
+ return (document_vector,)
+
+
+@app.cell
+def __(Resource_Statements, document_vector, np):
+ Resource_Statements_vectors = np.array([document_vector(statement) for statement in Resource_Statements])
+ return (Resource_Statements_vectors,)
+
+
+@app.cell
+def __(Resource_Statements_vectors, Verification, train_test_split):
+ Resource_Statements_train, Resource_Statements_test, Verification_train, Verification_test = train_test_split(Resource_Statements_vectors, Verification, test_size=0.2, random_state=42)
+ return (
+ Resource_Statements_test,
+ Resource_Statements_train,
+ Verification_test,
+ Verification_train,
+ )
+
+
+@app.cell
+def __(mo):
+ mo.md(
+ r"""
+ ## Model Choice
+
+ There's so many different classifiications model that could be used for things like fact-checking, so why a support vector machine (SVM) ? Well, there's a few reasons:
+
+ - SVMs are highly effective at distinguishing between different categories (in this case, verifying whether a statement is true or false) while maintaining efficiency.
+
+ - Since we’re working with a smaller dataset, SVMs are a great choice because they perform well with limited data without sacrificing accuracy.
+
+ - The mathematical foundation of SVMs, particularly how they create clear boundaries between categories, makes it less likely for the model to misclassify whether a statement (e.g., about natural resources) is true or false.
+ """
+ )
+ return
+
+
+@app.cell
+def __(Resource_Statements_train, SVC, Verification_train):
+ model = SVC(kernel='rbf', probability=True)
+ model.fit(Resource_Statements_train, Verification_train)
+ return (model,)
+
+
+@app.cell
+def __(mo):
+ mo.md(r"""## Using the Model""")
+ return
+
+
+@app.cell
+def __(mo):
+ Statement = mo.ui.text(placeholder='claim', label = 'Claim about resource:').form()
+ Statement
+ return (Statement,)
+
+
+@app.cell
+def __(Statement, fact_check):
+ fact_check(Statement.value)
+ return
+
+
+@app.cell
+def __(mo):
+ mo.md(r"""## Performance Analysis""")
+ return
+
+
+@app.cell
+def __(Verification_pred, Verification_test, accuracy_score, pd):
+ Accuracy_Table = pd.DataFrame({
+ 'Metric': ['Accuracy Score'],
+ 'Value':[accuracy_score(Verification_test, Verification_pred)]
+ })
+ Accuracy_Table
+ return (Accuracy_Table,)
+
+
+@app.cell
+def __(
+ Resource_Statements_test,
+ Verification_test,
+ classification_report,
+ model,
+):
+ Verification_pred = model.predict(Resource_Statements_test)
+ classification_report(Verification_test, Verification_pred)
+ return (Verification_pred,)
+
+
+@app.cell
+def __(document_vector, model):
+ def fact_check(statement):
+ vectorized_statement = document_vector(statement).reshape(1, -1)
+ prediction = model.predict(vectorized_statement)
+ probability = model.predict_proba(vectorized_statement)[0]
+
+ if prediction[0]:
+ return f"The statement is likely true (confidence: {probability[1]:.2f})"
+ else:
+ return f"The statement is likely false (confidence: {probability[0]:.2f})"
+ return (fact_check,)
+
+
+@app.cell
+def __(Resource_Statements_vectors, Verification, model, np, pd, px):
+ Probabilities = model.predict_proba(Resource_Statements_vectors)
+
+ # Create a DataFrame for plotting
+ Confidence_Data = pd.DataFrame({
+ 'confidence': np.max(Probabilities, axis=1),
+ 'true_label': Verification
+ })
+
+ Model_Probability_Histogram = px.histogram(Confidence_Data,x='confidence', title = 'Histogram of Model Confidence')
+ Model_Probability_Histogram
+ return Confidence_Data, Model_Probability_Histogram, Probabilities
+
+
+if __name__ == "__main__":
+ app.run()
diff --git a/010-Mustjaab/Canada_Risk_Management.py b/010-Mustjaab/Canada_Risk_Management.py
new file mode 100644
index 0000000..8a3671f
--- /dev/null
+++ b/010-Mustjaab/Canada_Risk_Management.py
@@ -0,0 +1,449 @@
+# /// script
+# requires-python = ">=3.12"
+# dependencies = [
+# "marimo",
+# "numpy==1.26.4",
+# "plotly==5.24.1",
+# "pandas==2.2.3",
+# "duckdb==1.1.2",
+# "statsmodels==0.14.4",
+# ]
+# ///
+
+import marimo
+
+__generated_with = "0.9.10"
+app = marimo.App()
+
+
+@app.cell
+def __(mo):
+ mo.md(""" Risk Management Analytics """)
+ return
+
+
+@app.cell
+def __():
+ import marimo as mo
+ import pandas as pd
+ import plotly.express as px
+ import duckdb as db
+ from statsmodels.stats.proportion import proportions_ztest
+ import numpy as np
+ return db, mo, np, pd, proportions_ztest, px
+
+
+@app.cell
+def __(pd):
+ Risk_Arrangement = pd.read_csv('assets/Risk_Arrangement.csv')
+ return (Risk_Arrangement,)
+
+
+@app.cell
+def __():
+ Risk_query_2019 = """
+ SELECT REF_DATE, Risk_management_arrangements, NAICS, VALUE
+ FROM Risk_Arrangement
+ WHERE Risk_management_arrangements IN (
+ 'A Business Continuity Plan (BCP)',
+ 'Frequent updating of operating systems',
+ 'No risk management arrangements'
+ )
+ AND REF_DATE='2019';
+ """
+
+ Risk_query_2021 = """
+ SELECT REF_DATE, Risk_management_arrangements, NAICS, VALUE
+ FROM Risk_Arrangement
+ WHERE Risk_management_arrangements IN (
+ 'A Business Continuity Plan (BCP)',
+ 'Frequent updating of operating systems',
+ 'No risk management arrangements'
+ )
+ AND REF_DATE='2021';
+ """
+ return Risk_query_2019, Risk_query_2021
+
+
+@app.cell
+def __(Risk_query_2019, Risk_query_2021, db):
+ Canada_Risk_Landscape_2019 = db.execute(Risk_query_2019).df()
+ Canada_Risk_Landscape_2021 = db.execute(Risk_query_2021).df()
+ return Canada_Risk_Landscape_2019, Canada_Risk_Landscape_2021
+
+
+@app.cell
+def __(np, proportions_ztest):
+ #Risk arrangements
+ Agricultural_BCP=proportions_ztest(
+ count=np.array([2.2,1.8]),
+ nobs=np.array([100,100]),
+ alternative='smaller'
+ )
+
+ Schools_BCP=proportions_ztest(
+ count=np.array([6.5,12.7]),
+ nobs=np.array([100,100]),
+ alternative='smaller'
+ )
+
+ Hospitals_BCP=proportions_ztest(
+ count=np.array([20,18.8]),
+ nobs=np.array([100,100]),
+ alternative='smaller'
+ )
+
+ Agricultural_OS=proportions_ztest(
+ count=np.array([13.4,13.0]),
+ nobs=np.array([100,100]),
+ alternative='smaller'
+ )
+
+ Schools_OS=proportions_ztest(
+ count=np.array([45.2,39.2]),
+ nobs=np.array([100,100]),
+ alternative='smaller'
+ )
+
+ Hospitals_OS=proportions_ztest(
+ count=np.array([43.6,38.1]),
+ nobs=np.array([100,100]),
+ alternative='smaller'
+ )
+
+ Agricultural_No_RM=proportions_ztest(
+ count=np.array([42.3,37.2]),
+ nobs=np.array([100,100]),
+ alternative='smaller'
+ )
+
+ Schools_No_RM=proportions_ztest(
+ count=np.array([8.9,10.1]),
+ nobs=np.array([100,100]),
+ alternative='larger'
+ )
+
+ Hospitals_No_RM=proportions_ztest(
+ count=np.array([15.9,8.1]),
+ nobs=np.array([100,100]),
+ alternative='smaller'
+ )
+ return (
+ Agricultural_BCP,
+ Agricultural_No_RM,
+ Agricultural_OS,
+ Hospitals_BCP,
+ Hospitals_No_RM,
+ Hospitals_OS,
+ Schools_BCP,
+ Schools_No_RM,
+ Schools_OS,
+ )
+
+
+@app.cell
+def __(np, proportions_ztest):
+ #Incidents
+ Agricultural_No_Impact = proportions_ztest(
+ count = np.array([83.3,92.2]),
+ nobs = np.array([100,100]),
+ alternative='larger'
+ )
+
+ Agricultural_Stolen_Money = proportions_ztest(
+ count = np.array([5.9,2.7]),
+ nobs = np.array([100,100]),
+ alternative='smaller'
+ )
+
+ Agricultural_Stolen_Personal = proportions_ztest(
+ count = np.array([5.5,2.7]),
+ nobs = np.array([100,100]),
+ alternative='smaller'
+ )
+
+ Hospitals_No_Impact = proportions_ztest(
+ count = np.array([63.3,89.1]),
+ nobs = np.array([100,100]),
+ alternative='larger'
+ )
+
+ Hospitals_Stolen_Money = proportions_ztest(
+ count = np.array([27.5,4.0]),
+ nobs = np.array([100,100]),
+ alternative='smaller'
+ )
+
+ Hospitals_Stolen_Personal = proportions_ztest(
+ count = np.array([16.9,4.1]),
+ nobs = np.array([100,100]),
+ alternative='smaller'
+ )
+
+ Schools_No_Impact = proportions_ztest(
+ count = np.array([71.2,78.2]),
+ nobs = np.array([100,100]),
+ alternative='larger'
+ )
+
+ Schools_Stolen_Money = proportions_ztest(
+ count = np.array([13.3,8.8]),
+ nobs = np.array([100,100]),
+ alternative='smaller'
+ )
+
+ Schools_Stolen_Personal = proportions_ztest(
+ count = np.array([5.9,10.8]),
+ nobs = np.array([100,100]),
+ alternative='larger'
+ )
+ return (
+ Agricultural_No_Impact,
+ Agricultural_Stolen_Money,
+ Agricultural_Stolen_Personal,
+ Hospitals_No_Impact,
+ Hospitals_Stolen_Money,
+ Hospitals_Stolen_Personal,
+ Schools_No_Impact,
+ Schools_Stolen_Money,
+ Schools_Stolen_Personal,
+ )
+
+
+@app.cell
+def __(
+ Agricultural_BCP,
+ Agricultural_No_RM,
+ Agricultural_OS,
+ Hospitals_BCP,
+ Hospitals_No_RM,
+ Hospitals_OS,
+ Schools_BCP,
+ Schools_No_RM,
+ Schools_OS,
+ pd,
+):
+ Risk_Proportions_Table = pd.DataFrame(
+ {
+ 'Risk Arrangement':[
+ 'Business Continuity Plan',
+ 'Frequent Updating of operating systems',
+ 'No risk management plan in place'
+ ],
+ 'Hospitals':[Hospitals_BCP[1],
+ Hospitals_OS[1],
+ Hospitals_No_RM[1]
+ ],
+ 'Schools':[Schools_BCP[1],
+ Schools_OS[1],
+ Schools_No_RM[1]
+ ],
+ 'Agricultural':[Agricultural_BCP[1],
+ Agricultural_OS[1],
+ Agricultural_No_RM[1]
+ ]
+ }
+ )
+ return (Risk_Proportions_Table,)
+
+
+@app.cell
+def __(
+ Agricultural_No_Impact,
+ Agricultural_Stolen_Money,
+ Agricultural_Stolen_Personal,
+ Hospitals_No_Impact,
+ Hospitals_Stolen_Money,
+ Hospitals_Stolen_Personal,
+ Schools_No_Impact,
+ Schools_Stolen_Money,
+ Schools_Stolen_Personal,
+ pd,
+):
+ Incident_Proportions_Table = pd.DataFrame(
+ {
+ 'Incident':[
+ 'No Impact on business',
+ 'Stolen money or demand ransom',
+ 'Stolen personal or financial information',
+ ],
+ 'Hospitals':[Hospitals_No_Impact[1],
+ Hospitals_Stolen_Money[1],
+ Hospitals_Stolen_Personal[1]
+ ],
+ 'Schools':[Schools_No_Impact[1],
+ Schools_Stolen_Money[1],
+ Schools_Stolen_Personal[1]
+ ],
+ 'Agricultural':[Agricultural_No_Impact[1],
+ Agricultural_Stolen_Money[1],
+ Agricultural_Stolen_Personal[1]
+ ]
+ }
+ )
+ return (Incident_Proportions_Table,)
+
+
+@app.cell
+def __(mo):
+ Ref_Date = mo.ui.slider(2019,2021,2)
+ mo.md(rf"Year: {Ref_Date}").style({'border-width':'4px','border-color':'gray'})
+ return (Ref_Date,)
+
+
+@app.cell
+def __(Ref_Date):
+ Year = Ref_Date.value
+ return (Year,)
+
+
+@app.cell
+def __(
+ Canada_Incident_Landscape_2019,
+ Canada_Incident_Landscape_2021,
+ Canada_Risk_Landscape_2019,
+ Canada_Risk_Landscape_2021,
+ px,
+):
+ Grouped_Risks_2021 = px.histogram(
+ Canada_Risk_Landscape_2021,
+ x='Risk_management_arrangements',
+ y='VALUE',
+ color='NAICS',
+ barmode='group'
+ )
+
+ Grouped_Risks_2019 = px.histogram(
+ Canada_Risk_Landscape_2019,
+ x='Risk_management_arrangements',
+ y='VALUE',
+ color='NAICS',
+ barmode='group'
+ )
+
+ Grouped_Incidents_2019 = px.histogram(
+ Canada_Incident_Landscape_2019,
+ x='Cyber_security_incidents',
+ y='VALUE',
+ color='NAICS',
+ barmode='group'
+ )
+
+ Grouped_Incidents_2021 = px.histogram(
+ Canada_Incident_Landscape_2021,
+ x='Cyber_security_incidents',
+ y='VALUE',
+ color='NAICS',
+ barmode='group'
+ )
+ return (
+ Grouped_Incidents_2019,
+ Grouped_Incidents_2021,
+ Grouped_Risks_2019,
+ Grouped_Risks_2021,
+ )
+
+
+@app.cell
+def __(
+ Grouped_Incidents_2019,
+ Grouped_Incidents_2021,
+ Grouped_Risks_2019,
+ Grouped_Risks_2021,
+):
+ def Grouped_Risks(Year):
+ if Year == 2019:
+ return Grouped_Risks_2019
+ else:
+ return Grouped_Risks_2021
+
+ def Grouped_Incidents(Year):
+ if Year == 2019:
+ return Grouped_Incidents_2019
+ else:
+ return Grouped_Incidents_2021
+ return Grouped_Incidents, Grouped_Risks
+
+
+@app.cell
+def __(Grouped_Incidents, Grouped_Risks, Year):
+ Risks = Grouped_Risks(Year)
+ Incidents = Grouped_Incidents(Year)
+ return Incidents, Risks
+
+
+@app.cell
+def __(Incidents, Risks, mo):
+ mo.md(f"""
+ {mo.hstack([Risks,Incidents])}
+ """
+ ).center()
+ return
+
+
+@app.cell
+def __(Incident_Proportions_Table, Risk_Proportions_Table, mo):
+ Risk_Proportions_Explorer = mo.ui.data_explorer(Risk_Proportions_Table)
+ Incident_Proportions_Explorer = mo.ui.data_explorer(Incident_Proportions_Table)
+ return Incident_Proportions_Explorer, Risk_Proportions_Explorer
+
+
+@app.cell
+def __(Incident_Proportions_Explorer, Risk_Proportions_Explorer, mo):
+ mo.md(
+ f"""
+
+ {mo.hstack([Risk_Proportions_Explorer,Incident_Proportions_Explorer])}
+
+ """
+ ).center()
+ return
+
+
+@app.cell
+def __(mo):
+ mo.md(" Exploratory panel of pvalues from proportionality tests: left - risk arrangements, and right incidents. ").style({'font-size':'16px'})
+ return
+
+
+@app.cell
+def __(pd):
+ Cyber_Incidents = pd.read_csv('assets\Incidents.csv')
+ return (Cyber_Incidents,)
+
+
+@app.cell
+def __():
+ Incident_query_2019 = """
+ SELECT REF_DATE,Cyber_security_incidents, NAICS, VALUE
+ FROM Cyber_Incidents
+ WHERE NAICS IN (
+ 'Agriculture, forestry, fishing and hunting',
+ 'Hospitals',
+ 'Elementary and secondary schools'
+ )
+ AND REF_DATE='2019';
+ """
+
+ Incident_query_2021 = """
+ SELECT REF_DATE,Cyber_security_incidents, NAICS, VALUE
+ FROM Cyber_Incidents
+ WHERE NAICS IN (
+ 'Agriculture, forestry, fishing and hunting',
+ 'Hospitals',
+ 'Elementary and secondary schools'
+ )
+ AND REF_DATE='2021';
+ """
+ return Incident_query_2019, Incident_query_2021
+
+
+@app.cell
+def __(Incident_query_2019, Incident_query_2021, db):
+ Canada_Incident_Landscape_2019 = db.execute(Incident_query_2019).df()
+ Canada_Incident_Landscape_2021 = db.execute(Incident_query_2021).df()
+ return Canada_Incident_Landscape_2019, Canada_Incident_Landscape_2021
+
+
+if __name__ == "__main__":
+ app.run()
diff --git a/010-Mustjaab/Environmental_Protection_Analytics.py b/010-Mustjaab/Environmental_Protection_Analytics.py
new file mode 100644
index 0000000..e3e8114
--- /dev/null
+++ b/010-Mustjaab/Environmental_Protection_Analytics.py
@@ -0,0 +1,175 @@
+# /// script
+# requires-python = ">=3.12"
+# dependencies = [
+# "marimo",
+# "duckdb==1.1.2",
+# "pandas==2.2.3",
+# "plotly==5.24.1",
+# "scipy==1.14.1",
+# "stats-can==2.9.4",
+# "statsmodels==0.14.4",
+# ]
+# ///
+
+import marimo
+
+__generated_with = "0.9.10"
+app = marimo.App()
+
+
+@app.cell
+def __(mo):
+ mo.md(""" Oil and Gas Expenditure Analytics """)
+ return
+
+
+@app.cell
+def __():
+ import marimo as mo
+ import pandas as pd
+ import plotly.express as px
+ import stats_can as sc
+ import duckdb
+ from scipy.stats import pearsonr
+ return duckdb, mo, pd, pearsonr, px, sc
+
+
+@app.cell
+def __(sc):
+ # Bring in data of interest from Statistics Canada (copy/paste the 10-digit ID next to 'Table:')
+ DF = sc.table_to_df('25-10-0064-01')
+ return (DF,)
+
+
+@app.cell
+def __(DF, mo, pd):
+ #Prepare table so it can be queried using SQL by replacing any columns that have spaces with underscores
+ Energy = DF.rename(columns={
+ 'Capital expenditures and operating expenses':'Capital_expenditures_and_operating_expenses'})
+ Energy_Table = pd.DataFrame(Energy)
+ Energy_Data = mo.ui.table(Energy_Table)
+ return Energy, Energy_Data, Energy_Table
+
+
+@app.cell
+def __(Energy_Table, duckdb):
+ #Pull out the values for total capital from extraction and oil sands expenditures
+ Total_Expenditures = duckdb.sql("SELECT Capital_expenditures_and_operating_expenses,VALUE AS Total_Capital FROM Energy_Table WHERE Capital_expenditures_and_operating_expenses = 'Total capital expenditures'").df()
+ return (Total_Expenditures,)
+
+
+@app.cell
+def __(Energy_Table, duckdb):
+ #Pull out the values for expenditures on extraction
+ Extraction_Expenditures = duckdb.sql("SELECT Capital_expenditures_and_operating_expenses, VALUE AS Extraction_Expenditures FROM Energy_Table WHERE Capital_expenditures_and_operating_expenses = 'Oil and gas extraction expenditures'").df()
+ return (Extraction_Expenditures,)
+
+
+@app.cell
+def __(Energy_Table, duckdb):
+ #Pull out the values for expenditures on the oil sands
+ Sands_Expenditures = duckdb.sql("SELECT Capital_expenditures_and_operating_expenses, VALUE AS Sands_Expenditures FROM Energy_Table WHERE Capital_expenditures_and_operating_expenses = 'Oil sands expenditures'").df()
+ return (Sands_Expenditures,)
+
+
+@app.cell
+def __(Sands_Expenditures, Total_Expenditures, pd):
+ #Create a dataframe for the total capital and oil sand expenditures
+ C_and_S = {
+ "Total Capital":Total_Expenditures['Total_Capital'],
+ "Expenditures":Sands_Expenditures['Sands_Expenditures']
+ }
+ Capital_and_Sands = pd.DataFrame(C_and_S)
+ return C_and_S, Capital_and_Sands
+
+
+@app.cell
+def __(Extraction_Expenditures, Total_Expenditures, pd):
+ #Also create a dataframe for total capital and extraction expenditures
+ C_and_E = {
+ "Total Capital":Total_Expenditures['Total_Capital'],
+ "Expenditures":Extraction_Expenditures['Extraction_Expenditures']
+ }
+ Capital_and_Extraction = pd.DataFrame(C_and_E)
+ return C_and_E, Capital_and_Extraction
+
+
+@app.cell
+def __(Capital_and_Extraction, Capital_and_Sands, mo):
+ #Prepare options for the drop down so either of the two dataframes can be selected
+ Expenditure_Options = {
+ 'Capital and Extraction':Capital_and_Extraction,
+ 'Capital and Sands': Capital_and_Sands
+ }
+
+ Expenditure_Choices = mo.ui.dropdown(
+ options=[
+ 'Capital and Extraction',
+ 'Capital and Sands'
+ ], value='Capital and Extraction'
+ )
+ Expenditure_Choices
+ mo.md(
+ rf"""This is a summary of **{Expenditure_Choices}**
+ """
+ )
+ return Expenditure_Choices, Expenditure_Options
+
+
+@app.cell
+def __(Expenditure_Choices, Expenditure_Options):
+ Expenditure_Visualization = Expenditure_Options[Expenditure_Choices.value]
+ return (Expenditure_Visualization,)
+
+
+@app.cell
+def __(Expenditure_Visualization, pearsonr):
+ Pearson_Test = pearsonr(Expenditure_Visualization['Total Capital'],Expenditure_Visualization['Expenditures'])
+ return (Pearson_Test,)
+
+
+@app.cell
+def __(Expenditure_Visualization, Pearson_Test, mo, pd):
+ #A skeleton statistics summary table that returns exploratory data analytics for whatever option is chosen from the drowndown list.
+ Summary_Table = {
+ "Variable": [
+ 'Mean Total Capital',
+ 'Mean Expenditure',
+ 'Median Total Capital',
+ 'Median Expenditure',
+ 'Total Capital Skewness',
+ 'Expenditure Skewness',
+ "Correlation pvalue"
+ ],
+ "Value": [
+ Expenditure_Visualization['Total Capital'].mean(),
+ Expenditure_Visualization['Expenditures'].mean(),
+ Expenditure_Visualization['Total Capital'].median(),
+ Expenditure_Visualization['Expenditures'].median(),
+ Expenditure_Visualization['Total Capital'].skew(),
+ Expenditure_Visualization['Expenditures'].skew(),
+ Pearson_Test.pvalue
+ ]
+
+ }
+ Summary_Statistics = pd.DataFrame(Summary_Table)
+ mo.ui.table(Summary_Statistics)
+ return Summary_Statistics, Summary_Table
+
+
+@app.cell
+def __(Expenditure_Visualization, px):
+ #Displays the scatter plot for whatever option is chosen
+ px.scatter(Expenditure_Visualization,y='Total Capital', x ='Expenditures',trendline='ols')
+ return
+
+
+@app.cell
+def __(Expenditure_Visualization, px):
+ #Displays the boxplot for whatever option is chosen
+ px.box(Expenditure_Visualization)
+ return
+
+
+if __name__ == "__main__":
+ app.run()
diff --git a/010-Mustjaab/Exploring_Perplexity.py b/010-Mustjaab/Exploring_Perplexity.py
new file mode 100644
index 0000000..a89ad36
--- /dev/null
+++ b/010-Mustjaab/Exploring_Perplexity.py
@@ -0,0 +1,161 @@
+# /// script
+# requires-python = ">=3.12"
+# dependencies = [
+# "marimo",
+# "pandas==2.2.3",
+# "nltk==3.9.1",
+# "textstat==0.7.4",
+# ]
+# ///
+import marimo
+
+__generated_with = "0.9.1"
+app = marimo.App(width="medium")
+
+
+@app.cell
+def __():
+ import marimo as mo
+ import pandas as pd
+ import collections
+ import math
+ import nltk
+ import textstat
+ return collections, math, mo, nltk, pd, textstat
+
+
+@app.cell(disabled=True)
+def __(nltk):
+ nltk.download('averaged_perceptron_tagger')
+ return
+
+
+@app.cell
+def __(mo):
+ mo.md(r"""#Exploring Perplexity""")
+ return
+
+
+@app.cell
+def __(mo):
+ Story_Generator = mo.ui.chat(
+ mo.ai.llm.openai("gpt-4o"),
+ prompts=[
+ "Write a psychological thriller short story",
+ "Write a horror short story",
+ "Write a comedic short story",
+ ],
+ show_configuration_controls=True
+ )
+ Story_Generator
+ return (Story_Generator,)
+
+
+@app.cell
+def __(mo):
+ mo.callout("Cutomize the response you would like through modifying paramaters in the configuration", kind ='info')
+ return
+
+
+@app.cell
+def __(Story_Generator, pd):
+ Chat_Log = pd.DataFrame(Story_Generator.value)
+ return (Chat_Log,)
+
+
+@app.cell
+def __(Chat_Log, mo):
+ Story_from_Model_df = mo.sql(
+ f"""
+ SELECT *
+ From Chat_Log
+ """, output=False
+ )
+ return (Story_from_Model_df,)
+
+
+@app.cell
+def __(Story_from_Model_df, collections):
+ def preprocess(text):
+ return text.lower().split()
+
+ tokens = preprocess(Story_from_Model_df['content'][1])
+
+ def build_ngrams(tokens, n):
+ ngrams = [tuple(tokens[i:i+n]) for i in range(len(tokens)-n+1)]
+ return collections.Counter(ngrams)
+
+ unigrams = build_ngrams(tokens, 1)
+ bigrams = build_ngrams(tokens, 2)
+
+ def calc_prob(ngram_count, n_minus_1_gram_count):
+ probabilities = {}
+ for ngram in ngram_count:
+ context = ngram[:-1]
+ probabilities[ngram] = ngram_count[ngram] / n_minus_1_gram_count[context]
+ return probabilities
+ return bigrams, build_ngrams, calc_prob, preprocess, tokens, unigrams
+
+
+@app.cell
+def __(bigrams, calc_prob, unigrams):
+ probabilities = calc_prob(bigrams, unigrams)
+ return (probabilities,)
+
+
+@app.cell
+def __(math):
+ def perplexity(probabilities, tokens, n):
+ N = len(tokens)
+ log_prob_sum = 0
+ for i in range(n-1, N):
+ ngram = tuple(tokens[i-n+1:i+1])
+ prob = probabilities.get(ngram, 1e-10) # Use a small value if probability is zero
+ log_prob_sum += math.log(prob)
+ return math.exp(-log_prob_sum / N)
+ return (perplexity,)
+
+
+@app.cell
+def __(mo, perplexity, probabilities, tokens):
+ perplexity_value = perplexity(probabilities, tokens, 2)
+
+ mo.md(rf"Perplexity: {perplexity_value}")
+ return (perplexity_value,)
+
+
+@app.cell
+def __(nltk, textstat):
+ def calculate_fluency(text):
+ tokens = nltk.word_tokenize(text)
+ tagged = nltk.pos_tag(tokens)
+
+ pos_counts = {
+ 'nouns': sum(1 for word, pos in tagged if pos.startswith('NN')),
+ 'verbs': sum(1 for word, pos in tagged if pos.startswith('VB')),
+ 'adjectives': sum(1 for word, pos in tagged if pos.startswith('JJ')),
+ 'adverbs': sum(1 for word, pos in tagged if pos.startswith('RB'))
+ }
+
+ readability_score = textstat.flesch_reading_ease(text)
+
+ fluency_score = (readability_score + sum(pos_counts.values())) / 2
+
+ return {
+ "fluency_score": fluency_score,
+ "readability": readability_score,
+ "pos_counts": pos_counts
+ }
+ return (calculate_fluency,)
+
+
+@app.cell
+def __(Story_from_Model_df, calculate_fluency, pd):
+ fluency_results = calculate_fluency(Story_from_Model_df['content'][1])
+ Fluency = pd.DataFrame(fluency_results)
+ Fluency
+ return Fluency, fluency_results
+
+
+if __name__ == "__main__":
+ app.run()
diff --git a/010-Mustjaab/Job_Market_Word_Clouds.py b/010-Mustjaab/Job_Market_Word_Clouds.py
new file mode 100644
index 0000000..dbfc6d9
--- /dev/null
+++ b/010-Mustjaab/Job_Market_Word_Clouds.py
@@ -0,0 +1,123 @@
+# /// script
+# requires-python = ">=3.12"
+# dependencies = [
+# "nltk==3.9.1",
+# "marimo",
+# "pandas==2.2.3",
+# "matplotlib==3.9.2",
+# "wordcloud==1.9.3",
+# ]
+# ///
+
+import marimo
+
+__generated_with = "0.9.10"
+app = marimo.App()
+
+
+@app.cell
+def __(mo):
+ mo.md(""" Word Clouds of Different Markets """)
+ return
+
+
+@app.cell
+def __():
+ import marimo as mo
+ from wordcloud import WordCloud
+ import nltk
+ from nltk.corpus import stopwords
+ import matplotlib.pyplot as plt
+ import pandas as pd
+ return WordCloud, mo, nltk, pd, plt, stopwords
+
+
+@app.cell
+def __(pd):
+ #Currently a local csv file with pretend data on skills reflecting experiences for different stages in regulatory affairs
+ Markets = pd.read_csv("Skills_for_Markets.csv")
+ return (Markets,)
+
+
+@app.cell
+def __(stopwords):
+ #Allows the word clouds to built using English vocabularoy
+ Stop = stopwords.words("english")
+ return (Stop,)
+
+
+@app.cell
+def __(Markets, Stop, WordCloud):
+ #Prepare word clouds so they can be linked with the slider options
+ Entry_Skills = Markets['Entry Level'].values
+ Entry_WC = WordCloud(stopwords = Stop).generate(str(Entry_Skills))
+
+ Middle_Skills = Markets['Middle Level'].values
+ Middle_WC = WordCloud(stopwords = Stop).generate(str(Middle_Skills))
+
+ Senior_Skills = Markets['Senior Level'].values
+ Senior_WC = WordCloud(stopwords = Stop).generate(str(Senior_Skills))
+ return (
+ Entry_Skills,
+ Entry_WC,
+ Middle_Skills,
+ Middle_WC,
+ Senior_Skills,
+ Senior_WC,
+ )
+
+
+@app.cell
+def __(mo):
+ Levels = mo.ui.slider(1,3)
+ return (Levels,)
+
+
+@app.cell
+def __(Levels):
+ Skill_Level = Levels.value
+ return (Skill_Level,)
+
+
+@app.cell
+def __(Levels, mo):
+ mo.md(rf"Market: {Levels}")
+ return
+
+
+@app.cell
+def __(Skill_Level):
+ #"Translates" the numerical slider option into what experience level the word cloud is showing
+ def Market_Level(Skill_Level):
+ if Skill_Level == 1:
+ return ('Entry Level Regulatory Affairs')
+ if Skill_Level == 2:
+ return ('Middle Level Regulatory Affairs')
+ if Skill_Level == 3:
+ return ('Senior Level Regulatory Affairs')
+ Experience = Market_Level(Skill_Level)
+ return Experience, Market_Level
+
+
+@app.cell
+def __(Experience, mo):
+ mo.md(rf" {Experience} ")
+ return
+
+
+@app.cell
+def __(Entry_WC, Middle_WC, Senior_WC, Skill_Level, plt):
+ def Market_Word_Cloud(Skill_Level):
+ if Skill_Level == 1:
+ return plt.imshow(Entry_WC)
+ if Skill_Level == 2:
+ return plt.imshow(Middle_WC)
+ if Skill_Level == 3:
+ return plt.imshow(Senior_WC)
+
+ Market_Word_Cloud(Skill_Level)
+ return (Market_Word_Cloud,)
+
+
+if __name__ == "__main__":
+ app.run()
diff --git a/010-Mustjaab/Monitoring Flow of GHG Emissions.py b/010-Mustjaab/Monitoring Flow of GHG Emissions.py
new file mode 100644
index 0000000..2733d0b
--- /dev/null
+++ b/010-Mustjaab/Monitoring Flow of GHG Emissions.py
@@ -0,0 +1,529 @@
+# /// script
+# requires-python = ">=3.12"
+# dependencies = [
+# "statsmodels==0.14.4",
+# "pandas==2.2.3",
+# "scipy==1.14.1",
+# "marimo",
+# "altair==5.4.1",
+# ]
+# ///
+import marimo
+
+__generated_with = "0.9.7-dev1"
+app = marimo.App()
+
+
+@app.cell
+def __(mo):
+ mo.md(" Monitoring Flow of GHG Emissions ").style({'background-color':'green'})
+ return
+
+
+@app.cell
+def __():
+ import marimo as mo
+ import pandas as pd
+ from scipy.stats import f_oneway
+ from statsmodels.tsa.stattools import adfuller
+ return adfuller, f_oneway, mo, pd
+
+
+@app.cell
+async def __():
+ import micropip
+ await micropip.install("altair")
+ import altair as alt
+ return alt, micropip
+
+
+@app.cell
+def __(
+ Canada_Pesticide_Stack,
+ Canada_Pharmaceutical_Stack,
+ Canada_Transportation_Stack,
+ mo,
+):
+ mo.md(
+ rf""""
+ {mo.hstack([Canada_Pharmaceutical_Stack,Canada_Pesticide_Stack,Canada_Transportation_Stack])}
+ """
+ ).center()
+ return
+
+
+@app.cell
+def __(
+ Ontario_Pesticide_Stack,
+ Ontario_Pharmaceutical_Stack,
+ Ontario_Transportation_Stack,
+ mo,
+):
+ mo.md(
+ rf""""
+ {mo.hstack([Ontario_Pharmaceutical_Stack,Ontario_Pesticide_Stack,Ontario_Transportation_Stack])}
+ """
+ ).center()
+ return
+
+
+@app.cell
+def __(pd):
+ Start_Date = '2009'
+ End_Date = '2022'
+
+ Date_Range = pd.date_range(start=Start_Date, end=End_Date, freq='Y')
+ return Date_Range, End_Date, Start_Date
+
+
+@app.cell
+def __(Date_Range, pd):
+ Canada_Pharmaceutical = pd.DataFrame(
+ {
+ 'REF_DATE': Date_Range,
+ 'VALUE':[
+ 250,
+ 247,
+ 221,
+ 235,
+ 190,
+ 258,
+ 263,
+ 426,
+ 297,
+ 277,
+ 274,
+ 271,
+ 264
+ ]
+ }
+ )
+
+ Canada_Pesticide = pd.DataFrame(
+ {
+ 'REF_DATE':Date_Range,
+ 'VALUE':[
+ 5539,
+ 5869,
+ 6168,
+ 6168,
+ 6758,
+ 6342,
+ 6722,
+ 6987,
+ 6216,
+ 5881,
+ 6115,
+ 6050,
+ 6071
+ ]
+ }
+ )
+
+ Canada_Transportation = pd.DataFrame(
+ {
+ 'REF_DATE':Date_Range,
+ 'VALUE':[
+ 1357,
+ 1381,
+ 1310,
+ 1295,
+ 1199,
+ 933,
+ 1276,
+ 1388,
+ 1635,
+ 1617,
+ 1440,
+ 1188,
+ 1228
+ ]
+ }
+ )
+
+ Ontario_Pharmaceutical = pd.DataFrame(
+ {
+ 'REF_DATE':Date_Range,
+ 'VALUE':[
+ 154,
+ 153,
+ 137,
+ 151,
+ 121,
+ 176,
+ 163,
+ 326,
+ 176,
+ 166,
+ 177,
+ 184,
+ 185
+ ]
+ }
+ )
+
+ Ontario_Pesticide = pd.DataFrame(
+ {
+ 'REF_DATE':Date_Range,
+ 'VALUE':[
+ 754,
+ 575,
+ 671,
+ 768,
+ 1120,
+ 1140,
+ 950,
+ 1179,
+ 1112,
+ 387,
+ 399,
+ 387,
+ 389
+ ]
+ }
+ )
+
+ Ontario_Transportation = pd.DataFrame(
+ {
+ 'REF_DATE':Date_Range,
+ 'VALUE':[
+ 526,
+ 516,
+ 445,
+ 461,
+ 519,
+ 410,
+ 636,
+ 618,
+ 769,
+ 712,
+ 642,
+ 488,
+ 485,
+ ]
+ }
+ )
+ return (
+ Canada_Pesticide,
+ Canada_Pharmaceutical,
+ Canada_Transportation,
+ Ontario_Pesticide,
+ Ontario_Pharmaceutical,
+ Ontario_Transportation,
+ )
+
+
+@app.cell
+def __(
+ Canada_Pesticide,
+ Canada_Pharmaceutical,
+ Canada_Transportation,
+ Ontario_Pesticide,
+ Ontario_Pharmaceutical,
+ Ontario_Transportation,
+ adfuller,
+):
+ Canada_ADF_Pharmaceutical = adfuller(Canada_Pharmaceutical['VALUE'])
+ Canada_ADF_Pesticide = adfuller(Canada_Pesticide['VALUE'])
+ Canada_ADF_Transportation = adfuller(Canada_Transportation['VALUE'])
+
+ Ontario_ADF_Pharmaceutical = adfuller(Ontario_Pharmaceutical['VALUE'])
+ Ontario_ADF_Pesticide = adfuller(Ontario_Pesticide['VALUE'])
+ Ontario_ADF_Transportation = adfuller(Ontario_Transportation['VALUE'])
+ return (
+ Canada_ADF_Pesticide,
+ Canada_ADF_Pharmaceutical,
+ Canada_ADF_Transportation,
+ Ontario_ADF_Pesticide,
+ Ontario_ADF_Pharmaceutical,
+ Ontario_ADF_Transportation,
+ )
+
+
+@app.cell
+def __(
+ Canada_ADF_Pesticide,
+ Canada_ADF_Pharmaceutical,
+ Canada_ADF_Transportation,
+ Canada_Pesticide,
+ Canada_Pharmaceutical,
+ Canada_Transportation,
+ Ontario_ADF_Pesticide,
+ Ontario_ADF_Pharmaceutical,
+ Ontario_ADF_Transportation,
+ Ontario_Pesticide,
+ Ontario_Pharmaceutical,
+ Ontario_Transportation,
+ pd,
+):
+ Canada_Pharmaceutical_Summary = pd.DataFrame(
+ {
+ 'Statistic':[
+ 'Mean',
+ 'Median',
+ 'Skewness',
+ 'ADF pvalue'
+ ],
+ 'Value':[
+ Canada_Pharmaceutical['VALUE'].mean(),
+ Canada_Pharmaceutical['VALUE'].median(),
+ Canada_Pharmaceutical['VALUE'].skew(),
+ Canada_ADF_Pharmaceutical[1]
+ ]
+ }
+ )
+
+ Canada_Pesticide_Summary = pd.DataFrame(
+ {
+ 'Statistic':[
+ 'Mean',
+ 'Median',
+ 'Skewness',
+ 'ADF pvalue'
+ ],
+ 'Value':[
+ Canada_Pesticide['VALUE'].mean(),
+ Canada_Pesticide['VALUE'].median(),
+ Canada_Pesticide['VALUE'].skew(),
+ Canada_ADF_Pesticide[1]
+ ]
+ }
+ )
+
+
+ Canada_Transportation_Summary = pd.DataFrame(
+ {
+ 'Statistic':[
+ 'Mean',
+ 'Median',
+ 'Skewness',
+ 'ADF pvalue'
+ ],
+ 'Value':[
+ Canada_Transportation['VALUE'].mean(),
+ Canada_Transportation['VALUE'].median(),
+ Canada_Transportation['VALUE'].skew(),
+ Canada_ADF_Transportation[1]
+ ]
+ }
+ )
+
+ Ontario_Pharmaceutical_Summary = pd.DataFrame(
+ {
+ 'Statistic':[
+ 'Mean',
+ 'Median',
+ 'Skewness',
+ 'ADF pvalue'
+ ],
+ 'Value':[
+ Ontario_Pharmaceutical['VALUE'].mean(),
+ Ontario_Pharmaceutical['VALUE'].median(),
+ Ontario_Pharmaceutical['VALUE'].skew(),
+ Ontario_ADF_Pharmaceutical[1]
+ ]
+ }
+ )
+
+
+ Ontario_Pharmaceutical_Summary = pd.DataFrame(
+ {
+ 'Statistic':[
+ 'Mean',
+ 'Median',
+ 'Skewness',
+ 'ADF pvalue'
+ ],
+ 'Value':[
+ Ontario_Pharmaceutical['VALUE'].mean(),
+ Ontario_Pharmaceutical['VALUE'].median(),
+ Ontario_Pharmaceutical['VALUE'].skew(),
+ Ontario_ADF_Pharmaceutical[1]
+ ]
+ }
+ )
+
+ Ontario_Pesticide_Summary = pd.DataFrame(
+ {
+ 'Statistic':[
+ 'Mean',
+ 'Median',
+ 'Skewness',
+ 'ADF pvalue'
+ ],
+ 'Value':[
+ Ontario_Pesticide['VALUE'].mean(),
+ Ontario_Pesticide['VALUE'].median(),
+ Ontario_Pesticide['VALUE'].skew(),
+ Ontario_ADF_Pesticide[1]
+ ]
+ }
+ )
+
+ Ontario_Transportation_Summary = pd.DataFrame(
+ {
+ 'Statistic':[
+ 'Mean',
+ 'Median',
+ 'Skewness',
+ 'ADF pvalue'
+ ],
+ 'Value':[
+ Ontario_Transportation['VALUE'].mean(),
+ Ontario_Transportation['VALUE'].median(),
+ Ontario_Transportation['VALUE'].skew(),
+ Ontario_ADF_Transportation[1]
+ ]
+ }
+ )
+ return (
+ Canada_Pesticide_Summary,
+ Canada_Pharmaceutical_Summary,
+ Canada_Transportation_Summary,
+ Ontario_Pesticide_Summary,
+ Ontario_Pharmaceutical_Summary,
+ Ontario_Transportation_Summary,
+ )
+
+
+@app.cell
+def __(
+ Canada_Pesticide,
+ Canada_Pharmaceutical,
+ Canada_Transportation,
+ Ontario_Pesticide,
+ Ontario_Pharmaceutical,
+ Ontario_Transportation,
+ alt,
+ mo,
+):
+ Pharmaceutical_Time_Series = mo.ui.altair_chart(alt.Chart(Canada_Pharmaceutical).mark_point().encode(
+ x='REF_DATE',
+ y='VALUE'
+ ))
+
+ Pesticide_Time_Series = mo.ui.altair_chart(alt.Chart(Canada_Pesticide).mark_point().encode(
+ x='REF_DATE',
+ y='VALUE'
+ ))
+
+ Transportation_Time_Series = mo.ui.altair_chart(alt.Chart(Canada_Transportation).mark_point().encode(
+ x='REF_DATE',
+ y='VALUE'
+ ))
+
+
+ Ontario_Pharmaceutical_Time_Series = mo.ui.altair_chart(
+ alt.Chart(Ontario_Pharmaceutical).mark_point().encode(
+ x='REF_DATE',
+ y='VALUE'
+ ))
+
+ Ontario_Pesticide_Time_Series = mo.ui.altair_chart(
+ alt.Chart(Ontario_Pesticide).mark_point().encode(
+ x='REF_DATE',
+ y='VALUE'
+ )
+ )
+
+ Ontario_Transportation_Time_Series = mo.ui.altair_chart(
+ alt.Chart(Ontario_Transportation).mark_point().encode(
+ x='REF_DATE',
+ y='VALUE'
+ )
+ )
+ return (
+ Ontario_Pesticide_Time_Series,
+ Ontario_Pharmaceutical_Time_Series,
+ Ontario_Transportation_Time_Series,
+ Pesticide_Time_Series,
+ Pharmaceutical_Time_Series,
+ Transportation_Time_Series,
+ )
+
+
+@app.cell
+def __(
+ Canada_Pesticide_Summary,
+ Canada_Pharmaceutical_Summary,
+ Canada_Transportation_Summary,
+ Ontario_Pesticide_Summary,
+ Ontario_Pesticide_Time_Series,
+ Ontario_Pharmaceutical_Summary,
+ Ontario_Pharmaceutical_Time_Series,
+ Ontario_Transportation_Summary,
+ Ontario_Transportation_Time_Series,
+ Pesticide_Time_Series,
+ Pharmaceutical_Time_Series,
+ Transportation_Time_Series,
+ mo,
+):
+ Canada_Pharmaceutical_Stack = mo.vstack(
+ [
+ mo.md(" Canada Pharmaceuticals ").style({'background-color':'crimson','float':'left'}),
+ Pharmaceutical_Time_Series,
+ mo.ui.table(Pharmaceutical_Time_Series.value),
+ mo.ui.table(Canada_Pharmaceutical_Summary)
+ ])
+
+ Canada_Pesticide_Stack = mo.vstack(
+ [
+ mo.md(" Canada Pesticide Manufacturing ").style({'background-color':'crimson','float':'left'}),
+ Pesticide_Time_Series,
+ mo.ui.table(Pesticide_Time_Series.value),
+ mo.ui.table(Canada_Pesticide_Summary)
+ ])
+
+ Canada_Transportation_Stack = mo.vstack(
+ [
+ mo.md(" Canada Transportation Engineering ").style({'background-color':'crimson','float':'left'}),
+ Transportation_Time_Series,
+ mo.ui.table(Transportation_Time_Series.value),
+ mo.ui.table(Canada_Transportation_Summary)
+ ])
+
+
+ Ontario_Pharmaceutical_Stack = mo.vstack(
+ [
+ mo.md(" Ontario Pharmaceuticals ").style({'background-color':'navy','float':'left'}),
+ Ontario_Pharmaceutical_Time_Series,
+ mo.ui.table(Ontario_Pharmaceutical_Time_Series.value),
+ mo.ui.table(Ontario_Pharmaceutical_Summary)
+ ]
+ )
+
+ Ontario_Pesticide_Stack = mo.vstack(
+ [
+ mo.md(" Ontario Pesticide Manufacturing ").style({'background-color':'navy','float':'left'}),
+ Ontario_Pesticide_Time_Series,
+ mo.ui.table(Ontario_Pesticide_Time_Series.value),
+ mo.ui.table(Ontario_Pesticide_Summary)
+ ]
+ )
+
+ Ontario_Transportation_Stack = mo.vstack(
+ [
+ mo.md(" Ontario Transportation Engineering ").style({'background-color':'navy','float':'left'}),
+ Ontario_Transportation_Time_Series,
+ mo.ui.table(Ontario_Transportation_Time_Series.value),
+ mo.ui.table(Ontario_Transportation_Summary)
+ ]
+ )
+ return (
+ Canada_Pesticide_Stack,
+ Canada_Pharmaceutical_Stack,
+ Canada_Transportation_Stack,
+ Ontario_Pesticide_Stack,
+ Ontario_Pharmaceutical_Stack,
+ Ontario_Transportation_Stack,
+ )
+
+
+@app.cell
+def __(mo):
+ mo.md("""""")
+ return
+
+
+if __name__ == "__main__":
+ app.run()
diff --git a/010-Mustjaab/Periodic_App.py b/010-Mustjaab/Periodic_App.py
new file mode 100644
index 0000000..57ca2af
--- /dev/null
+++ b/010-Mustjaab/Periodic_App.py
@@ -0,0 +1,73 @@
+# /// script
+# requires-python = ">=3.12"
+# dependencies = [
+# "marimo",
+# "pandas==2.2.3",
+# "periodictable==1.7.1",
+# ]
+# ///
+
+import marimo
+
+__generated_with = "0.9.10"
+app = marimo.App()
+
+
+@app.cell
+def __(mo):
+ mo.md(""" Periodic Table App """)
+ return
+
+
+@app.cell
+def __():
+ import marimo as mo
+ # pip install periodictable first before importing library
+ import periodictable
+ import pandas as pd
+ return mo, pd, periodictable
+
+
+@app.cell
+def __(mo):
+ Form = mo.ui.text(label="Atomic Number:").form()
+ Form
+ return (Form,)
+
+
+@app.cell
+def __(Form):
+ Element = Form.value
+ E = int(Element)
+ return E, Element
+
+
+@app.cell
+def __(E, periodictable):
+ element = periodictable.elements[E]
+
+ Property_Table = {
+ 'Property': [
+ 'Name',
+ 'Symbol',
+ 'Mass'
+ ],
+
+ 'Value': [
+ element.name,
+ element.symbol,
+ element.mass
+ ]
+ }
+ return Property_Table, element
+
+
+@app.cell
+def __(Property_Table, mo, pd):
+ Dynamic_Table = pd.DataFrame(Property_Table)
+ mo.ui.table(Dynamic_Table)
+ return (Dynamic_Table,)
+
+
+if __name__ == "__main__":
+ app.run()
diff --git a/010-Mustjaab/Portfolio.py b/010-Mustjaab/Portfolio.py
new file mode 100644
index 0000000..1815e4b
--- /dev/null
+++ b/010-Mustjaab/Portfolio.py
@@ -0,0 +1,119 @@
+# /// script
+# requires-python = ">=3.12"
+# dependencies = [
+# "marimo",
+# ]
+# ///
+import marimo
+
+__generated_with = "0.9.7-dev1"
+app = marimo.App()
+
+
+@app.cell
+def __(mo):
+ mo.md(
+ """
+ Muhammad Mustjaab
+ Portfolio
+ """
+ ).center()
+ return
+
+
+@app.cell
+def __():
+ import marimo as mo
+ return (mo,)
+
+
+@app.cell
+def __(mo):
+ mo.md(""" Projects """)
+ return
+
+
+@app.cell
+def __(mo):
+ mo.hstack([
+ mo.md(
+ """
+
+
+ Description:
+
+ Recommends Post Approval Studies based on medical specialties
+ Selected number of recommended studies to display
+
+ """
+ ).style({"border-width":'2px','border-color':'crimson','overflow':'auto'}),
+ mo.md(
+ """
+
+ Description:
+
+ Determine the GC content of user generated nucleotide sequences
+ Compare normal GC content with application of differential privacy
+
+ """).style({'border-width':'2px','border-color':'gold','overflow':'auto'}),
+ mo.md(
+ """
+
+ Description:
+
+ Classifies warning letters to different offices issuing the letter
+ Predicts subject of the warning letter based on the office
+
+ """).style({'border-width':'2px','border-color':'violet','overflow':'auto'})
+ ]
+ )
+ return
+
+
+@app.cell
+def __(mo):
+ mo.md(
+ """
+ Github:
+ https://github.com/Mustjaab
+ Education
+ """
+ )
+ return
+
+
+@app.cell
+def __(mo):
+ mo.carousel(
+ [
+ mo.md(
+ """
+ BSc|General Sciences|University of Waterloo
+
+ Biostatistics
+ Computational Biology
+ Genomics
+ Ecological Consequences of Climate Change
+ Human Physiolgy
+
+ """
+ ),
+ mo.md(
+ """
+ Graduate Certificate|Regulatory Affairs|Humber College
+
+ Medical Devices
+ Emerging Biotechnology
+ Management of Regulatory Submissions (and Management of Global Regulatory Submission)
+ Pharmacology and Pathophysiology
+
+ """)
+ ]
+ ).style({"border-width":'4px','border-color':'seagreen'})
+ return
+
+
+if __name__ == "__main__":
+ app.run()
diff --git a/010-Mustjaab/Post Approval Study Recommender.py b/010-Mustjaab/Post Approval Study Recommender.py
new file mode 100644
index 0000000..eb54d6a
--- /dev/null
+++ b/010-Mustjaab/Post Approval Study Recommender.py
@@ -0,0 +1,120 @@
+# /// script
+# requires-python = ">=3.12"
+# dependencies = [
+# "pandas==2.2.3",
+# "scikit-learn==1.5.2",
+# "marimo",
+# "plotly==5.24.1",
+# "pyodide-py==0.26.2",
+# ]
+# ///
+
+import marimo
+
+__generated_with = "0.9.10"
+app = marimo.App()
+
+
+@app.cell
+def __(mo):
+ mo.md(""" Post Approval Study Recommender """)
+ return
+
+
+@app.cell
+def __():
+ import marimo as mo
+ import pandas as pd
+ import micropip
+ import pyodide
+ from sklearn.feature_extraction.text import TfidfVectorizer
+ from sklearn.metrics.pairwise import linear_kernel
+ return TfidfVectorizer, linear_kernel, micropip, mo, pd, pyodide
+
+
+@app.cell
+async def __(micropip):
+ await micropip.install("plotly")
+ import plotly.express as px
+ return (px,)
+
+
+@app.cell
+def __(pd):
+ PAS_FDA = "https://raw.githubusercontent.com/Mustjaab/PAS-Recommender/main/Post_Approval_Studies.csv" # csv file also exists under assets folder
+ PAS_FDA = pd.read_csv(PAS_FDA, header=0)
+ return (PAS_FDA,)
+
+
+@app.cell
+def __(mo):
+ Speciality_Selection = mo.ui.dropdown(
+ options=['Cardiovascular', 'Clinical Chemistry', 'Neurology', 'Ophthalmic',
+ 'General & Plastic Surgery', 'Orthopedic', 'General Hospital',
+ 'Toxicology', 'Obstetrics/Gynecology', 'Radiology',
+ 'Ear Nose & Throat', 'Pathology', 'Anesthesiology',
+ 'Gastroenterology/Urology'],
+ value='Cardiovascular',
+ label='Medical Specialty'
+ )
+
+ Top_Results = mo.ui.slider(2,11,1,label='Top Results:')
+ return Speciality_Selection, Top_Results
+
+
+@app.cell
+def __(Speciality_Selection, Top_Results):
+ top_results = Top_Results.value
+ Medical_Specailty = Speciality_Selection.value
+ return Medical_Specailty, top_results
+
+
+@app.cell
+def __(Speciality_Selection, Top_Results, mo):
+ mo.hstack([Speciality_Selection,Top_Results]).center()
+ return
+
+
+@app.cell
+def __(PAS_FDA, TfidfVectorizer):
+ tfidf = TfidfVectorizer(stop_words='english')
+ tfidf_matrix = tfidf.fit_transform(PAS_FDA['Study_Name'])
+ return tfidf, tfidf_matrix
+
+
+@app.cell
+def __(linear_kernel, tfidf_matrix):
+ cosine_sim = linear_kernel(tfidf_matrix,tfidf_matrix)
+ return (cosine_sim,)
+
+
+@app.cell
+def __(PAS_FDA, cosine_sim):
+ def get_recommendations(Medical_Specialty,top_results,cosine_sim=cosine_sim):
+ idx = PAS_FDA.index[PAS_FDA['Medical_Specialty'] ==
+ Medical_Specialty].tolist()[0]
+ sim_scores = list(enumerate(cosine_sim[idx]))
+ sim_scores = sorted(sim_scores, key=lambda x: x[1], reverse=True)
+ sim_scores = sim_scores[1:top_results]
+ Study_indices = [i[0] for i in sim_scores]
+ return PAS_FDA['Study_Name'].iloc[Study_indices]
+ return (get_recommendations,)
+
+
+@app.cell
+def __(Medical_Specailty, get_recommendations, mo, pd, top_results):
+ Study_Recommendation = get_recommendations(Medical_Specailty,top_results)
+ Study_Recommendation = pd.DataFrame(Study_Recommendation)
+ Study_Recommendation = Study_Recommendation.rename(columns={'Study_Name':'Recommended Study'})
+ mo.ui.table(Study_Recommendation)
+ return (Study_Recommendation,)
+
+
+@app.cell
+def __(mo):
+ mo.md(""" Data obtained from the FDA """)
+ return
+
+
+if __name__ == "__main__":
+ app.run()
diff --git a/010-Mustjaab/Punnett Square App.py b/010-Mustjaab/Punnett Square App.py
new file mode 100644
index 0000000..ffaab70
--- /dev/null
+++ b/010-Mustjaab/Punnett Square App.py
@@ -0,0 +1,331 @@
+# /// script
+# requires-python = ">=3.12"
+# dependencies = [
+# "marimo",
+# "pandas==2.2.3",
+# "duckdb==1.1.2",
+# "plotly==5.24.1",
+# ]
+# ///
+
+import marimo
+
+__generated_with = "0.9.10"
+app = marimo.App(width="full")
+
+
+@app.cell
+def __(mo):
+ mo.md("#Punnett Square App – Genotype ").center()
+ return
+
+
+@app.cell
+def __():
+ import marimo as mo
+ import pandas as pd
+ return mo, pd
+
+
+@app.cell
+def __(pd):
+ #Use index to reflect rownames of punnett squares
+ Aa_Aa = pd.DataFrame(
+ {
+ 'A': [1/4,2/4],
+ 'a': [2/4,1/4]
+ },
+ index=['A', 'a']
+ )
+
+ aa_aa = pd.DataFrame(
+ {
+ 'a': [4/4, 4/4],
+ 'a': [4/4, 4/4]
+ },
+ index=['a', 'a']
+ )
+
+ AA_AA = pd.DataFrame(
+ {
+ 'A': [4/4,4/4],
+ 'A': [4/4,4/4]
+ },
+ index = ['A','A']
+ )
+
+ Aa_Bb = pd.DataFrame(
+ {
+ 'AB': [1/16,2/16,2/16,4/16],
+ 'Ab': [2/16,1/16,4/16,2/16],
+ 'aB': [2/16,4/16,1/16,2/16],
+ 'ab': [4/16,2/16,2/16,1/16]
+ },
+ index = ['AB','Ab','aB','ab']
+ )
+
+ AA_BB = pd.DataFrame(
+ {
+ 'AB': [8/16,8/16,8/16,8/16],
+ 'AB': [8/16,8/16,8/16,8/16],
+ 'AB': [8/16,8/16,8/16,8/16],
+ 'AB': [8/16,8/16,8/16,8/16]
+ },
+ index = ['aB','ab','aB','ab']
+ )
+
+ Ab_Ba = pd.DataFrame(
+ {
+ 'Ab':[4/16,4/16,4/16,4/16],
+ 'Ab':[4/16,4/16,4/16,4/16],
+ 'bb':[4/16,4/16,4/16,4/16],
+ 'bb':[4/16,4/16,4/16,4/16]
+ },
+ index = ['BA','BA','aA','aA']
+ )
+
+ Ab_Bb = pd.DataFrame(
+ {
+ 'AB':[1/16,2/16,2/16,4/16],
+ 'ab':[2/16,1/16,4/16,2/16],
+ 'bB':[2/16,4/16,1/16,2/16],
+ 'bb':[4/16,2/16,2/16,1/16]
+ },
+ index = ['AB','Ab','bB','bb']
+ )
+ return AA_AA, AA_BB, Aa_Aa, Aa_Bb, Ab_Ba, Ab_Bb, aa_aa
+
+
+@app.cell
+def __(AA_AA, AA_BB, Aa_Aa, Aa_Bb, Ab_Ba, Ab_Bb, aa_aa):
+ Punnett_Options = {
+ 'AaxAa':Aa_Aa,
+ 'AAxAA':AA_AA,
+ 'aaxaa':aa_aa,
+ 'AaBbxAaBb':Aa_Bb,
+ 'AABBxaaBb':AA_BB,
+ 'AbbbxBaAA':Ab_Ba,
+ 'AbBbxAbBb':Ab_Bb
+ }
+ return (Punnett_Options,)
+
+
+@app.cell
+def __(mo):
+ Punnett_Square_Chooser = mo.ui.dropdown(
+ options = [
+ 'AaxAa',
+ 'AAxAA',
+ 'aaxaa',
+ 'AaBbxAaBb',
+ 'AABBxaaBb',
+ 'AbbbxBaAA',
+ 'AbBbxAbBb'
+ ],value='AaxAa'
+ )
+ Punnett_Square_Chooser.style({'border-width':'10px','border-color':'crimson','background-color':'navy'}).center()
+ return (Punnett_Square_Chooser,)
+
+
+@app.cell
+def __(Punnett_Options, Punnett_Square_Chooser):
+ Punnett_Square = Punnett_Options[Punnett_Square_Chooser.value]
+ return (Punnett_Square,)
+
+
+@app.cell
+def __(Most_Probable_Offspring, mo):
+ mo.stat(
+ value=str(Most_Probable_Offspring),
+ label='Most probable outcome(s):',
+ caption='Trait',
+ bordered=True
+ ).style({'border-width':'4px','background-color':'navy','border-color':'crimson'})
+ return
+
+
+@app.cell
+def __(pd):
+ #Restructure the punnett squares to turn them into either bar plots or pie charts, I'm not sure yet.
+
+ #AaxAa
+ Heterozygous_Aa = pd.DataFrame(
+ {
+ 'Genotype':['Aa','AA','aa'],
+ 'Probability':[2/4,1/4,1/4]
+ }
+ )
+
+ #AAxAA
+ Homozygous_AA = pd.DataFrame(
+ {
+ 'Genotype':['AA'],
+ 'Probability':[4/4]
+ }
+ )
+
+ ##aaxaa
+ Homozygous_aa = pd.DataFrame(
+ {
+ 'Genotype':['aa'],
+ 'Probability':[4/4]
+ }
+ )
+
+ #AaxBb
+ Heterozygous_Aa_Bb = pd.DataFrame(
+ {
+ 'Genotype': ['AaBb','AABb','AaBB','Aabb','aaBb','AABB','AAbb','aaBB','aabb'],
+ 'Probability': [4/16,2/16,2/16,2/16,2/16,1/16,1/16,1/16,1/16]
+ }
+ )
+
+ #AABBxaaBb
+ Heterozygous_AA_BB = pd.DataFrame(
+ {
+ 'Genotype': ['AaBB','AaBb'],
+ 'Probability': [8/16,8/16]
+ }
+ )
+
+ #AbbbxBaAA
+ Heterozygous_Ab_Ba = pd.DataFrame(
+ {
+ 'Genotype':['AbbA','bBbA','AabA','babA'],
+ 'Probability':[1/4,1/4,1/4,1/4]
+ }
+ )
+
+ #AbBbxAbBb
+ Heterozygous_Ab_Bb = pd.DataFrame(
+ {
+ 'Genotype':['bAbB','AAbB','baBB','bAbb','bbbB','AABB','AAbb','bbBB','bbbb'],
+ 'Probability':[4/16,2/16,2/16,2/16,2/16,1/16,1/16,1/16,1/16]
+ }
+ )
+ return (
+ Heterozygous_AA_BB,
+ Heterozygous_Aa,
+ Heterozygous_Aa_Bb,
+ Heterozygous_Ab_Ba,
+ Heterozygous_Ab_Bb,
+ Homozygous_AA,
+ Homozygous_aa,
+ )
+
+
+@app.cell
+def __(
+ Heterozygous_AA_BB,
+ Heterozygous_Aa,
+ Heterozygous_Aa_Bb,
+ Heterozygous_Ab_Ba,
+ Heterozygous_Ab_Bb,
+ Homozygous_AA,
+ Homozygous_aa,
+ px,
+):
+ #Return bar charts to corresponding crosses
+ def Allele_Bar_Plot(Zygosity):
+ if Zygosity == 'AaxAa':
+ return px.bar(Heterozygous_Aa,x='Genotype',y='Probability',title='Bar Plot of Genotype Probabilities')
+ if Zygosity == 'AAxAA':
+ return px.bar(Homozygous_AA,x='Genotype',y='Probability',title='Bar Plot of Genotype Probabilities')
+ if Zygosity == 'aaxaa':
+ return px.bar(Homozygous_aa,x='Genotype',y='Probability',title='Bar Plot of Genotype Probabilities')
+ if Zygosity == 'AaBbxAaBb':
+ return px.bar(Heterozygous_Aa_Bb,x='Genotype',y='Probability',title='Bar Plot of Genotype Probabilities')
+ if Zygosity == 'AABBxaaBb':
+ return px.bar(Heterozygous_AA_BB,x='Genotype',y='Probability',title='Bar Plot of Genotype Probabilities')
+ if Zygosity == 'AbbbxBaAA':
+ return px.bar(Heterozygous_Ab_Ba,x='Genotype',y='Probability',title='Bar Plot of Genotype Probabilities')
+ if Zygosity == 'AbBbxAbBb':
+ return px.bar(Heterozygous_Ab_Bb,x='Genotype',y='Probability',title='Bar Plot of Genotype Probabilities')
+ return (Allele_Bar_Plot,)
+
+
+@app.cell
+def __(Allele_Bar_Plot, Punnett_Square_Chooser):
+ Zygosity = Punnett_Square_Chooser.value
+ Allele_Bar_Chart = Allele_Bar_Plot(Zygosity)
+ return Allele_Bar_Chart, Zygosity
+
+
+@app.cell
+def __(Allele_Bar_Chart, Punnett_Heat_Map, mo):
+ mo.md(
+ f"""
+ {mo.hstack([Allele_Bar_Chart,Punnett_Heat_Map])}
+ """
+ ).style({'background-color':'crimson','border-color':'navy','border-width':'15px'}).center()
+ return
+
+
+@app.cell
+def __():
+ import duckdb as db
+ return (db,)
+
+
+@app.cell
+def __(db):
+ Aa_Max = db.sql("SELECT Genotype,MAX(Probability) AS Max_Probability FROM Heterozygous_Aa GROUP BY Genotype ORDER BY Max_Probability DESC").df()
+ AA_Max = db.sql("SELECT Genotype,MAX(Probability) AS Max_Probability FROM Homozygous_AA GROUP BY Genotype ORDER BY Max_Probability DESC").df()
+ aa_Max = db.sql("SELECT Genotype,MAX(Probability) AS Max_Probability FROM Homozygous_aa GROUP BY Genotype ORDER BY Max_Probability DESC").df()
+ Aa_Bb_Max = db.sql("SELECT Genotype,MAX(Probability) AS Max_Probability FROM Heterozygous_Aa_Bb GROUP BY Genotype ORDER BY Max_Probability DESC").df()
+ AA_BB_Max = db.sql("SELECT Genotype,MAX(Probability) AS Max_Probability FROM Heterozygous_AA_BB GROUP BY Genotype ORDER BY Max_Probability DESC").df()
+ Ab_Ba_Max = db.sql("SELECT Genotype,MAX(Probability) AS Max_Probability FROM Heterozygous_Ab_Ba GROUP BY Genotype ORDER BY Max_Probability DESC").df()
+ Ab_Bb_Max = db.sql("SELECT Genotype,MAX(Probability) AS Max_Probability FROM Heterozygous_Ab_Bb GROUP BY Genotype ORDER BY Max_Probability DESC").df()
+ return (
+ AA_BB_Max,
+ AA_Max,
+ Aa_Bb_Max,
+ Aa_Max,
+ Ab_Ba_Max,
+ Ab_Bb_Max,
+ aa_Max,
+ )
+
+
+@app.cell
+def __(AA_BB_Max, AA_Max, Aa_Bb_Max, Aa_Max, Ab_Ba_Max, Ab_Bb_Max, aa_Max):
+ def Likely_Offspring(Zygosity):
+ if Zygosity == 'AaxAa':
+ return Aa_Max.Genotype[0]
+ if Zygosity == 'AAxAA':
+ return AA_Max.Genotype[0]
+ if Zygosity == 'aaxaa':
+ return aa_Max.Genotype[0]
+ if Zygosity == 'AaBbxAaBb':
+ return Aa_Bb_Max.Genotype[0]
+ if Zygosity == 'AABBxaaBb':
+ return [AA_BB_Max.Genotype[0],AA_BB_Max.Genotype[1]]
+ if Zygosity =='AbbbxBaAA':
+ return [Ab_Ba_Max.Genotype[0],Ab_Ba_Max.Genotype[1],Ab_Ba_Max.Genotype[2],Ab_Ba_Max.Genotype[3]]
+ if Zygosity == 'AbBbxAbBb':
+ return Ab_Bb_Max.Genotype[0]
+ return (Likely_Offspring,)
+
+
+@app.cell
+def __(Likely_Offspring, Zygosity):
+ Most_Probable_Offspring = Likely_Offspring(Zygosity)
+ return (Most_Probable_Offspring,)
+
+
+@app.cell
+async def __():
+ import micropip
+ await micropip.install("plotly")
+ import plotly.express as px
+ return micropip, px
+
+
+@app.cell
+def __(Punnett_Square, px):
+ Punnett_Heat_Map = px.imshow(Punnett_Square,text_auto=True,title='Heatmap of Punnett Square')
+ return (Punnett_Heat_Map,)
+
+
+if __name__ == "__main__":
+ app.run()
diff --git a/010-Mustjaab/README.md b/010-Mustjaab/README.md
new file mode 100644
index 0000000..b7fb52e
--- /dev/null
+++ b/010-Mustjaab/README.md
@@ -0,0 +1,50 @@
+# Mustjaab: Diverse Analysis and Interactive Notebooks
+
+_October 10, 2024_
+
+This week's spotlight 🌟 shines on [@Mustjaab](https://www.linkedin.com/in/muhammad-mustjaab-8038a3236/), an enthusiastic contributor to the marimo community!
+
+Mustjaab has shared numerous fascinating notebooks in the #share-your-notebook channel, showcasing a wide range of analyses and interactive features. The contributions include:
+
+1. Analyses of greenhouse gas emissions
+2. Exploration of Perplexity using [`mo.ui.chat`](https://docs.marimo.io/api/inputs/chat.html#marimo.ui.chat)
+3. Various other insightful and interactive notebooks
+
+Beyond creating content, Mustjaab has been instrumental in improving marimo by regularly providing feedback on how to enhance the platform. Their enthusiasm and dedication to the community have been invaluable.
+
+## Featured Notebook
+
+You can explore one of Mustjaab's notebooks here:
+
+[![Open with marimo](https://marimo.io/shield.svg)](https://marimo.io/p/@muhammad-mustjaab/analysis-of-wait-times-in-canadian-hospitals-critical-procedures)
+
+To run this notebook locally, use the following command if you have `uv` installed:
+
+```shell
+uvx marimo run --sandbox notebook.py
+```
+
+If you don't have `uv` installed, you can use:
+
+```shell
+marimo run notebook.py
+```
+
+Note: You may need to manually install the notebook's dependencies if you're not using `uv`.
+
+To edit the notebook source code, replace `run` with `edit` in the above commands.
+
+> [!NOTE]
+> This project is part of our [Community Spotlights](https://marimo.io/c/@spotlights/community-spotlights) collection, where we feature outstanding projects and contributions from the marimo community.
+
+We're incredibly grateful for all of Mustjaab's contributions and enthusiasm! ♥🙏
+
+## Spotlight Promotion
+
+This spotlight has been featured on our social media platforms. Join the conversation:
+
+- Twitter Post: [Link](https://x.com/marimo_io/status/1844428113683550356)
+- LinkedIn Post: [Link](https://www.linkedin.com/posts/marimo-io_join-the-marimo-discord-server-activity-7250193061899554816-u_ct?utm_source=share&utm_medium=member_desktop)
+- Discord Discussion: [Join our Discord](https://discord.gg/JE7nhX6mD8)
+
+We encourage you to engage with these posts, share your thoughts, and help us celebrate this amazing contribution to the Marimo community!
diff --git a/010-Mustjaab/Warning Letter Classification Model.py b/010-Mustjaab/Warning Letter Classification Model.py
new file mode 100644
index 0000000..3085efa
--- /dev/null
+++ b/010-Mustjaab/Warning Letter Classification Model.py
@@ -0,0 +1,156 @@
+# /// script
+# requires-python = ">=3.12"
+# dependencies = [
+# "scikit-learn==1.5.2",
+# "marimo",
+# "pandas==2.2.3",
+# "plotly==5.24.1",
+# ]
+# ///
+
+import marimo
+
+__generated_with = "0.9.10"
+app = marimo.App()
+
+
+@app.cell
+def __(mo):
+ mo.md(""" Warning Letter Classification Model """)
+ return
+
+
+@app.cell
+def __():
+ import marimo as mo
+ import pandas as pd
+ from sklearn.feature_extraction.text import TfidfVectorizer
+ from sklearn.model_selection import train_test_split
+ from sklearn.naive_bayes import MultinomialNB
+ import micropip
+ return (
+ MultinomialNB,
+ TfidfVectorizer,
+ micropip,
+ mo,
+ pd,
+ train_test_split,
+ )
+
+
+@app.cell
+async def __(micropip):
+ await micropip.install('plotly')
+ import plotly.express as px
+ return (px,)
+
+
+@app.cell
+def __(pd):
+ #Get data from the github repository as WASM doesn't load locally stored files
+ Warning_Letter_Data = pd.read_csv("https://raw.githubusercontent.com/Mustjaab/warning-letter-analysis/main/warning-letters.csv")
+ Subject = pd.DataFrame(Warning_Letter_Data['Issuing Office'].unique())
+ return Subject, Warning_Letter_Data
+
+
+@app.cell
+def __(Warning_Letter_Data, train_test_split):
+ X_train, X_test, y_train, y_test = train_test_split(Warning_Letter_Data['Issuing Office'], Warning_Letter_Data['Subject'], test_size=0.2, random_state=42)
+ return X_test, X_train, y_test, y_train
+
+
+@app.cell
+def __(TfidfVectorizer, X_test, X_train):
+ vectorizer = TfidfVectorizer()
+ X_train_tfidf = vectorizer.fit_transform(X_train)
+ X_test_tfidf = vectorizer.transform(X_test)
+ return X_test_tfidf, X_train_tfidf, vectorizer
+
+
+@app.cell
+def __(MultinomialNB, X_train_tfidf, y_train):
+ nb_classifier = MultinomialNB()
+ nb_classifier.fit(X_train_tfidf, y_train)
+ return (nb_classifier,)
+
+
+@app.cell
+def __(nb_classifier, vectorizer):
+ def issuing_office(office):
+ office_tfidf = vectorizer.transform([office])
+ predicted_office = nb_classifier.predict(office_tfidf)
+ return predicted_office[0]
+ return (issuing_office,)
+
+
+@app.cell
+def __(Offices):
+ Office_Option = Offices.value
+ return (Office_Option,)
+
+
+@app.cell
+def __(mo):
+ Offices = mo.ui.dropdown(
+ options = [
+ 'Center for Tobacco Products',
+ 'Center for Drug Evaluation and Research | CDER',
+ 'Division of West Coast Imports',
+ 'Division of Southwest Imports',
+ 'Division of Human and Animal Food Operations East III',
+ 'Center for Devices and Radiological Health'
+ ],
+ value = 'Division of West Coast Imports',
+ label='Office:'
+ )
+ Offices
+ return (Offices,)
+
+
+@app.cell
+def __(Office_Option, issuing_office, mo):
+ Predicted_Subject = issuing_office(Office_Option)
+ Predicted_Subject = mo.md(f"{Predicted_Subject}").style({'border-width':'2px','border-color':'crimson','background-color':'navy','font-size':'16px'})
+ mo.md(rf"Predicted Subject of Letter: {Predicted_Subject}").center()
+ return (Predicted_Subject,)
+
+
+@app.cell
+def __(Warning_Letter_Data, pd):
+ Offices_of_Interst = [
+ 'Center for Tobacco Products',
+ 'Center for Drug Evaluation and Research | CDER',
+ 'Division of West Coast Imports',
+ 'Division of Southwest Imports',
+ 'Division of Human and Animal Food Operations East III',
+ 'Center for Devices and Radiological Health'
+ ]
+
+ Selected_Offices_Data = Warning_Letter_Data[Warning_Letter_Data['Issuing Office'].isin(Offices_of_Interst)]
+
+ Selected_Offices_Data['Letter Issue Date'] = pd.to_datetime(Selected_Offices_Data['Letter Issue Date'])
+
+ Selected_Offices_Data['Month'] = Selected_Offices_Data['Letter Issue Date'].dt.strftime('%Y-%m')
+ return Offices_of_Interst, Selected_Offices_Data
+
+
+@app.cell
+def __(Selected_Offices_Data):
+ Office_Counts = Selected_Offices_Data.groupby(['Month', 'Issuing Office']).size().reset_index(name='Count')
+ return (Office_Counts,)
+
+
+@app.cell
+def __(Office_Counts, Offices, px):
+ fig = px.line(Office_Counts, x='Month', y='Count', color='Issuing Office', title='Issuing Office Count')
+
+ for trace_name in fig.data:
+ if trace_name.name != Offices.value:
+ trace_name.visible = 'legendonly'
+
+ fig
+ return fig, trace_name
+
+
+if __name__ == "__main__":
+ app.run()
diff --git a/010-Mustjaab/action-potential-simulator.py b/010-Mustjaab/action-potential-simulator.py
new file mode 100644
index 0000000..90da327
--- /dev/null
+++ b/010-Mustjaab/action-potential-simulator.py
@@ -0,0 +1,270 @@
+# /// script
+# requires-python = ">=3.12"
+# dependencies = [
+# "marimo",
+# "numpy==2.1.2",
+# "pandas==2.2.3",
+# "plotly==5.24.1",
+# ]
+# ///
+import marimo
+
+__generated_with = "0.9.7-dev1"
+app = marimo.App()
+
+
+@app.cell
+def __(mo):
+ mo.md(" Action Potential Simulator ").center()
+ return
+
+
+@app.cell
+def __():
+ #Import required libraries
+ import marimo as mo
+ import numpy as np
+ import pandas as pd
+ import micropip
+ return micropip, mo, np, pd
+
+
+@app.cell
+async def __(micropip):
+ #Account for using WASM which doesn't natively have plotly so use micropip.install
+ await micropip.install("plotly")
+ import plotly.express as px
+ return (px,)
+
+
+@app.cell
+def __(mo):
+ #Create an interactive space where user can select action potential constants, timing, and variables on their own
+
+ #Constants
+ Membrane_Capacitance = mo.ui.number(0.5,2,0.1,0.5)
+ Sodium_Conductance = mo.ui.number(50,200,1,50)
+ Potassium_Conductance = mo.ui.number(10,50,1,10)
+ Leak_Conductance = mo.ui.number(0.1,1,0.1,0.1)
+ Sodium_Reverse_Potential = mo.ui.number(40,70,1,40)
+ Potassium_Reverse_Potential = mo.ui.number(-90,-60,1,-90)
+ Leak_Reverse_Potential = mo.ui.number(-70,-50,1,-70)
+
+ #Action potential timing
+ Duration_Time = mo.ui.number(0.01,0.05,0.01,0.01)
+ Stimulation_End = mo.ui.number(12,25,1,12)
+ Total_Time = mo.ui.number(100,200,1,100)
+ return (
+ Duration_Time,
+ Leak_Conductance,
+ Leak_Reverse_Potential,
+ Membrane_Capacitance,
+ Potassium_Conductance,
+ Potassium_Reverse_Potential,
+ Sodium_Conductance,
+ Sodium_Reverse_Potential,
+ Stimulation_End,
+ Total_Time,
+ )
+
+
+@app.cell
+def __(
+ Duration_Time,
+ Leak_Conductance,
+ Leak_Reverse_Potential,
+ Membrane_Capacitance,
+ Potassium_Conductance,
+ Potassium_Reverse_Potential,
+ Sodium_Conductance,
+ Sodium_Reverse_Potential,
+ Stimulation_End,
+ Total_Time,
+ mo,
+):
+ #Vertically stack the interactive elements so there's structure to them
+ Action_Potential_Constants = mo.hstack([
+ Membrane_Capacitance,
+ Sodium_Conductance,
+ Potassium_Conductance,
+ Leak_Conductance,
+ Sodium_Reverse_Potential,
+ Potassium_Reverse_Potential,
+ Leak_Reverse_Potential
+ ])
+
+ Time = mo.hstack([
+ Duration_Time,
+ Stimulation_End,
+ Total_Time
+ ])
+ return Action_Potential_Constants, Time
+
+
+@app.cell
+def __(mo):
+ mo.md(""" Action Potential Constants """)
+ return
+
+
+@app.cell
+def __(Action_Potential_Constants):
+ Action_Potential_Constants
+ return
+
+
+@app.cell
+def __(mo):
+ mo.md(""" Time """)
+ return
+
+
+@app.cell
+def __(Time):
+ Time
+ return
+
+
+@app.cell
+def __(
+ Duration_Time,
+ Leak_Conductance,
+ Leak_Reverse_Potential,
+ Membrane_Capacitance,
+ Potassium_Conductance,
+ Potassium_Reverse_Potential,
+ Sodium_Conductance,
+ Sodium_Reverse_Potential,
+ Stimulation_End,
+ Total_Time,
+ np,
+):
+ # Process user selected values so an action potential plot can be generated
+ C_m = Membrane_Capacitance.value
+ g_Na = Sodium_Conductance.value
+ g_K = Potassium_Conductance.value
+ g_L = Leak_Conductance.value
+ E_Na = Sodium_Reverse_Potential.value
+ E_K = Potassium_Reverse_Potential.value
+ E_L = Leak_Reverse_Potential.value
+
+ dt = Duration_Time.value
+ T = Total_Time.value
+ t = np.arange(0, T, dt)
+
+
+ V = -65
+ m = 0.05
+ h = 0.6
+ n = 0.32
+
+ # Stimulus
+ I = np.zeros(len(t))
+ I[int(10 / dt):int(Stimulation_End.value / dt)] = 10
+
+ def alpha_m(V):
+ return 0.1 * (V + 40) / (1 - np.exp(-(V + 40) / 10))
+
+ def beta_m(V):
+ return 4 * np.exp(-(V + 65) / 18)
+
+ def alpha_h(V):
+ return 0.07 * np.exp(-(V + 65) / 20)
+
+ def beta_h(V):
+ return 1 / (1 + np.exp(-(V + 35) / 10))
+
+ def alpha_n(V):
+ return 0.01 * (V + 55) / (1 - np.exp(-(V + 55) / 10))
+
+ def beta_n(V):
+ return 0.125 * np.exp(-(V + 65) / 80)
+
+ Vm = np.zeros(len(t))
+ m_values = np.zeros(len(t))
+ h_values = np.zeros(len(t))
+ n_values = np.zeros(len(t))
+
+
+ for i in range(len(t)):
+ m += dt * (alpha_m(V) * (1 - m) - beta_m(V) * m)
+ h += dt * (alpha_h(V) * (1 - h) - beta_h(V) * h)
+ n += dt * (alpha_n(V) * (1 - n) - beta_n(V) * n)
+
+ g_Na_t = g_Na * (m ** 3) * h
+ g_K_t = g_K * (n ** 4)
+ g_L_t = g_L
+
+ V += dt * (I[i] - g_Na_t * (V - E_Na) - g_K_t * (V - E_K) - g_L_t * (V - E_L)) / C_m
+
+ Vm[i] = V
+ m_values[i] = m
+ h_values[i] = h
+ n_values[i] = n
+ return (
+ C_m,
+ E_K,
+ E_L,
+ E_Na,
+ I,
+ T,
+ V,
+ Vm,
+ alpha_h,
+ alpha_m,
+ alpha_n,
+ beta_h,
+ beta_m,
+ beta_n,
+ dt,
+ g_K,
+ g_K_t,
+ g_L,
+ g_L_t,
+ g_Na,
+ g_Na_t,
+ h,
+ h_values,
+ i,
+ m,
+ m_values,
+ n,
+ n_values,
+ t,
+ )
+
+
+@app.cell
+def __(Vm, pd, t):
+ Potential_Data = pd.DataFrame({'Time (ms)': t, 'Membrane Potential (mV)': Vm})
+ return (Potential_Data,)
+
+
+@app.cell
+def __(Potential_Data, px):
+ px.line(Potential_Data, x='Time (ms)', y='Membrane Potential (mV)', title='Action Potential Simulation')
+ return
+
+
+@app.cell
+def __(Potential_Data, mo, pd):
+ Statistics_Table = pd.DataFrame(
+ {
+ 'Statistic':[
+ 'Global Max Potential',
+ 'Global Min Potential',
+ 'Mean Potential'
+ ],
+ 'Value':[
+ Potential_Data['Membrane Potential (mV)'].max(),
+ Potential_Data['Membrane Potential (mV)'].min(),
+ Potential_Data['Membrane Potential (mV)'].mean()
+ ]
+ }
+ )
+ mo.ui.dataframe(Statistics_Table)
+ return (Statistics_Table,)
+
+
+if __name__ == "__main__":
+ app.run()
diff --git a/010-Mustjaab/assets/Incidents.csv b/010-Mustjaab/assets/Incidents.csv
new file mode 100644
index 0000000..739f4b3
--- /dev/null
+++ b/010-Mustjaab/assets/Incidents.csv
@@ -0,0 +1,403 @@
+REF_DATE,GEO,DGUID,Cyber_security_incidents,NAICS,Size of enterprise,UOM,UOM_ID,SCALAR_FACTOR,SCALAR_ID,VECTOR,COORDINATE,VALUE,STATUS,SYMBOL,TERMINATED,DECIMALS
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Private sector,"Total, all enterprises",Percent,239,units,0,v1001761192,1.3.1.1,6.1,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Private sector,"Total, all enterprises",Percent,239,units,0,v1001761192,1.3.1.1,5.9,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1001761201,1.3.2.1,5.5,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1001761201,1.3.2.1,2.7,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,"Mining, quarrying, and oil and gas extraction [21]","Total, all enterprises",Percent,239,units,0,v1001761210,1.3.3.1,10.2,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,"Mining, quarrying, and oil and gas extraction [21]","Total, all enterprises",Percent,239,units,0,v1001761210,1.3.3.1,10.5,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Oil and gas extraction [211],"Total, all enterprises",Percent,239,units,0,v1001761219,1.3.4.1,15.3,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Oil and gas extraction [211],"Total, all enterprises",Percent,239,units,0,v1001761219,1.3.4.1,5.4,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Mining and quarrying (except oil and gas) [212],"Total, all enterprises",Percent,239,units,0,v1001761228,1.3.5.1,7.1,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Mining and quarrying (except oil and gas) [212],"Total, all enterprises",Percent,239,units,0,v1001761228,1.3.5.1,6.6,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,"Support activities for mining, and oil and gas extraction [213]","Total, all enterprises",Percent,239,units,0,v1001761237,1.3.6.1,10.1,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,"Support activities for mining, and oil and gas extraction [213]","Total, all enterprises",Percent,239,units,0,v1001761237,1.3.6.1,13,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Utilities [22],"Total, all enterprises",Percent,239,units,0,v1001761246,1.3.7.1,6.8,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Utilities [22],"Total, all enterprises",Percent,239,units,0,v1001761246,1.3.7.1,6.9,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,"Electric power generation, transmission and distribution [2211]","Total, all enterprises",Percent,239,units,0,v1001761255,1.3.8.1,7.9,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,"Electric power generation, transmission and distribution [2211]","Total, all enterprises",Percent,239,units,0,v1001761255,1.3.8.1,4.8,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Natural gas distribution [2212],"Total, all enterprises",Percent,239,units,0,v1001761264,1.3.9.1,7.8,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Natural gas distribution [2212],"Total, all enterprises",Percent,239,units,0,v1001761264,1.3.9.1,7.6,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,"Water, sewage and other systems [2213]","Total, all enterprises",Percent,239,units,0,v1001761273,1.3.10.1,2.6,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,"Water, sewage and other systems [2213]","Total, all enterprises",Percent,239,units,0,v1001761273,1.3.10.1,13.5,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Construction [23],"Total, all enterprises",Percent,239,units,0,v1001761282,1.3.11.1,7.3,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Construction [23],"Total, all enterprises",Percent,239,units,0,v1001761282,1.3.11.1,8.7,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Manufacturing [31-33],"Total, all enterprises",Percent,239,units,0,v1001761291,1.3.12.1,8.1,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Manufacturing [31-33],"Total, all enterprises",Percent,239,units,0,v1001761291,1.3.12.1,6,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Wholesale trade [41],"Total, all enterprises",Percent,239,units,0,v1001761300,1.3.13.1,11.5,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Wholesale trade [41],"Total, all enterprises",Percent,239,units,0,v1001761300,1.3.13.1,9.4,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Retail trade [44-45],"Total, all enterprises",Percent,239,units,0,v1001761309,1.3.14.1,6.1,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Retail trade [44-45],"Total, all enterprises",Percent,239,units,0,v1001761309,1.3.14.1,4.8,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Transportation and warehousing [48-49],"Total, all enterprises",Percent,239,units,0,v1001761426,1.3.27.1,9.4,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Transportation and warehousing [48-49],"Total, all enterprises",Percent,239,units,0,v1001761426,1.3.27.1,6.6,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Air transportation [481],"Total, all enterprises",Percent,239,units,0,v1001761435,1.3.28.1,8.2,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Air transportation [481],"Total, all enterprises",Percent,239,units,0,v1001761435,1.3.28.1,10.1,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Rail transportation [482],"Total, all enterprises",Percent,239,units,0,v1001761444,1.3.29.1,9.2,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Rail transportation [482],"Total, all enterprises",Percent,239,units,0,v1001761444,1.3.29.1,13.4,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Water transportation [483],"Total, all enterprises",Percent,239,units,0,v1001761453,1.3.30.1,5.2,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Water transportation [483],"Total, all enterprises",Percent,239,units,0,v1001761453,1.3.30.1,7.1,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Truck transportation [484],"Total, all enterprises",Percent,239,units,0,v1001761462,1.3.31.1,10.9,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Truck transportation [484],"Total, all enterprises",Percent,239,units,0,v1001761462,1.3.31.1,6,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Transit and ground passenger transportation [485],"Total, all enterprises",Percent,239,units,0,v1001761471,1.3.32.1,7.1,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Transit and ground passenger transportation [485],"Total, all enterprises",Percent,239,units,0,v1001761471,1.3.32.1,5.9,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Pipeline transportation [486],"Total, all enterprises",Percent,239,units,0,v1001761480,1.3.33.1,0,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Pipeline transportation [486],"Total, all enterprises",Percent,239,units,0,v1001761480,1.3.33.1,0,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Scenic and sightseeing transportation [487],"Total, all enterprises",Percent,239,units,0,v1001761489,1.3.34.1,8,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Scenic and sightseeing transportation [487],"Total, all enterprises",Percent,239,units,0,v1001761489,1.3.34.1,4.5,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Support activities for transportation [488],"Total, all enterprises",Percent,239,units,0,v1001761498,1.3.35.1,7.8,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Support activities for transportation [488],"Total, all enterprises",Percent,239,units,0,v1001761498,1.3.35.1,8.5,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Postal service [491],"Total, all enterprises",Percent,239,units,0,v1001761507,1.3.36.1,3.8,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Postal service [491],"Total, all enterprises",Percent,239,units,0,v1001761507,1.3.36.1,0,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Couriers and messengers [492],"Total, all enterprises",Percent,239,units,0,v1001761516,1.3.37.1,10,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Couriers and messengers [492],"Total, all enterprises",Percent,239,units,0,v1001761516,1.3.37.1,4.3,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Warehousing and storage [493],"Total, all enterprises",Percent,239,units,0,v1001761525,1.3.38.1,7.4,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Warehousing and storage [493],"Total, all enterprises",Percent,239,units,0,v1001761525,1.3.38.1,7.3,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Information and cultural industries [51],"Total, all enterprises",Percent,239,units,0,v1001761534,1.3.39.1,3.3,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Information and cultural industries [51],"Total, all enterprises",Percent,239,units,0,v1001761534,1.3.39.1,6.7,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Publishing industries [511],"Total, all enterprises",Percent,239,units,0,v1001761543,1.3.40.1,0.5,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Publishing industries [511],"Total, all enterprises",Percent,239,units,0,v1001761543,1.3.40.1,0,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Motion picture and sound recording industries [512],"Total, all enterprises",Percent,239,units,0,v1001761552,1.3.41.1,11.3,D,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Motion picture and sound recording industries [512],"Total, all enterprises",Percent,239,units,0,v1001761552,1.3.41.1,,F,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Broadcasting [515],"Total, all enterprises",Percent,239,units,0,v1001761561,1.3.42.1,0,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Broadcasting [515],"Total, all enterprises",Percent,239,units,0,v1001761561,1.3.42.1,0,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Telecommunications [517],"Total, all enterprises",Percent,239,units,0,v1001761570,1.3.43.1,0,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Telecommunications [517],"Total, all enterprises",Percent,239,units,0,v1001761570,1.3.43.1,13.1,E,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,"Internet service providers, web search portals, and data processing services [518]","Total, all enterprises",Percent,239,units,0,v1001761579,1.3.44.1,9.3,D,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,"Internet service providers, web search portals, and data processing services [518]","Total, all enterprises",Percent,239,units,0,v1001761579,1.3.44.1,4.1,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Other information services [519],"Total, all enterprises",Percent,239,units,0,v1001761588,1.3.45.1,0,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Other information services [519],"Total, all enterprises",Percent,239,units,0,v1001761588,1.3.45.1,0,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Finance and insurance [52],"Total, all enterprises",Percent,239,units,0,v1001761597,1.3.46.1,11.1,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Finance and insurance [52],"Total, all enterprises",Percent,239,units,0,v1001761597,1.3.46.1,13.4,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,"Monetary authorities-central bank, and credit intermediation and related activitivies [521-522]","Total, all enterprises",Percent,239,units,0,v1001761606,1.3.47.1,26.4,C,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,"Monetary authorities-central bank, and credit intermediation and related activitivies [521-522]","Total, all enterprises",Percent,239,units,0,v1001761606,1.3.47.1,25.5,C,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,"Securities, commodity contracts, and other financial investment and related activities [523]","Total, all enterprises",Percent,239,units,0,v1001761615,1.3.48.1,9.5,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,"Securities, commodity contracts, and other financial investment and related activities [523]","Total, all enterprises",Percent,239,units,0,v1001761615,1.3.48.1,6.7,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Insurance carriers and related activities [524],"Total, all enterprises",Percent,239,units,0,v1001761624,1.3.49.1,3.2,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Insurance carriers and related activities [524],"Total, all enterprises",Percent,239,units,0,v1001761624,1.3.49.1,10.7,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Funds and other financial vehicles [526],"Total, all enterprises",Percent,239,units,0,v1001761633,1.3.50.1,8.6,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Funds and other financial vehicles [526],"Total, all enterprises",Percent,239,units,0,v1001761633,1.3.50.1,13.3,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Real estate and rental and leasing [53],"Total, all enterprises",Percent,239,units,0,v1001761642,1.3.51.1,6.3,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Real estate and rental and leasing [53],"Total, all enterprises",Percent,239,units,0,v1001761642,1.3.51.1,7,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,"Professional, scientific and technical services [54]","Total, all enterprises",Percent,239,units,0,v1001761651,1.3.52.1,9.5,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,"Professional, scientific and technical services [54]","Total, all enterprises",Percent,239,units,0,v1001761651,1.3.52.1,6.3,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Legal services [5411],"Total, all enterprises",Percent,239,units,0,v1001761660,1.3.53.1,7.6,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Legal services [5411],"Total, all enterprises",Percent,239,units,0,v1001761660,1.3.53.1,3.6,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,"Accounting, tax preparation, bookkeeping and payroll services [5412]","Total, all enterprises",Percent,239,units,0,v1001761669,1.3.54.1,15.8,C,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,"Accounting, tax preparation, bookkeeping and payroll services [5412]","Total, all enterprises",Percent,239,units,0,v1001761669,1.3.54.1,4.8,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,"Architectural, engineering and related services [5413]","Total, all enterprises",Percent,239,units,0,v1001761678,1.3.55.1,11.2,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,"Architectural, engineering and related services [5413]","Total, all enterprises",Percent,239,units,0,v1001761678,1.3.55.1,9.1,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Specialized design services [5414],"Total, all enterprises",Percent,239,units,0,v1001761687,1.3.56.1,7,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Specialized design services [5414],"Total, all enterprises",Percent,239,units,0,v1001761687,1.3.56.1,6.1,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Computer systems design and related services [5415],"Total, all enterprises",Percent,239,units,0,v1001761696,1.3.57.1,9,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Computer systems design and related services [5415],"Total, all enterprises",Percent,239,units,0,v1001761696,1.3.57.1,6.4,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,"Management, scientific and technical consulting services [5416]","Total, all enterprises",Percent,239,units,0,v1001761705,1.3.58.1,13.8,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,"Management, scientific and technical consulting services [5416]","Total, all enterprises",Percent,239,units,0,v1001761705,1.3.58.1,6.4,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Scientific research and development services [5417],"Total, all enterprises",Percent,239,units,0,v1001761714,1.3.59.1,8.2,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Scientific research and development services [5417],"Total, all enterprises",Percent,239,units,0,v1001761714,1.3.59.1,14.3,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Advertising and related services [5418],"Total, all enterprises",Percent,239,units,0,v1001761723,1.3.60.1,11.7,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Advertising and related services [5418],"Total, all enterprises",Percent,239,units,0,v1001761723,1.3.60.1,7.5,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,"Other professional, scientific and technical services [5419]","Total, all enterprises",Percent,239,units,0,v1001761732,1.3.61.1,1.4,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,"Other professional, scientific and technical services [5419]","Total, all enterprises",Percent,239,units,0,v1001761732,1.3.61.1,2.3,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Management of companies and enterprises [55],"Total, all enterprises",Percent,239,units,0,v1001761741,1.3.62.1,10.3,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Management of companies and enterprises [55],"Total, all enterprises",Percent,239,units,0,v1001761741,1.3.62.1,10.5,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,"Administrative and support, waste management and remediation services [56]","Total, all enterprises",Percent,239,units,0,v1001761750,1.3.63.1,3,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,"Administrative and support, waste management and remediation services [56]","Total, all enterprises",Percent,239,units,0,v1001761750,1.3.63.1,4,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Educational services [61],"Total, all enterprises",Percent,239,units,0,v1001761759,1.3.64.1,3.7,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Educational services [61],"Total, all enterprises",Percent,239,units,0,v1001761759,1.3.64.1,7,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1001761768,1.3.65.1,5.9,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1001761768,1.3.65.1,10.8,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Community colleges and C.E.G.E.P.s [6112],"Total, all enterprises",Percent,239,units,0,v1001761777,1.3.66.1,5.2,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Community colleges and C.E.G.E.P.s [6112],"Total, all enterprises",Percent,239,units,0,v1001761777,1.3.66.1,3.1,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Universities [6113],"Total, all enterprises",Percent,239,units,0,v1001761786,1.3.67.1,16.7,D,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Universities [6113],"Total, all enterprises",Percent,239,units,0,v1001761786,1.3.67.1,5.6,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Business schools and computer and management training [6114],"Total, all enterprises",Percent,239,units,0,v1001761795,1.3.68.1,6.4,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Business schools and computer and management training [6114],"Total, all enterprises",Percent,239,units,0,v1001761795,1.3.68.1,9,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Technical and trade schools [6115],"Total, all enterprises",Percent,239,units,0,v1001761804,1.3.69.1,5.6,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Technical and trade schools [6115],"Total, all enterprises",Percent,239,units,0,v1001761804,1.3.69.1,3.2,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Other schools and instruction [6116],"Total, all enterprises",Percent,239,units,0,v1001761813,1.3.70.1,2.1,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Other schools and instruction [6116],"Total, all enterprises",Percent,239,units,0,v1001761813,1.3.70.1,5.4,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Educational support services [6117],"Total, all enterprises",Percent,239,units,0,v1001761822,1.3.71.1,4.5,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Educational support services [6117],"Total, all enterprises",Percent,239,units,0,v1001761822,1.3.71.1,8.5,B,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Health care and social assistance [62],"Total, all enterprises",Percent,239,units,0,v1001761831,1.3.72.1,4.1,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Health care and social assistance [62],"Total, all enterprises",Percent,239,units,0,v1001761831,1.3.72.1,2.7,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Ambulatory health care services [621],"Total, all enterprises",Percent,239,units,0,v1001761840,1.3.73.1,4.2,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Ambulatory health care services [621],"Total, all enterprises",Percent,239,units,0,v1001761840,1.3.73.1,2.6,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1001761849,1.3.74.1,16.9,C,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1001761849,1.3.74.1,4.1,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Nursing and residential care facilities [623],"Total, all enterprises",Percent,239,units,0,v1001761858,1.3.75.1,6.5,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Nursing and residential care facilities [623],"Total, all enterprises",Percent,239,units,0,v1001761858,1.3.75.1,3.6,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Social assistance [624],"Total, all enterprises",Percent,239,units,0,v1001761867,1.3.76.1,3.2,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Social assistance [624],"Total, all enterprises",Percent,239,units,0,v1001761867,1.3.76.1,2.5,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,"Arts, entertainment and recreation [71]","Total, all enterprises",Percent,239,units,0,v1001761876,1.3.77.1,5.5,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,"Arts, entertainment and recreation [71]","Total, all enterprises",Percent,239,units,0,v1001761876,1.3.77.1,3.6,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Accommodation and food services [72],"Total, all enterprises",Percent,239,units,0,v1001761885,1.3.78.1,1.6,A,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Accommodation and food services [72],"Total, all enterprises",Percent,239,units,0,v1001761885,1.3.78.1,5.8,A,,,1
+2019,Canada,2016A000011124,Incidents to steal personal or financial information,Other services (except public administration) [81],"Total, all enterprises",Percent,239,units,0,v1001761894,1.3.79.1,7.6,B,,,1
+2021,Canada,2016A000011124,Incidents to steal personal or financial information,Other services (except public administration) [81],"Total, all enterprises",Percent,239,units,0,v1001761894,1.3.79.1,5.6,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Private sector,"Total, all enterprises",Percent,239,units,0,v1001761193,1.4.1.1,8.8,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Private sector,"Total, all enterprises",Percent,239,units,0,v1001761193,1.4.1.1,6.7,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1001761202,1.4.2.1,5.9,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1001761202,1.4.2.1,2.7,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Mining, quarrying, and oil and gas extraction [21]","Total, all enterprises",Percent,239,units,0,v1001761211,1.4.3.1,18.2,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Mining, quarrying, and oil and gas extraction [21]","Total, all enterprises",Percent,239,units,0,v1001761211,1.4.3.1,12.5,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Oil and gas extraction [211],"Total, all enterprises",Percent,239,units,0,v1001761220,1.4.4.1,25.9,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Oil and gas extraction [211],"Total, all enterprises",Percent,239,units,0,v1001761220,1.4.4.1,18.7,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Mining and quarrying (except oil and gas) [212],"Total, all enterprises",Percent,239,units,0,v1001761229,1.4.5.1,17.6,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Mining and quarrying (except oil and gas) [212],"Total, all enterprises",Percent,239,units,0,v1001761229,1.4.5.1,12.9,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Support activities for mining, and oil and gas extraction [213]","Total, all enterprises",Percent,239,units,0,v1001761238,1.4.6.1,16.8,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Support activities for mining, and oil and gas extraction [213]","Total, all enterprises",Percent,239,units,0,v1001761238,1.4.6.1,11.2,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Utilities [22],"Total, all enterprises",Percent,239,units,0,v1001761247,1.4.7.1,11.7,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Utilities [22],"Total, all enterprises",Percent,239,units,0,v1001761247,1.4.7.1,9.6,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Electric power generation, transmission and distribution [2211]","Total, all enterprises",Percent,239,units,0,v1001761256,1.4.8.1,12.3,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Electric power generation, transmission and distribution [2211]","Total, all enterprises",Percent,239,units,0,v1001761256,1.4.8.1,10.6,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Natural gas distribution [2212],"Total, all enterprises",Percent,239,units,0,v1001761265,1.4.9.1,13.3,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Natural gas distribution [2212],"Total, all enterprises",Percent,239,units,0,v1001761265,1.4.9.1,10.8,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Water, sewage and other systems [2213]","Total, all enterprises",Percent,239,units,0,v1001761274,1.4.10.1,8.2,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Water, sewage and other systems [2213]","Total, all enterprises",Percent,239,units,0,v1001761274,1.4.10.1,5.1,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Construction [23],"Total, all enterprises",Percent,239,units,0,v1001761283,1.4.11.1,6.6,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Construction [23],"Total, all enterprises",Percent,239,units,0,v1001761283,1.4.11.1,9.9,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Manufacturing [31-33],"Total, all enterprises",Percent,239,units,0,v1001761292,1.4.12.1,12.2,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Manufacturing [31-33],"Total, all enterprises",Percent,239,units,0,v1001761292,1.4.12.1,8.4,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Wholesale trade [41],"Total, all enterprises",Percent,239,units,0,v1001761301,1.4.13.1,12.7,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Wholesale trade [41],"Total, all enterprises",Percent,239,units,0,v1001761301,1.4.13.1,11.6,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Retail trade [44-45],"Total, all enterprises",Percent,239,units,0,v1001761310,1.4.14.1,8.1,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Retail trade [44-45],"Total, all enterprises",Percent,239,units,0,v1001761310,1.4.14.1,4.5,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Transportation and warehousing [48-49],"Total, all enterprises",Percent,239,units,0,v1001761427,1.4.27.1,10.8,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Transportation and warehousing [48-49],"Total, all enterprises",Percent,239,units,0,v1001761427,1.4.27.1,6.9,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Air transportation [481],"Total, all enterprises",Percent,239,units,0,v1001761436,1.4.28.1,19.9,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Air transportation [481],"Total, all enterprises",Percent,239,units,0,v1001761436,1.4.28.1,3.9,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Rail transportation [482],"Total, all enterprises",Percent,239,units,0,v1001761445,1.4.29.1,21.8,D,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Rail transportation [482],"Total, all enterprises",Percent,239,units,0,v1001761445,1.4.29.1,18.9,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Water transportation [483],"Total, all enterprises",Percent,239,units,0,v1001761454,1.4.30.1,17.4,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Water transportation [483],"Total, all enterprises",Percent,239,units,0,v1001761454,1.4.30.1,10.8,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Truck transportation [484],"Total, all enterprises",Percent,239,units,0,v1001761463,1.4.31.1,11,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Truck transportation [484],"Total, all enterprises",Percent,239,units,0,v1001761463,1.4.31.1,6.4,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Transit and ground passenger transportation [485],"Total, all enterprises",Percent,239,units,0,v1001761472,1.4.32.1,4.3,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Transit and ground passenger transportation [485],"Total, all enterprises",Percent,239,units,0,v1001761472,1.4.32.1,7.6,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Pipeline transportation [486],"Total, all enterprises",Percent,239,units,0,v1001761481,1.4.33.1,,F,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Pipeline transportation [486],"Total, all enterprises",Percent,239,units,0,v1001761481,1.4.33.1,0,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Scenic and sightseeing transportation [487],"Total, all enterprises",Percent,239,units,0,v1001761490,1.4.34.1,11.2,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Scenic and sightseeing transportation [487],"Total, all enterprises",Percent,239,units,0,v1001761490,1.4.34.1,9.3,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Support activities for transportation [488],"Total, all enterprises",Percent,239,units,0,v1001761499,1.4.35.1,12.8,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Support activities for transportation [488],"Total, all enterprises",Percent,239,units,0,v1001761499,1.4.35.1,9,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Postal service [491],"Total, all enterprises",Percent,239,units,0,v1001761508,1.4.36.1,13.3,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Postal service [491],"Total, all enterprises",Percent,239,units,0,v1001761508,1.4.36.1,0,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Couriers and messengers [492],"Total, all enterprises",Percent,239,units,0,v1001761517,1.4.37.1,8.6,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Couriers and messengers [492],"Total, all enterprises",Percent,239,units,0,v1001761517,1.4.37.1,2.1,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Warehousing and storage [493],"Total, all enterprises",Percent,239,units,0,v1001761526,1.4.38.1,9.6,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Warehousing and storage [493],"Total, all enterprises",Percent,239,units,0,v1001761526,1.4.38.1,6.6,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Information and cultural industries [51],"Total, all enterprises",Percent,239,units,0,v1001761535,1.4.39.1,13.1,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Information and cultural industries [51],"Total, all enterprises",Percent,239,units,0,v1001761535,1.4.39.1,6.6,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Publishing industries [511],"Total, all enterprises",Percent,239,units,0,v1001761544,1.4.40.1,17.1,D,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Publishing industries [511],"Total, all enterprises",Percent,239,units,0,v1001761544,1.4.40.1,1.5,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Motion picture and sound recording industries [512],"Total, all enterprises",Percent,239,units,0,v1001761553,1.4.41.1,14.8,E,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Motion picture and sound recording industries [512],"Total, all enterprises",Percent,239,units,0,v1001761553,1.4.41.1,1.1,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Broadcasting [515],"Total, all enterprises",Percent,239,units,0,v1001761562,1.4.42.1,10.8,D,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Broadcasting [515],"Total, all enterprises",Percent,239,units,0,v1001761562,1.4.42.1,0,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Telecommunications [517],"Total, all enterprises",Percent,239,units,0,v1001761571,1.4.43.1,13.3,D,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Telecommunications [517],"Total, all enterprises",Percent,239,units,0,v1001761571,1.4.43.1,,F,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Internet service providers, web search portals, and data processing services [518]","Total, all enterprises",Percent,239,units,0,v1001761580,1.4.44.1,0,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Internet service providers, web search portals, and data processing services [518]","Total, all enterprises",Percent,239,units,0,v1001761580,1.4.44.1,0,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Other information services [519],"Total, all enterprises",Percent,239,units,0,v1001761589,1.4.45.1,9.5,E,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Other information services [519],"Total, all enterprises",Percent,239,units,0,v1001761589,1.4.45.1,8.6,D,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Finance and insurance [52],"Total, all enterprises",Percent,239,units,0,v1001761598,1.4.46.1,11.7,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Finance and insurance [52],"Total, all enterprises",Percent,239,units,0,v1001761598,1.4.46.1,10.7,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Monetary authorities-central bank, and credit intermediation and related activitivies [521-522]","Total, all enterprises",Percent,239,units,0,v1001761607,1.4.47.1,6.6,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Monetary authorities-central bank, and credit intermediation and related activitivies [521-522]","Total, all enterprises",Percent,239,units,0,v1001761607,1.4.47.1,24.4,C,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Securities, commodity contracts, and other financial investment and related activities [523]","Total, all enterprises",Percent,239,units,0,v1001761616,1.4.48.1,15.4,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Securities, commodity contracts, and other financial investment and related activities [523]","Total, all enterprises",Percent,239,units,0,v1001761616,1.4.48.1,4.3,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Insurance carriers and related activities [524],"Total, all enterprises",Percent,239,units,0,v1001761625,1.4.49.1,12.4,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Insurance carriers and related activities [524],"Total, all enterprises",Percent,239,units,0,v1001761625,1.4.49.1,6.7,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Funds and other financial vehicles [526],"Total, all enterprises",Percent,239,units,0,v1001761634,1.4.50.1,9,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Funds and other financial vehicles [526],"Total, all enterprises",Percent,239,units,0,v1001761634,1.4.50.1,12.6,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Real estate and rental and leasing [53],"Total, all enterprises",Percent,239,units,0,v1001761643,1.4.51.1,13,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Real estate and rental and leasing [53],"Total, all enterprises",Percent,239,units,0,v1001761643,1.4.51.1,8.1,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Professional, scientific and technical services [54]","Total, all enterprises",Percent,239,units,0,v1001761652,1.4.52.1,13.6,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Professional, scientific and technical services [54]","Total, all enterprises",Percent,239,units,0,v1001761652,1.4.52.1,8.4,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Legal services [5411],"Total, all enterprises",Percent,239,units,0,v1001761661,1.4.53.1,11.3,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Legal services [5411],"Total, all enterprises",Percent,239,units,0,v1001761661,1.4.53.1,3.7,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Accounting, tax preparation, bookkeeping and payroll services [5412]","Total, all enterprises",Percent,239,units,0,v1001761670,1.4.54.1,18.6,C,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Accounting, tax preparation, bookkeeping and payroll services [5412]","Total, all enterprises",Percent,239,units,0,v1001761670,1.4.54.1,2.6,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Architectural, engineering and related services [5413]","Total, all enterprises",Percent,239,units,0,v1001761679,1.4.55.1,16.8,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Architectural, engineering and related services [5413]","Total, all enterprises",Percent,239,units,0,v1001761679,1.4.55.1,11.4,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Specialized design services [5414],"Total, all enterprises",Percent,239,units,0,v1001761688,1.4.56.1,13.4,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Specialized design services [5414],"Total, all enterprises",Percent,239,units,0,v1001761688,1.4.56.1,5.6,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Computer systems design and related services [5415],"Total, all enterprises",Percent,239,units,0,v1001761697,1.4.57.1,10.3,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Computer systems design and related services [5415],"Total, all enterprises",Percent,239,units,0,v1001761697,1.4.57.1,9.5,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Management, scientific and technical consulting services [5416]","Total, all enterprises",Percent,239,units,0,v1001761706,1.4.58.1,14.2,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Management, scientific and technical consulting services [5416]","Total, all enterprises",Percent,239,units,0,v1001761706,1.4.58.1,13.9,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Scientific research and development services [5417],"Total, all enterprises",Percent,239,units,0,v1001761715,1.4.59.1,11.8,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Scientific research and development services [5417],"Total, all enterprises",Percent,239,units,0,v1001761715,1.4.59.1,10.3,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Advertising and related services [5418],"Total, all enterprises",Percent,239,units,0,v1001761724,1.4.60.1,27.2,C,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Advertising and related services [5418],"Total, all enterprises",Percent,239,units,0,v1001761724,1.4.60.1,12.7,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Other professional, scientific and technical services [5419]","Total, all enterprises",Percent,239,units,0,v1001761733,1.4.61.1,5.6,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Other professional, scientific and technical services [5419]","Total, all enterprises",Percent,239,units,0,v1001761733,1.4.61.1,3.6,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Management of companies and enterprises [55],"Total, all enterprises",Percent,239,units,0,v1001761742,1.4.62.1,19,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Management of companies and enterprises [55],"Total, all enterprises",Percent,239,units,0,v1001761742,1.4.62.1,9.6,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Administrative and support, waste management and remediation services [56]","Total, all enterprises",Percent,239,units,0,v1001761751,1.4.63.1,8.4,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Administrative and support, waste management and remediation services [56]","Total, all enterprises",Percent,239,units,0,v1001761751,1.4.63.1,4.3,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Educational services [61],"Total, all enterprises",Percent,239,units,0,v1001761760,1.4.64.1,8,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Educational services [61],"Total, all enterprises",Percent,239,units,0,v1001761760,1.4.64.1,6,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1001761769,1.4.65.1,13.3,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1001761769,1.4.65.1,8.8,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Community colleges and C.E.G.E.P.s [6112],"Total, all enterprises",Percent,239,units,0,v1001761778,1.4.66.1,20.6,C,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Community colleges and C.E.G.E.P.s [6112],"Total, all enterprises",Percent,239,units,0,v1001761778,1.4.66.1,7.2,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Universities [6113],"Total, all enterprises",Percent,239,units,0,v1001761787,1.4.67.1,16.7,D,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Universities [6113],"Total, all enterprises",Percent,239,units,0,v1001761787,1.4.67.1,17.2,C,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Business schools and computer and management training [6114],"Total, all enterprises",Percent,239,units,0,v1001761796,1.4.68.1,20.2,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Business schools and computer and management training [6114],"Total, all enterprises",Percent,239,units,0,v1001761796,1.4.68.1,9.1,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Technical and trade schools [6115],"Total, all enterprises",Percent,239,units,0,v1001761805,1.4.69.1,8.5,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Technical and trade schools [6115],"Total, all enterprises",Percent,239,units,0,v1001761805,1.4.69.1,2.5,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Other schools and instruction [6116],"Total, all enterprises",Percent,239,units,0,v1001761814,1.4.70.1,3.9,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Other schools and instruction [6116],"Total, all enterprises",Percent,239,units,0,v1001761814,1.4.70.1,4.8,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Educational support services [6117],"Total, all enterprises",Percent,239,units,0,v1001761823,1.4.71.1,8.8,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Educational support services [6117],"Total, all enterprises",Percent,239,units,0,v1001761823,1.4.71.1,4.2,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Health care and social assistance [62],"Total, all enterprises",Percent,239,units,0,v1001761832,1.4.72.1,4.2,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Health care and social assistance [62],"Total, all enterprises",Percent,239,units,0,v1001761832,1.4.72.1,1.8,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Ambulatory health care services [621],"Total, all enterprises",Percent,239,units,0,v1001761841,1.4.73.1,7,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Ambulatory health care services [621],"Total, all enterprises",Percent,239,units,0,v1001761841,1.4.73.1,1.4,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1001761850,1.4.74.1,27.5,D,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1001761850,1.4.74.1,4.1,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Nursing and residential care facilities [623],"Total, all enterprises",Percent,239,units,0,v1001761859,1.4.75.1,3.1,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Nursing and residential care facilities [623],"Total, all enterprises",Percent,239,units,0,v1001761859,1.4.75.1,2.6,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Social assistance [624],"Total, all enterprises",Percent,239,units,0,v1001761868,1.4.76.1,1.1,A,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Social assistance [624],"Total, all enterprises",Percent,239,units,0,v1001761868,1.4.76.1,2.1,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Arts, entertainment and recreation [71]","Total, all enterprises",Percent,239,units,0,v1001761877,1.4.77.1,9.3,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,"Arts, entertainment and recreation [71]","Total, all enterprises",Percent,239,units,0,v1001761877,1.4.77.1,2.3,A,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Accommodation and food services [72],"Total, all enterprises",Percent,239,units,0,v1001761886,1.4.78.1,4.3,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Accommodation and food services [72],"Total, all enterprises",Percent,239,units,0,v1001761886,1.4.78.1,7.7,B,,,1
+2019,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Other services (except public administration) [81],"Total, all enterprises",Percent,239,units,0,v1001761895,1.4.79.1,10.2,B,,,1
+2021,Canada,2016A000011124,Incidents to steal money or demand ransom payment,Other services (except public administration) [81],"Total, all enterprises",Percent,239,units,0,v1001761895,1.4.79.1,7,A,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Private sector,"Total, all enterprises",Percent,239,units,0,v1001761198,1.9.1.1,79.2,A,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Private sector,"Total, all enterprises",Percent,239,units,0,v1001761198,1.9.1.1,81.9,A,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1001761207,1.9.2.1,83.3,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1001761207,1.9.2.1,92.2,A,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Mining, quarrying, and oil and gas extraction [21]","Total, all enterprises",Percent,239,units,0,v1001761216,1.9.3.1,70.1,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Mining, quarrying, and oil and gas extraction [21]","Total, all enterprises",Percent,239,units,0,v1001761216,1.9.3.1,72.5,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Oil and gas extraction [211],"Total, all enterprises",Percent,239,units,0,v1001761225,1.9.4.1,58.2,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Oil and gas extraction [211],"Total, all enterprises",Percent,239,units,0,v1001761225,1.9.4.1,66.9,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Mining and quarrying (except oil and gas) [212],"Total, all enterprises",Percent,239,units,0,v1001761234,1.9.5.1,72.8,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Mining and quarrying (except oil and gas) [212],"Total, all enterprises",Percent,239,units,0,v1001761234,1.9.5.1,77.2,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Support activities for mining, and oil and gas extraction [213]","Total, all enterprises",Percent,239,units,0,v1001761243,1.9.6.1,71.8,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Support activities for mining, and oil and gas extraction [213]","Total, all enterprises",Percent,239,units,0,v1001761243,1.9.6.1,71.8,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Utilities [22],"Total, all enterprises",Percent,239,units,0,v1001761252,1.9.7.1,73.9,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Utilities [22],"Total, all enterprises",Percent,239,units,0,v1001761252,1.9.7.1,78.5,A,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Electric power generation, transmission and distribution [2211]","Total, all enterprises",Percent,239,units,0,v1001761261,1.9.8.1,67.6,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Electric power generation, transmission and distribution [2211]","Total, all enterprises",Percent,239,units,0,v1001761261,1.9.8.1,77.9,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Natural gas distribution [2212],"Total, all enterprises",Percent,239,units,0,v1001761270,1.9.9.1,82,A,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Natural gas distribution [2212],"Total, all enterprises",Percent,239,units,0,v1001761270,1.9.9.1,78.7,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Water, sewage and other systems [2213]","Total, all enterprises",Percent,239,units,0,v1001761279,1.9.10.1,86.3,A,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Water, sewage and other systems [2213]","Total, all enterprises",Percent,239,units,0,v1001761279,1.9.10.1,80,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Construction [23],"Total, all enterprises",Percent,239,units,0,v1001761288,1.9.11.1,80.8,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Construction [23],"Total, all enterprises",Percent,239,units,0,v1001761288,1.9.11.1,73.2,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Manufacturing [31-33],"Total, all enterprises",Percent,239,units,0,v1001761297,1.9.12.1,75,A,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Manufacturing [31-33],"Total, all enterprises",Percent,239,units,0,v1001761297,1.9.12.1,77.9,A,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Wholesale trade [41],"Total, all enterprises",Percent,239,units,0,v1001761306,1.9.13.1,66.5,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Wholesale trade [41],"Total, all enterprises",Percent,239,units,0,v1001761306,1.9.13.1,74,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Retail trade [44-45],"Total, all enterprises",Percent,239,units,0,v1001761315,1.9.14.1,81.2,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Retail trade [44-45],"Total, all enterprises",Percent,239,units,0,v1001761315,1.9.14.1,82,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Transportation and warehousing [48-49],"Total, all enterprises",Percent,239,units,0,v1001761432,1.9.27.1,74.3,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Transportation and warehousing [48-49],"Total, all enterprises",Percent,239,units,0,v1001761432,1.9.27.1,81.3,A,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Air transportation [481],"Total, all enterprises",Percent,239,units,0,v1001761441,1.9.28.1,56.9,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Air transportation [481],"Total, all enterprises",Percent,239,units,0,v1001761441,1.9.28.1,84.1,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Rail transportation [482],"Total, all enterprises",Percent,239,units,0,v1001761450,1.9.29.1,71.6,D,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Rail transportation [482],"Total, all enterprises",Percent,239,units,0,v1001761450,1.9.29.1,59.7,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Water transportation [483],"Total, all enterprises",Percent,239,units,0,v1001761459,1.9.30.1,77,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Water transportation [483],"Total, all enterprises",Percent,239,units,0,v1001761459,1.9.30.1,77.2,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Truck transportation [484],"Total, all enterprises",Percent,239,units,0,v1001761468,1.9.31.1,72.3,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Truck transportation [484],"Total, all enterprises",Percent,239,units,0,v1001761468,1.9.31.1,83.4,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Transit and ground passenger transportation [485],"Total, all enterprises",Percent,239,units,0,v1001761477,1.9.32.1,87.1,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Transit and ground passenger transportation [485],"Total, all enterprises",Percent,239,units,0,v1001761477,1.9.32.1,87,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Pipeline transportation [486],"Total, all enterprises",Percent,239,units,0,v1001761486,1.9.33.1,,F,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Pipeline transportation [486],"Total, all enterprises",Percent,239,units,0,v1001761486,1.9.33.1,100,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Scenic and sightseeing transportation [487],"Total, all enterprises",Percent,239,units,0,v1001761495,1.9.34.1,65.9,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Scenic and sightseeing transportation [487],"Total, all enterprises",Percent,239,units,0,v1001761495,1.9.34.1,83,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Support activities for transportation [488],"Total, all enterprises",Percent,239,units,0,v1001761504,1.9.35.1,76,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Support activities for transportation [488],"Total, all enterprises",Percent,239,units,0,v1001761504,1.9.35.1,74.8,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Postal service [491],"Total, all enterprises",Percent,239,units,0,v1001761513,1.9.36.1,78.8,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Postal service [491],"Total, all enterprises",Percent,239,units,0,v1001761513,1.9.36.1,74.2,D,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Couriers and messengers [492],"Total, all enterprises",Percent,239,units,0,v1001761522,1.9.37.1,74.1,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Couriers and messengers [492],"Total, all enterprises",Percent,239,units,0,v1001761522,1.9.37.1,88.8,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Warehousing and storage [493],"Total, all enterprises",Percent,239,units,0,v1001761531,1.9.38.1,68.4,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Warehousing and storage [493],"Total, all enterprises",Percent,239,units,0,v1001761531,1.9.38.1,68.1,C,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Information and cultural industries [51],"Total, all enterprises",Percent,239,units,0,v1001761540,1.9.39.1,63.3,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Information and cultural industries [51],"Total, all enterprises",Percent,239,units,0,v1001761540,1.9.39.1,85.2,C,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Publishing industries [511],"Total, all enterprises",Percent,239,units,0,v1001761549,1.9.40.1,60.4,E,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Publishing industries [511],"Total, all enterprises",Percent,239,units,0,v1001761549,1.9.40.1,94.7,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Motion picture and sound recording industries [512],"Total, all enterprises",Percent,239,units,0,v1001761558,1.9.41.1,,F,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Motion picture and sound recording industries [512],"Total, all enterprises",Percent,239,units,0,v1001761558,1.9.41.1,,F,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Broadcasting [515],"Total, all enterprises",Percent,239,units,0,v1001761567,1.9.42.1,,F,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Broadcasting [515],"Total, all enterprises",Percent,239,units,0,v1001761567,1.9.42.1,99.6,A,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Telecommunications [517],"Total, all enterprises",Percent,239,units,0,v1001761576,1.9.43.1,,F,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Telecommunications [517],"Total, all enterprises",Percent,239,units,0,v1001761576,1.9.43.1,,F,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Internet service providers, web search portals, and data processing services [518]","Total, all enterprises",Percent,239,units,0,v1001761585,1.9.44.1,,F,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Internet service providers, web search portals, and data processing services [518]","Total, all enterprises",Percent,239,units,0,v1001761585,1.9.44.1,95.9,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Other information services [519],"Total, all enterprises",Percent,239,units,0,v1001761594,1.9.45.1,,F,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Other information services [519],"Total, all enterprises",Percent,239,units,0,v1001761594,1.9.45.1,91.4,D,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Finance and insurance [52],"Total, all enterprises",Percent,239,units,0,v1001761603,1.9.46.1,71.8,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Finance and insurance [52],"Total, all enterprises",Percent,239,units,0,v1001761603,1.9.46.1,76.1,A,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Monetary authorities-central bank, and credit intermediation and related activitivies [521-522]","Total, all enterprises",Percent,239,units,0,v1001761612,1.9.47.1,64.2,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Monetary authorities-central bank, and credit intermediation and related activitivies [521-522]","Total, all enterprises",Percent,239,units,0,v1001761612,1.9.47.1,64.4,C,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Securities, commodity contracts, and other financial investment and related activities [523]","Total, all enterprises",Percent,239,units,0,v1001761621,1.9.48.1,72.1,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Securities, commodity contracts, and other financial investment and related activities [523]","Total, all enterprises",Percent,239,units,0,v1001761621,1.9.48.1,87.2,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Insurance carriers and related activities [524],"Total, all enterprises",Percent,239,units,0,v1001761630,1.9.49.1,75.8,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Insurance carriers and related activities [524],"Total, all enterprises",Percent,239,units,0,v1001761630,1.9.49.1,76.1,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Funds and other financial vehicles [526],"Total, all enterprises",Percent,239,units,0,v1001761639,1.9.50.1,80.7,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Funds and other financial vehicles [526],"Total, all enterprises",Percent,239,units,0,v1001761639,1.9.50.1,68.9,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Real estate and rental and leasing [53],"Total, all enterprises",Percent,239,units,0,v1001761648,1.9.51.1,72,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Real estate and rental and leasing [53],"Total, all enterprises",Percent,239,units,0,v1001761648,1.9.51.1,77.1,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Professional, scientific and technical services [54]","Total, all enterprises",Percent,239,units,0,v1001761657,1.9.52.1,67.9,A,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Professional, scientific and technical services [54]","Total, all enterprises",Percent,239,units,0,v1001761657,1.9.52.1,76,A,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Legal services [5411],"Total, all enterprises",Percent,239,units,0,v1001761666,1.9.53.1,67.2,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Legal services [5411],"Total, all enterprises",Percent,239,units,0,v1001761666,1.9.53.1,81.3,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Accounting, tax preparation, bookkeeping and payroll services [5412]","Total, all enterprises",Percent,239,units,0,v1001761675,1.9.54.1,72.4,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Accounting, tax preparation, bookkeeping and payroll services [5412]","Total, all enterprises",Percent,239,units,0,v1001761675,1.9.54.1,83.6,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Architectural, engineering and related services [5413]","Total, all enterprises",Percent,239,units,0,v1001761684,1.9.55.1,63.6,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Architectural, engineering and related services [5413]","Total, all enterprises",Percent,239,units,0,v1001761684,1.9.55.1,66.7,C,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Specialized design services [5414],"Total, all enterprises",Percent,239,units,0,v1001761693,1.9.56.1,70.3,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Specialized design services [5414],"Total, all enterprises",Percent,239,units,0,v1001761693,1.9.56.1,79,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Computer systems design and related services [5415],"Total, all enterprises",Percent,239,units,0,v1001761702,1.9.57.1,63.6,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Computer systems design and related services [5415],"Total, all enterprises",Percent,239,units,0,v1001761702,1.9.57.1,74.9,C,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Management, scientific and technical consulting services [5416]","Total, all enterprises",Percent,239,units,0,v1001761711,1.9.58.1,67.5,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Management, scientific and technical consulting services [5416]","Total, all enterprises",Percent,239,units,0,v1001761711,1.9.58.1,73,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Scientific research and development services [5417],"Total, all enterprises",Percent,239,units,0,v1001761720,1.9.59.1,73.6,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Scientific research and development services [5417],"Total, all enterprises",Percent,239,units,0,v1001761720,1.9.59.1,67.5,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Advertising and related services [5418],"Total, all enterprises",Percent,239,units,0,v1001761729,1.9.60.1,60.6,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Advertising and related services [5418],"Total, all enterprises",Percent,239,units,0,v1001761729,1.9.60.1,77.7,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Other professional, scientific and technical services [5419]","Total, all enterprises",Percent,239,units,0,v1001761738,1.9.61.1,79.5,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Other professional, scientific and technical services [5419]","Total, all enterprises",Percent,239,units,0,v1001761738,1.9.61.1,85.4,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Management of companies and enterprises [55],"Total, all enterprises",Percent,239,units,0,v1001761747,1.9.62.1,69.7,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Management of companies and enterprises [55],"Total, all enterprises",Percent,239,units,0,v1001761747,1.9.62.1,70.9,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Administrative and support, waste management and remediation services [56]","Total, all enterprises",Percent,239,units,0,v1001761756,1.9.63.1,81.5,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Administrative and support, waste management and remediation services [56]","Total, all enterprises",Percent,239,units,0,v1001761756,1.9.63.1,89.9,A,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Educational services [61],"Total, all enterprises",Percent,239,units,0,v1001761765,1.9.64.1,78.9,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Educational services [61],"Total, all enterprises",Percent,239,units,0,v1001761765,1.9.64.1,80.2,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1001761774,1.9.65.1,71.2,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1001761774,1.9.65.1,78.2,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Community colleges and C.E.G.E.P.s [6112],"Total, all enterprises",Percent,239,units,0,v1001761783,1.9.66.1,69.9,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Community colleges and C.E.G.E.P.s [6112],"Total, all enterprises",Percent,239,units,0,v1001761783,1.9.66.1,68.1,C,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Universities [6113],"Total, all enterprises",Percent,239,units,0,v1001761792,1.9.67.1,63.4,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Universities [6113],"Total, all enterprises",Percent,239,units,0,v1001761792,1.9.67.1,70,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Business schools and computer and management training [6114],"Total, all enterprises",Percent,239,units,0,v1001761801,1.9.68.1,62.1,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Business schools and computer and management training [6114],"Total, all enterprises",Percent,239,units,0,v1001761801,1.9.68.1,81.2,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Technical and trade schools [6115],"Total, all enterprises",Percent,239,units,0,v1001761810,1.9.69.1,80.4,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Technical and trade schools [6115],"Total, all enterprises",Percent,239,units,0,v1001761810,1.9.69.1,75.8,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Other schools and instruction [6116],"Total, all enterprises",Percent,239,units,0,v1001761819,1.9.70.1,84,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Other schools and instruction [6116],"Total, all enterprises",Percent,239,units,0,v1001761819,1.9.70.1,81.8,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Educational support services [6117],"Total, all enterprises",Percent,239,units,0,v1001761828,1.9.71.1,78.7,C,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Educational support services [6117],"Total, all enterprises",Percent,239,units,0,v1001761828,1.9.71.1,84.1,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Health care and social assistance [62],"Total, all enterprises",Percent,239,units,0,v1001761837,1.9.72.1,86.3,A,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Health care and social assistance [62],"Total, all enterprises",Percent,239,units,0,v1001761837,1.9.72.1,89.6,A,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Ambulatory health care services [621],"Total, all enterprises",Percent,239,units,0,v1001761846,1.9.73.1,87.7,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Ambulatory health care services [621],"Total, all enterprises",Percent,239,units,0,v1001761846,1.9.73.1,90,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1001761855,1.9.74.1,63.3,D,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1001761855,1.9.74.1,89.1,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Nursing and residential care facilities [623],"Total, all enterprises",Percent,239,units,0,v1001761864,1.9.75.1,79.1,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Nursing and residential care facilities [623],"Total, all enterprises",Percent,239,units,0,v1001761864,1.9.75.1,89.1,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Social assistance [624],"Total, all enterprises",Percent,239,units,0,v1001761873,1.9.76.1,87.2,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Social assistance [624],"Total, all enterprises",Percent,239,units,0,v1001761873,1.9.76.1,89.3,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Arts, entertainment and recreation [71]","Total, all enterprises",Percent,239,units,0,v1001761882,1.9.77.1,84.9,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,"Arts, entertainment and recreation [71]","Total, all enterprises",Percent,239,units,0,v1001761882,1.9.77.1,86.3,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Accommodation and food services [72],"Total, all enterprises",Percent,239,units,0,v1001761891,1.9.78.1,90.6,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Accommodation and food services [72],"Total, all enterprises",Percent,239,units,0,v1001761891,1.9.78.1,86.9,B,,,1
+2019,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Other services (except public administration) [81],"Total, all enterprises",Percent,239,units,0,v1001761900,1.9.79.1,74,B,,,1
+2021,Canada,2016A000011124,Business was not impacted by any cyber security incidents,Other services (except public administration) [81],"Total, all enterprises",Percent,239,units,0,v1001761900,1.9.79.1,80.7,B,,,1
diff --git a/010-Mustjaab/assets/Post_Approval_Studies.csv b/010-Mustjaab/assets/Post_Approval_Studies.csv
new file mode 100644
index 0000000..3f62a68
--- /dev/null
+++ b/010-Mustjaab/assets/Post_Approval_Studies.csv
@@ -0,0 +1,429 @@
+Applicant_Name,Medical_Specialty,Study_Name
+Abbott,Cardiovascular,CentriMag FTW PAS
+ABBOTT DIABETES CARE INC.,Clinical Chemistry,FreeStyle Libre Flash Glucose Monitoring
+Abbott Medical,Cardiovascular,The Aveir VR RWE Study
+Abbott Medical,Cardiovascular,Cont f/u of the premarket HALO Cohort
+Abbott Medical,Cardiovascular,HALO PAS
+Abbott Medical,Cardiovascular,Registry-Based CAP Cohort and RWU Surveillances
+Abbott Medical,Cardiovascular,Cont f/u of the COAPT Trival Pivotal Cohort
+Abbott Medical,Cardiovascular,Registry-Based Real World use Surv of the Portico
+Abbott Medical,Cardiovascular,Cont f/u of the PORTICO IDE cohorts
+Abbott Medical,Cardiovascular,5 year long term (IDE)
+Abbott Medical,Cardiovascular,Post Approval Study
+Abbott Medical,Cardiovascular,New EnrollMitraClip Analysis Cohort (MAC)
+Abbott Medical,Cardiovascular,Comprehensive/Linked-Registry Based Surv
+Abbott Medical,Cardiovascular,Amplatzer PFO Occluder New Enrollment PAS
+Abbott Medical,Cardiovascular,SJM Brady MRI PAS
+Abbott Medical,Neurology,F/U Axium Neurostimulator System (FANS)
+Abbott Medical,Cardiovascular,Heartmate 3 Real-World Pediatric Use Surveillance
+Abbott Medical,Cardiovascular,Continued Follow-up of the Amulet IDE Cohort
+Abbott Medical,Cardiovascular,Amulet Real-World Use Surveillance
+Abbott Medical,Cardiovascular,CMEMS RWE PAS
+Abbott Medical,Cardiovascular,Continued F/U of the IDE Portico NG Study
+Abbott Medical,Cardiovascular,Registry-Based Real-World Use Surveillance Study
+Abbott Medical,Cardiovascular,LESS VT Continued F/u of IDE
+Abbott Medical,Cardiovascular,LESS VT NICM Post-Approval Study
+Abbott Medical,Cardiovascular,TactiFlex SE PAS
+Abbott Medical,Cardiovascular,UltiPace Lead RWE Study
+Abbott Medical,Cardiovascular,Aveir DR Real-World Evidence Study
+Abbott Medical,Cardiovascular,Registry-Based Real-World Use Surv Navitor Titan
+Abbott Medical,Cardiovascular,Cont f/u of the IDE Portico NG Titan Cohort
+ABBOTT VASCULAR,Cardiovascular,SPIRIT XLV PAS
+ABIOMED; INC.,Cardiovascular,Impella RW Surveillance of Pts using Sodium Bicarb
+Abiomed; Inc.,Cardiovascular,Impella RW Surveillance of Pts using Sodium Bicarb
+ABIOMED; INC.,Cardiovascular,New Enrollment Study
+AcuFocus; Inc.,Ophthalmic,Continuation Study - SAIL-101-PAS
+AcuFocus; Inc.,Ophthalmic,New Enrollment Study-IC-8 Apthera IOL
+Advanced Medical Solutions Limited,General & Plastic Surgery,LiquiFix Post-Approval Study
+AESCULAP IMPLANT SYSTEMS; LLC,Orthopedic,Post-Approval Clinical Study
+AESCULAP IMPLANT SYSTEMS; LLC,Orthopedic,Enhanced Safety Surveillance Study
+Alcon Research; Ltd,Ophthalmic,COMPASS XXT Post-Approval Study
+Alcon Research; Ltd,Ophthalmic,COMPASS Extension Study
+Alcon Research; Ltd,Ophthalmic,CyPass Micro Stent New Enrollment PAS
+Algorithm Sciences; Inc.,General Hospital,Prometra Programmable Pump System
+Algorithm Sciences; Inc.,General Hospital,Extended Use Stability Study
+Algorithm Sciences; Inc.,General Hospital,Leachables Study
+Allergan,General & Plastic Surgery,Focus Group Study
+Allergan,General & Plastic Surgery,Core Study
+Allergan,General & Plastic Surgery,Continued Access Study (Natrelle 410 CAS)
+Allergan,General & Plastic Surgery,Natrelle and 410 Combined Cohort
+Allergan,General & Plastic Surgery,Case Control Studies
+Allergan,General & Plastic Surgery,Natrelle and 410 Combined Cohort
+Allergan,General & Plastic Surgery,Focus Group
+Allergan,General & Plastic Surgery,Core
+Allergan,General & Plastic Surgery,BIFS (Large PAS)
+Allergan,General & Plastic Surgery,Re-Op Phase
+Allergan,General & Plastic Surgery,Informed Decision Process
+Allergan,General & Plastic Surgery,Device failure Study
+Allergan,General & Plastic Surgery,Adjunct
+AMO Manufacturing USA; LLC,Ophthalmic,STAR-122-MVPM Post-Approval Study
+ApiFix; Ltd.,Orthopedic,MID-C System Registry PAS
+AtriCure; Inc.,Cardiovascular,CONVERGE Post-Approval Study
+AutoGenomics; Inc.,Toxicology,AvertD Post-Approval Study
+Avertix Medical Inc,Cardiovascular,AngelMed Guardian PAS
+Avive Solutions; Inc.,Cardiovascular,Avive AED Post-Approval Study
+BAYER PHARMA AG,Obstetrics/Gynecology,Post Approval Study
+BIOMIMETIC THERAPEUTICS;LLC,Orthopedic,Long-term PAS
+Biosense Webster; Inc.,Cardiovascular,QDOT MICRO System PAS
+BIOSENSE WEBSTER; INC.,Cardiovascular,Real-World Experience of Catheter Ablation of PsAF
+Biosensors International USA; Inc.,Cardiovascular,LEADERS FREE II (LFII) Clinical Study
+Biotronik; Inc,Cardiovascular,Bioflow-V Cont f/u PAS
+Biotronik; Inc,Cardiovascular,Bioflow-VII New Enrollment PAS
+BIOTRONIK; INC.,Cardiovascular,QP ExCELS Sentus QP Ext CRT w/ Quad LV
+BIOTRONIK; INC.,Cardiovascular,QP ExCELS Sentus QP Ext CRT w/Quad LV
+BIOTRONIK; INC.,Cardiovascular,Pamira EP PASSION PAS
+Bolton Medical Inc.,Cardiovascular,Cont F/u of the IDE Study Subjects
+Bolton Medical Inc.,Cardiovascular,TREO Post Approval Study
+Bolton Medical; Inc.,Cardiovascular,Cont f/u Dissection Study Subjects
+Bolton Medical; Inc.,Cardiovascular,Cont f/u Transection Study Subjects
+Bolton Medical; Inc.,Cardiovascular,Registry Data Collection for Dissection
+Bolton Medical; Inc.,Cardiovascular,RelayPro Post-Approval Surveillance Study
+Bolton Medical; Inc.,Cardiovascular,Continued f/u of the IDE Study Subjects
+BOSTON SCIENTIFIC,Cardiovascular,MOUNTAIN PAS
+Boston Scientific Corp.,Cardiovascular,INTERRUPT AF PAS
+Boston Scientific Corp.,Cardiovascular,IMPERIAL Continued f/u study
+Boston Scientific Corp.,Cardiovascular,REGAL and EMINENT Long Term f/u studies
+Boston Scientific Corp.,Cardiovascular,DirectSense RF Sub-study
+Boston Scientific Corp.,Cardiovascular,INTERRUPT (Zero) AF PAS
+Boston Scientific Corp.,Cardiovascular,MOUNTAIN PAS
+Boston Scientific Corp.,Cardiovascular,Continued f/u of IDE Cohorts
+Boston Scientific Corp.,Cardiovascular,WATCHMAN New Enrollment (NESTed-PAS)
+Boston Scientific Corp.,Cardiovascular,WATCHMAN Comprehensive/Linked-Registry
+Boston Scientific Corp.,Cardiovascular,TAXUS Registry
+Boston Scientific Corp.,Cardiovascular,Dual Antiplatelet Study
+Boston Scientific Corp.,Cardiovascular,Fatigue & Stability Testing
+Boston Scientific Corp.,Cardiovascular,Outcomes TAXUS ATLAS
+Boston Scientific Corp.,Cardiovascular,WATCHMAN FLX LAA Closure Device w/Delivery RW Use
+Boston Scientific Corp.,Cardiovascular,PINNACLE FLX Cont f/u of IDE Cohort
+Boston Scientific Corp.,Cardiovascular,WATCHMAN FLX NESTed DAPT PAS
+Boston Scientific Corp.,Cardiovascular,SURPASS Pro
+Boston Scientific Corporation,Cardiovascular,POLARx PAS
+Boston Scientific Corporation,Radiology,The Patient Exposure Study
+BOSTON SCIENTIFIC CORPORATION,Cardiovascular,EMBLEM S-ICD Electrode Model 3501 PAS
+BOSTON SCIENTIFIC CORPORATION,Cardiovascular,Synergy Megatron PAS
+Boston Scientific Corporation,Cardiovascular,RANGER II SFA Cont F/u Study
+Boston Scientific Corporation,Cardiovascular,Range Long Balloon; Ranger China & COMPARE I f/u
+BOSTON SCIENTIFIC CORPORATION,Cardiovascular,EVOLVE 4.5/5.0 Study
+Boston Scientific Neuromodulation,Orthopedic,SPACER
+Boston Scientific Neuromodulation,Orthopedic,Superion New Enrollment Study
+C.R. Bard; Inc,Cardiovascular,AVeNEW PAS
+C.R. Bard; Inc,Cardiovascular,AVeNEW Cont f/u Study
+CARDIOFOCUS; INC.,Cardiovascular,HeartLight X3 PAS
+CARDIOFOCUS; INC.,Cardiovascular,CF HeartLight PAS
+CARDIOFOCUS; INC.,Cardiovascular,PAS of HeartLight Endoscopic Ablation Sys
+Carl Zeiss Meditec; Inc.,Ophthalmic,VisuMax SMILE New Enrollment
+Cochlear Americas,Ear Nose & Throat,Cochlear New Enrollment SSD/UHL Study
+CooperVision; Inc.,Ophthalmic,MiSight 1 Day PAS
+CooperVision; Inc.,Ophthalmic,MiSight 1 Day Safety PAS
+Cordis US Corp.,Cardiovascular,PALMAZ MULLINS XD Real-World Use PAS
+Cordis US Corporation,Cardiovascular,Long Term INSPIRATION Study
+Cordis US Corporation,Cardiovascular,INCRAFT US Post-Approval Study
+CVRx; INC.,Cardiovascular,Extended Phase BeAT-HF PAS
+DEPUY ORTHOPAEDICS; INC.,Orthopedic,Long-Term F/U of IDE COC36 patients
+DEPUY ORTHOPAEDICS; INC.,Orthopedic,Short-Mid-Term F/u of New COC36 patients
+DEPUY ORTHOPAEDICS; INC.,Orthopedic,COC36 PAS: UK & Australian Natl Joint Reg
+DEPUY ORTHOPAEDICS; INC.,Orthopedic,Kaiser Permanente Joint Registry
+DEPUY ORTHOPAEDICS; INC.,Orthopedic,Natl Joint Registry for England and Wales
+DEPUY ORTHOPAEDICS; INC.,Orthopedic,Australian Ortho Assc Natl Joint Registry
+DEPUY ORTHOPAEDICS; INC.,Orthopedic,Duraloc Long Term
+DEPUY ORTHOPAEDICS; INC.,Orthopedic,New England Bapt Hospital Joint Registry
+DEPUY ORTHOPAEDICS; INC.,Orthopedic,Prospective Post-Approval Study
+DEPUY ORTHOPAEDICS; INC.,Orthopedic,DePuy Outcome Tracking Sys Registry(DOTS)
+DEXCOM; INC.,Clinical Chemistry,Dexcom G5 Mobile Cont Glucose Monitoring Sys -PAS
+DJO Global,Orthopedic,Long Term Study
+DJO Global,Orthopedic,Actual Conditions of Use Study (STAR 2)
+DJO Global,Orthopedic,S.T.A.R. Ankle PAS
+DT MedTech LLC,Orthopedic,Hintermann Series H3 TAR Performance Study
+DT MedTech LLC,Orthopedic,Hintermann Series H3 TAR Long Term Study
+Edwards Lifesciences LLC,Cardiovascular,Registry-Based Real-World Use Surveillance
+Edwards LifeSciences LLC,Cardiovascular,Continued Follow-up of the CLASP III Trial Cohort
+Edwards LifeSciences LLC,Cardiovascular,Registry-Based Real-World Use Surveillance
+Edwards Lifesciences; LLC,Cardiovascular,Cont f/u of the Alterra IDE Cohort
+Edwards Lifesciences; LLC,Cardiovascular,Alterra New Enrollment Study
+Edwards Lifesciences; LLC,Cardiovascular,SAPIEN 3 Pulmonic Long Term F/u Study
+Edwards Lifesciences; LLC,Cardiovascular,SAPIEN 3 Pulmonic New Enrollment Study-COMPASSION
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,SAPIEN 3 and SAPIEN 3 Ultra Aortic THV-in-THV Surv
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,Cont f/u of SAPIEN 3 Bicuspid Registry
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,CAP Cohort and Low Risk Bicuspid RWU Surveillance
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,SAPIEN 3 & SAPIEN 3 Ultra Mitral ValveInRing Surv
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,S3UR Real World Surveillance
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,Continued f/u of premarket cohort
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,Comprehensive/Linked-Registry Based Surv
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,Model 11500A Prospective PAS
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,Model 11500A Valve-in-Valve PAS
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,PAS Aortic Continued Follow-up
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,Continued f/u of premarket cohort
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,Comprehensive/Linked-Registry Based Surv
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,SAPIEN 3 Aortic Valve-in-Valve Comp Surv
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,SAPIEN 3 Mitral Valve-in-Valve Comp Surv
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,Cont f/u of SAPIEN 3 Low Risk cohort PAS
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,SAPIEN 3 Registry-Based Cont Access & Low Risk RWU
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,SAPIEN 3 Ultra Novel Surveillance
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,Mitral Model 11000M; Cont f/u Post-Approval Study
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,Long Term
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,Continued f/u of premarket cohort
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,Comprehensive/Linked-Registry
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,Continued f/u of the premarket cohort
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,Comprehensive Linked Registry-Based Surv
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,New Enrollment SAPIEN XT Pulmonic PAS
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,COMPASSION Cohort
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,Cont F/U of the IDE inop pts cohort(B)
+EDWARDS LIFESCIENCES; LLC.,Cardiovascular,Comprehensive/Linked-Registry Based Surv
+Endologix; LLC,Cardiovascular,Alto US and OUS Post-Approval Study
+Endologix; LLC,Cardiovascular,Case Selection and Sizing Study
+Endologix; LLC,Cardiovascular,VQI and VISION EVAR Registry Analysis
+Endologix; LLC,Cardiovascular,DETOUR2 Continued Follow-up Study
+Endologix; LLC,Cardiovascular,PTAB1 New Enrollment Registry Study
+ENDOMAGNETICS LTD.,General & Plastic Surgery,Post-Approval Study (2ml)
+ENVOY MEDICAL CORPORATION,Ear Nose & Throat,New Enrollment
+ENVOY MEDICAL CORPORATION,Ear Nose & Throat,Esteem New Enrollment 2
+ENVOY MEDICAL CORPORATION,Ear Nose & Throat,Extended Follow-up of PMA study
+Epigenomics AG,Pathology,Epi proColon PAS
+Exact Sciences Corporation,Pathology,Cologuard PAS
+Exact Sciences Corporation,Pathology,A Post-Marketing Real World Study-Tidal
+EXACTECH; INC.,Orthopedic,Long Term
+EXACTECH; INC.,Orthopedic,Novation PAS
+FARAPULSE; Inc.,Cardiovascular,ADVENT Post-Approval Study
+Foundation Medicine; Inc.,Pathology,RET Fusion Clinical Efficacy PAS for Selpercatinib
+Foundation Medicine; Inc.,Pathology,NTRK Clinical Efficacy PAS for Larotrectinib
+Foundation Medicine; Inc.,Pathology,ROZYLTREK PAS
+Glaukos Corporation,Ophthalmic,Extended f/u Premarket Cohort
+Glaukos Corporation,Ophthalmic,New Enrollment PAS
+GLAUKOS; CORPORATION,Ophthalmic,New Enrollment Study
+GLAUKOS; CORPORATION,Ophthalmic,Registry Study
+GLAUKOS; CORPORATION,Ophthalmic,Extended F/u of IDE Cohort Study
+Globus Medical; Inc.,Orthopedic,REFLECT Scoliosis Correction System Registry PAS
+Gyrus ACMI; Inc.,Anesthesiology,EMPROVE Extension Study
+Gyrus ACMI; Inc.,Anesthesiology,SVS [STRIVE] Post-Market Registry Study
+HDL Therapeutics; Inc.,Gastroenterology/Urology,HALO-FHII PAS
+HDL Therapeutics; Inc.,Gastroenterology/Urology,HF PAS
+HumanOptics AG,Ophthalmic,PAS; Adult and Pediatric
+HumanOptics AG,Ophthalmic,Pediatric New Enrollment
+Impulse Dynamics (USA); Inc.,Cardiovascular,OPTIMIZER System PAS
+InSightec,Neurology,PAS Registry Study for ExAblate 4000
+InSightec,Neurology,ExAblate Neuro PAS
+INSIGHTEC; LTD,Obstetrics/Gynecology,Post ExAblate Pregnancy Outcomes Registry
+INSPIRE MEDICAL SYSTEMS,Anesthesiology,Ext FU Premkt Cohort Inspire 4 STAR Trial
+INSPIRE MEDICAL SYSTEMS,Anesthesiology,New Enrollment Study
+INSPIRE MEDICAL SYSTEMS,Anesthesiology,Inspire Pediatric Post-Approval Registry
+INSPIRE MEDICAL SYSTEMS,Anesthesiology,Inspire UAS New Enrollment PAS
+INSPIRE MEDICAL SYSTEMS,Anesthesiology,Inspire UAS High AHI/High BMI PAS
+Integrum AB,Orthopedic,TFAOS PAS
+Integrum AB,Orthopedic,Osseointegration Quality Registry PAS
+INTRINSIC THERAPEUTICS,Orthopedic,Extended F/U-Barricaid ACD Premarket Cohort
+INTRINSIC THERAPEUTICS,Orthopedic,Histological and Retrieval Analysis PAS
+Ivantis; Inc. wholly-owned subsidiary of Alcon Research; LLC,Ophthalmic,Continuation of Premarket Cohort PAS
+Ivantis; Inc. wholly-owned subsidiary of Alcon Research; LLC,Ophthalmic,Modified Hydrus New Enrollment PAS
+Kaneka Pharma America LLC,Gastroenterology/Urology,New Enroll PAS LIPOSORBER LA-15 Adults
+KANEKA PHARMA AMERICA LLC,Gastroenterology/Urology,New Enrollment Study
+KANEKA PHARMA AMERICA LLC,Gastroenterology/Urology,New Enroll. PAS for Liposorber LA-15 Sys
+Kestra Medical Technologies; Inc.,Cardiovascular,ACE-PAS
+Lenstec; Inc.,Ophthalmic,Lenstec SBL-3 PAS
+LimFlow; Inc.,Cardiovascular,PROMISE II Continued Follow-up Study
+LimFlow; Inc.,Cardiovascular,PROMISE III Post-Approval Study
+LUTONIX,Cardiovascular,IDE Cohort Post Approval Study
+LUTONIX,Cardiovascular,New Enrollment PAS Registry
+MED-EL CORP.,Ear Nose & Throat,MED-EL New Enrollment SSD/AHL Study
+Medtronic,Cardiovascular,Cont F/u of HW004-A ENDURANCE
+Medtronic,Cardiovascular,ENDURANCE PAS
+MEDTRONIC CARDIAC RHYTHM DISEASE MANAGEMENT,Cardiovascular,iATP PAS
+MEDTRONIC CARDIAC RHYTHM DISEASE MANAGEMENT,Cardiovascular,iATP PAS
+Medtronic CryoCath LP,Cardiovascular,Cryo AF Global Registry PAS
+Medtronic CryoCath LP,Cardiovascular,Cryo Global Registry
+Medtronic Inc.,Cardiovascular,DIAMOND AF PAS
+Medtronic Inc.,Cardiovascular,SPYRAL HTN-OFF MED and HTN-ON MED Cont f/u studies
+Medtronic Inc.,Cardiovascular,SPYRAL AFFIRM PAS: New Enrollment Registry Study
+MEDTRONIC Inc.,Cardiovascular,Micra Jugular Access PAS
+MEDTRONIC Inc.,Cardiovascular,Micra AV Post Approval Study
+MEDTRONIC Inc.,Cardiovascular,Attain Stability Quad PAS
+MEDTRONIC Inc.,Cardiovascular,Micra Rate Resp Conf Study
+MEDTRONIC Inc.,Cardiovascular,Micra Transcatheter Pacing System PAS
+MEDTRONIC Inc.,Neurology,DBS for Epilepsy New Enrollment PAS
+MEDTRONIC Inc.,Clinical Chemistry,PAS of TS Feat. w Sensor-Augment Pump Sys
+MEDTRONIC Inc.,Clinical Chemistry,PAS of TS Feat w/sensor-aug w/comm data
+MEDTRONIC MINIMED; INC.,Clinical Chemistry,MiniMed 670G Post Approval Study
+MEDTRONIC MINIMED; INC.,Clinical Chemistry,Post-Approval Study
+MEDTRONIC MINIMED; INC.,Clinical Chemistry,MiniMed 780G New Enrollment Study
+MEDTRONIC NEUROMODULATION,Gastroenterology/Urology,Urgency Frequency (UF 1635)
+MEDTRONIC NEUROMODULATION,Gastroenterology/Urology,Urinary Urge Incontinence (UUI)
+MEDTRONIC NEUROMODULATION,Gastroenterology/Urology,Single Tined Lead (protocol 1634)
+Medtronic Sofamor Danek USA; Inc.,Orthopedic,Extended Follow-Up
+Medtronic Sofamor Danek USA; Inc.,Orthopedic,Enhanced Surveillance Study
+Medtronic Sofamor Danek USA; Inc.,Orthopedic,Device Failure
+Medtronic Sofamor Danek USA; Inc.,Orthopedic,Device Failure and Complaint Analysis
+MEDTRONIC VASCULAR,Cardiovascular,Cont f/u RESOLUTE ONYX Clinical
+MEDTRONIC VASCULAR,Cardiovascular,RESOLUTE ONYX PAS
+Medtronic Vascular,Cardiovascular,Cont f/u ANCHOR Reg Short Neck Cohort
+MEDTRONIC VASCULAR,Cardiovascular,Cont f/u of RESOLUTE ONYX 2.0 Clinical
+MEDTRONIC VASCULAR,Cardiovascular,RESOLUTE ONYX PAS
+Medtronic Vascular,Cardiovascular,Valiant Dissection PAS
+Medtronic Vascular,Cardiovascular,Comprehensive/Linked-Registry Based Surv.
+Medtronic Vascular Inc.,Cardiovascular,IN.PACT AV Access IDE Cohort PAS
+Medtronic Vascular Inc.,Cardiovascular,New Enrollment IN.PACT AV Access PAS
+Medtronic; Inc.,Cardiovascular,Cont fu of Evolt R and PRO Sys Low Risk cohort PAS
+Medtronic; Inc.,Cardiovascular,Evolut R and PRO Sys Registry-Based Low Risk RWU
+Medtronic; Inc.,Cardiovascular,Cont f/u Intermediate Risk Cohort
+Medtronic; Inc.,Cardiovascular,Intermediate Risk Surveillance
+Medtronic; Inc.,Cardiovascular,Cont f/u of CoreValve Evolut PRO System
+Medtronic; Inc.,Cardiovascular,Comprehensive/Linked-Registry Based Surv
+Medtronic; Inc.,Cardiovascular,Heart Failure Risk Status (HFRS) PAS
+Medtronic; Inc.,Cardiovascular,Continued f/u of premarket cohort
+Medtronic; Inc.,Cardiovascular,Comprehensive/Linked-Registry Based Surv
+Medtronic; Inc.,Cardiovascular,MR conditional Tachy Therapy Systems Stud
+Medtronic; Inc.,Cardiovascular,MR conditional Tachy Therapy Systems
+Medtronic; Inc.,Cardiovascular,Continued f/u of the premarket cohorts
+Medtronic; Inc.,Cardiovascular,Comprehensive/Linked-Registry Based Surv
+Medtronic; Inc.,Cardiovascular,Continued f/u of the premarket cohort
+Medtronic; Inc.,Cardiovascular,Comprehensive/Linked-Registry
+Medtronic; Inc.,Cardiovascular,Continued f/u of continued access cohort
+Medtronic; Inc.,Cardiovascular,New Enrollment of extreme risk patients
+Medtronic; Inc.,Cardiovascular,Contined f/u of IDE pivotal cohort
+Medtronic; Inc.,Cardiovascular,Continued f/u of premarket cohort
+Medtronic; Inc.,Cardiovascular,Comprehensive/Linked-Registry Based Surv
+Medtronic; Inc.,Cardiovascular,Continued f/u of premarket cohort
+Medtronic; Inc.,Cardiovascular,Comprehensive/Linked-Registry Based Surv
+Medtronic; Inc.,Cardiovascular,Continued Follow-up of the Harmony TPV IDE Cohort
+Medtronic; Inc.,Cardiovascular,Harmony TPV New Enrollment Study
+Medtronic; Inc.,Cardiovascular,Cont F/u Low Risk Premarket Cohort
+Medtronic; Inc.,Cardiovascular,Low Risk Real World Use Surveillance
+Medtronic; Inc.,Cardiovascular,Enlighten PAS
+Medtronic; Inc.,Cardiovascular,PULSED AF Post Approval Study
+MENTOR CORP.,General & Plastic Surgery,Re-Op Phase
+MENTOR CORP.,General & Plastic Surgery,Adjunct Study
+MENTOR CORP.,General & Plastic Surgery,Core
+MENTOR CORP.,General & Plastic Surgery,Focus Group
+MENTOR CORP.,General & Plastic Surgery,Breast Implant Case Control Studies
+MENTOR CORP.,General & Plastic Surgery,Large PAS
+MENTOR CORP.,General & Plastic Surgery,Device Failure Study
+MENTOR CORP.,General & Plastic Surgery,Informed Decision Process
+MENTOR CORP.,General & Plastic Surgery,MemoryGel and Shape Glow Study
+MENTOR WORLDWIDE LLC,General & Plastic Surgery,Post-Approval PMA Cohort Study (PACS)
+MENTOR WORLDWIDE LLC,General & Plastic Surgery,Post-approval Cont Access Study (PACAS)
+MENTOR WORLDWIDE LLC,General & Plastic Surgery,MemoryGel and Shape Glow Study
+MENTOR WORLDWIDE LLC,General & Plastic Surgery,Breast Implant Case-Control Studies
+MENTOR WORLDWIDE LLC,General & Plastic Surgery,Focus Group Study
+Micro Therapeutics; Inc. d/b/a ev3 NEUROVASCULAR,Neurology,Pipeline Flex Embolization w Shield Tech PAS
+Micro Therapeutics; Inc. d/b/a ev3 NEUROVASCULAR,Neurology,INSPIRE Pipeline Vantage Embolization Device PAS
+MicroCube; LLC,Obstetrics/Gynecology,EASE Clinical Trial
+MicroVention; Inc.,Neurology,FRED X PAS
+MicroVention; Inc.,Neurology,PAS-Post-Market Surveillance Study/LongTerm Safety
+MicroVention; Inc.,Neurology,PAS1 - PostMarket Surveillance-Long Term Safety
+MicroVention; Inc.,Neurology,PAS2 - WEB-IT Study
+NEUROPACE INC,Neurology,Continued F/u -Long Term Treatment (LTT)
+NEUROPACE INC,Neurology,New Enrollment - All Comers
+NEUROPACE INC,Neurology,New Enrollment -Performance & Programming
+NEUROPACE INC,Neurology,Lead Extraction Study
+NEUROPACE INC,Neurology,Autopsy Study
+Novocure GmbH,Neurology,Registry Study for Optune System
+Novocure GmbH,Neurology,New Enrollment Study for NovoTTF-100A
+NUMED; INC.,Cardiovascular,PARCS continued f/u survey
+NUMED; INC.,Cardiovascular,Continued f/u of Premarket Cohorts
+NUMED; INC.,Cardiovascular,Cont f/u of premarket cohorts w/stent fra
+NuVasive; Inc.,Orthopedic,Extended f/u of the 2-Level Simplify
+OCULAR THERAPEUTIX; INC.,Ophthalmic,Device Exposure Registry Study
+OCULAR THERAPEUTIX; INC.,Ophthalmic,Clinical PAS
+OCULAR THERAPEUTIX; INC.,Ophthalmic,Retrospective Analysis Study for Endophthalmitis
+On-X Life Technologies; Inc.,Cardiovascular,Newly Enrolled On-X PAS
+OrganOx Limited,Gastroenterology/Urology,WP01 Long-Term Follow-up PAS
+OrganOx Limited,Gastroenterology/Urology,WP02 Cont Access Long-Term F/u PAS
+OrganOx Limited,Gastroenterology/Urology,New Enrollment PAS
+Oticon Medical,Ear Nose & Throat,New Enrollment Study
+Paragon 28; Inc.,Orthopedic,Patient Specific Talus Spacer PAS
+Pramand; LLC,Neurology,CraniSeal Registry New Enrollment PAS
+Premia Spine Ltd.,Orthopedic,The TOPS System Continued F/U Study
+Pulmonx Corporation,Anesthesiology,ZEVR-Zephyr Valve Registry
+Pulmonx Corporation,Anesthesiology,LIBERATE Extension Study
+Pulmonx Corporation,Anesthesiology,ZEVR-Zephyr Valve Registry
+PYREXAR MEDICAL INC,Obstetrics/Gynecology,Enhanced Surveillance Study
+PYREXAR MEDICAL INC,Obstetrics/Gynecology,Deep Hyperthermia and Radiation
+PYREXAR MEDICAL INC,Obstetrics/Gynecology,Registry Study
+ReCor Medical; Inc.,Cardiovascular,RADIANCE Cont f/u studies-SOLO; TRIO; RADIANCE II
+ReCor Medical; Inc.,Cardiovascular,(US GPS) New Enrollment Registry Study
+ReShape Lifesciences; Inc.,Gastroenterology/Urology,Lap-Band Long Term
+ReShape Lifesciences; Inc.,Gastroenterology/Urology,HERO-002
+restor3d; Inc.,Orthopedic,Total Talus Replacement (TTR) PAS
+RxSight; Inc.,Ophthalmic,LAL/LDD Postmarket RCT
+Samsara Vision Inc.,Ophthalmic,Premarket Cohort IMT-002-LTME
+Samsara Vision Inc.,Ophthalmic,IMT PAS 01 New Enrollment Study
+Senseonics; Incorporated,Clinical Chemistry,Post-Approval Study
+Senseonics; Incorporated,Clinical Chemistry,Eversense CGM Non-Adjunctive PAS
+SIENTRA; INC,General & Plastic Surgery,Post-Approval PMA Cohorts Study (PACS)
+SIENTRA; INC,General & Plastic Surgery,Post-Approval Cont Access Study (PACAS)
+SIENTRA; INC,General & Plastic Surgery,US Post-Approval Study (US-PAS)
+SIENTRA; INC,General & Plastic Surgery,Post-Approval Case-Control Studies(PACCS)
+SIENTRA; INC,General & Plastic Surgery,Focus Group Study
+SILK ROAD MEDICAL; INC,Cardiovascular,ROADSTER 3 PAS
+Smith & Nephew; Inc.,Orthopedic,UK Study
+Smith & Nephew; Inc.,Orthopedic,US Study
+Smith & Nephew; Inc.,Orthopedic,Long-Term F/u of EU patients PAS
+Smith & Nephew; Inc.,Orthopedic,Short to Mid-Term f/u of New US Patients
+Smith and Nephew; Inc,Orthopedic,Extended Follow-up of the Premarket Cohort
+Spatz FGIA Inc.,Gastroenterology/Urology,Spatz3 Post-Approval Study
+Spinal Kinetics LLC,Orthopedic,M6-C Artificial Cervical Disc-Extended Follow-up
+St. Jude Medical,Cardiovascular,SE Persistent AF (PsAF) PAS
+STAAR Surgical Company,Ophthalmic,CP22-01 Postmarket Evaluation of the EVO ICL
+STAAR Surgical Company,Ophthalmic,CP19-01 PAS F/u of PMA Cohort
+STAAR Surgical Company,Ophthalmic,Visian Toric ICL New Enrollment PAS
+STELKAST COMPANY,Orthopedic,Long term
+STELKAST COMPANY,Orthopedic,Stelkast Surpass Active PAS
+Stryker Neurovascular,Neurology,ATLAS Study
+Surmodics; Inc.,Cardiovascular,TRANSCEND Continued Follow-up Study
+SYNCARDIA SYSTEMS; LLC,Cardiovascular,Enhanced Surveillance
+SYNCARDIA SYSTEMS; LLC,Cardiovascular,Companion 2 Driver System PAS
+SYNCARDIA SYSTEMS; LLC,Cardiovascular,INTERMACS Companion
+TEOXANE S.A.,General & Plastic Surgery,TEO-PAS-2302
+TEOXANE S.A.,General & Plastic Surgery,Teoxane Lip Fullness Scale (TLFS) PAS
+TheraBionic; Inc.,General & Plastic Surgery,The TheraBionic P1 Post-Approval Study
+TransMedics; Inc,Gastroenterology/Urology,EXPAND Continuation PAS
+TransMedics; Inc,Gastroenterology/Urology,OCS-LUNG-PAS
+TransMedics; Inc,Gastroenterology/Urology,TOP PAS Registry
+TransMedics; Inc,Gastroenterology/Urology,INSPIRE Continuation PAS
+TransMedics; Inc.,Cardiovascular,OCS Heart EXPAND+CAP Continued f/u PAS
+TransMedics; Inc.,Cardiovascular,Post-commercialization DBD New Enrollment Study
+TransMedics; Inc.,Cardiovascular,Post-commercialization DCD New Enrollment Study
+TransMedics; Inc.,Cardiovascular,Continued FU of the DCD Heart Premarket Cohort
+TransMedics; Inc.,Gastroenterology/Urology,PROTECT Continuation PAS
+TransMedics; Inc.,Gastroenterology/Urology,PROTECT CAP Continuation PAS
+TransMedics; Inc.,Gastroenterology/Urology,OLP New Enrollment PAS
+TriReme Medical; LLC,Cardiovascular,The Chocolate Touch Continued Follow-up Study
+UROMEDICA INC,Gastroenterology/Urology,ProAct Post-Approval Study
+Urotronic; Inc,Gastroenterology/Urology,PINNACLE Study
+Urotronic; Inc,Gastroenterology/Urology,PEAK PAS
+Urotronic; Inc.,Gastroenterology/Urology,STREAM PAS (PR1275)
+Urotronic; Inc.,Gastroenterology/Urology,ROBUST-LT Post-Approval Study (PR1277)
+Urotronic; Inc.,Gastroenterology/Urology,URINATE PAS (PR1276)
+Valencia Technologies Corporation,Gastroenterology/Urology,Post-Approval Study of eCoin - RECIPE
+Valencia Technologies Corporation,Gastroenterology/Urology,Continued Follow-Up of G170301 Clinical Study
+Vascutek Ltd.,Cardiovascular,EXTEND Post-Approval Study
+Ventana Medical Systems Inc (Roche Tissue Diagnostics),Pathology,KEYTRUDA PAS
+Vesper Medical; Inc.,Cardiovascular,VIVID Continued Follow-up Study
+W. L. Gore & Associates; Inc.,Cardiovascular,Continued Follow-up of the IDE Study
+W. L. Gore & Associates; Inc.,Cardiovascular,Post-Market Surveillance Study
+W. L. GORE & ASSOCIATES; INC.,Cardiovascular,TAG Post-Approval Study
+W. L. GORE & ASSOCIATES; INC.,Cardiovascular,Comprehensive/Linked-Registry Based Surv
+W. L. Gore and Associates; Inc.,Cardiovascular,Cont f/u of the IDE Study Subjects
+W.L. Gore & Associates; Inc.,Cardiovascular,Continued Follow-up of the IDE Study Subjects
+W.L. Gore & Associates; Inc.,Cardiovascular,GORE TAMBE Post-Approval Study
+W.L. GORE & ASSOCIATES;INC,Cardiovascular,Continued f/u of IDE Cohort
+W.L. GORE & ASSOCIATES;INC,Cardiovascular,GORE CARDIOFORM New Enrollment PAS
+WILLIAM COOK EUROPE APS,Cardiovascular,Continued f/u of pivotal study
+WILLIAM COOK EUROPE APS,Cardiovascular,SVS VQI Postmarket Surveillance
+WILSON-COOK MEDICAL INC.,Gastroenterology/Urology,Flourish Real-World Evidence PAS
+WILSON-COOK MEDICAL INC.,Gastroenterology/Urology,Flourish Post-Approval Study
+Xtant Medical Holdings; Inc.,Orthopedic,Coflex Long-Term PAS
+Xtant Medical Holdings; Inc.,Orthopedic,Coflex Actual Practice PAS
+Xtant Medical Holdings; Inc.,Orthopedic,Coflex Actual Practice PAS USA
+XVIVO Perfusion; Inc.,Gastroenterology/Urology,NOVEL/NOVEL Ext Cont Long Term PAS
+XVIVO Perfusion; Inc.,Gastroenterology/Urology,Long Term Eval PAS of XPS System
+Zimmer Biomet Spine; Inc.,Orthopedic,The Tether Vertebral Tethering System PAS
+Zimmer Biomet Spine; Inc.,Orthopedic,Long Term PAS
+Zimmer Biomet Spine; Inc.,Orthopedic,Enhanced Surveillance System
+Zimmer Biomet Spine; Inc.,Orthopedic,Retrieval Analysis
+Zimmer Biomet Spine; Inc.,Orthopedic,Extended f/u of premarket cohort
+Zimmer Biomet Spine; Inc.,Orthopedic,Enhanced Surveillance System
+Zimmer Biomet Spine; Inc.,Orthopedic,Retrieval Analysis
+ZIMMER; INC.,Orthopedic,Long term
+ZIMMER; INC.,Orthopedic,Trilogy PAS
+ZOLL Circulation; Inc.,Cardiovascular,New Enrollment Study
+ZOLL MEDICAL CORPORATION,Cardiovascular,Reconfirmation Analysis Mode Algorithm PAS
+ZOLL MEDICAL CORPORATION,Cardiovascular,AED 3 and Pad Placement PAS
diff --git a/010-Mustjaab/assets/Risk_Arrangement.csv b/010-Mustjaab/assets/Risk_Arrangement.csv
new file mode 100644
index 0000000..06365c6
--- /dev/null
+++ b/010-Mustjaab/assets/Risk_Arrangement.csv
@@ -0,0 +1,67 @@
+REF_DATE,GEO,DGUID,Risk_management_arrangements,NAICS,Size of enterprise,UOM,UOM_ID,SCALAR_FACTOR,SCALAR_ID,VECTOR,COORDINATE,VALUE,STATUS,SYMBOL,TERMINATED,DECIMALS
+2019,Canada,,A written policy in place to manage internal cyber security risks,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391236,1.1.80.1,27.3,D,,,1
+2021,Canada,,A written policy in place to manage internal cyber security risks,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391236,1.1.80.1,25.2,D,,,1
+2021,Canada,,A written policy in place to manage cyber security risks associated with supply chain partners,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1428161882,1.11.80.1,0,B,,,1
+2019,Canada,,A written policy in place to report cyber security incidents,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391237,1.2.80.1,34.7,D,,,1
+2021,Canada,,A written policy in place to report cyber security incidents,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391237,1.2.80.1,11.1,C,,,1
+2021,Canada,,Other type of written policy related to cyber security,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1428161883,1.12.80.1,12.1,C,,,1
+2019,Canada,,"A Business Continuity Plan (BCP) with processes to manage cyber security threats, vulnerabilities and risks",Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391238,1.3.80.1,20,E,,,1
+2021,Canada,,"A Business Continuity Plan (BCP) with processes to manage cyber security threats, vulnerabilities and risks",Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391238,1.3.80.1,18.8,D,,,1
+2019,Canada,,Employees with responsibility for overseeing cyber security risks and threats,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391239,1.4.80.1,64.5,D,,,1
+2021,Canada,,Employees with responsibility for overseeing cyber security risks and threats,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391239,1.4.80.1,55.1,D,,,1
+2019,Canada,,Members of senior management with responsibility for overseeing cyber security risks and threats,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391240,1.5.80.1,53.6,D,,,1
+2021,Canada,,Members of senior management with responsibility for overseeing cyber security risks and threats,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391240,1.5.80.1,32.4,D,,,1
+2019,Canada,,A consultant or contractor to manage cyber security risks and threats,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391241,1.6.80.1,57.8,E,,,1
+2021,Canada,,A consultant or contractor to manage cyber security risks and threats,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391241,1.6.80.1,59.7,D,,,1
+2019,Canada,,Monthly or more frequent patching or updating of operating systems for security reasons,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391242,1.7.80.1,43.6,E,,,1
+2021,Canada,,Monthly or more frequent patching or updating of operating systems for security reasons,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391242,1.7.80.1,38.1,D,,,1
+2019,Canada,,Monthly or more frequent patching or updating of software for security reasons,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391243,1.8.80.1,38.5,D,,,1
+2021,Canada,,Monthly or more frequent patching or updating of software for security reasons,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391243,1.8.80.1,33.9,D,,,1
+2019,Canada,,Cyber risk insurance,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391234,1.9.80.1,43,D,,,1
+2021,Canada,,Cyber risk insurance,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391234,1.9.80.1,33,D,,,1
+2019,Canada,,Business does not have any risk management arrangements for cyber security,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391235,1.10.80.1,15.9,C,,,1
+2021,Canada,,Business does not have any risk management arrangements for cyber security,Hospitals [622],"Total, all enterprises",Percent,239,units,0,v1212391235,1.10.80.1,8.1,B,,,1
+2019,Canada,,A written policy in place to manage internal cyber security risks,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390576,1.1.2.1,3.9,A,,,1
+2021,Canada,,A written policy in place to manage internal cyber security risks,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390576,1.1.2.1,5.1,A,,,1
+2021,Canada,,A written policy in place to manage cyber security risks associated with supply chain partners,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1428161750,1.11.2.1,0.3,A,,,1
+2019,Canada,,A written policy in place to report cyber security incidents,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390577,1.2.2.1,1.8,A,,,1
+2021,Canada,,A written policy in place to report cyber security incidents,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390577,1.2.2.1,0.7,A,,,1
+2021,Canada,,Other type of written policy related to cyber security,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1428161751,1.12.2.1,3.4,A,,,1
+2019,Canada,,"A Business Continuity Plan (BCP) with processes to manage cyber security threats, vulnerabilities and risks","Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390578,1.3.2.1,2.2,A,,,1
+2021,Canada,,"A Business Continuity Plan (BCP) with processes to manage cyber security threats, vulnerabilities and risks","Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390578,1.3.2.1,1.8,A,,,1
+2019,Canada,,Employees with responsibility for overseeing cyber security risks and threats,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390579,1.4.2.1,45.9,B,,,1
+2021,Canada,,Employees with responsibility for overseeing cyber security risks and threats,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390579,1.4.2.1,44.5,B,,,1
+2019,Canada,,Members of senior management with responsibility for overseeing cyber security risks and threats,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390580,1.5.2.1,19.3,B,,,1
+2021,Canada,,Members of senior management with responsibility for overseeing cyber security risks and threats,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390580,1.5.2.1,10.2,A,,,1
+2019,Canada,,A consultant or contractor to manage cyber security risks and threats,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390581,1.6.2.1,22.2,B,,,1
+2021,Canada,,A consultant or contractor to manage cyber security risks and threats,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390581,1.6.2.1,25.4,B,,,1
+2019,Canada,,Monthly or more frequent patching or updating of operating systems for security reasons,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390582,1.7.2.1,13.4,B,,,1
+2021,Canada,,Monthly or more frequent patching or updating of operating systems for security reasons,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390582,1.7.2.1,13,B,,,1
+2019,Canada,,Monthly or more frequent patching or updating of software for security reasons,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390583,1.8.2.1,12.6,B,,,1
+2021,Canada,,Monthly or more frequent patching or updating of software for security reasons,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390583,1.8.2.1,13.9,B,,,1
+2019,Canada,,Cyber risk insurance,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390574,1.9.2.1,9.6,B,,,1
+2021,Canada,,Cyber risk insurance,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390574,1.9.2.1,9.8,B,,,1
+2019,Canada,,Business does not have any risk management arrangements for cyber security,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390575,1.10.2.1,42.3,B,,,1
+2021,Canada,,Business does not have any risk management arrangements for cyber security,"Agriculture, forestry, fishing and hunting [11]","Total, all enterprises",Percent,239,units,0,v1212390575,1.10.2.1,37.2,B,,,1
+2019,Canada,,A written policy in place to manage internal cyber security risks,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391146,1.1.71.1,15.4,B,,,1
+2021,Canada,,A written policy in place to manage internal cyber security risks,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391146,1.1.71.1,23.5,B,,,1
+2021,Canada,,A written policy in place to manage cyber security risks associated with supply chain partners,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1428161864,1.11.71.1,5.9,A,,,1
+2019,Canada,,A written policy in place to report cyber security incidents,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391147,1.2.71.1,12.4,B,,,1
+2021,Canada,,A written policy in place to report cyber security incidents,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391147,1.2.71.1,14.4,B,,,1
+2021,Canada,,Other type of written policy related to cyber security,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1428161865,1.12.71.1,15.2,B,,,1
+2019,Canada,,"A Business Continuity Plan (BCP) with processes to manage cyber security threats, vulnerabilities and risks",Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391148,1.3.71.1,6.5,A,,,1
+2021,Canada,,"A Business Continuity Plan (BCP) with processes to manage cyber security threats, vulnerabilities and risks",Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391148,1.3.71.1,12.7,B,,,1
+2019,Canada,,Employees with responsibility for overseeing cyber security risks and threats,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391149,1.4.71.1,73.9,B,,,1
+2021,Canada,,Employees with responsibility for overseeing cyber security risks and threats,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391149,1.4.71.1,65.3,B,,,1
+2019,Canada,,Members of senior management with responsibility for overseeing cyber security risks and threats,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391150,1.5.71.1,29.7,B,,,1
+2021,Canada,,Members of senior management with responsibility for overseeing cyber security risks and threats,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391150,1.5.71.1,30.8,B,,,1
+2019,Canada,,A consultant or contractor to manage cyber security risks and threats,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391151,1.6.71.1,39.2,C,,,1
+2021,Canada,,A consultant or contractor to manage cyber security risks and threats,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391151,1.6.71.1,52.2,C,,,1
+2019,Canada,,Monthly or more frequent patching or updating of operating systems for security reasons,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391152,1.7.71.1,45.2,C,,,1
+2021,Canada,,Monthly or more frequent patching or updating of operating systems for security reasons,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391152,1.7.71.1,39.2,B,,,1
+2019,Canada,,Monthly or more frequent patching or updating of software for security reasons,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391153,1.8.71.1,39.9,B,,,1
+2021,Canada,,Monthly or more frequent patching or updating of software for security reasons,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391153,1.8.71.1,33.2,B,,,1
+2019,Canada,,Cyber risk insurance,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391144,1.9.71.1,19,B,,,1
+2021,Canada,,Cyber risk insurance,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391144,1.9.71.1,24.8,B,,,1
+2019,Canada,,Business does not have any risk management arrangements for cyber security,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391145,1.10.71.1,8.9,B,,,1
+2021,Canada,,Business does not have any risk management arrangements for cyber security,Elementary and secondary schools [6111],"Total, all enterprises",Percent,239,units,0,v1212391145,1.10.71.1,10.1,B,,,1
diff --git a/010-Mustjaab/environmental-violation-charge-model.py b/010-Mustjaab/environmental-violation-charge-model.py
new file mode 100644
index 0000000..29af82b
--- /dev/null
+++ b/010-Mustjaab/environmental-violation-charge-model.py
@@ -0,0 +1,215 @@
+# /// script
+# requires-python = ">=3.12"
+# dependencies = [
+# "plotly==5.24.1",
+# "pandas==2.2.3",
+# "marimo",
+# "altair==5.4.1",
+# "scikit-learn==1.5.2",
+# "statsmodels==0.14.4",
+# ]
+# ///
+
+import marimo
+
+__generated_with = "0.9.10"
+app = marimo.App()
+
+
+@app.cell
+def __(mo):
+ mo.md(" Environmental Violation Charge Model ").style({'background-color':'seagreen'})
+ return
+
+
+@app.cell
+def __():
+ import marimo as mo
+ import pandas as pd
+ import altair as alt
+ from statsmodels.formula.api import ols
+ from statsmodels.stats.anova import anova_lm
+ from sklearn.model_selection import train_test_split
+ from sklearn.ensemble import RandomForestRegressor
+ from sklearn.feature_extraction.text import TfidfVectorizer
+ import plotly.express as px
+ return (
+ RandomForestRegressor,
+ TfidfVectorizer,
+ alt,
+ anova_lm,
+ mo,
+ ols,
+ pd,
+ px,
+ train_test_split,
+ )
+
+
+@app.cell
+def __(pd):
+ Environmental_Violation_Data = pd.read_csv("https://raw.githubusercontent.com/Mustjaab/Environmental-Protection-Model/main/Environmental_Protection_Data.csv")
+ Environmental_Violation_Data.columns = Environmental_Violation_Data.columns.str.strip()
+ return (Environmental_Violation_Data,)
+
+
+@app.cell
+def __(Environmental_Violation_Data, alt):
+ Sectors_Boxplot = alt.Chart(Environmental_Violation_Data).mark_boxplot(extent='min-max').encode(
+ alt.X('Sector'),
+ alt.Y('Order Amount of Environmental Penalty per Violation')
+ )
+
+ Municipalities_Boxplot = alt.Chart(Environmental_Violation_Data).mark_boxplot(extent='min-max').encode(
+ alt.X('Municipality'),
+ alt.Y('Order Amount of Environmental Penalty per Violation')
+ )
+ return Municipalities_Boxplot, Sectors_Boxplot
+
+
+@app.cell
+def __(Environmental_Violation_Data, anova_lm, ols):
+ Feature_Model = ols(
+ 'Q("Order Amount of Environmental Penalty per Violation") ~ Q("Region") + Q("Sector") + Q("Municipality") + Q("District")', Environmental_Violation_Data).fit()
+ Feature_ANOVA_Table = anova_lm(Feature_Model, typ=2)
+ return Feature_ANOVA_Table, Feature_Model
+
+
+@app.cell
+def __(Environmental_Violation_Data, TfidfVectorizer):
+ Features = Environmental_Violation_Data[['Sector', 'Municipality']]
+ Features_text = Features.astype(str).apply(lambda row: ' '.join(row), axis=1)
+ vectorizer = TfidfVectorizer()
+ vectorizer.fit(Features_text)
+ Features_tfidf = vectorizer.transform(Features_text)
+ return Features, Features_text, Features_tfidf, vectorizer
+
+
+@app.cell
+def __(Environmental_Violation_Data, Features_tfidf, train_test_split):
+ X_train, X_test, y_train, y_test = train_test_split(
+ Features_tfidf,
+ Environmental_Violation_Data['Order Amount of Environmental Penalty per Violation'],
+ test_size=0.2, random_state=42
+ )
+ return X_test, X_train, y_test, y_train
+
+
+@app.cell
+def __(RandomForestRegressor, X_train, y_train):
+ Violation_Classifier = RandomForestRegressor(random_state=42)
+ Violation_Classifier.fit(X_train, y_train)
+ return (Violation_Classifier,)
+
+
+@app.cell
+def __():
+ def Predict_Violation(feature1, feature2, Violation_Classifier, vectorizer):
+ # Convert the features into text format
+ features_text = ' '.join([str(feature1), str(feature2)])
+
+ # Convert text data into TF-IDF representation
+ features_tfidf = vectorizer.transform([features_text])
+
+ # Make predictions using the RandomForestRegressor model
+ predicted_value = Violation_Classifier.predict(features_tfidf)
+
+ return predicted_value[0]
+ return (Predict_Violation,)
+
+
+@app.cell
+def __(mo):
+ Sectors_Dropdown = mo.ui.dropdown(
+ options = ['Iron & Steel', 'Metal Mining', 'Petroleum', 'Industrial Minerals',
+ 'Inorganic Chemical', 'Electric Power', 'Inorganic Chemicals',
+ 'Pulp & Paper', 'Organic Chemical'],
+ value = 'Industrial Minerals',
+ label = 'Sector:'
+ )
+
+ Municipality_Dropdown = mo.ui.dropdown(
+ options = ['Sault Ste Marie','South Porcupine, Timmins',
+ 'Township of Cochrane', 'Sarnia', 'Haldimand County',
+ 'Reeves Township', 'St. Clair Township', 'Kearney',
+ 'Unorganized Township of Reeves',
+ 'Unorganized, District of Thunder Bay', 'Matachewan',
+ 'Port Colborne', 'Espanola', 'St. Marys', 'Kincardine',
+ 'Town of Kearney', 'District of Algoma', 'District of Thunder Bay',
+ 'South Porcupine', 'Tully Township', 'Black River – Matheson',
+ 'Zorra', 'Hamilton', 'Kapuskasing', 'Timmins', 'Quinte West',
+ 'Niagara Falls'],
+ value = 'Hamilton',
+ label = 'Municipality:'
+ )
+ mo.hstack([
+ Sectors_Dropdown,
+ Municipality_Dropdown
+ ])
+ return Municipality_Dropdown, Sectors_Dropdown
+
+
+@app.cell
+def __(Municipality_Dropdown, Sectors_Dropdown):
+ Sector = Sectors_Dropdown.value
+ Municipality = Municipality_Dropdown.value
+ return Municipality, Sector
+
+
+@app.cell
+def __(
+ Municipality,
+ Predict_Violation,
+ Sector,
+ Violation_Classifier,
+ mo,
+ vectorizer,
+):
+ Predicted_Violation = Predict_Violation(Sector,Municipality,Violation_Classifier, vectorizer)
+
+ mo.md(rf"Predicted Violation Charge ($): {round(Predicted_Violation,2)}").style({'background-color':'purple','border-width':'2px','border-color':'white'}).center()
+ return (Predicted_Violation,)
+
+
+@app.cell
+def __(Feature_ANOVA_Table, mo):
+ mo.hstack([
+ mo.vstack([
+ mo.md(" ANOVA Table ").style({'background-color':'brown'}),
+ mo.ui.table(Feature_ANOVA_Table)
+ ])
+ ]).center()
+ return
+
+
+@app.cell
+def __(Municipalities_Boxplot, Sectors_Boxplot, mo):
+ mo.hstack([
+ mo.vstack([
+ mo.md(" Boxplot of Violation Charges by Sector ")
+ .style({'background-color':'maroon'}),
+ mo.ui.altair_chart(Sectors_Boxplot)
+ ]),
+ mo.vstack([
+ mo.md(" Boxplot of Violation Charges by Municipality ")
+ .style({'background-color':'teal'}),
+ mo.ui.altair_chart(Municipalities_Boxplot)
+ ])
+ ]).center()
+ return
+
+
+@app.cell
+def __(mo):
+ mo.md(
+ rf"""
+
+ """
+ ).style({'font-size':'18px'})
+ return
+
+
+if __name__ == "__main__":
+ app.run()
diff --git a/README.md b/README.md
index 580b171..e1bed61 100644
--- a/README.md
+++ b/README.md
@@ -21,25 +21,27 @@ To edit the notebook source code, replace `run` with `edit` in the above command
## Examples
-### August 2024
+
+August 2024
+
-
+
-
+
-
+
-
+
@@ -83,25 +85,29 @@ To edit the notebook source code, replace `run` with `edit` in the above command
-### September 2024
+
+
+
+September 2024
+
-
+
-
+
-
+
-
+
@@ -145,19 +151,29 @@ To edit the notebook source code, replace `run` with `edit` in the above command
+
+
### October 2024
-
+
+
+
+
+
+
Stanford WE3 Lab
+
+ Mustjaab
+
@@ -165,6 +181,11 @@ To edit the notebook source code, replace `run` with `edit` in the above command
+
+
+
+
+
@@ -181,6 +202,7 @@ To edit the notebook source code, replace `run` with `edit` in the above command
7. [Haleshot](007-haleshot/) Haleshot is an aspiring AI/ML engineer and a python enthusiast: pursuing a B.Tech in AI and an open-source enthusiast. As a key contributor and newly appointed marimo ambassador, he plays a vital role in the marimo community. Haleshot has created various notebooks, including a Goodreads Dataset EDA, and leads the marimo spotlight repository.
8. [marimo-tutorials](008-marimo-tutorials/) A comprehensive collection of tutorials covering various aspects of marimo, created by Haleshot. These tutorials serve as an excellent resource for both beginners and advanced users looking to explore the full potential of marimo.
9. [Stanford WE3 Lab](009-water-systems/) The Stanford WE3 Lab team, including [Akshay Rao](https://x.com/raodoesresearch) and [Fletch](https://github.com/fletchapin), presents a study on "[Valuing Energy Flexibility from Water Systems](https://www.nature.com/articles/s44221-024-00316-4)." Their marimo notebook visualizes methods for efficient operation of water systems in a decarbonizing grid, showcasing the application of data science in sustainable infrastructure management.
+10. [Mustjaab](010-Mustjaab/) Mustjaab is an enthusiastic contributor to the marimo community, sharing numerous fascinating notebooks including analyses of greenhouse gas emissions, exploration of Perplexity using `mo.ui.chat`, and various other insightful and interactive notebooks.
>[!NOTE]
> All of our spotlights are part of the [Community Spotlights](https://marimo.io/c/@spotlights/community-spotlights) collection, where we showcase outstanding projects and contributions from the marimo community. This collection demonstrates the diverse and innovative ways our community members are using marimo to create engaging, interactive content across various domains.
diff --git a/assets/010-Mustjaab.png b/assets/010-Mustjaab.png
new file mode 100644
index 0000000..9758d98
Binary files /dev/null and b/assets/010-Mustjaab.png differ