【Pythonでみる科学ニュース】岩手県発!古代植物化石発見とPythonで紐解く植物進化のロマン




岩手県発!古代植物化石発見とPythonで紐解く植物進化のロマン

先日、岩手県で日本最古となる植物化石が発見されたというニュースが駆け巡りました。静岡大学などの研究グループによるこの発見は、約4億8000万年前のオルドビス紀にまで遡るもので、植物進化の研究に新たな光を当てるものとして大きな注目を集めています。

4億8000万年前…気が遠くなるような昔ですが、当時の植物はどのような姿をしていたのでしょうか。想像力を掻き立てられます。今回の発見は、初期の植物が陸上生活に適応する過程を解明する上で、非常に重要な手がかりとなるでしょう。

化石の研究は地道な作業の積み重ねですが、現代の科学技術、特にデータ解析の分野では、プログラミングが不可欠なツールとなっています。そこで、今回はこのニュースにちなんで、植物の進化を連想させるような、ちょっとしたPythonスクリプトを作成してみました。

このスクリプトは、植物の成長を模倣したシンプルなアルゴリズムで、ランダムな成長パターンを描画します。厳密な科学的根拠に基づいたものではありませんが、植物が長い年月をかけて多様化してきた様子を、視覚的に表現することを試みました。

import random
import matplotlib.pyplot as plt

def generate_branch(x, y, angle, length, depth):
    if depth == 0:
        return

    x1 = x + length * math.cos(math.radians(angle))
    y1 = y + length * math.sin(math.radians(angle))

    plt.plot([x, x1], [y, y1], color='green', linewidth=1)

    new_angle1 = angle + random.uniform(-30, 30)
    new_length1 = length * random.uniform(0.7, 0.9)
    generate_branch(x1, y1, new_angle1, new_length1, depth - 1)

    new_angle2 = angle - random.uniform(-30, 30)
    new_length2 = length * random.uniform(0.7, 0.9)
    generate_branch(x1, y1, new_angle2, new_length2, depth - 1)


def main():
    plt.figure(figsize=(8, 6))
    plt.axis('off')
    import math
    generate_branch(0, 0, 90, 5, 7) #  (開始x座標, 開始y座標, 初期角度, 長さ, 深さ)

    plt.show()

if __name__ == "__main__":
    main()

このスクリプトを実行すると、緑色の線で描かれた、まるで植物の枝のような図形が表示されます。generate_branch関数が再帰的に呼び出され、ランダムな角度と長さで枝分かれを繰り返すことで、複雑な形状が生まれます。depthパラメータは、枝分かれの深さを制御し、lengthパラメータは枝の長さを制御します。

このように、プログラミングは一見すると化石研究とは無関係に見えるかもしれませんが、データを視覚化したり、複雑な現象をシミュレーションしたりする強力なツールとして活用できます。

今回の岩手県での発見は、遠い過去の植物の姿を私たちに教えてくれるだけでなく、未来の植物研究においても、新しい可能性を拓くものとなるでしょう。そして、プログラミングのような技術も、その一助となるかもしれません。



科学ニュース一覧に戻る

レッスン概要

◯月額4,000円で質問し放題!!
◯完全オンライン
◯翌日までには必ず返信
◯挫折しない独自の学習メソッド
◯圧倒的高評価!!
◯テキストベースで時間を選ばない
◯高品質なサンプルコード
詳細はこちら
興味がある方はまず質問だけでもどうぞ!