問題タブ [pyfits]
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.
python - pyfits を使用して一度に 1 行ずつ FITS バイナリ テーブルを読み取る
バイナリ テーブルを含む 60GB の FITS ファイルがあります。このテーブルを一度に 1 つの行/エントリ/行/ブロック* で読み取り (および処理) したいと思います。
(※正確な命名法はわかりません)
私はpyfitsを使用していますが、やりたいことは簡単に言えば次のとおりです。
変数entry
の型<class 'pyfits.fitsrec.FITS_record'>
は、バイナリ テーブルの列数と同じ長さです。ただし、次の行でバイナリ テーブル全体がメモリに読み込まれるように見えますentry = hdulist[1].data[i]
。
pyfits のドキュメントを調べましたが、テーブル エントリごとに (または一度に小さなエントリ セットで) バイナリ テーブル拡張からデータを読み取るようなメソッドが見つかりません。テーブルから特定のエントリを選択するのではなく、単に順番にスキャンするだけです。
私の質問は次のとおりです。
0)hdulist[1].data[i]
ステップで何が起きているか? すべてがメモリに読み込まれるのはなぜですか? (これを回避する方法はありますか?)
1)私は何かを逃しましたか?実際にpyfitsは私が望むことをすることができますか?
2)別のpythonライブラリはありますか?(つまり、FITS 拡張でバイナリ テーブルを使用する)
3)そうでない場合、データを別のバイナリ(または他の圧縮/非ASCII)形式(FITSではない)で書き直して、他のpythonライブラリまたはモジュールを見つけて、やりたいことを実行できますか?
python - PyFITS から返された Numpy 配列から条件付きで値を選択する
pyfits で FITS ファイルを開きました。HEADER ファイルは、、、、、などの36列のタグで読み取りXTENSION='BINTABLE'
ます。DIMENSION= 52989R x 36C
'ZBEST'
'ZQUALITY'
'M_B'
'UB'
'PGAL'
ここで、「ZQUALITY」が 2 より大きく、「PGAL」が 3 に等しいデータからオブジェクトを選択する必要があります。次に、上記の条件に従って、対応するオブジェクトの「ZBEST」のヒストグラムを作成する必要があります。また、これらのオブジェクトの「M_B」と「UB」をプロットする必要があります。
最後に、「ZBEST」を 3 つのスライス (zbest < 0.5)、(0.5 < zbest < 1.0)、(zbest > 1.0) にスライスし、それらのヒストグラムと「M_B」対「UB」図を別々にプロットしたいと考えています。
2 つの条件に従うデータの選択に行き詰まっています。両方の条件を満たすデータからオブジェクトを選択する方法を教えてください ('ZQUALITY' > 2 & 'PGAL' == 3 )? like: を使用していますdata.field[('zquality' > 2) & ('pgal'==3)]
が、機能していません。
python - FITS ファイル内の複数の列の値によるテーブル行の集計
多くの列を含む FITS ファイルがあります。ファイルの単純化された例の一部は次のようになります。
ここで気が付くと、列A と Cの最初の 4 行は同じですが、列Bは 1 から 4 まで変化します。次に、列A と Cの次の 5 つの値は同じですが、列Bは 40 から 44 まで変化します。
私がやりたいことは、次のようなファイルを作成するプログラムを書くことです:
つまり、列 B には、列 A と C が同じ値の数が含まれている必要があります。
Pythonでこれを行う方法を知りたいです。必ずしも FITS ファイルを扱う必要はありません。FITS ファイルで使用できないルーチンがいくつかある場合は、ASCII 形式に変換することもできます。
私がこれまでに試したこと:
リスト内の等しい値の数をカウントし、それらを返すCollections
サブルーチンが呼び出されたルーチンにぶつかりました。Counter
私は試した:
しかし、これは列Aの値が等しいだけです。このルーチンを使用して、これらの値を列Cと比較する方法も教えてもらえますか?
python - PyFITS を使用して FITS テーブルに列を追加する
拡張子が 1 つの Fits ファイルがあり、データがそれぞれ 100 要素の 2 つの列のテーブルで構成されているとします。
ここで、テーブルに新しい列を追加したいと思います。たとえば、100 要素の別の配列である data['field3'] としましょう。
正確にはどうすればよいですか?
python - Pythonでフィットファイルを読む
適合ファイルからのデータの読み取りに問題があります。通常、fits ファイルからデータを読み取ることはできますが、いくつかの問題を引き起こすデータ ファイルがいくつかあります。3 つの列とヘッダーを含むファイルを読み込もうとすると、次のような数値の表しか表示されません。
[[ 64 195 45 ..., 0 0 0]]
これは整数であり、データ ファイルには実際には、次のように double と float を 3 つの列に含む 3 つの列が含まれている必要があります。
[9819.3801, 0.00000, 0.00000]
[9820.0025、5.50764e-16、1.62396e-16]
[820.6248、-3.75781e-17、1.51864e-16]
mrdfitsと呼ばれる IDL のパッケージを使用して値を取得できるため、これらの値を取得する必要があることはわかっています。適合ファイルに含まれるデータ型と形式を調べてみました。コードは次のようになります。
私の質問は基本的にです。非整数データの 3 つの列を取得できるように、データを読み取る別の方法はありますか? ファイルが通常とは異なる方法で読み取られるのは、ファイルが BINTABLE であるためでしょうか? 現在行っている方法以外に、3 つの列をロードできる別の方法はありますか? いくつかの点を明確にする必要がある場合は、質問してください。現時点で多くのことを試したので、どちらの方向に進むべきかわかりません. どんな助けでも大歓迎です!
python - ヘッダーを保持しながら列をテーブルに追加する
新しい列をいくつか追加して、FITS テーブル拡張を更新しようとしています。http://pyfits.readthedocs.org/en/latest/users_guide/users_table.html#merging-tablesに記載されている方法に従っています。ただし、マージされたテーブルのヘッダーには、列を識別するために必要な最小限の情報しか含まれていません。元のヘッダー ファイルに必要な情報がありました。古いテーブルから新しいテーブルにすべての余分なキーワードを移動するにはどうすればよいですか?
私はすでに試しました
新しい列に必要なエントリを手動で追加しますが、これにより常にヘッダーが破損し、FITS ファイル全体が読み取れなくなります。
ありがとう
python - Pyfits : 列名/フォーマットを変更
pyfits でファイルを連結しようとしています。それらが正しく行われていないため、列名の1つと列形式の1つが入力ファイル間で同じではないため、np.concatenateを使用してndarrayを連結できません...
列名を(巧妙な方法で)変更したいと思います。pyfits のドキュメントで pyfits.Coldefs.change_name 関数 ( http://pythonhosted.org/pyfits/api_docs/api_tables.html#coldefs ) を見つけたので、現在行っていることは次のとおりです。
hdu = pyfits.open(myfile,memmap=True)[1]
new_columns = pyfits.ColDefs(hdu.columns).change_name(前の名前,新しい名前)
私も試しました:
hdu = pyfits.open(myfile,memmap=True)[1]
new_columns = pyfits.ColDefs(hdu.columns).change_attrib(prev_name,'names',new_name)
これは None 型のオブジェクトを返します。私が欠けているものはありますか?
ありがとう
python - instancemethod オブジェクトには属性 '___getitem__' がありません
私は PyCharm (コミュニティ版 4.0.2) で .fits ファイルからデータを取得しています。z = data.field [SDSS_Z] の結果は TypeError: 'instancemethod' オブジェクトに属性 ' getitem ' がありません。同じ .fits ファイルの他のフィールドでは、問題はありません
python - ASCII テーブルを FITS 画像に変換する
私はこの分野の初心者です。X、Y、強度 (X, Y) の 3 つの列を持つテキスト ファイルがあります。それらは基本的に配列 (1X10000) であり、それぞれが Python を介してテキスト ファイルに書き出されます。Python でデータセットをプロットするには、trisurf を使用するだけでこれを実現できます。しかし、さらに処理するには、そこから適合画像を作成する必要があります。このテキスト ファイルから FITS イメージ (単純な FITS テーブルではない) を作成するにはどうすればよいですか (python または matlab を使用するのが望ましいでしょう)。