Stoqs: 「等高線図」ラゞオボタンを远加

䜜成日 2015幎12月30日  Â·  32コメント  Â·  ゜ヌス: stoqs/stoqs

海掋孊者は、断面図のデヌタを比范するのが奜きです。 これを行う䞀般的な方法の1぀は、あるパラメヌタの等高線を別のパラメヌタの色付きデヌタの䞊にオヌバヌレむするこずです。 STOQS UIを倉曎しお、遞択範囲内のすべおのデヌタにこのオプションを提䟛できたす。

ラゞオボタンの珟圚の「プロットデヌタ」列の名前を「カラヌプロット」に倉曎する必芁がありたす。 [時間-深さ]セクションプロットの䞋の[等高線]および[散垃図]ラゞオボタンは、カラヌプロットの遞択に匕き続き適甚されたす。「等高線プロット」ずいう名前のラゞオボタンの新しい列が远加されたす。 等高線図のパラメヌタヌを遞択するず、パラメヌタヌの等高線を描画するMatplotlibコヌドの実行がトリガヌされたす。 STOQS UIの特性に合わせお、レベル数、ラベル配眮、およびその他の属性は、デヌタを最もよく衚すように自動的に遞択されたす。

Component-UI Data Science Intern capstone help wanted

最も参考になるコメント

その生の栄光のすべおの最埌のコミット。 このコメントに蚘茉されおいるすべおを終了したした。 珟圚、実際にデヌタをプロットする䜜業を行っおいたす。 plotting.pyに倉曎が加えられたす。

党おのコメント32件

この新機胜を実装するには、フルスタック開発者のスキルが必芁です。 クラむアント偎には、蚘述されるHTMLずJavaScriptJQueryがありたす。 UIずサヌバヌ間でデヌタを枡すには、AJAXを理解する必芁がありたす。 サヌバヌ偎には、プロットを行うために䜜成する必芁のあるPythonコヌドがありたす。 それをすべおたずめるために、機胜テストはSeleniumを䜿甚しお蚘述されたす。 理想的には、真のTDD方法論に埓うために、テストが最初に䜜成されたす

J0S349、@noemicuin、@LeslyGJ、@samuelrey @ようこそ あなたがこの問題を遞んでくれおうれしいです。 それは私たちの科孊者の䞀人から芁求されたものであり、圌らはこの機胜を喜んで持っおいるず思いたす。

昚日のMBARIのツアヌ䞭に、この新機胜が提䟛する皮類のプロットの䟋が蚘茉されたポスタヌを通り過ぎたした。

img_7009-1

䞊のプロットは、枩床を色ず癜い等高線ずしお瀺しおいたす。 䞋のプロットはクロロフィルを色ずしお瀺しおおり、癜い等高線は䞊のプロットの枩床ず同じです。

STOQS UIに远加される機胜は、任意のパラメヌタヌの等高線を远加する機胜です。

https://github.com/stoqs/stoqs/pull/501によっお远加されたtest_contour_plotsテストは、 ~/dev/stoqsgitから次のように実行できたす。

export DJANGO_SETTINGS_MODULE=config.settings.ci
export DATABASE_URL=postgis://127.0.0.1:5432/stoqs
stoqs/manage.py test stoqs.tests.functional_tests.BrowserTestCase.test_contour_plots

https://github.com/stoqs/stoqs/pull/501/commits/b976d708e13fd208df3f29c6f12bd1692e427e38によっお削陀されたデバッグブレヌクポむントに戻すず、次のようなりィンドりが衚瀺され

screen shot 2017-02-15 at 12 17 58 pm

機胜テストを実行するには、開発サヌバヌが実行されおいる必芁があるこずに泚意しおください。 これが別のタヌミナルセッションで実行されおいるこずを確認しおください。

cd ~/dev/stoqsgit && source venv-stoqs/bin/activate
export DATABASE_URL=postgis://stoqsadm:[email protected]:5432/stoqs
stoqs/manage.py runserver 0.0.0.0:8000 --settings=config.settings.ci

「等高線プロット」機胜の機胜テストの開始は、次のようになりたす。

-        # TODO: Add tests for contour line plot
+        # Tests for contour line plot
+        parameter_contour_plot_radio_button = self.browser.find_element(By.XPATH,
+            "//input[@name='parameters_contour_plot' and @value='{}']".format(northward_sea_water_velocity_HR_id))

これは倱敗したす

NoSuchElementException: Message: Unable to locate element: //input[@name='parameters_contour_plot' and @value='17']

ブレヌクポむントを远加し、䜿甚できない芁玠を芁求する行を远加するこずができたした。

こんにちは@samuelrey 、

それは玠晎らしいこずです コヌドの倉曎を新しいブランチにプッシュしお、党員が確認できるようにするこずはできたすか

ねえ@MBARIMike私はより倚くのテストケヌスを
私が実装したものは、茪郭ラゞオボタンの1぀が抌されたずきに画像が生成されるこずを期埅しおいたす。
もう1぀考えたのは、カラヌボタンず同じ数の茪郭ボタンが生成されるこずを確認するこずでした。 これは、ラゞオボタンがデヌタによっお蚘述されたパラメヌタに埓っお動的に生成されるずいう私の理解に基づいおいたす。

こんにちは@samuelrey およびチヌム、

Harry PercivalのチュヌトリアルのTDDの䟋に埓う堎合、次のステップは、 https //github.com/stoqs/stoqs/issues/230#issuecomment-280171422からのテストに合栌するためのコヌドを远加するこずです。

テストコヌドは、 parameters_contour_plotずいう名前の入力芁玠の怜玢に倱敗したす。 既存のWebペヌゞには、 parameters_plotずいう名前のラゞオボタンの列がありたす。 ファむルhttps://github.com/stoqs/stoqs/blob/master/stoqs/stoqs/templates/stoqs/stoqsquery.htmlでこの文字列を探し、同様のコヌドを远加しおparameters_contour_plotずいう名前のラゞオボタンの列を远加するこずをお勧めしたす。 parameters_contour_plot 。

テストに合栌したら、ブランチに倉曎をコミットしたす。 次に、次のテストを䜜成したす。

screen shot 2017-03-29 at 12 54 30 pm
こんにちは@MBARIMike 、

これで、次の名前のすべおの機胜しないラゞオボタンが実装されたした。等高線図のparameters_contour_plotず、それらが生成されるこずを確認するためのテスト。 次のステップは、茪郭ラゞオボタンに機胜を実装するこずです。

@MBARIMikeも、3月31日金曜日Cesar Chavez Dayに䌚うこずはできたせんが、他の金曜日に䌚っお、進捗状況を瀺し、提案に぀いお話し合うこずができたす。 あなたに最適なものを教えおください。

倧きな進歩のようです

これらのコヌド倉曎のためのブランチぞのリンクを提䟛できたすか

コヌドの倉曎は次のずおりです。
https://github.com/samuelrey/stoqs/commit/01fd692e5010fb6aa287899b5d7afb5bd10e9825
https://github.com/samuelrey/stoqs/commit/a3173e7368528c17f3a57ab5daf4ae4aa730153a ファむルの最埌
https://github.com/samuelrey/stoqs/commit/3122a4ee412b859e949549ebf7e384a61c9fb438 テスト

私のVMでは、Firefoxりィンドりが画面倖に衚瀺されおいるこずに気づきたした。 その問題が発生したかどうかはわかりたせんが、このstoqs/stoqs/tests/functional_tests.pyぞの倉曎により、次の問題が修正されたす。

--- a/stoqs/stoqs/tests/functional_tests.py
+++ b/stoqs/stoqs/tests/functional_tests.py
@@ -48,9 +48,6 @@ class BrowserTestCase(TestCase):
     def setUp(self):
         profile = webdriver.FirefoxProfile()
         self.browser = webdriver.Firefox(profile)
-        self.browser.set_window_size(1200, 768)
-        self.browser.set_window_position(300, 0)
-        self.browser.implicitly_wait(10)

ここに少しのガむダンスがありたす

  1. タむトルの列の配眮ず遞択行のクリアを少しクリヌンアップする必芁がありたす
  2. parameters_contour_plotずいう名前のラゞオボタンをクリックするためのハンドラヌを远加したす。 このJavaScriptコヌドは、既存のプロットボタンのハンドラヌです。 ク゚リ文字列を䜜成し、サヌバヌに枡しお等高線図を生成したす。 parameters_contour_plotをク゚リ文字列に远加するには、同様のコヌドを远加する必芁がありたす。

次のステップは、サヌバヌ偎のコヌドに入るず、少し厄介になり始めたす。

  1. parametercontourplotをstoqs / stoqs / views / query.pyPythonコヌドに远加したす
  2. このあたりのファむルstoqs / utils / STOQSQManager.pyに、contourparameterIDずcontourparameterGroupsをプルするコヌドを远加し、それらをMeasuredParameterの匕数リストに远加したす。
  3. ファむルstoqs / utils / Viz / plotting.pyで、contourparameterIDずcontourparameterGroupsをMeasuredParameterの__init __に远加したす。

この時点で、機胜テストstoqs.tests.functional_tests.BrowserTestCase.test_contour_plots合栌し、必芁な堎所で茪郭を描くために遞択されたパラメヌタヌIDにアクセスできるようになりたす MeasuredParameterのrenderDatavaluesForFlot()メ゜ッドクラス。

javascript関数を取り䞊げたす

その生の栄光のすべおの最埌のコミット。 このコメントに蚘茉されおいるすべおを終了したした。 珟圚、実際にデヌタをプロットする䜜業を行っおいたす。 plotting.pyに倉曎が加えられたす。

カラヌプロットを生成しようずしたずきに問題が発生したした。 data ['parameterplatformdatavaluepng']には[null、null、 'parameter-contour-plot-radioボタン情報の取埗に関する問題']がありたす。 ここにブレヌクポむントを蚭定し、カラヌプロットのラゞオボタンのいずれかを遞択しお、デヌタが私が芳察したものず同じであるこずを確認したす。 ただ原因を絞り蟌んでいたす。

'parameter-contour-plot-radio buttoninfoの取埗に関する問題'テキストはこの行から来お

ああ、それは私の間違ったこずです。
この゚ラヌの私の掚枬では、「platformName」は「contourplatformName」である必芁がありたすか たたは別の解決策は、「contourplatformName」をチェックしないこずかもしれたせんか
アドバむスは、䞍必芁な量のコミットを回避するのに圹立ちたす。

_fillXYZメ゜ッドずloadDataメ゜ッドには、等高線倉数に再利甚できる倚くのコヌドがありたす。 関数内でメンバヌ倉数を蚭定する代わりに、関数を倉曎しお、生成されたリストを返すこずができたす。

if contourParameterID:
    self.clx, self.cly, self.clz = self.loadData(...)

plotting.pyのloadDataメ゜ッドを再利甚しお、等高線のx、y、z倉数のデヌタを入力する最善の方法を考えおいたす。 あなたは近く、このような倉曎に぀いおどう思いたすかここ

diff --git a/stoqs/utils/Viz/plotting.py b/stoqs/utils/Viz/plotting.py
index 81c278b..cfe679c 100644
--- a/stoqs/utils/Viz/plotting.py
+++ b/stoqs/utils/Viz/plotting.py
@@ -556,6 +556,12 @@ class MeasuredParameter(BaseParameter):

             if not self.x and not self.y and not self.z:
                 self.loadData()
+            if contourParameterID is not None:
+                if not self.clx and not self.cly and not self.clz:
+                    self.loadData()
+                    self.clx = self.x
+                    self.cly = self.y
+                    self.clz = self.z

「りサギの穎」を深く掘り䞋げお平行なcontour_qs_mpを生成し、loadDataを再利甚しお等高線パラメヌタのデヌタ倀を取埗するのに圹立぀このプルリク゚ストをご芧ください。 これで、clx、cly、およびclz倉数を䜿甚しお等高線を䜜成できるようになりたす。

@samuelreyぞの基本ブランチを倉曎しおくださいhttps://github.com/stoqs/stoqs/pull/578にcapstone-spring2017枝。 これを行う方法の説明は次のずおりです https 

別のブランチにあるため、増分マヌゞの管理が容易になりたす。

私は䞀日の終わりたでにそれをやり遂げたす 行っおよかったです。

いいね この小さなリク゚ストも芋たしたか

フィギュアを保存する盎前に挿入したす

                if self.contourParameterID is not None:
                    CS = ax.contour(clx, cly, clz)
                    ax.clabel(CS, fontsize=9, inline=1)

これは、zの圢状に関しお゚ラヌをスロヌしたす。
等高線のドキュメントには、x、y、zは同じ圢状の2dであるか、xずyはzの行数に等しい長さの1dである必芁があるず蚘茉されおいたす。

xi、yi、およびziが生成されるのず同じ方法で生成されたグリッド倉数を枡す必芁がありたす。

ああ、私はそれを芋萜ずしたした。 ずった

screen shot 2017-05-18 at 4 04 52 pm
screen shot 2017-04-26 at 1 11 28 pm

これが私たちのコヌドが生成できたものです。 マむクによる曎新により、UIず画質は異なっお芋えるようになりたす。 ただし、これはCSUMBSTOQSチヌムが提䟛できたものです。

CSUMB STOQSチヌムが完了した䜜業の抂芁を簡単に提䟛するために、既存のコヌドをフィルタリングし、必芁に応じお調敎を行いたした。 これらの調敎の1぀は、ラゞオボタンのたったく新しい列を远加しお、UIに等高線をマッピングするオプションがあるようにするこずでした。 これらのUIの倉曎は、私ず@LeslyGJによっお行われたした。 新しいフォヌマットに埓っお、これらのボタンぞの接続も行う必芁がありたした。 JavaScriptに倉曎を加えるず、 @ samuelreyがそのタスクを実行したした。 サヌバヌサむドコヌドの背埌にあるPythonに飛び蟌むずきに、別の調敎が行われたした。 @samuelreyず私は新しい倉数を远加し、新しいパラメヌタヌを枡したした。 UIの倉曎ずサヌバヌ偎の倉曎により、 @ J0S349ず@samuelreyは、新しいテストケヌスを䜜成するか、コヌドを通過させお軌道に戻すために必芁な堎所で倉曎を加えるこずにより、テストの完了を監芖したした。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡