4

インタラクティブな開発と探索的研究のために IPython を使い始めたばかりですが、すべての優れた機能と可能性を備えた非常にエキサイティングなツールであることがわかりました。IPython を含む依存関係を管理するために、Anaconda パッケージ マネージャーを使用しています。

私が読んだことによると、IPython チームの目標の 1 つは、セル マジックとして最終的に Sage Math (CAS) を IPython に統合することです。これがまだ開発中かどうか知っている人はいますか?というか、今 Sage を使いたい場合、これを行う唯一の方法は拡張機能を作成することですか [1]?

[1] https://github.com/ipython/ipython/wiki/Extensions-Index

また、Anaconda ディストリビューションに含まれていない科学的開発用の追加パッケージをインストールする場合、それは pip と同じくらい簡単ですか、それとも依存関係などを処理するために Anaconda パッケージのビルドを行う必要がありますか? IPython のみを使用していた場合、ドキュメントで推奨されているように easy_install または pip を実行するだけで理解できましたが、Anaconda 内の既存の依存関係を上書きすると思います。pip を使用する場合、Anaconda 環境にインストールしないと、Anaconda の依存関係にどのように影響しますか?

明確にするために、私は Sage 内から IPython を実行したくありません。Sage を IPython 内から CAS として実行したいと考えています。私はむしろ、ドメイン固有言語を統合する Sage アプローチを採用したいと考えています。あるいは対照的に、IPython 拡張機能は Sage に置き換わるのでしょうか?

私は独学のプログラマーであり、プロのソフトウェア開発者ではありません。エンジニアとして、私は Matlab、Mathematica、および商用ソリューションに慣れており、配管を抽象化することができます。すべてをくっつけようとしているのですが、知識不足のため、スパゲッティ スープとダイナミック リンク ライブラリを混ぜ合わせたようなものです。私はおそらく間違ったアプローチを使用しています。

私が欲しいのは、Anaconda/Enthought パッケージ管理 (IPython、pandas など)、フック/拡張機能またはマジックによるカスタム ロール Sage、Anaconda に含まれていないパッケージへの拡張機能 (つまり、Matlab は上記の [1] を参照)、およびリビジョン管理です。 Git と Mercurial。プロの開発者は、Mac または Linux ボックスでこれをどのようにセットアップしますか?

4

4 に答える 4

4

最初の質問に答える:

Sage は、IPython を含む数学ソフトウェアの膨大なコレクションです。そのすべてを IPython に統合する方法はありません。

おそらく、Sage スタイルの「対話」を IPython に統合するということを聞いたことがあるでしょう。ここには、入力変数の値を制御するスライダーがあり、Python で記述された計算に基づいて、スライダーを動かすと出力が更新されます。これは、IPython に追加するロードマップにまだあります。

もう 1 つの可能性は、Python ベースの CASであるSymPyを考えていることです。SymPy は IPython 内でうまく機能します。特にsympy.init_printing()、式の派手な表現を取得するために呼び出す場合に有効です。

于 2013-08-23T23:57:06.920 に答える
4

私は、Sage のカスタマイズを IPython ノートブックにロードする IPython 拡張機能を作成しました。実際、通常の Sage インターフェースに対して行われた IPython のカスタマイズの数はこれだけです。これは基本的に、IPython ノートブックを Sage へのインターフェースに変えます (たとえば、事前解析が行われるなど)。

ただし、Sage の IPython のコピーから実行する必要があります。IPython ノートブックを起動するだけです。

sage -ipython notebook

次に、sage 拡張機能をセルにロードします。

%load_ext sage.misc.sage_extension

まもなく IPython 1.0 にアップグレードします (必要な変更を行ったので、レビューする必要があります)。すでに IPython 1.0 を実行したい場合は、sage-support メーリング リストにメールを送信してください。手順を投稿します。

他の質問に答えるために、Sage には Anaconda では利用できない多くのパッケージが含まれています。Sage は多くの機能をこれらのパッケージに大きく依存しています。Sage とその依存関係を Anaconda などで配布する可能性はあると思いますが、私の知る限り、誰もそれに取り組んでいません。さまざまな Linux ディストリビューション用に Sage をパッケージ化し、Sage のパッケージ マネージャーを置き換える作業がいくつかあります。

于 2013-08-24T20:28:05.663 に答える
1

明確にするために、私は Sage 内から Ipython を実行したくありません。Sage を Ipython 内から CAS として実行したいと考えています。私はむしろ、ドメイン固有言語を統合する Sage アプローチを採用したいと考えています。それとも対照的に、Ipython 拡張機能は Sage に取って代わるのでしょうか?

Sage を Ipython 内で実行したい場合、最も簡単な方法は、Sage の Ipython のコピーを使用することです。

$ sage -ipython
Python 2.7.5 (default, Aug  1 2013, 18:11:00) 
Type "copyright", "credits" or "license" for more information.

IPython 0.13.1 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help      -> Python's own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: from sage.all import *

In [2]: integrate(x^2,x)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-2-006357f5d9c0> in <module>()
----> 1 integrate(x^2,x)

NameError: name 'x' is not defined

In [3]: var('x')
Out[3]: x

In [4]: integrate(x^2,x)
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
<ipython-input-4-006357f5d9c0> in <module>()
----> 1 integrate(x^2,x)

/Users/.../sage-5.11.rc0/local/lib/python2.7/site-packages/sage/structure/element.so in sage.structure.element.Element.__xor__ (sage/structure/element.c:6754)()

RuntimeError: Use ** for exponentiation, not '^', which means xor
in Python, and has the wrong precedence.

In [5]: integrate(x**2,x)
Out[5]: 1/3*x^3

これと Sage の間にはいくつかの違いがあることに注意してください。たとえば、構文の準備がありません。おそらく、Sage が Ipython の独自のインストールを見つけることができる場所にある場合は、そこでもこれを行うことができます (ただし、存在せずeasy_install、Python のバージョンが正しく一致しない可能性があります!)。

于 2013-08-24T02:43:18.700 に答える