Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fourier Making Waves - Publish 1.2 with PhET-iO #123

Open
pixelzoom opened this issue Aug 10, 2021 · 10 comments
Open

Fourier Making Waves - Publish 1.2 with PhET-iO #123

pixelzoom opened this issue Aug 10, 2021 · 10 comments

Comments

@pixelzoom
Copy link
Contributor

pixelzoom commented Aug 10, 2021

A PhET-iO version was not part of the plan for the Fourier 1.0 release. But the reality is that it's pretty much impossible (or very unwise) to do sim development without considering PhET-iO, and doing a fair amount of the instrumentation to test what you think you're doing. Consequently, I've been doing basic instrumentation of this sim as I've been implementing it. Because the sim has no dynamic elements that are instrumented, the instrumentation has been relatively straightforward, and I feel like the instrumentation is ~90% of the way there.

So... Is there any interest in including the PhET-iO version as part of the 1.0 release?

To help inform this decision, I would encourage @arouinfar and @kathy-phet to review the PhET-iO version (Studio, etc.) in master.

@kathy-phet
Copy link

If it's that far along, seems worthwhile to do the PhET-iO release. I'm wondering how the Game part is instrumented though? We will take a look in studio.

@pixelzoom
Copy link
Contributor Author

Instrumenting the game was straightforward. Each level has 2 Fourier series, answerSeries for the answer to the challenge, guessSeries for the users's guess. In Studio:

screenshot_1164

If you expand answerSeries or guessSeries, amplitudesProperty shows you the 11 amplitudes for the 11 harmonics in the Fourier series. Or you can inspect the individual harmonics. For example, for answerSeries in Studio:

screenshot_1165

@arouinfar
Copy link
Contributor

@pixelzoom I haven't done an in-depth review of the tree, but the sim is generally looking great in Studio. I would be in favor of including PhET-iO in the 1.0 release.

The basic functionality of the game feels pretty good to me. I could see a client wanting more control over the game -- customizing challenges, changing the threshold for the RewardNode/Dialog. However, I think we could punt on that until it becomes an actual client request.

@pixelzoom
Copy link
Contributor Author

8/12/21 design meeting @arouinfar @kathy-phet @ariel-phet @pixelzoom

Let's try to publish the PhET-iO version.

Basic instrumentation is done. So this is ready for @arouinfar and @kathy-phet to continue the PhET-iO design process. I'll rename this issue to "PhET-iO Design" and assign to them.

@pixelzoom pixelzoom changed the title Should Fourier 1.0 include a PhET-iO version? PhET-iO Design Aug 12, 2021
@pixelzoom
Copy link
Contributor Author

pixelzoom commented Aug 12, 2021

FYI, #4 (comment) identifies some potential requirements, where @arouinfar said:

As far as I know, there isn't any general PhET-iO infrastructure in vegas, as we've never instrumented a game (build-an-atom excludes the game). Thinking generally about any game, a client might want to:

  • Hide specific levels
  • Change the condition for triggering the RewardNode (e.g. lower the threshold to 5 stars)
  • Specify their own challenge, or at least have some way of ensuring all students get the same sequence of challenges

@pixelzoom
Copy link
Contributor Author

8/16/2021 @arouinfar @kathy-phet @pixelzoom had a design meeting on Zoom. We created GitHub issues for PhET-iO feature requests, and design work that needs to be done.

@pixelzoom
Copy link
Contributor Author

8/1/2021 Slack discussion @arouinfar @kathy-phet @pixelzoom

We decided NOT to include PhET-iO in the 1.0 version. As we got into it, the amount of work grew quickly. It was pretty clear that we'd need to push out milestones, possibly into November for 1.0 release. @kathy-phet pointed out that while the milestone for Fourier are flexible, there are other higher priorities.

So I'll wrap up the PhET-iO issues that I'm working on, put good notes in the issues, and defer those issues.

@arouinfar will also pause PhET-iO design, and put her notes in a GitHub issue.

@arouinfar
Copy link
Contributor

Design review notes can be found in the PhET-iO design doc and comments are summarized here:

  • PhET-iO design of Keypad, see Instrument Keypad.js for PhET-iO scenery-phet#540
  • These should all be read-only
    • dialog.visibleProperty (applies to all dialogs in the sim)
    • dialog.closeButton.enabledProperty (applies to all dialogs in the sim)
    • dialog.closeButton.visibleProperty (applies to all dialogs in the sim)
    • discreteScreen.model.oopsSawtoothWithCosinesEmitter
    • discreteScreen.view.charts.amplitudes.amplitudeKeypadDialog.visibleProperty
    • discreteScreen.view.charts.amplitudes.amplitudeKeypadDialog.closeButton.enabledProperty
    • discreteScreen.view.charts.amplitudes.amplitudeKeypadDialog.closeButton.visibleProperty
    • discreteScreen.view.charts.sum.sumChartNode.autoScaleCheckbox.autoScaleText.visibleProperty
    • discreteScreen.view.charts.sum.sumChartNode.infiniteHarmonicsCheckbox.infiniteHarmonicsText.visibleProperty
    • discreteScreen.view.controlPanel.infoDialog.closeButton.enabledProperty
    • discreteScreen.view.controlPanel.infoDialog.closeButton.visibleProperty
    • waveGameScreen.model.level*.correctEmitter
    • waveGameScreen.model.level*.incorrectEmitter
    • waveGameScreen.view.level*Node.charts.amplitudes.amplitudesChartNode.amplitude*Slider.visibleProperty
  • Remove Studio Control
    • discreteScreen.model.fourierSeries.harmonics.harmonic*.amplitudeProperty
    • waveGameScreen.model.level*.answerSeries.harmonics.harmonic*.amplitudeProperty
    • waveGameScreen.model.level*.numberOfAmplitudeControlsProperty
    • wavePacketScreen.model.wavePacket.centerProperty
  • When pressListener.enabledProperty or dragListener.enabledProperty is false, the cursor should not be a hand on hover. Affected elements:
    • amplitude*NumberDisplay.pressListener.enabledProperty
    • discreteScreen.view.measurementTools.periodCalipersNode.dragListener.enabledProperty
    • discreteScreen.view.measurementTools.periodClockNode.dragListener.enabledProperty
    • discreteScreen.view.measurementTools.wavelengthCalipersNode
    • wavePacketScreen.view.measurementTools.componentSpacingToolNode.dragListener.enabledProperty
    • wavePacketScreen.view.measurementTools.lengthToolNode.dragListener.enabledProperty
  • Setting discreteScreen.view.controlPanel.fourierSeriesSubpanel.soundLayoutBox.outputLevelSlider.visibleProperty to false should also hide the min/max labels.
  • Instrument the separators in the panels on the Discrete and Wave Packet screens. Refer to phScale.microScreen.view.beakerControlPanel.separator as an example.
  • The individual radio buttons within seriesRadioButtonGroup should be instrumented.
  • waveGameScreen.view.level*Node.feedback.smileyFaceNode should have a visibleProperty (frownyFaceNode has one).
  • On the Wave Packet screen, the "Component Spacing" title can be occluded by the info button when the string becomes long, but this doesn't happen to the "Fourier Series" title on the Discrete Screen. See wavePacketScreen.view.controlPanel.componentSpacingSubpanel.componentSpacingText.textProperty
  • These instances of titleNode don't appear to do anything, as the text is handled in a sibling. Let's uninstrument these:
    • wavePacketScreen.view.controlPanel.componentSpacingSubpanel.componentSpacingControl.titleNode
    • wavePacketScreen.view.controlPanel.wavePacketCenterSubpanel.centerControl.titleNode
    • wavePacketScreen.view.controlPanel.wavePacketWidthSubpanel.conjugateStandardDeviationControl.titleNode
    • wavePacketScreen.view.controlPanel.wavePacketWidthSubpanel.standardDeviationControl.titleNode

Additional Coments & Open Questions

  • Several buttons do not have an enabledProperty, including the eraser buttons, Show Answer, Check Answer, and New Waveform. Was this an oversight, or is there something different about these buttons?
  • There are lots of ranges/values in the sim that can get broken in PhET-iO, for example:
    • Set amplitude of hidden harmonic to a non-zero value. It will show up in the Harmonics chart and contribute to the Sum, but doesn’t appear in the Expanded Form.
    • Set equationFormProperty to something incompatible with domainProperty (function of frequency, but in space domain) and the equation reads “undefined”.
    • TimeControlNode is only enabled when domainProperty is space & time, but a client could enable it for a different domain.

@arouinfar arouinfar removed their assignment Sep 21, 2021
@markgammon markgammon changed the title PhET-iO Design Fourier Making Waves - PhET-iO Design Dec 20, 2021
@markgammon markgammon changed the title Fourier Making Waves - PhET-iO Design Fourier Making Waves - Publish with PhET-iO Dec 23, 2021
@pixelzoom
Copy link
Contributor Author

Status for 1/4/2022 quarterly-planning meeting:

Basic instrumentation has been done. It's unclear whether design is done, or whether there's implementation can resume. @arouinfar's notes are in #123 (comment).

@arouinfar
Copy link
Contributor

@pixelzoom I would consider the design review to be complete. Change requests are summarized in #123 (comment) with game-specific requests in #144.

@pixelzoom pixelzoom changed the title Fourier Making Waves - Publish with PhET-iO Fourier Making Waves - Publish 1.2 with PhET-iO Jan 2, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants