INTRODUCTION
Introduction
Cardiovascular disease has become the leading cause of death worldwide, including in Vietnam, surpassing infectious diseases and starvation that dominated mortality rates before 1900 By the early 21st century, it is estimated that cardiovascular disease will lead to 17.9 million deaths globally, representing 33% of all mortality causes This alarming trend is particularly pronounced in emerging nations with medium to low incomes, where fatalities from cardiovascular disease are on the rise.
Various ECG techniques are essential in diagnosing cardiovascular issues, with the 12-lead electrocardiogram being the standard method for assessing heart function The traditional Holter monitor addresses mobility concerns by allowing long-term heart and pulse monitoring without disrupting daily activities, although it still requires electrodes and wires, which can be inconvenient for patients Despite these advancements, a significant limitation remains: real-time monitoring of the patient's condition is not feasible for patients, their families, and healthcare providers.
Reason for writing
To enhance overall health and mitigate the risk of cardiovascular disease-related deaths, I have selected the topic of IoT devices integrated with AI systems for ECG classification and monitoring This innovative approach aims to deliver real-time alerts regarding potential hidden dangers within the cardiovascular system.
Research Objectives
This thesis aims to leverage data from IoT wearable devices and apply machine learning algorithms developed in Python to detect abnormal signs and symptoms of cardiovascular diseases.
Scope of study
This graduation project focuses on utilizing the XGBoost algorithm to classify and identify warning signals in electrocardiograms, specifically targeting individuals at risk of or already diagnosed with cardiovascular diseases, such as heart arrhythmia.
Then, this project proposes two solutions for storing data in databases, one solution for continual learning, a solution for optimizing gateway and one dashboard for the end users.
The IoT device is invented by Mr Khoa [20] so I do not mention how to create it in this project.
Methodology
Data an analysis and data visualization skills are used to understand hidden patterns in ECG signals.
Data version management is needed to control specific versions of data.
Experiment tracking skill is used to find the good parameters for the model during the training process.
Researching documents, thesis, and reports both domestically and internationally.
Work flow
This workflow is designed to effectively manage the to-do list for graduation projects, as discussed in the book by Chip Huyen Huyen, a skilled writer and computer scientist, focuses on implementing top engineering practices in machine learning production.
First is the step of identifying the problem, we need to understand the input data and the system's output requirements
Next is the data engineering stage During data engineering processing, the project uses techniques such as scaling, filtering, and feature extraction
Step 3 is model development, choose a machine learning algorithm, then use wandb to track each iteration and find the best set of parameters
After having a machine learning model, we need to deploy it on mini PCs
The final step involves ongoing learning and monitoring, where visualizing data is crucial for assessing system performance This evaluation helps determine the effectiveness of the model and whether it requires retraining.
More detail of this work flow is in Chapter 3
CARDIOVASCULAR AND ECG
The heart
The human heart, roughly the size and shape of a man's closed fist, is a muscular organ with four chambers, predominantly located on the left side of the midline.
The heart is enclosed within the pericardial sac, which features a serous membrane and is lined by the parietal layer The epicardium serves as the inner layer of this serous membrane.
Layers of the Heart Wall
The heart wall is composed of three layers of tissue The epicardium is the outer layer, the myocardium is the middle layer, and the endocardium is the inner layer
The heart has four internal chambers:
The heart consists of two atria and two ventricles, where the atria are thin-walled chambers that receive blood from the veins, and the ventricles are thick-walled chambers responsible for forcefully pumping blood out of the heart.
The thickness of the heart chamber walls varies based on the amount of myocardium, affecting the force each chamber generates The right atrium collects deoxygenated blood from the body's veins, while the left atrium receives oxygenated blood from the lung veins.
The heart contains two types of valves that regulate blood flow direction: cuspid valves, or atrioventricular valves, which are located between the atria and ventricles, and semilunar valves, situated at the base of major veins that carry blood away from the ventricles.
The tricuspid valve serves as the right atrioventricular valve, while the bicuspid or mitral valve functions as the left atrioventricular valve Additionally, the pulmonary semilunar valve links the right ventricle to the pulmonary trunk, and the aortic semilunar valve connects the left ventricle to the aorta.
During ventricular contraction, the atrioventricular valves close to stop blood from returning to the atria, while during ventricular relaxation, the semilunar valves close to prevent blood from flowing back into the ventricles.
Pathway of Blood through the Heart
The heart functions as two synchronized pumps, with blood flow divided into right and left sides Both atria and ventricles contract simultaneously, facilitating the movement of blood from the right atrium to the right ventricle, where it is sent to the lungs for oxygenation Once oxygen-rich, the blood returns to the left atrium, moves into the left ventricle, and is then distributed throughout the body.
Blood Supply to the Myocardium
The myocardium, the heart's muscular layer, relies on a continuous supply of oxygen and nutrients to operate efficiently Consequently, it is equipped with a rich network of blood vessels that deliver oxygen to the contracting heart cells while also facilitating the removal of waste products.
The right and left coronary arteries, branching from the ascending aorta, are responsible for supplying blood to the myocardial walls After flowing through the heart's capillaries, blood enters a network of cardiac veins, with most of these veins draining into the coronary sinus, which then empties into the right atrium.
Figure 2-1 Internal view of the Heart
Figure 2-2 Phase of cardiac cycle [22]
Phase 1: Rest period with no electrical activity
Phase 2: The Sinus Node generates an Action Potential, which travels through the atrial internodal tracts and Bachman's Bundle, contracting the atria and pushing blood into the ventricles
Phase 3: The Atrioventricular Node is where the action potential passes The blood in the ventricles is filling to capacity
Phase 4: The action potential travels from the AV node to the Purkinje Fibers through the Bundle of HIS, the Right and Left Bundle Branches, and the Bundle of HIS
Phase 5: Ventricles Contract and push blood to the lungs and the rest of the body
Phase 6: The ventricles relax and repolarize in preparation for the next action potential.
ECG monitors
There are several ECG monitors over the world, they can be categorized by 2 groups:
A 12-lead electrocardiogram (ECG) is a standard medical device that records the heart's electrical activity and displays it on graph paper through leads attached to the body These results are analyzed by healthcare professionals, including cardiologists, cardiac nurses, and technicians.
In 1924, Willem Einthoven developed the electrocardiogram (ECG) and was awarded the Nobel Prize in Medicine for his groundbreaking work Today, modern ECG machines are significantly more portable and user-friendly compared to the original units.
Figure 2-3 The first ECG machine
Since its debut in 1962, the Holter monitor has become a vital tool for cardiologists As life-threatening heart conditions become more common, the demand for detailed insights into patients' cardiac health has grown among healthcare professionals.
A Holter monitor is a portable electrocardiogram (ECG) While you are away from the doctor's office, it continuously monitors the electrical activity of the heart for 24 hours or more
Electrodes, which are small plastic patches adhered to the skin, are strategically placed on the chest and abdomen These electrodes connect to a Holter monitor via wires, allowing for the continuous monitoring, recording, and printing of the heart's electrical activity Importantly, the procedure does not involve any electricity being supplied to the body.
Natural electrical impulses regulate the contractions of the heart's chambers, ensuring normal blood flow An ECG machine detects these impulses to assess the heart's rate, rhythm, and the timing and strength of the electrical signals Variations in the ECG readings can reveal various cardiac issues.
However, despite its current incarnation, the Holter monitor continues to be a poor answer to the issues of cardiology diagnostics and remote patient monitoring (RPM)
Patients with heart-related diseases often rely on costly electrocardiograms (ECGs) for short-term monitoring, which can be ineffective for long-term health tracking While Holter monitors offer extended monitoring capabilities, they can interfere with daily activities due to their bulkiness The rise of IoT technology is leading to the development of compact, wireless devices that provide a more convenient solution for continuous heart monitoring.
Mr Khoa in his [20] graduation project proposed a solution of applying IoT system to health monitoring The figures below are the final successful prototype
Then, the device can be worn on the person as shown below
To understand how the device measures ECG values, the block diagram of the device is shown in Figure 2-8
Figure 2-8 IoT device block diagram [20]
The ESP32-C3 controller interfaces with the MAX30003 sensor using the SPI communication standard and the INTB interrupt pin Additionally, the device features a Reset button to restart the program and a Boot button to power on the device.
MACHINE LEARNING SYSTEM
An introduction to Machine Learning
Machine learning (ML) is a highly discussed technology that enables software programs to predict outcomes more accurately without explicit coding The core concept of machine learning involves creating algorithms that analyze input data and utilize statistical methods to forecast results, continuously refining predictions as new data is introduced.
This chapter is designed to deepen your understanding of machine learning, building on your existing knowledge of its fundamentals, applications, and mechanisms Additionally, it provides essential information to enhance your comprehension of the work that has been accomplished in this field.
Many machine learning algorithms have been developed and are currently being developed They can be categorized in two ways: by learning methods or by learning styles There are:
Supervised machine learning relies on labeled datasets to train machines, allowing them to predict outcomes based on prior mappings of inputs to outputs This process involves carefully training the computer with input-output pairs before testing its prediction capabilities on a separate dataset Supervised learning encompasses two primary problem types: classification and regression, each serving distinct predictive purposes.
Classification algorithms are essential for addressing classification problems involving categorical output variables, such as binary choices like "Yes" or "No" and gender distinctions like Male or Female These algorithms predict the categories present in a dataset and are widely applied in real-world scenarios, including spam detection and email filtering.
Regression algorithms are essential for solving regression problems where input and output variables exhibit a linear relationship They are commonly employed to predict continuous output variables, including market trends and weather forecasts.
Unsupervised learning, unlike supervised learning, operates without the need for monitoring, as it utilizes unlabeled datasets to train the system This approach enables the model to predict outcomes independently, making it a key method in unsupervised machine learning.
Unsupervised learning is training models with unlabeled data and then letting the model to act on that data without supervision
Unsupervised learning aims to categorize unstructured data by identifying similarities, patterns, and differences within the information This method enables machines to uncover hidden patterns in datasets, facilitating effective data organization and analysis.
The clustering approach identifies inherent groupings within data by organizing objects into groups based on their similarities, ensuring that items within the same group share common traits while differing from those in other groups This method can effectively classify clients according to their purchasing habits using a clustering algorithm.
Unsupervised learning techniques, particularly association rule learning, are essential for revealing significant correlations between variables in extensive datasets The primary goal of this approach is to identify the dependencies between data items and effectively map these relationships to enhance profitability Common applications of this method include Market Basket analysis, web usage mining, and continuous production processes.
Semi-supervised learning is a machine learning approach that combines elements of both supervised and unsupervised learning By utilizing a mix of labeled and unlabeled datasets during training, it effectively connects the two methods, leveraging the advantages of labeled data while also incorporating the vast amounts of unlabeled data available.
Semi-supervised learning bridges the gap between supervised and unsupervised learning by utilizing a small number of labeled data points alongside a larger set of unlabeled data While obtaining labels can be expensive, businesses often only need a limited number of them for their specific applications This approach differs from traditional supervised and unsupervised learning by emphasizing the importance of having some labeled data, even if it is minimal.
Semi-supervised learning addresses the limitations of both supervised and unsupervised learning by efficiently utilizing all available data, including unlabeled data Unlike supervised learning, which relies solely on labeled data that is often costly to obtain, semi-supervised learning employs unsupervised techniques to group relevant data, facilitating the identification of unlabeled data This approach maximizes the use of data resources, enhancing the learning process.
Supervised learning involves a student being guided by an instructor both at home and in college, while unsupervised learning occurs when a learner studies the same material independently In semi-supervised learning, the user must adapt their understanding after reviewing the subject with the help of a college teacher.
Reinforcement learning is an AI strategy that enables an agent to autonomously navigate its environment through trial and error, learning from experiences to enhance its performance By receiving rewards for positive actions and penalties for negative ones, the primary objective of the reinforcement learning agent is to maximize its overall rewards.
Reinforcement learning, unlike supervised learning, does not use labeled data, and agents learn only from their own experiences
Reinforcement learning closely mirrors human learning, as seen in how children acquire knowledge through daily interactions A prime example is playing a game, where the game environment serves as the backdrop, and the agent's actions at each step generate various states The ultimate objective for the agent is to achieve a high score, with feedback provided through rewards and penalties to guide its learning process.
Reinforcement learning is employed in a variety of disciplines due to how it works, including game theory, operations research, information theory, and multi-agent systems
Requirements for a machine learning system
Understanding the specific requirements of a Machine Learning (ML) system is crucial, as these needs can differ based on the application or use case Generally, an effective ML system should exhibit key characteristics, including reliability, scalability, maintainability, and adaptability This article will explore each of these essential concepts in detail.
The system must consistently perform its intended functions effectively, even when faced with challenges like hardware or software failures and human errors.
Unlike traditional software systems, machine learning (ML) systems can experience silent failures, where users remain unaware of any issues and continue to use the system as if it operates correctly For instance, when utilizing Google Translate to convert a sentence into an unfamiliar language, users may struggle to identify inaccuracies in the translation.
Machine learning systems can evolve in complexity, as demonstrated by the transition from a logistic regression model requiring just 1 GB of RAM on Amazon Web Services (AWS) last year to the current implementation of a neural network with 100 million parameters that demands 16 GB of RAM for predictions.
As your machine learning system evolves, it can experience significant growth in traffic, starting from an initial 10,000 prediction requests per day With the expansion of your company's user base, the volume of prediction requests is likely to increase substantially.
ML system receives varies between 1 million and 10 million per day
An ML system often begins with a single model dedicated to a specific task, such as identifying trending hashtags on social media Over time, as new features are integrated, the system may expand to include additional models for tasks like filtering offensive content or detecting automated tweets This trend is especially prevalent in ML systems catering to enterprise clients, where a startup might start with one model for a single customer but eventually develop unique models for each client as their customer base grows.
Effective management of expansion is crucial for any machine learning system When addressing scalability, it is essential to focus not only on resource adjustment but also on implementing strategies that ensure seamless growth and adaptability.
A diverse team comprising machine learning engineers, DevOps engineers, and subject matter experts (SMEs) will collaborate on an ML system, each bringing unique backgrounds, programming languages, and tools to manage various aspects of the project.
To foster efficient collaboration among diverse individuals, it is essential to arrange tasks and establish an infrastructure that accommodates various backgrounds and expertise, allowing the use of familiar tools Ensuring that work is well-documented, versioned, and models are easily reproducible enables continuity even in the absence of original contributors Promoting a collaborative environment helps in problem-solving and mitigates blame-shifting when challenges occur.
The system should have the ability to adapt to changes in data and business needs by identifying areas for improvement and making updates without disrupting service Since
ML systems consist of dynamic code and data that require rapid evolution, highlighting the importance of maintainability, which will be explored in section 3.6.4.
Building Machine learning system workflow
An ML system necessitates continuous maintenance and enhancement, as its development is an ongoing process that is never fully complete After implementation, the system must be regularly monitored and updated to ensure optimal performance.
The diagram in Figure 3-3 presents a simplified view of the repetitive process of creating and maintaining ML systems from the point of view of a data scientist or an ML engineer
Later chapters will dive deeper into what each of these steps requires in practice Here is what they mean
In the initial phase of the project, it is crucial to define the scope, set clear goals and objectives, and identify any limitations or constraints Engaging relevant stakeholders and ensuring proper resource allocation are essential for a successful start.
To develop effective machine learning models, it is essential to begin with data engineering, as most ML models learn from data This process involves managing data from various sources and formats Once we have access to raw data, the next step is to curate training data through sampling and generating appropriate labels.
Step 3: The next step uses the initial training data to identify relevant features and create initial models based on those features This step requires a deep understanding of
ML and is typically covered in ML courses
Once a machine learning model is developed, it must be made accessible to its users Creating an ML system resembles the writing process; it is never completely finished, yet there comes a time when it is ready for release.
Once the model is deployed, it is essential to monitor its performance regularly to identify any declines Additionally, updates should be made to ensure it adapts to new conditions and evolving requirements.
To evaluate the model's effectiveness, it is essential to measure its performance against the initial project objectives and constraints The insights gained from this evaluation should inform the identification of new opportunities and the discontinuation of unproductive efforts, reinforcing the importance of aligning this process with the initial planning phase.
Machine Learning in Research
Preparing data is a crucial process in the research of machine learning algorithms It takes a lot of time and effort to prepare a large amount of data, but an inappropriate system
Inefficient configuration can lead to significant waste of human resources, financial resources, and time Additionally, poorly prepared data can hinder machine learning outcomes, preventing the achievement of desired results.
Real-world data is often chaotic, complex, and unpredictable, which can lead to errors in data collection Consequently, it is essential to thoroughly prepare the data before training a machine learning model.
Sampling, often overlooked in classroom instruction, plays a crucial role in machine learning development It involves taking a small portion of real data to form a training dataset and dividing datasets into smaller subsets for training, evaluation, and testing of models This section focuses on the importance of sampling in creating effective training data.
Accessing and collecting real data often encounters challenges, including information security compliance and data scarcity To evaluate the effectiveness of a new machine learning model, it is essential to extract a representative sample from a realistic dataset This approach allows for a quick assessment of the machine learning algorithm's performance while minimizing resource expenditure for the business.
Sampling methods are divided into two groups, non-probability sampling and probability sampling
A convenience sample is a non-probability sampling method that involves selecting participants who are easily accessible, such as those found in a mall or grocery store Also referred to as grab sampling or availability sampling, this approach relies solely on the availability and willingness of individuals to participate, without the need for a simple random sample.
This is a sampling approach in which existing individuals refer new subjects to be recruited for a research project
Researching customer satisfaction among members of an elite country club poses challenges in collecting primary data, as it often requires direct conversations with members who are willing to share their contact information for further outreach.
Snowball sampling is a research strategy where a primary data source identifies additional participants, relying on referrals to build the sample This method, also referred to as chain-referral sampling, is effective for generating a comprehensive participant pool through existing connections.
Judgmental sampling, also referred to as purposive or authoritative sampling, is a non-probability technique where participants are selected based on the researcher's expertise and judgment This method often yields highly accurate results with minimal error, as it relies on the researcher's knowledge to form the sample.
Judgmental sampling involves researchers deliberately selecting each individual for the sample based on their expertise, rather than using random selection This method emphasizes the importance of the researcher's knowledge and experience in determining which participants are included in the study.
Quota sampling involves dividing a population into distinct sub-groups and then using judgment to select a specific number of participants from each segment based on a set proportion For instance, an interviewer might be directed to sample 200 females and 300 males aged 45 to 60, allowing for targeted selection of individuals.
Non-probability sampling, particularly through quota sampling, can lead to biased results due to non-random selection methods Interviewers may inadvertently choose participants based on convenience, such as those they encounter on the street, which can skew the sample For instance, if the first person approached is tall and easily visible, this could result in an overrepresentation of certain demographics, like height, ultimately distorting average income estimates Such non-random sampling raises significant concerns regarding the validity and reliability of the data collected.
Random sampling is an efficient method that conserves time and resources, including finances and personnel For models demanding high reliability, employing random sampling techniques is essential The normal distribution stands out as the most significant distribution in statistics, as numerous natural, industrial, and social phenomena exhibit characteristics closely aligned with it Consequently, random sampling ensures that samples maintain the inherent qualities of real data Various random sampling methods can be utilized to achieve these objectives.
Simple random sampling is a straightforward method where each data point has an equal chance of being included in the sample This technique is easy to implement but can be challenging when dealing with low occurrence rates For instance, if there is only one data point belonging to group Z out of 10,000, representing a mere 0.01% occurrence rate, selecting it through simple random sampling may prove difficult.
1% of the 10,000 data to create the sample, the probability of group Z appearing in the sample becomes lower
This technique categorizes individuals in a population into smaller, homogeneous groups based on shared characteristics, ensuring that members of the same group exhibit consistency in specific aspects while differing from those in other groups Random selection is then applied within each subgroup To effectively implement this method, prior knowledge about the population is essential for creating the subgroups.
Weighted sampling is a technique that involves assigning specific weights to different groups within a dataset, reflecting the likelihood of their selection This approach necessitates a solid understanding of the subject matter For instance, consider three groups—A, B, and C—representing 50%, 30%, and 20% of the total data, respectively Despite group C having the smallest share, its weight can be adjusted to 0.4, while groups A and B can be set at 0.3 each, ensuring that group C is sampled more frequently.
Machine Learning model deployment
This is the data pre-processing process, in which the electrocardiogram is recorded by the sensor and sent 16 times per second
The device's output data will undergo all the feature engineering steps detailed in section 3.5.2 It is essential that both the training input data and the test data maintain the same format throughout these processes.
Databases are fundamental for effectively managing the growing volume of data generated in today's digital landscape As the demand for efficient data management increases, databases play a crucial role in meeting the needs of users and organizations alike.
A database is an organized collection of data typically stored in computer systems, essentially representing information in a digital format There are two main types of databases: relational databases, which use structured data models, and non-relational databases, which offer more flexibility in data storage.
A relational database organizes data into structured tables composed of rows and columns, where each entry must adhere to the defined structure of the table Data manipulation is performed using Structured Query Language (SQL) Notable examples of relational databases include MS SQL Server, MySQL, and Oracle.
A NoSQL database, or non-relational database, offers a flexible storage structure that does not require a predefined schema, allowing each data entry to have varying fields of information, akin to JSON Unlike traditional databases, NoSQL databases do not utilize query languages, with popular examples including MongoDB and CouchDB.
Database management systems (DBMS) are essential tools for managing databases, offering the necessary functionalities to interact with and oversee data effectively These systems are widely recognized as the standard solution for database management.
In addition to various database types, NoSQL databases include time series databases, which have been extensively utilized in the industry The advancement of hardware technology has significantly contributed to the evolution of these databases.
37 software, including database systems, so today many people have access to various types of databases
Time series databases are distinct from traditional databases due to their unique characteristics and architectures They excel in storing and compressing data based on timestamps, managing data lifecycle efficiently, and summarizing large datasets Additionally, they are designed to process vast amounts of records in real time and effectively recognize timestamps during data queries.
InfluxDB, developed by InfluxData, is an open-source time series database designed for efficiently storing and retrieving time series data Written in the Go programming language, it is ideal for applications in monitoring activity, managing application data, handling Internet of Things (IoT) sensor data, and conducting real-time analysis.
InfluxDB is a preferred choice for storing and organizing large volumes of time-stamped data, such as in DevOps monitoring and IoT sensor applications Its key features facilitate efficient data management and retrieval.
Clear and high-performance read-write APIs
Plugins that support other data input protocols such as Graphite, etc
Queries that are similar to SQL, making it easy for those with a SQL background to use
Indexing by tags fields for fast queries
Continuous queries that automatically calculate aggregated data to make frequent queries more efficient Finally, InfluxDB has both open-source and enterprise versions
SQLite is a lightweight relational database management system (DBMS) that stands out for its compactness and simplicity Unlike other DBMSs such as MySQL, SQLite operates without a server-client model, eliminating the need for installation, configuration, or startup processes This means there are no user accounts, passwords, or permissions required Additionally, all data is conveniently stored in a single file, making it easy to manage.
SQLite is an efficient and functional database management system (DBMS) ideal for small to medium-sized applications Its advantages include no need for installation or configuration, making it a popular choice for development and testing environments to simplify the process and avoid installation complexities.
Transactions in SQLite comply with the ACID principles even after system crashes and power outages
No configuration required: no setup or administration needed
SQLite supports full functionality with advanced capabilities such as single-part indexes, expression indexes, JSON, and common table expressions
A complete database is stored in a single, cross-platform file, suitable for use as an application file format
Support for terabyte-size databases and gigabyte-size strings
Simple, easy-to-use API
Fast: in some cases, SQLite is faster than direct I/O file systems
Bindings for many other languages available separately
Fully open-source and source-code available for 100% inspection
Cross-platform: SQLite is available on Android, Linux, Mac, Solaris, Windows, etc and can be easily ported to other systems
The main applications of SQLite:
Database for Internet of Things
Stand-in for an enterprise RDBMS
To ensure optimal functionality and maintainability, it's essential to standardize the source code during the research process, as it may lack adherence to coding standards, sufficient comments, or a clear file structure This step involves reorganizing the project structure and can culminate in packaging the application using Docker or executing it in an existing environment.
Creating a configuration file is essential for storing key-value information that the program can access during its execution Since this information may change frequently, it is important to keep it separate from the program's code for easier updates.
There are many formats including toml, yaml, json, ini or writing directly with the python module For example, with python module, create a python file with configs as follows: truck = {
Then retrieve data: import config print(config.truck['color'])
This approach leverages Python's import module alongside a dictionary to retrieve values using keys, making it ideal for users without programming skills who need to access configuration settings without modifying the config file.
The structure of a config file in ini format is as follows:
A config file in yaml format has the following structure:
- doe: "a deer, a female deer" ray: "a drop of golden sun" pi: 3.14159 xmas: true french-hens: 3 calling-birds:
- fred xmas-fifth-day: calling-birds: four french-hens: 3 golden-rings: 5 partridges: count: 1 location: "a pear tree" turtle-doves: two
And finally, the structure of a json file:
"powers": ["Radiation resistance", "Turning tiny"]
The two most commonly used formats are YAML and JSON because of their superior advantages YAML is a superset of the JSON platform, however, there are some differences between them