学習

import os
from datetime import datetime, timedelta
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.python_operator import PythonOperator

def process_file(*args, **kwargs):
    file_path = kwargs['file_path']
    print(f"Processing file: {file_path}")

default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
    'start_date': datetime(2023, 4, 19),
}

dag = DAG(
    'dynamic_dag_files_example',
    default_args=default_args,
    description='Dynamic DAG for processing files with individual tasks',
    schedule_interval=timedelta(days=1),
    catchup=False,
)

start_task = DummyOperator(
    task_id='start_task',
    dag=dag,
)

end_task = DummyOperator(
    task_id='end_task',
    dag=dag,
)

folder_path = '/path/to/your/folder'

file_list = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))]

for i, file_path in enumerate(file_list):
    task_id = f'process_file_{i}'

    dynamic_task = PythonOperator(
        task_id=task_id,
        python_callable=process_file,
        op_args=[],
        op_kwargs={'file_path': file_path},
        provide_context=True,
        dag=dag,
    )

    start_task >> dynamic_task >> end_task

学習

ソースコード

import os
from datetime import datetime, timedelta
from airflow import DAG
from airflow.operators.dummy_operator import DummyOperator
from airflow.operators.python_operator import PythonOperator

def process_file(*args, **kwargs):
    file_path = kwargs['file_path']
    print(f"Processing file: {file_path}")

default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5),
    'start_date': datetime(2023, 4, 19),
}

dag = DAG(
    'dynamic_dag_files_example',
    default_args=default_args,
    description='Dynamic DAG for processing files',
    schedule_interval=timedelta(days=1),
    catchup=False,
)

start_task = DummyOperator(
    task_id='start_task',
    dag=dag,
)

end_task = DummyOperator(
    task_id='end_task',
    dag=dag,
)

folder_path = '/path/to/your/folder'

file_list = [os.path.join(folder_path, f) for f in os.listdir(folder_path) if os.path.isfile(os.path.join(folder_path, f))]

for file_path in file_list:
    task_id = f'process_{os.path.basename(file_path)}'

    dynamic_task = PythonOperator(
        task_id=task_id,
        python_callable=process_file,
        op_args=[],
        op_kwargs={'file_path': file_path},
        provide_context=True,
        dag=dag,
    )

    start_task >> dynamic_task >> end_task

MLFぉw

pip install mlflow

mlflow server

 

import mlflow
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

# データの読み込み
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=42)

# MLflowのトラッキングURIを設定
mlflow.set_tracking_uri("http://localhost:5000")

# ランダムフォレストモデルのトレーニン
with mlflow.start_run():
    rf = RandomForestClassifier(n_estimators=10)
    rf.fit(X_train, y_train)

    # モデルの評価
    score = rf.score(X_test, y_test)
    print("Accuracy: %f" % score)

    # MLFlowにメトリクスとパラメータを記録
    mlflow.log_metric("accuracy", score)
    mlflow.log_param("n_estimators", 10)

    # MLFlowにモデルを保存
    mlflow.sklearn.log_model(rf, "model")

 

http://localhost:5000にアクセスすることで、MLFlow UIにアクセスすることができます。

MLFぉw

pip install mlflow

mlflow server

 

import mlflow from sklearn.datasets import load_iris from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split # データの読み込み iris = load_iris() X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, random_state=42) # ランダムフォレストモデルのトレーニン with mlflow.start_run(): rf = RandomForestClassifier(n_estimators=10) rf.fit(X_train, y_train) # モデルの評価 score = rf.score(X_test, y_test) print("Accuracy: %f" % score) # MLFlowにメトリクスとパラメータを記録 mlflow.log_metric("accuracy", score) mlflow.log_param("n_estimators", 10) # MLFlowにモデルを保存 mlflow.sklearn.log_model(rf, "model")

 

http://localhost:5000にアクセスすることで、MLFlow UIにアクセスすることができます。

コロナレポ 2023年正月編

目次

事前準備編

コロナにかかる前に取り組んどいた方がよいこと

前提として、いざかかったら情報収集は自分でやらんといけんし、いつ・どこで罹患するかによって状況全然変わるので、対応フロー的なことはこの記事では扱わない。

罹患者には厳しい外出制限があるため、いざかかってから物資調達をするのはかなり厳しい。そのため、事前にこれだけは買っておけリストを提示しておく。

超重要死活的アイテム。もしこれなければ今日買いに行け
  • ジャージやポリエステル100%Tシャツなどの衣服
    • ようは「吸湿性が低く、速乾性に優れている」服だ。 
    • とにかくこれがないとはじまらない。
    • 発汗しまくるので、綿系の服だと汗を吸って冷えて大変。体力低下してると着替えの体力負荷もばかにならない。ジャージじゃなくてもいいけど、とにかく非綿系の衣服を数着確保しておこう。
    • 最初わたしは綿のTシャツを30分に一回くらい着替えてたけど、これが明らかに無意味。汗飛ばしてくれる系の衣服だと着替え回数減らせる=布団にとどまれて楽。
  • 体温計
    • 普通に体温モニタリング用。気がつくと平気で40度とか行くので、体温見て頭冷やすなど行動に移せる。
    • あとメンタル的に地味に重要。家庭の医学において体調の指標って体温だけじゃないですか。体温を計れるということそれ自体が心の安定をもたらす。
    • オムロンのいいやつ買っといた方がよし。しょぼいやつは結構壊れることあり。
あればよいが必須ではないアイテム。
  • 水と食料
    • 大前提として、陽性判定された後は外出できない。「え、食料調達は不要不急の外出に含まれるからOKなんじゃ?」と思うわけですが、違うんですね(少なくとも私のいた自治体では)。陽性出て症状出てる人は外出NG。ちなみに自治体が個人に直接食料を配給する根拠もここである。
      • だから理屈としては、「水と食料を事前に買い込んどけ」という話に成るわけだが、とはいえここはそんなムキにならなくてもいいと思ってる。もちろん買い込めるなら買い込んどけ、ではあるが。
    • 水は、水道水を飲んでください。
    • 食料は、もちろんネットスーパー的なところで買うとか、自治体に送ってもらうとか、家族親戚友人に送ってもらうとか、いざ罹患しちゃってからでも、なにかしらの形で調達はできる。
    • 一人暮らしでかつ頼る人いないとかのパターンは、備蓄なりネットスーパーの登録とかははやめにしといた方がよいと思う。
  • 加湿器
    • 乾燥してるので欲しくなてしまうが、正直これは家の断熱性能次第で有用かどうかガラッと変わる。私のように住んでる家が断熱性能しょぼい場合は無理して買わなくてよし。
      • ようは、断熱性能の低い家でエアコンガン焚きしながらいくら加湿しても、加湿したはずの水分がすべて窓に結露して終わる。部屋の空気は全然モイスチャーにならん。一方で、断熱性能しっかりしてる系の部屋は、室内温度も湿度も一定に保たれやすく、したがってそもそもそんな乾かないので、加湿器でガチる必要はあんまりない。家の構造とか設計の問題に対して、小手先の数万の機械で戦いに行くのは無理。
    • 大前提として、直接的解決策であるところの「コロナウィルスの働きを抑える薬・ウィルスを殺す薬」は、基本もらえません。もらえるのは解熱剤のみ。したがって解熱剤以外の薬が必要であれば、自分で調達するしかなし。
    • ただ、市販されている喉の薬とか鼻水の薬とかは、正直あんまり効果を感じなかった。「インフルエンザに対するタミフル」的な、必殺技的な薬は基本ゲットできないと思った方がよく、そうすると、あんま効かない薬を買い揃えても意味なくねという話になる。私はなった。
    • ただし、もちろん気休めとしての効果はあるので(プラシボも馬鹿にできんと言うしね)、食料と一緒に調達できるなら買っておいても別にいいと思う。以下参考。
      • 小林製薬「ハレナース」
        • 龍角散ダイレクトみたいなやつ。飲むとそのときは気持ちいい。
      • 白金製薬「パープルショットプラス」
        • 喉にスプレーかけるやつ。上と同じで、かけると気持ちいい。
      • 第一三共「ルルアタックIBエース」
        • 普通の錠剤。飲んだ感はあった。なんて言い草だ。

アホ行動編

やってしまったアホ行動を3つ紹介。君はこんなことするな!

  • 油断する
    • コロナは、症状がすごく乱高下する。
    • これが一番きつかった。楽になると、心が油断してしまうのだが、その後また症状がぶり返してきて絶望に叩き落される。これが4回くらいくり返された。
    • 小康状態に来ても、次の波に備えましょう。
  • たんを出し切ろうとする
    • まず、たんが出尽くす、ということはほんとの最後の瞬間までありません。
    • 私は①「風邪とかインフルって、最後たんが出ると治るんだよなあ」という信念と②「たんがあると呼吸が辛いです」という辛さのもと、症状2日目の夜、たんを全部出してしまおうと思って無限にたん出ししてました。このときは熱もやばかったので、頭も変になっていたとは思う。
    • 3時間くらいやって。そして結果として何もえられませんでした。3時間たん出しして、その後、さぞ楽になってるだろうと思って深呼吸したら、あのたんがあるとき特有のガラガラ感を覚え、呼吸のしづらさが3時間前と全く変化なかった絶望は生涯忘れることはないでしょう。喉を破壊して三時間もかけてげえげえしてたのに……
  • コロナは熱で脳を破壊する病気だと思い込む
    • 最初めっちゃ熱出るのでそっちに気を取られるわけですが、コロナはどっちかというと呼吸機能を破壊する病気っぽい。
      • ガイドラインとかも熱への言及あんまりなくて、どっちかというと「胸の苦しさ」「呼吸障害」「血中酸素濃度低下」あたりにフォーカスしてる。
    • 熱よりも、体への酸素供給が大事!!
      • そういう意味で、熱が下がった後に呼吸の辛いパートが来るので、熱が下がってからが本番だという意識をもっといた方がいいかも。

 

症状タイムライン編

  • 人によって変わると思うので参考までに。
    • 熱は最初は40度近く出たけど6日にはもう38度にいかなくなった。
    • 熱は上でも書いたけど、乱高下するので、日毎に36度になる瞬間もあった。これが怖いというかずるいところ。
    • 熱下がって完全にコロナに勝利したと思ったんだが、その後、7日あたりは呼吸めっちゃつらくなって大変だった。呼吸辛い原因は私の場合は次の3つだった。
      • 喉が腫れてる
      • たんがじゃま
      • 体が全体的に疲れてて呼吸がたるい
    • 血中酸素濃度は最悪でも95とかだった。
      • これは99とかが正常値で、90割ると救急車案件という値である。
    • 自治体からの補給が届いたのは、ほとんど祭りのあとだった。
      • 自治体の対応遅すぎ!」を強調したいわけではないので注意。
      • 個人的にはむしろ今回、行政と医療にめっちゃお世話になって感謝してます。本当にありがとうございました!
        • 発熱外来
        • 各種電話サポート
        • 経過観察してくれてた保健所関連
        • 官製補給品

 

日別のイベントと、症状ごとのタイムライン

★は個人的症状ピーク

 

感想

  • 辛かった。全然ただの風邪じゃねーじゃん。 
    • インフルに比べても全然辛いわ。
      • 多分3日くらいで終わるのと、あとタミフルあるからね。
    • 一週間まるっと症状出るのは想像以上にメンタルに来るね。
      • 特に3~4日目がつらかった。先が見えない感じ。
      • 今後はマスク手洗いうがいをよりガチっていきたい。
  • 行政と医療に感謝。
    • 上でも書いたけど改めて。
      • 各種電話サポートとかで丁寧に対応してもらった。専門家である看護師さんが待機してて、すぐ電話出てくれて、しかも24時間って、かなりの規模で構えてんだろうね。そりゃコロナ対策金かかるよ。
      •  発熱外来は24時間対応だった。ありがてえ。朝6時とかに泣きついても対応してくれたし。
      • 厚生労働省の症状ログ取りサイトを使ってた。一応、保健所の人が見てくれてて、ヤバそうな入力あれば連絡くれてたりするらしい。俺は入力してたけど連絡はこなかったが、見てますという話だった。ありがたし。
    • パブリックサーバントの皆さんには頭あがらん。

結論:ふるさと納税やめます。