Refactoring Tasks
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 20/100
- Issue type
- Refactor
- Clarity
- Needs clarification
- Activity status
- Stale
- Tech stack
- python
- Domain
- embedded-iot, testing
Research direction
No files or test paths are named. Start by reviewing the develop branch and choosing one unchecked area, such as Reproducer, Hardware, Plotting, or Tone discriminator; trace its existing trivial and concrete implementations. Done means completing one narrowly defined task with the listed tests or verification, while the full issue requires coordinating many unfinished areas.
Written by the indexing model from the issue text.
Description
This issue outlines a list of tasks that must be finished to complete the refactor (in branch "develop") into a minimum viable state to be able to run simple experiments.
- "Evolution" top-level class
Protocols:
- GenDataFactory
- GenDataIncrementer: serves both trivial implementation and concrete implementation
- CircuitFactory
- Trivial impl
- Concrete impl - fully tested
- Reproducer
- Trivial impl
- Concrete Implementations: Likely start with a generalized "select+mutate" and then implement following selection methods:
- Single Elite
- Fractional Elite
- Classic Tournament
- Fitness Proportional Selection - priority
- Rank Proportional Selection
- Map Elites - may require additional work (possibly a new type of Population), and need to be removed from selection methods
- GenerateInitialPopulations
- Trivial impl
- Concrete impl - fully tested
- Existing Population concrete implementation with tests
- RandomizeUntil - blocked by hardware evaluation
- EvaluatePopulationFitness
- Trivial impl
- Concrete implementations:
- Var-max
- Pulse count
- Tests for all
- GenerateMeasurements
- Trivial impl
- Concrete implementations:
- Var-max
- Pulse count
- Tone discriminator
- Tests for all 3
- Hardware
- Trivial impl
- Concrete implementation + tests
- Reading waveform
- Counting pulses
- Tests: Mock Serial interface
- Plotting - verify that all plot data is still collected
- Overall high-level evolution view
- Pulse count generation view
- Varmax heatmap
- Pulse count heatmap
- Waveform - whenever one is collected we should show it
- Pulse count/varmax violin plots
- Source population plot
- Tone discriminator - state
- Tone discriminator - waveform
- Single epoch - fitness or pulses
- Tone discriminator:
- Evaluate Fitness
- Reading data using hardware
Other/Misc:
- FullySimCircuit - re-integrate into new system and test
- File-Based simulated circuit - add a fitness evaluator for this
NOTE: Refactor broke up things into bitstreams and circuits. One current caveat is that crossover will act differently. Previously, crossover selected one point within a tile and performed crossover on every tile at that point. Now, it will select a point in the entire (modifiable) bitstream and perform crossover once. This may involve a change in outcomes - if needed, BitstreamIndividual can be modified or replaced to track the bits within each tile so that this crossover functionality can be restored (and can still externally output/input a single list of bits that is breaks up into tiles as needed).
- Dominant language
- Python
- Stars
- 18
- Forks
- 7
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from evolvablehardware/BitstreamEvolution
-
Difficulty 1/5 Under an hour Newbie friendliness 55/100
-
Difficulty 4/5 3-5 days Newbie friendliness 25/100
evolvablehardware/BitstreamEvolution#8 · 3 comments ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 42/100
evolvablehardware/BitstreamEvolution#7 · 3 comments ·
-
bug
evolvablehardware/BitstreamEvolution#4 · 1 assignee ·
-
Difficulty 5/5 Over a week Newbie friendliness 15/100
evolvablehardware/BitstreamEvolution#3 · 1 comment ·
All issues in evolvablehardware/BitstreamEvolution
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100