SlideShare a Scribd company logo
1 of 25
BENG 108 Final Project
Corydoras Species
Identifier Program
Jason Trimble & Max Peterson
Core Principles and Goals
 Create a program that can identify individual species of the genus
Corydoras given a set of observed physical traits inputted by the user
 Make this program easy to use
 Create a second program for admins to add new species into the
database
 Optimize both for use online at www.planetcatfish.com
Key Preliminary Problems
 Downloading individual photos of each species
 Deciding what physical characteristics would be most beneficial for
species identification
 Defining the characteristics that each individual species possesses
 Ensuring each characteristic set has enough variation to narrow
species possibilities for a set of observations down to at most 5
 Building a Labview accessible database of all the above information
Solutions
 Use of inspect tool circumventing copyright law
 Collaborating with the other groups to create a standard for physical
characteristics such as nose type, dorsal fin pattern and overall body
pattern
 Using a google docs excel file to utilize all group members in building
a database
 Integrating this excel file into our Labview program
Our Program - Database
Species Name Pattern Number Mask Number Saddle Number Nose Blanket Dorsal Fin Pattern Tail Fin Pattern
Acutus 1 0 0 3 0 2 1
Agassizii 1 0 0 1 0 0 1
Albolineatus 1 0 0 0 0 4 1 Legend: Mask Number
Ambiacus 1 0 1 2 0 3 1 0 - No Mask
Araguaiaensis 1 0 0 0 0 0 1 1 - Mask
Areio 1 1 0 2 0 4 0
Armatus 1 0 0 0 0 1 0 Legend: pattern number
Atropersonatus 1 1 0 2 0 4 0 0 - stripes
Bicolor 1 1 1 2 0 3 0 1 - spots
Blochi 1 1 1 3 0 1 1 2 - reticulated
Brevirotris 1 1 1 2 0 1 1 3 - no pattern (non metallic)
Carlae 1 0 1 2 0 0 1 4 - metallic
Caudimaculatus 1 0 0 2 0 0 1 5 - large spot
Cervinus 1 0 0 3 0 0 0 6 - large stripe
Cf_cochui 1 0 0 0 0 1 1 7 - gold/orange
Cf_julii 1 0 0 2 0 2 1
Cf_sanchesi 1 0 0 0 0 0 1
Cochui 1 0 0 0 0 0 1
Axelrodi 0 1 0 2 0 3 2
Materials
 Labview
 Property and Invoke Nodes
 Local variables
 Selector functions
 Case structures
 Frame structure
 String indicators/ LEDs/ next function
 Number to decimal string function
 Initialize/ index/ build array function
 Array max and min function
Materials (cont.)
 Excel
 Google Docs
 Planet Catfish
Our Program – User Interface
 As mentioned in the program requirements, there needs to be options for
both finding a fish species from traits and adding a new fish species to the
data file.
 This was done by using string indicators for displaying these two options and
having the user select an LED.
 If the user selects the add new species option, then a name for the species
must be typed in a string control.
 The user must confirm his/ her choice by clicking a next button.
 The trait options are displayed in a similar fashion with string indicators for
displaying the trait and its options. The user must click a corresponding LED.
 Another next button is used to cycle between traits.
Our Program – User Interface (cont.)
 There are 8 indicators and LEDS for up to 8 trait options, but the higher
numbers are generally not needed and hidden from the user for traits with
only a few options.
 The LED buttons and next buttons must be reinitialized in order for them to
remain unlit after switching traits (prevents user confusion and decreases the
chances of selecting multiple options.
 For the finding a fish option, the matching fish species (one or a few) with the
corresponding trait options are displayed by their name.
 There is a reminder to check the database text file if the add fish species
option was selected.
 A welcome message is displayed to the user when starting the program.
Our Program – User Interface
Our Program – Inner Workings
 A 1D array is created for storing the trait choices that the user makes.
 A frame structure is used to sequence the events in the program.
 For each LED button, there is a selector function which passes forward the
option number (array style 0, 1, …) if the LED was pressed (true). If the LED
was not pressed (false), then a -1 is passed forward.
 The selector function answers are combined together and then the maximum
value is chosen since the negative values are false (build array + max/min). If
more than one button is pressed, then the later option is chosen.
 A case structure is used to initialize the add a new species option if that was
chosen. A true constant is passes forward for adding to the end of the
database file. The new fish species name is also passed forward.
Our Program – Inner Workings (cont.)
 Each section of the program is encased in a while loop which prevents the
user from moving forward if the next button is not clicked.
 The LEDs, string indicators, and next buttons are reinitialized between frames
of the code (using invoke nodes).
 The string indicators and controls are chosen to be visible or invisible for each
section of code (using property nodes).
 The trait option value must be greater than or equal to 0 (meaning true) in
order for the number choice to be passed forward (true condition).
 For each additional trait, the array of choices is passed forward, a new choice
number is added to the array, local variables are used to reuse the same LED,
string indicator, or next button, and visibility of trait options varies.
Our Program – Inner Workings (cont.)
Our Program – Inner Workings (cont.)
Our Program – Inner Workings (Finding
Matching Species)
 The choice array is converted into strings since this is easier to compare (use
number to decimal string function).
 The database file is read in and converted into an array (read from text file and
spreadsheet string to array functions).
 Beginning with the first choice and the second column of the database file (skips
fish species names), a for loop cycles through the second column of the data file in
order to find the first choice by seeing whether or not the values are equal. If the
values are equal, the entire row of the file is added to and array. The initialize,
index, and build array functions are used.
 The new array and the array of choices are passes forward to the next comparison
segment of the code, where a new array is made by comparing the next values
(such as 2nd choice and 3rd column). This new array is a subset of the previous new
array.
 All of the choices are compared until only one or a few matches remain.
Our Program – Inner Workings (Finding
Matching Species)
Our Program – Inner Workings (Adding a
New Fish Species)
 A case structure at the end of the code only executes the true condition if the
user chose earlier that he/ she wants to add a new fish species to the end of
the database file.
 The array of choices and the new species name are passed forward with the
name being inserted in front of the values in the 1D array (use insert into
array function).
 The 1D array for the new fish species with its name and associated trait
numbers is passed into the original database text file as the last row (use
write to delimited spreadsheet function).
Our Program – Inner Workings (Adding a
New Fish Species)
Errors and Bug Fixes
 Errors
 Program kept skipping over first trait.
 LEDs stayed lit through the entire program.
 Putting the frame structure within a case structure (hard to copy).
 Can’t reuse LEDs by copying.
 Fixes
 A local variable was needed to turn off the next button from previous runs.
 Reinitialized LEDs after use.
 Putting frames at the beginning and end for adding a fish worked better.
 Used local variable for reusing LEDs.
Errors and Bug Fixes
Errors and Bug Fixes (cont.)
 Errors
 Array of choices was all one number.
 Comparing numbers and text.
 Found species were repeated many times.
 Text file became new entries and skipped lines only.
 Fixes
 Got rid of shift registers when building.
 Converted the choice value array into strings.
 Did not also write in original text file when adding a new species.
 Changed wiring.
Errors and Bug Fixes (cont.)
Demonstration
Conclusion
 Both being able to find a species based on traits and adding a new species of
catfish to the end of the database file were functional.
If it was Perfect…
 The program would constantly calculate possible species even if only one
characteristic is chosen.
 Picture attachments as well as a link to the species web page would appear with
the species name in the program .
 A perfect database where multiple species do not fit the same set of
characteristics .
 The user would not be able to select multiple options or select nothing (could be
more error handling and user-friendly).
 Reentry of new species name would not count.

More Related Content

Similar to BENG 108 Final Project

Working with Dictionaries and ListsSets Modules you can use.pdf
Working with Dictionaries and ListsSets Modules you can use.pdfWorking with Dictionaries and ListsSets Modules you can use.pdf
Working with Dictionaries and ListsSets Modules you can use.pdf
advancesystem
 
Beholder#Giant center eye and twelve eye stalks above it. It is a.docx
Beholder#Giant center eye and twelve eye stalks above it.  It is a.docxBeholder#Giant center eye and twelve eye stalks above it.  It is a.docx
Beholder#Giant center eye and twelve eye stalks above it. It is a.docx
ikirkton
 
Observations
ObservationsObservations
Observations
butest
 
Reaction StatisticsBackgroundWhen collecting experimental data f.pdf
Reaction StatisticsBackgroundWhen collecting experimental data f.pdfReaction StatisticsBackgroundWhen collecting experimental data f.pdf
Reaction StatisticsBackgroundWhen collecting experimental data f.pdf
fashionbigchennai
 
Lab7: More Arrays, Strings, Vectors, and Pointers
Lab7: More Arrays, Strings, Vectors, and PointersLab7: More Arrays, Strings, Vectors, and Pointers
Lab7: More Arrays, Strings, Vectors, and Pointers
enidcruz
 
Mikel_Berdufi_SemanticWebSearchEngine_Report
Mikel_Berdufi_SemanticWebSearchEngine_ReportMikel_Berdufi_SemanticWebSearchEngine_Report
Mikel_Berdufi_SemanticWebSearchEngine_Report
Mikel Berdufi
 
Data_Processing_Program
Data_Processing_ProgramData_Processing_Program
Data_Processing_Program
Neil Dahlqvist
 

Similar to BENG 108 Final Project (20)

Working with Dictionaries and ListsSets Modules you can use.pdf
Working with Dictionaries and ListsSets Modules you can use.pdfWorking with Dictionaries and ListsSets Modules you can use.pdf
Working with Dictionaries and ListsSets Modules you can use.pdf
 
Automated bug localization
Automated bug localizationAutomated bug localization
Automated bug localization
 
Beholder#Giant center eye and twelve eye stalks above it. It is a.docx
Beholder#Giant center eye and twelve eye stalks above it.  It is a.docxBeholder#Giant center eye and twelve eye stalks above it.  It is a.docx
Beholder#Giant center eye and twelve eye stalks above it. It is a.docx
 
Observations
ObservationsObservations
Observations
 
Reaction StatisticsBackgroundWhen collecting experimental data f.pdf
Reaction StatisticsBackgroundWhen collecting experimental data f.pdfReaction StatisticsBackgroundWhen collecting experimental data f.pdf
Reaction StatisticsBackgroundWhen collecting experimental data f.pdf
 
COMPARISON OF COLLABORATIVE FILTERING ALGORITHMS WITH VARIOUS SIMILARITY MEAS...
COMPARISON OF COLLABORATIVE FILTERING ALGORITHMS WITH VARIOUS SIMILARITY MEAS...COMPARISON OF COLLABORATIVE FILTERING ALGORITHMS WITH VARIOUS SIMILARITY MEAS...
COMPARISON OF COLLABORATIVE FILTERING ALGORITHMS WITH VARIOUS SIMILARITY MEAS...
 
COMPARISON OF COLLABORATIVE FILTERING ALGORITHMS WITH VARIOUS SIMILARITY MEAS...
COMPARISON OF COLLABORATIVE FILTERING ALGORITHMS WITH VARIOUS SIMILARITY MEAS...COMPARISON OF COLLABORATIVE FILTERING ALGORITHMS WITH VARIOUS SIMILARITY MEAS...
COMPARISON OF COLLABORATIVE FILTERING ALGORITHMS WITH VARIOUS SIMILARITY MEAS...
 
Survey: Biological Inspired Computing in the Network Security
Survey: Biological Inspired Computing in the Network SecuritySurvey: Biological Inspired Computing in the Network Security
Survey: Biological Inspired Computing in the Network Security
 
Accounting for uncertainty in species delineation during the analysis of envi...
Accounting for uncertainty in species delineation during the analysis of envi...Accounting for uncertainty in species delineation during the analysis of envi...
Accounting for uncertainty in species delineation during the analysis of envi...
 
Lab7: More Arrays, Strings, Vectors, and Pointers
Lab7: More Arrays, Strings, Vectors, and PointersLab7: More Arrays, Strings, Vectors, and Pointers
Lab7: More Arrays, Strings, Vectors, and Pointers
 
Unit 5
Unit 5Unit 5
Unit 5
 
Mikel_Berdufi_SemanticWebSearchEngine_Report
Mikel_Berdufi_SemanticWebSearchEngine_ReportMikel_Berdufi_SemanticWebSearchEngine_Report
Mikel_Berdufi_SemanticWebSearchEngine_Report
 
Data_Processing_Program
Data_Processing_ProgramData_Processing_Program
Data_Processing_Program
 
Hybrid Model using Unsupervised Filtering Based on Ant Colony Optimization an...
Hybrid Model using Unsupervised Filtering Based on Ant Colony Optimization an...Hybrid Model using Unsupervised Filtering Based on Ant Colony Optimization an...
Hybrid Model using Unsupervised Filtering Based on Ant Colony Optimization an...
 
ProFET - Protein Feature Engineering Toolki
ProFET - Protein Feature Engineering ToolkiProFET - Protein Feature Engineering Toolki
ProFET - Protein Feature Engineering Toolki
 
I need some help creating Psuedocode for a project using Java. Basic.pdf
I need some help creating Psuedocode for a project using Java. Basic.pdfI need some help creating Psuedocode for a project using Java. Basic.pdf
I need some help creating Psuedocode for a project using Java. Basic.pdf
 
Ch08
Ch08Ch08
Ch08
 
Ch08
Ch08Ch08
Ch08
 
Linkage mapping and QTL analysis_Lab
Linkage mapping and QTL analysis_LabLinkage mapping and QTL analysis_Lab
Linkage mapping and QTL analysis_Lab
 
Software fundamentals
Software fundamentalsSoftware fundamentals
Software fundamentals
 

BENG 108 Final Project

  • 1. BENG 108 Final Project Corydoras Species Identifier Program Jason Trimble & Max Peterson
  • 2. Core Principles and Goals  Create a program that can identify individual species of the genus Corydoras given a set of observed physical traits inputted by the user  Make this program easy to use  Create a second program for admins to add new species into the database  Optimize both for use online at www.planetcatfish.com
  • 3. Key Preliminary Problems  Downloading individual photos of each species  Deciding what physical characteristics would be most beneficial for species identification  Defining the characteristics that each individual species possesses  Ensuring each characteristic set has enough variation to narrow species possibilities for a set of observations down to at most 5  Building a Labview accessible database of all the above information
  • 4. Solutions  Use of inspect tool circumventing copyright law  Collaborating with the other groups to create a standard for physical characteristics such as nose type, dorsal fin pattern and overall body pattern  Using a google docs excel file to utilize all group members in building a database  Integrating this excel file into our Labview program
  • 5. Our Program - Database Species Name Pattern Number Mask Number Saddle Number Nose Blanket Dorsal Fin Pattern Tail Fin Pattern Acutus 1 0 0 3 0 2 1 Agassizii 1 0 0 1 0 0 1 Albolineatus 1 0 0 0 0 4 1 Legend: Mask Number Ambiacus 1 0 1 2 0 3 1 0 - No Mask Araguaiaensis 1 0 0 0 0 0 1 1 - Mask Areio 1 1 0 2 0 4 0 Armatus 1 0 0 0 0 1 0 Legend: pattern number Atropersonatus 1 1 0 2 0 4 0 0 - stripes Bicolor 1 1 1 2 0 3 0 1 - spots Blochi 1 1 1 3 0 1 1 2 - reticulated Brevirotris 1 1 1 2 0 1 1 3 - no pattern (non metallic) Carlae 1 0 1 2 0 0 1 4 - metallic Caudimaculatus 1 0 0 2 0 0 1 5 - large spot Cervinus 1 0 0 3 0 0 0 6 - large stripe Cf_cochui 1 0 0 0 0 1 1 7 - gold/orange Cf_julii 1 0 0 2 0 2 1 Cf_sanchesi 1 0 0 0 0 0 1 Cochui 1 0 0 0 0 0 1 Axelrodi 0 1 0 2 0 3 2
  • 6. Materials  Labview  Property and Invoke Nodes  Local variables  Selector functions  Case structures  Frame structure  String indicators/ LEDs/ next function  Number to decimal string function  Initialize/ index/ build array function  Array max and min function
  • 7. Materials (cont.)  Excel  Google Docs  Planet Catfish
  • 8. Our Program – User Interface  As mentioned in the program requirements, there needs to be options for both finding a fish species from traits and adding a new fish species to the data file.  This was done by using string indicators for displaying these two options and having the user select an LED.  If the user selects the add new species option, then a name for the species must be typed in a string control.  The user must confirm his/ her choice by clicking a next button.  The trait options are displayed in a similar fashion with string indicators for displaying the trait and its options. The user must click a corresponding LED.  Another next button is used to cycle between traits.
  • 9. Our Program – User Interface (cont.)  There are 8 indicators and LEDS for up to 8 trait options, but the higher numbers are generally not needed and hidden from the user for traits with only a few options.  The LED buttons and next buttons must be reinitialized in order for them to remain unlit after switching traits (prevents user confusion and decreases the chances of selecting multiple options.  For the finding a fish option, the matching fish species (one or a few) with the corresponding trait options are displayed by their name.  There is a reminder to check the database text file if the add fish species option was selected.  A welcome message is displayed to the user when starting the program.
  • 10. Our Program – User Interface
  • 11. Our Program – Inner Workings  A 1D array is created for storing the trait choices that the user makes.  A frame structure is used to sequence the events in the program.  For each LED button, there is a selector function which passes forward the option number (array style 0, 1, …) if the LED was pressed (true). If the LED was not pressed (false), then a -1 is passed forward.  The selector function answers are combined together and then the maximum value is chosen since the negative values are false (build array + max/min). If more than one button is pressed, then the later option is chosen.  A case structure is used to initialize the add a new species option if that was chosen. A true constant is passes forward for adding to the end of the database file. The new fish species name is also passed forward.
  • 12. Our Program – Inner Workings (cont.)  Each section of the program is encased in a while loop which prevents the user from moving forward if the next button is not clicked.  The LEDs, string indicators, and next buttons are reinitialized between frames of the code (using invoke nodes).  The string indicators and controls are chosen to be visible or invisible for each section of code (using property nodes).  The trait option value must be greater than or equal to 0 (meaning true) in order for the number choice to be passed forward (true condition).  For each additional trait, the array of choices is passed forward, a new choice number is added to the array, local variables are used to reuse the same LED, string indicator, or next button, and visibility of trait options varies.
  • 13. Our Program – Inner Workings (cont.)
  • 14. Our Program – Inner Workings (cont.)
  • 15. Our Program – Inner Workings (Finding Matching Species)  The choice array is converted into strings since this is easier to compare (use number to decimal string function).  The database file is read in and converted into an array (read from text file and spreadsheet string to array functions).  Beginning with the first choice and the second column of the database file (skips fish species names), a for loop cycles through the second column of the data file in order to find the first choice by seeing whether or not the values are equal. If the values are equal, the entire row of the file is added to and array. The initialize, index, and build array functions are used.  The new array and the array of choices are passes forward to the next comparison segment of the code, where a new array is made by comparing the next values (such as 2nd choice and 3rd column). This new array is a subset of the previous new array.  All of the choices are compared until only one or a few matches remain.
  • 16. Our Program – Inner Workings (Finding Matching Species)
  • 17. Our Program – Inner Workings (Adding a New Fish Species)  A case structure at the end of the code only executes the true condition if the user chose earlier that he/ she wants to add a new fish species to the end of the database file.  The array of choices and the new species name are passed forward with the name being inserted in front of the values in the 1D array (use insert into array function).  The 1D array for the new fish species with its name and associated trait numbers is passed into the original database text file as the last row (use write to delimited spreadsheet function).
  • 18. Our Program – Inner Workings (Adding a New Fish Species)
  • 19. Errors and Bug Fixes  Errors  Program kept skipping over first trait.  LEDs stayed lit through the entire program.  Putting the frame structure within a case structure (hard to copy).  Can’t reuse LEDs by copying.  Fixes  A local variable was needed to turn off the next button from previous runs.  Reinitialized LEDs after use.  Putting frames at the beginning and end for adding a fish worked better.  Used local variable for reusing LEDs.
  • 20. Errors and Bug Fixes
  • 21. Errors and Bug Fixes (cont.)  Errors  Array of choices was all one number.  Comparing numbers and text.  Found species were repeated many times.  Text file became new entries and skipped lines only.  Fixes  Got rid of shift registers when building.  Converted the choice value array into strings.  Did not also write in original text file when adding a new species.  Changed wiring.
  • 22. Errors and Bug Fixes (cont.)
  • 24. Conclusion  Both being able to find a species based on traits and adding a new species of catfish to the end of the database file were functional.
  • 25. If it was Perfect…  The program would constantly calculate possible species even if only one characteristic is chosen.  Picture attachments as well as a link to the species web page would appear with the species name in the program .  A perfect database where multiple species do not fit the same set of characteristics .  The user would not be able to select multiple options or select nothing (could be more error handling and user-friendly).  Reentry of new species name would not count.