急性胆嚢炎

急性胆嚢炎は

胆嚢腫大による胆管圧迫、それにより閉塞性黄疸を来たす

胆嚢の炎症により、発熱や右上腹部痛を呈する

胆嚢炎が進展すると、化膿性閉塞性胆管炎をきたす可能性がある。すると、血圧低下(ショック)が起こる。

http://www.jshbps.jp/modules/public/index.php?content_id=12

 

 

 

 

 

 

クイズ形式で染色体異常と疾患を紐付ける

染色体異常疾患を覚えるのは一苦労である。

なぜなら、

病気の名前を覚えること

それに紐づいた染色体の場所を覚えること

の2つをしなくてはならないからだ。

そして、染色体異常で、遺伝子転座の場合、「どこ」から「どこ」へくっついたかが、数字で情報を渡される。ただの数字なので、選択肢問題で、忘れたら推測する術がない。

 

なので、何とかして覚えたい、というのが、本日の悩みである。

 

そういうわけで、クイズを作らせた。

染色体異常を問題に、選択肢に疾患を答えさせる問題。

たまに、答えが一つに決まらないパターンもある。それはもう確率ゲームである。それもまた一興。

 

import matplotlib.pyplot as plt
import numpy as np
import math
import random
problem_set = [j for j in range(5)]
random.seed(random.choice(problem_set))

"""
$1 making components of question and answer$
"""

question = ["t(8; 21)", "t(15; 17)", "inv(16)", "t(9; 22)",
"t(9; 22)", "t(14; 18)", "t(11; 14)", "t(8; 14)", "del(5q)"]

answer = ["急性骨髄性白血病","急性前骨髄球性白血病","急性骨髄単球性白血病","急性リンパ球性白血病",
"慢性骨髄性白血病", "濾胞性リンパ腫", "マントル細胞リンパ腫", "Burkittリンパ腫","骨髄異形成症候群"]


"""
$2 making questions
"""
num_of_q = 10;
num_of_option = 5
all_option = [i for i in range(len(question))]
for i in range(num_of_q):
    option = random.sample(all_option, num_of_option)
    problem = random.choice(option)
    print(f"{question[problem]}?")
    random.shuffle(option)
    tag = option.index(problem)
    for j in range(num_of_option):
        print(f"{j}: {answer[option[j]]}")
    value = int(input("Enter number of the answer: "))
    if value == tag:
        print("correct")
    else:
        print("wrong",tag,value)
    print(question[problem], answer[problem])

 

 

"""

"""

かなり遊べる。しかも意外と強制的に覚えられる。良い学習方法を見つけたかもしれない。

ArtistAnimationで複数の場所の塗りつぶしを動かす、散髪屋さん

散髪屋さんのようなものが出来上がった。

 

時系列データを塗りつぶし図形を動画にするとき、

 

ims = []

for j in range(T):
    im = plt.fill(xl[0],yl[0],fc=col(j))
    for i in range(1,N):
        poly = plt.fill(xl[i],yl[i],fc=col(i+j))
        im = im + poly
    ims.append(im)

ani = animation.ArtistAnimation(fig, ims, interval=100)

plt.show()

 

とすると、上手くできた。

animation.FuncAnimationを使う方法もあるらしい

詳しくはこちら。

pystyle.info

鬼滅の刃の市松模様

import numpy as np
import matplotlib.pyplot as plt
import math
import random
random.seed(314)

"""
$-1 parameter input$
"""
N=121
cn=11

"""
$1 making polygon$
"""
x=np.array([-0.5,0.5,0.5,-0.5])
y=np.array([0,0,1,1])

xl=list()
yl=list()
for i in range(N):
  xl.append(x+1*(i%cn))
  yl.append(y-1*int(i/cn))

"""
$2 defining color of polygon$
"""
def col(x):
    if x % 2 == 0:
        return "green"
    elif x % 2 == 1:
        return "black"

"""
$3 making figure$
"""
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_aspect('equal')

for i in range(N):
    poly = plt.fill(xl[i],yl[i],fc=col(i))

plt.show()

 

 

 

numbersからcsvにしてpandasで読み込んでnumpyに渡す

拡張子がnumbersのファイルをpythonで上手く扱いたい。

 

まず、「ファイル」→「書き出す」→「CSV...」→(文字の確認”UTF-8")「次へ」→「書き出す」

これで、拡張子がnubmersからcsvへと変換された。ここからは、後半戦。pandasを使って、データを読み込み、numpyへと渡す作業に入る。

 

import pandas as pd 
df = pd.read_csv("sample.csv")

#データを呼ぶ

 

processed_data = df.iloc[0:3,1:100].to_numpy().tolist()

#少し処理しつつ(データ依存だから状況に応じて書き換えていく)、numpyに渡してリストにする。

 

data = np.array(processed_data)

#numpyのarrayにする。

 

これにて無事完了。

 

参考文献

macblog.site

tech-and-investment.com

biotech-lab.org

pip installをしても、pipが見つからない

pythonでinstallする時に、pipをpython3でinstallしたものの、defaultがpythonになっているために、

 

pip install ????

 

としても、

 

command not found pip

 

となるだけである。

その際には

 

python3 -m pip install ????

 

というように、前に「おまじない」を入れることにより、無事にpython3の方に指定ができるようだ。

球面集中現象

このような記事がある。

数学が脳の機能の活性化に一役買っているらしい。

よく計算ドリルが認知症防止に効く。という類いの情報に触れることはあっても、ドーパミンなどの報酬系との関連は初めて聞いたので驚いた。

どうやら、単純な計算問題や音読などで、幅広い部位が活性化するらしい。

逆に難しい問題は前頭葉の一部に活性化が限局するらしい。

 

どの程度信じるかの色づけが難しいが、数学・計算が良いものというところは信じるとする。

 

それで、今日も計算なりをしてみよう。

 

人には向き・不向きがある。

覚えるのが得意。早起きが得意。走るのが速い。仕事が速い。メールが丁寧。

そういったあらゆる良し悪しの尺度を俯瞰的に見ると、平均的な人はいない、という話が出てくる。

(高次元のデータでは、ノイズがどこかしらに強く入ってしまうことになる。いわゆる「球面集中現象」のこと)

それを試してみよう。

 

早起きと仕事の速さ、と言う具合に、2つの指標があって

それらが正規分布で、互いに独立の指標だとする。

すると、こんな感じでばらけるのだろう。


ここで、少し雑だが、原点からの距離を見て貰いたい。角度はただ一様分布からサンプリングしているだけなので、意味はない。(形が綺麗ということはある)

 

ここで、指標を増やすとどうなっていくか考えて見る。

10個の指標ならこんな感じ。

穴が見えてきた。

さらに増やして、23000個にするとどうなるだろうか。

いわゆる、高次元球面に集中する現象が起きる。

import numpy as np
import matplotlib.pyplot as plt
import random
import math 
import matplotlib.cm as cm

N = 1000
n = 23000
 
plt.figure(figsize = (10,10))

for i in range(N):
  s = np.random.normal(0,1,n)
  t = s**2
  u = sum(t)
  v = random.random()* math.pi *2
  plt.scatter(u*math.cos(v),u*math.sin(v),color = cm.hsv(random.random()))

plt.show()

 

「普通」の人はいない、という一種の証明のようなものだろうか。

今日は早く寝よう。