問題タブ [scientific-computing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - DVCS は科学的プログラミングにどのように役立つのでしょうか?
私は、DVCS (Git、Hg、Bazar など) が、特に大学院生の科学的プログラミングのプロセスでどのように役立つかを調査するための準備作業を行っています。私はかなりの数年間プログラミングをしており、現在自然科学の修士課程を開始しているので、これについては非常に良い立場にあると思います。目標は、これに関する短いプレゼンテーションを 1 ~ 2 か月以内に行うことです。
私が見る限り、ソース管理の明らかな利点は別として、DVCS は現在、大学院生の日常生活に次のような改善をもたらします。
分岐:
これは大きなものです。DVCS の実践を観察すると、安価な分岐が主に新機能の実験を促進することが明らかです。科学的プログラミングはすべて実験です。パラメータやアルゴリズムを微調整するために、さまざまなブランチを作成できます。これは特に重要です。なぜなら、ほとんどの科学的コードは生涯を通じてリファクタリングの単一のアオタを見たことがないためです (ほとんどの大学院生はそれが何であるかさえ知りません)。高速コミットは、ラボ ノートブックの代わりにコミット コメントを使用することも意味します。計算結果は、再現可能な研究のために特定のコミット ハッシュコードにタグ付けできます。
サーバーへのプッシュ:
現在、ほとんどの科学的コードはある種のクラスターで実行されているため、DVCS はある種のより高度な Rsync として使用できます。これは、多くの人が既に「実稼働」コードを HPC クラスターにプッシュするために使用しています。これを分岐と組み合わせて、終了することなく複数のバージョンのコードを簡単に実行できます
論文の共同研究:
もっと言う必要がありますか?複数の著者による論文は、小規模なオープン ソース プロジェクトとまったく同じように運営されます。著者全員が LaTex で書いている場合、論文での共同作業は自然に適合するはずですが、Word などで書いている場合はさらに複雑になります。これは、コミット コメントがより大きな役割を果たす可能性がある場所です。
私の質問は、DVCS は科学プログラマーにどのような貢献ができると思いますか? コミュニティではソース管理に移行するという話がたくさん見られますが、ほとんどはまだ Subversion を検討中です。私のざっとしたメモから、DVCS は新しい大学院生にとって完璧なワークフロー パラダイムであるように思えます。私の考えは間違っていますか?それとも、科学的コーディングは単にDVCS ツールのことを耳にするほど遅れているのでしょうか?
関連している:
python - Python での科学的プロット
視覚化する必要がある (イベントの時間、緯度、経度) を含むタプルの大規模なデータ セットがあります。「映画」のようなxyプロットを生成したいと思っていましたが、誰かがより良いアイデアを持っているか、Pythonでこれを行う簡単な方法があるかどうか疑問に思っていましたか?
助けてくれてありがとう、 -- レオ
math - 関数型言語による科学数学?
関数型プログラミング言語で作成された本格的な科学数学ライブラリはありますか? 関数型言語の性質から、関数型言語は特に数学に適していると思われますが、よく知られているアルゴリズムは手続き型のようです。
たとえば、古典的なNumerical Recipesシリーズはほとんど手続き型で書かれています。LAPACKは多くの分野でほぼ事実上の標準ですが、Fortran であるため手続き型またはオブジェクト指向ですが、機能的ではありません。
この種のよく知られた手続き型アルゴリズムを関数型スタイルに変換できた人はいますか?
更新: Mathematica などの記号計算で関数型言語が使用されているようです。しかし、数値計算や関数型アルゴリズムと本質的に互換性のないものはありますか? それとも、たまたま命令型アルゴリズムが最初に発明されたために、機能的に等価なアルゴリズムを思いつく人が誰もいなかったということですか?
qt - OpenGLとQtによる科学的可視化
Qtを使用していくつかの科学データ用のOpenGL視覚化プログラムを作成しようとしています。既存のプログラムを変更せずに使用できるようにし、glwidgetを呼び出して、各タイムステップの最後にデータを更新するように指示できるようにしたいと思います。ただし、Qtプログラムを実行するには、CPUをブロックするを使用する必要があるようQApplication
ですqt.run()
。
これが擬似コードです
QThread
既存のすべてのコードをに入れて、更新への接続が完了するたびにシグナルを送信させることができることに気付きました。この方法の方が簡単です。誰かがこれを解決する方法を知っていますか?
python - SciPy での補間: Y を生成する X を見つける
SciPyで探しているYをどのXが与えるかを見つけるより良い方法はありますか? 私は SciPy を使い始めたばかりで、各機能にあまり詳しくありません。
objective-c - 本当に大きな数とObjective-C
私はいくつかのプロジェクトオイラーの問題をいじくり回してきましたが、当然、型番号よりも大きいlong long
数の処理を必要とする多くの問題に遭遇しています。私はCocoaとObjective-C(仕事のために鋭敏でいる必要があります)を使用することを約束していますが、これらの本当に大きな数を処理するためのエレガントな方法(ライブラリを読む)を見つけることができません。
GMPを使用したいのですが、Xcodeで使用するのは完全に傷ついた世界のようです。
誰か他のオプションを知っていますか?
python - PythonでEvalを使用してクラス変数を作成する
変数タイプ、変数名、プロンプト、およびデフォルト値のリストを渡すことができるクラスを作成しました。このクラスはwxPythonパネルを作成します。このパネルはフレームに表示され、ユーザーが計算ボタンを押して結果をプロットとして返す前に入力値を設定できます。execステートメントを使用してすべての変数をクラスに追加します。これにより、すべての変数が1つのクラスにまとめられ、名前で参照できます。
クラス内で、次のようなステートメントを使用して変数を作成および設定します。
変数を使用する必要がある場合は、名前で参照できます。
次に、Pythonでexecを使用する必要はめったにないことをSOで読みました。このアプローチに問題はありますか?グループ化する必要があり、編集できるようにしたい変数を保持し、表示、編集(およびすべての変数をファイルに保存)するためのコードとwxPython呼び出しを含むクラスを作成するためのより良い方法はありますか?またはそれらをもう一度読み返します)?
Curt
unit-testing - 科学プログラマー/学生/研究者として、TDD を自分のワークフローに組み込むにはどうすればよいですか?
私は忙しいんだ!私の時間のほとんどは、分析手法の使用またはコースの作業に費やされており、プログラミング モードに切り替えると、コードをすばやく生成する必要があります。というのは、私が所属している研究室の主任研究員は、私が TDD を使用していようと、そろばんを使用していようと、結果が早く得られる限り気にしません。
「TDD by example」を読みましたが、非常に役に立ちました。その後、「リファクタリング: 既存のコードの設計を改善する」、「設計パターン: 再利用可能なオブジェクト指向ソフトウェアの要素」、および「レガシー コードを効果的に使用する」を購入しましたが、これらの本は分厚く、今すぐに飛び込むことは困難です。 !
「TDD by example」の会話スタイルと流れは、私のスケジュールに簡単に組み込むことができました。しかし、これらの他の本でどのように作業するか、どの順序で作業するかはわかりません。それぞれが同じように関連しているようです (私は一種のダイニング哲学者のデッドロックに陥っています.プログラミングツールキットの各側面が改善されるのを待っていますが、それらの相互依存性により、行き詰まっているか、コンテキスト切り替えの時間が失われています.アナロジー:))。たとえば、リファクタリングしてテストでカバーする必要があるレガシー コードがある、TDD を使用して推進する必要がある (しかし、決してそうしない)、設計パターンでコーディングする必要があるため、車輪の再発明をやめる。
これらの必要な読み取りをバイトサイズのチャンクに分割する良い方法と、その技術を現在のプロジェクトに適用する方法はありますか (個人的には、すぐに適用できない場合は情報を失います)? 1冊の本に集中してそれを完成させますか? 最初にTDDが必要で、次にリファクタリングとデザインパターンのスキルが必要ですか?
初心者向けの最高のチュートリアルを読みましたが、これを忙しいスケジュールに統合する方法が説明されていません. そして、私は科学的な環境でプログラミングを読んでいますが、すでに時間に遅れている場合にこれらの手法をどのように追加するかという点を見逃しています.
dynamic-languages - スクリプターは丸め誤差を考慮する必要がありますか?
私は C を勉強していて、ガード桁と丸め誤差のアイデアが浮かびました。スクリプト言語 (ここでは Python と Perl を考えています) の実践者は、このようなことについて心配する必要がありますか? 彼らが科学的プログラミングを行っている場合はどうなりますか?
scientific-computing - ドメイン固有の科学ライブラリを作成するための設計原則
特定の分野の科学者が使用するソフトウェア ライブラリを設計する際の優れた原則は何ですか? これは、化学、物理学、材料科学、顕微鏡、バイオアッセイ、天文学などの分野を意味します。さまざまな分野をカバーする SciPy、R、Matlab、JAMA などの一般的なライブラリは除外します。データ分析。(現在、私たちの多くは化学のオープン ソース ライブラリの構築に関与しており、他の分野での経験を知ることは価値があります)。
これは野心的な仕事であり、資金を調達するのは容易ではありませんが、再現可能で検証可能な科学にとってますます重要になってきていることを理解しています.