第二符号化期間目録目録について

4263 ワード

TL;DR DSO catalogs in KStars are now generated reproducibly in the CI. A list of available catalogs and documentation can be found here.


約束通りに、私は現在、少し中に行きますCatalogs Repository .
通常、DSOカタログはかなり静的で、内容の性質によってほとんど変わりません.しかし、銀河は空の周りにジャンプする傾向はありませんが、カタログはまだ正確なタイプミスや更新を得るための更新を取得し、より正確な測定値を調整します.当社の主なカタログOpenNGC 例えば、非常に定期的に更新を取得します.

OpenNGCは定期的に更新されています.
カタログが変更されないかもしれないとしても、それがそれが再現可能な方法でその原形から派生した方法に関する記録を持つことは、望ましいです1 . 最後にしかし、少なくとも、同じ形式の種類の中心的な場所にすべてのカタログを持つことは、重複をより簡単になります.
問題は、どのようにして、ある種の構造を強制する便利で柔軟な形式を定義するのでしょうか?私の答えはいくつかの種類のパッケージ定義です.どのような柔軟性の部分は?基本的にすべてのカタログはクラスを実装しなければならないPythonモジュールです.あるメソッドを上書きすることで、カタログを構築することができます.フレームワークはある種のサポート機能を提供し、いくつかのカタログデータベース機能へのインタフェースをKStars コード.それとは別に、いくつかの慣例が続くべきであるが、詳細を実行する際に完全な自由があります2 .
単純なランダムカタログは次のようになります.
def generate_random_string(str_size, allowed_chars=string.ascii_letters):
    return "".join(random.choice(allowed_chars) for x in range(str_size))

class RandomCatalogBase(Factory):
    SIZE = 100
    meta = Catalog(
        id=999,
        name="random",
        maintainer="Valentin Boettcher <[email protected]>",
        license="DWYW Do what ever you want with it!",
        description="A huge catalog of random DSOs",
        precedence=1,
        version=1,
    )

    def load_objects(self):
        for _ in range(self.SIZE):
            ob_type = random.choice(
                [ObjectType.STAR, ObjectType.GALAXY, ObjectType.GASEOUS_NEBULA]
            )
            ra = random.uniform(0, 360)
            dec = random.uniform(-90, 90)
            mag = random.uniform(4, 16)
            name = generate_random_string(5)
            long_name = generate_random_string(10)

            yield self._make_catalog_object(
                type=ob_type,
                ra=ra,
                dec=dec,
                magnitude=mag,
                name=name,
                long_name=long_name,
                position_angle=random.uniform(0, 180),

それはload_objects ビルドフェーズとは、最小限のカタログの一種です.
カタログ実装の構造の背後にある基本的な考え方は、ビルドプロセスをフレームワークによって部分的に並列化できる4つのフェーズに分割できることです.
ダウンロード段階では、各カタログは、そのコンテンツがインターネットから取得されるか、またはどのように取得されるかを定義します.Load/Parseフェーズでは、取得した元データを解析し、正しい形式に成形することを気にするフレームワークに引き渡されます.重複複製段階では、各カタログは、カタログデータベースを検出して重複フラグを照会できます.最後のダンプフェーズでは、各カタログの内容は別のファイルに書き込まれますKStars インポートできますか3 .
あなたが詳細に興味があるならば、私はdocumentation カタログリポジトリについて.
すべての既存のカタログを新しいシステムに移植しているフレームワークを実装した後に、私は変更に関してカタログを再構築するためにKDE Invent CIを構成し続けました.CIアーティファクトはKNewStuff KSTAR定期的にユーザーのためのデータサーバーは、最新のバージョンにカタログを更新することができます.
CIの作業を得るためにDocker image これは、KSTAR Pythonのバインディングに対して多かれ少なかれ複雑なビルドプロセスをカプセル化します.このコンテナはCIで毎週更新され、新しいカタログの迅速かつ容易な開発環境としても適しています.
それは今日のためですが、フレットしないでください.これは私がしたことではない.まだ以下の絵と関係がある何かを含むために、さらに来ています.

チアーズ、バレンタイン
そして、うまくいけばしばらくの間続きます.現在、非常に少数の人々がどのようにkstars 'ディープスターカタログを生成する知っている.↩︎
私はまだこれらのアウトTTHまだ働いていない.↩︎
カタログパッケージファイルには、実際にはDSOデータベースと同じフォーマットがあります.↩︎