From 7ec53818dfa58508fcb3dd854f263d7dad9002e7 Mon Sep 17 00:00:00 2001 From: Tiffany Vo Date: Tue, 10 Aug 2021 14:40:12 -0700 Subject: [PATCH 1/6] Tiffany Vo blog post --- .../2021-08-20-symbiosis-symbulation.md | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 blog/_posts/2021-08-20-symbiosis-symbulation.md diff --git a/blog/_posts/2021-08-20-symbiosis-symbulation.md b/blog/_posts/2021-08-20-symbiosis-symbulation.md new file mode 100644 index 00000000..7c4cc524 --- /dev/null +++ b/blog/_posts/2021-08-20-symbiosis-symbulation.md @@ -0,0 +1,65 @@ +# Symbiosis in Symbulation +#### August 5, 2021 Tiffany-Ellen Vo +- - - + +[comment]: <> (How do I make it so the text is aligned with the picture?) + +>drawing Hello! My name is Tiffany-Ellen Vo, I'm currently a senior at UC Santa Cruz, studying computer engineering. I’m especially interested in logic design, robotics, and computer architecture. In my free time, I love rock climbing, baking, and crocheting. To see some of my other projects, check out my GitHub! + +- - - + +## Introduction to Symbiosis + Through the guidance of my mentor Anya, this summer I have worked on simulating symbiosis, the interaction between two organisms that are often referred as the host and its symbiont. While symbiosis has been simulated using Symbulation, the purpose of this project is to simulate symbiosis using the Empirical library in order to create and understand various types of symbiosis relationships. For this summer, we focused on being able to add symbionts to a host system which would then increase the count of a point system. The original idea is that if the host reaches a certain amount of points, it would then donate a point to the symbiont and if the symbiont reaches a certain amount of points, then the symbiont would donate a point to the host which would then be multiplied by three. + +--- + + ## Symbiosis Environment + In order to create symbiosis, we need to create a host with symbionts and create a world to put them in. Header files for the world, host and symbiont were created in order to do so. These files were originally created by the last WAVES participant that worked with Anya, which were then built upon and edited for this summer. + +The constructors for each organism were edited to be up-to-date, which additional functions to add symbionts, which would then increase the count when simulating. + +For creating the world, a similar approach was taken for simulating a world in Symbulation. Since we didn't need all the functions and other attributes as the SymWorld in Symbulation, we inherited certain functions that were necessary for this project. For our world, an empirical world constructor was used to birth the organisms. In the world, two different selection methods were used; elite select and tournament select. Elite select picks a set of the most fit individuals for the next generation while tournament select randomly samples a subset of the population and then chooses the most-fit individual in that sample to progress to the next generation. These functions were originally created in Empirical, but changed slightly to fit this project, which is shown for tournament select below. + +``` +void AvidaGPTournamentSelect(AvidaGPWorld & world, size_t t_size, size_t tourny_count=1) { + emp_assert(t_size > 0, "Cannot have a tournament with zero organisms.", t_size, world.GetNumOrgs()); + emp_assert(t_size <= world.GetNumOrgs(), "Tournament too big for world.", t_size, world.GetNumOrgs()); + emp_assert(tourny_count > 0); + + emp::vector entries; + for (size_t T = 0; T < tourny_count; T++) { + entries.resize(0); + // Choose organisms for this tournament (with replacement!) + for (size_t i=0; i < t_size; i++) entries.push_back( + world.GetRandomOrgID() + ); + + double best_fit = world.CalcFitnessID(entries[0]); + size_t best_id = entries[0]; + + // Search for a higher fit org in the tournament. + for (size_t i = 1; i < t_size; i++) { + const double cur_fit = world.CalcFitnessID(entries[i]); + if (cur_fit > best_fit) { + best_fit = cur_fit; + best_id = entries[i]; + } + } + + // Place the highest fitness into the next generation! + world.DoBirth(world.GetOrgPtr(best_id), best_id, 1 ); + } + } +``` + + ## Problems Encountered +During this summer, I had a lot of internet and power issues which caused delays with the overall progression of this project. Initially we had tried to override the empirical world birth format, known as DoBirth, however there isn't any way to get the original host organism from 'mem' since it's just the genome and not the whole organism. As a result, the elite select and tournament select functions were recreated to fit our DoBirth method for this project. + + ## Conclusion + I had a great time working on this project despite the delays due to having a multitude of power and internet issues. I've gained valuable skills, such as working with others, and analyzing files. On top of this, the enrichment seminars were really helpful with gaining new perspectives and skills that I will carry into my career. WAVES is a great intersection between computer science and biology, something that was very interesting and also tough for me due to my lack of knowledge in the biology area. My advice for the next onboarding student is to communicate well with your mentors and team when you feel overwhelmed! Empirical is such a large library and while very interesting, most files will not be necessary for your own project. + + +# Acknowledgements +Thank you so much to the WAVES team for putting this workshop together! It's been a blast to work with you all, and I wish you all the best going forward! From the group meetings to Matthew's ice breakers, it's been a great summer. + +Special thanks to my mentor, Anya Vostinar for guiding me throughout this summer and being patient with me. \ No newline at end of file From 069dbf6886c9d4084045a8fac42e67dd190c12f2 Mon Sep 17 00:00:00 2001 From: Tiffany Vo Date: Tue, 10 Aug 2021 20:28:04 -0700 Subject: [PATCH 2/6] included avida complex genome into introduction --- blog/_posts/2021-08-20-symbiosis-symbulation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog/_posts/2021-08-20-symbiosis-symbulation.md b/blog/_posts/2021-08-20-symbiosis-symbulation.md index 7c4cc524..525d0762 100644 --- a/blog/_posts/2021-08-20-symbiosis-symbulation.md +++ b/blog/_posts/2021-08-20-symbiosis-symbulation.md @@ -9,7 +9,7 @@ - - - ## Introduction to Symbiosis - Through the guidance of my mentor Anya, this summer I have worked on simulating symbiosis, the interaction between two organisms that are often referred as the host and its symbiont. While symbiosis has been simulated using Symbulation, the purpose of this project is to simulate symbiosis using the Empirical library in order to create and understand various types of symbiosis relationships. For this summer, we focused on being able to add symbionts to a host system which would then increase the count of a point system. The original idea is that if the host reaches a certain amount of points, it would then donate a point to the symbiont and if the symbiont reaches a certain amount of points, then the symbiont would donate a point to the host which would then be multiplied by three. + Through the guidance of my mentor Anya, this summer I have worked on simulating symbiosis, the interaction between two organisms that are often referred as the host and its symbiont. While symbiosis has been simulated using Symbulation, the purpose of this project is to simulate symbiosis using the Empirical library in order to create and understand various types of symbiosis relationships while specificallly using the Avida complex genome to make the host and its symbionts. For this summer, we focused on being able to add symbionts to a host system which would then increase the count of a point system. The original idea is that if the host reaches a certain amount of points, it would then donate a point to the symbiont and if the symbiont reaches a certain amount of points, then the symbiont would donate a point to the host which would then be multiplied by three. --- From 884f5a0196e5f33538140e0cfe7d8f376b80a88e Mon Sep 17 00:00:00 2001 From: Tiffany Vo Date: Wed, 11 Aug 2021 19:39:09 -0700 Subject: [PATCH 3/6] rough draft --- blog/_posts/2021-08-20-symbiosis-symbulation.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/blog/_posts/2021-08-20-symbiosis-symbulation.md b/blog/_posts/2021-08-20-symbiosis-symbulation.md index 525d0762..a06bac59 100644 --- a/blog/_posts/2021-08-20-symbiosis-symbulation.md +++ b/blog/_posts/2021-08-20-symbiosis-symbulation.md @@ -9,7 +9,11 @@ - - - ## Introduction to Symbiosis - Through the guidance of my mentor Anya, this summer I have worked on simulating symbiosis, the interaction between two organisms that are often referred as the host and its symbiont. While symbiosis has been simulated using Symbulation, the purpose of this project is to simulate symbiosis using the Empirical library in order to create and understand various types of symbiosis relationships while specificallly using the Avida complex genome to make the host and its symbionts. For this summer, we focused on being able to add symbionts to a host system which would then increase the count of a point system. The original idea is that if the host reaches a certain amount of points, it would then donate a point to the symbiont and if the symbiont reaches a certain amount of points, then the symbiont would donate a point to the host which would then be multiplied by three. + Through the guidance of my mentor Anya, this summer I have worked on simulating symbiosis; symbiosis is any type of close and long-term biological interaction between two different biological organisims which would be mutualistic, commensalistic, or parasitic. We can look at the movie _Finding Nemo_ (2003) for an example of symbiosis; the symbiotic relationship between an anemone and a clownfish is a classion one where both organisms benefit each other. The anemone provides the clownfish with shelter and protection, while the clownfish provides the anemone nutries in the form of waste and scares off potential predator fish. Symbiotic relationships are important because they are a major driving force of evolution. This networking and cooperation among species allows them to survive better than they would as individuals + + While symbiosis has been simulated using Symbulation, the purpose of this project is to simulate symbiosis using the Empirical library in order to create and understand various types of symbiosis relationships while specificallly using the Avida complex genome to make the host and its symbionts. + + For this summer, we focused on being able to add symbionts to a host system which would then increase the count of a point system. The original idea is that if the host reaches a certain amount of points, it would then donate a point to the symbiont and if the symbiont reaches a certain amount of points, then the symbiont would donate a point to the host which would then be multiplied by three. --- From 67b6b5f2ee8531b0c162c46b2abf3448c304f9db Mon Sep 17 00:00:00 2001 From: Tiffany Vo Date: Sat, 14 Aug 2021 16:11:35 -0700 Subject: [PATCH 4/6] resolved Anya and Jaime's comments --- .../2021-08-20-symbiosis-symbulation.md | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/blog/_posts/2021-08-20-symbiosis-symbulation.md b/blog/_posts/2021-08-20-symbiosis-symbulation.md index a06bac59..2da7c794 100644 --- a/blog/_posts/2021-08-20-symbiosis-symbulation.md +++ b/blog/_posts/2021-08-20-symbiosis-symbulation.md @@ -1,3 +1,10 @@ +--- +layout: post +title: "Symbiosis in Symbulation" +date: August 5, 2021 +author: Tiffany-Ellen Vo +--- + # Symbiosis in Symbulation #### August 5, 2021 Tiffany-Ellen Vo - - - @@ -9,22 +16,22 @@ - - - ## Introduction to Symbiosis - Through the guidance of my mentor Anya, this summer I have worked on simulating symbiosis; symbiosis is any type of close and long-term biological interaction between two different biological organisims which would be mutualistic, commensalistic, or parasitic. We can look at the movie _Finding Nemo_ (2003) for an example of symbiosis; the symbiotic relationship between an anemone and a clownfish is a classion one where both organisms benefit each other. The anemone provides the clownfish with shelter and protection, while the clownfish provides the anemone nutries in the form of waste and scares off potential predator fish. Symbiotic relationships are important because they are a major driving force of evolution. This networking and cooperation among species allows them to survive better than they would as individuals - - While symbiosis has been simulated using Symbulation, the purpose of this project is to simulate symbiosis using the Empirical library in order to create and understand various types of symbiosis relationships while specificallly using the Avida complex genome to make the host and its symbionts. - - For this summer, we focused on being able to add symbionts to a host system which would then increase the count of a point system. The original idea is that if the host reaches a certain amount of points, it would then donate a point to the symbiont and if the symbiont reaches a certain amount of points, then the symbiont would donate a point to the host which would then be multiplied by three. + Through the guidance of my mentor Anya, this summer I have worked on simulating symbiosis; symbiosis is any type of close and long-term biological interaction between two different biological organisims which would be mutualistic, commensalistic, or parasitic. We can look at the movie _Finding Nemo_ (2003) for an example of symbiosis; the mutualistic symbiotic relationship between an anemone and a clownfish is a classic one where both organisms benefit each other. The anemone provides the clownfish with shelter and protection, while the clownfish provides the anemone nutrients in the form of waste and scares off potential predator fish. Symbiotic relationships are important because they are a major driving force of evolution. However, parasitic and even mutualistic symbiosis relationships can make their species more vulnerable to environmental change if their partner starts having any problems. On the other hand, parasitism has been shown to lead 'arms races' where the two species are rapidly evolving to deal with each other. + + While symbiosis has been simulated using Symbulation, the purpose of this project is to create and understand various types of complex symbiotic relationships while specificallly using the Avida complex genome to make the host and its symbionts. + + For this summer, we focused on being able to add symbionts to a host system which would then increase the count of a point system. The original idea is that if the host reaches a certain amount of points, it would then donate a point to the symbiont and if the symbiont reaches a certain amount of points, then the symbiont would donate a point to the host which would then be multiplied by a synergy factor. The synergy factor represents the symbiont being able to provide resources to the host that it couldn't by itself, like the clownfish providing nutrients to the anemone that it wouldn't be able to get on its own. --- ## Symbiosis Environment In order to create symbiosis, we need to create a host with symbionts and create a world to put them in. Header files for the world, host and symbiont were created in order to do so. These files were originally created by the last WAVES participant that worked with Anya, which were then built upon and edited for this summer. - -The constructors for each organism were edited to be up-to-date, which additional functions to add symbionts, which would then increase the count when simulating. -For creating the world, a similar approach was taken for simulating a world in Symbulation. Since we didn't need all the functions and other attributes as the SymWorld in Symbulation, we inherited certain functions that were necessary for this project. For our world, an empirical world constructor was used to birth the organisms. In the world, two different selection methods were used; elite select and tournament select. Elite select picks a set of the most fit individuals for the next generation while tournament select randomly samples a subset of the population and then chooses the most-fit individual in that sample to progress to the next generation. These functions were originally created in Empirical, but changed slightly to fit this project, which is shown for tournament select below. + The constructors for each organism were edited to be up-to-date, which additional functions to add symbionts, which would then increase the count when simulating. -``` + For creating the world, a similar approach was taken for simulating a world in Symbulation. Since we didn't need all the functions and other attributes as the SymWorld in Symbulation, we inherited certain functions that were necessary for this project. For our world, an empirical world constructor was used to birth the organisms. In the world, two different selection methods were used; elite select and tournament select. Elite select picks a set of the most fit individuals for the next generation while tournament select randomly samples a subset of the population and then chooses the most-fit individual in that sample to progress to the next generation. These functions were originally created in Empirical, but changed slightly to fit this project, some of which included things such as passing the pointer to DoBirth. The DoBirth function is where I spent a fair amount of time with, which is shown for tournament select below. + +```cpp void AvidaGPTournamentSelect(AvidaGPWorld & world, size_t t_size, size_t tourny_count=1) { emp_assert(t_size > 0, "Cannot have a tournament with zero organisms.", t_size, world.GetNumOrgs()); emp_assert(t_size <= world.GetNumOrgs(), "Tournament too big for world.", t_size, world.GetNumOrgs()); @@ -56,6 +63,8 @@ void AvidaGPTournamentSelect(AvidaGPWorld & world, size_t t_size, size_t tourny_ } ``` + + ## Problems Encountered During this summer, I had a lot of internet and power issues which caused delays with the overall progression of this project. Initially we had tried to override the empirical world birth format, known as DoBirth, however there isn't any way to get the original host organism from 'mem' since it's just the genome and not the whole organism. As a result, the elite select and tournament select functions were recreated to fit our DoBirth method for this project. @@ -66,4 +75,7 @@ During this summer, I had a lot of internet and power issues which caused delays # Acknowledgements Thank you so much to the WAVES team for putting this workshop together! It's been a blast to work with you all, and I wish you all the best going forward! From the group meetings to Matthew's ice breakers, it's been a great summer. -Special thanks to my mentor, Anya Vostinar for guiding me throughout this summer and being patient with me. \ No newline at end of file +Special thanks to my mentor, Anya Vostinar for guiding me throughout this summer and being patient with me. + +This work is supported through Active LENS: Learning Evolution and the Nature of Science using Evolution in Action (NSF IUSE #1432563). +Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation. \ No newline at end of file From fe18c7a11b5d6a96e18969aedae4250e951f2b2c Mon Sep 17 00:00:00 2001 From: Tiffany Vo Date: Sat, 14 Aug 2021 20:05:10 -0700 Subject: [PATCH 5/6] added link to last summer intern project --- blog/_posts/2021-08-20-symbiosis-symbulation.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/blog/_posts/2021-08-20-symbiosis-symbulation.md b/blog/_posts/2021-08-20-symbiosis-symbulation.md index 2da7c794..019f6be2 100644 --- a/blog/_posts/2021-08-20-symbiosis-symbulation.md +++ b/blog/_posts/2021-08-20-symbiosis-symbulation.md @@ -25,7 +25,7 @@ author: Tiffany-Ellen Vo --- ## Symbiosis Environment - In order to create symbiosis, we need to create a host with symbionts and create a world to put them in. Header files for the world, host and symbiont were created in order to do so. These files were originally created by the last WAVES participant that worked with Anya, which were then built upon and edited for this summer. + In order to create symbiosis, we need to create a host with symbionts and create a world to put them in. Header files for the world, host and symbiont were created in order to do so. These files were originally created by the [last WAVES participant][blogPost] that worked with Anya, which were then built upon and edited for this summer. The constructors for each organism were edited to be up-to-date, which additional functions to add symbionts, which would then increase the count when simulating. @@ -78,4 +78,6 @@ Thank you so much to the WAVES team for putting this workshop together! It's bee Special thanks to my mentor, Anya Vostinar for guiding me throughout this summer and being patient with me. This work is supported through Active LENS: Learning Evolution and the Nature of Science using Evolution in Action (NSF IUSE #1432563). -Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation. \ No newline at end of file +Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation. + +[blogPost]: http://mmore500.com/waves/blog/symbiosis-genomes.html \ No newline at end of file From bfe44de31883b5488c7b30aea5ea361b599f8f97 Mon Sep 17 00:00:00 2001 From: Tiffany Vo Date: Fri, 20 Aug 2021 10:17:27 -0700 Subject: [PATCH 6/6] ready to merge --- blog/_posts/2021-08-20-symbiosis-symbulation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/blog/_posts/2021-08-20-symbiosis-symbulation.md b/blog/_posts/2021-08-20-symbiosis-symbulation.md index 019f6be2..4b4024c7 100644 --- a/blog/_posts/2021-08-20-symbiosis-symbulation.md +++ b/blog/_posts/2021-08-20-symbiosis-symbulation.md @@ -16,7 +16,7 @@ author: Tiffany-Ellen Vo - - - ## Introduction to Symbiosis - Through the guidance of my mentor Anya, this summer I have worked on simulating symbiosis; symbiosis is any type of close and long-term biological interaction between two different biological organisims which would be mutualistic, commensalistic, or parasitic. We can look at the movie _Finding Nemo_ (2003) for an example of symbiosis; the mutualistic symbiotic relationship between an anemone and a clownfish is a classic one where both organisms benefit each other. The anemone provides the clownfish with shelter and protection, while the clownfish provides the anemone nutrients in the form of waste and scares off potential predator fish. Symbiotic relationships are important because they are a major driving force of evolution. However, parasitic and even mutualistic symbiosis relationships can make their species more vulnerable to environmental change if their partner starts having any problems. On the other hand, parasitism has been shown to lead 'arms races' where the two species are rapidly evolving to deal with each other. + Through the guidance of my mentor Anya, this summer I have worked on simulating symbiosis; symbiosis is any type of close and long-term biological interaction between two different biological organisims which would be mutualistic, commensalistic, or parasitic. We can look at the movie _Finding Nemo_ (2003) for an example of symbiosis; the mutualistic symbiotic relationship between an anemone and a clownfish is a classic one where both organisims benefit each other. The anemone provides the clownfish with shelter and protection, while the clownfish provides the anemone nutrients in the form of waste and scares off potential predator fish. Symbiotic relationships are important because they are a major driving force of evolution. However, parasitic and even mutualistic symbiosis relationships can make their species more vulnerable to environmental change if their partner starts having any problems. On the other hand, parasitism has been shown to lead 'arms races' where the two species are rapidly evolving to deal with each other. While symbiosis has been simulated using Symbulation, the purpose of this project is to create and understand various types of complex symbiotic relationships while specificallly using the Avida complex genome to make the host and its symbionts.