a13n
AI 에이전트를 만들고 클라우드에서 실행합니다
의료 마이크로로봇용 미분 가능 물리 엔진(MIME), 자기 구동·제한 흐름 지원
MIcrorobotics Multiphysics Engine (MIME), Differentiable physics for medical microrobots (currently focused on magnetically actuated and in confined biological flows). Stokeslet BEM, IB-LBM, and DiFVM
개발 도구Python · ShellGitHub @Microrobotics-Simulation-Framework온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기MIcrorobotics Multiphysics Engine (MIME), Differentiable physics for medical microrobots (currently focused on magnetically actuated and in confined biological flows). Stokeslet BEM, IB-LBM, and DiFVM inspired FVM-IBM (with optional GNN correction); built on MADDENING.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
README 전문 보기 ↗MIcrorobotics Multiphysics Engine, on MADDENING.
Watch a steel ball settle in a tube of water
Drive a screw-shaped magnetic robot through a tube
The two tutorial notebooks run in your browser, on Google Colab, with nothing to install: click a badge, then run the cells from the top.
MIME 0.3.0.dev1 is the first release of MIME 0.3, a rewrite on MADDENING 0.4, and a development pre-release: its API, its saved form and its results may change before 0.3.0. It holds the core that turns a declared experiment into a MADDENING graph, the saved form, the scene, the profiles, and the physics of its first experiments: a sphere settling in free space, a magnetic screw swimming in a tube (script A, held to frozen outputs of the 0.2 code with every difference declared before the comparison ran), and the same screw driven by a magnet on a robot arm. More physics arrives with each release; the changelog says what this one holds, and scope and limits what it claims. The documentation is at microrobotica.org/mime/0.3.0.
The 0.2 line, with its nodes, experiments, docs and verification scripts, is at two tags. mime-engine 0.2.0 on PyPI is
the tag v0.2.0, which needs MADDENING 0.2.1 or later within 0.2; pip install "mime-engine<0.3"
installs it. The tag pre-0.3 is the line's last commit, made after 0.2.0 and never uploaded to
PyPI: it runs on MADDENING 0.3.x.
MIME is mime-engine on PyPI (Python 3.12 or later). 0.3 is a pre-release, so pip installs it only when asked to:
pip install --pre mime-engine
A plain pip install mime-engine installs 0.2.0, whose API this README does not describe. mime --version says which
you have. The verify extra (pip install --pre "mime-engine[verify]") adds Hypothesis and MADDENING's verification
harnesses, which mime docs build and MIME's own tests need; a script that only builds and runs experiments needs
neither. For a GPU on Linux add cuda12 (mime-engine[cuda12]); on macOS and Windows a large job belongs on the CPU or
in the cloud (docs/platforms.md says what each platform supports and what is tested).
A tube experiment on the MRS drag rung reads a table of 209 MB that a build never downloads; fetch it once with
mime assets fetch unit_tube_R0.997. To work on MIME itself, see CONTRIBUTING.md.
A steel ball 10 micrometres in radius settling in still water, written with no paperwork. It runs in a few seconds on a laptop's CPU, and nothing in it is a record or a reason:
from mime import Body, Experiment, Medium, State
from mime.dynamics import RigidInertial
from mime.interactions import Drag, Gravity
from mime.observations import SwimSpeed
from mime.scene import Scene, Sphere, Z
from mime.things import Part
from mime.units import kg_per_m3, m, m_per_s, mm_per_s, mPa_s, ms, rad_per_s, um
exp = Experiment("settling_ball", scene=Scene.new(up=Z, units="m"), dt=ms(0.1))
water = exp.add_medium(Medium("water"))
exp.declare("water.density", kg_per_m3(998.0))
exp.declare("water.viscosity", mPa_s(1.0))
ball = exp.add_body(Body("ball", dynamics=RigidInertial(), initial=State(
position=m((0.0, 0.0, 0.0)), orientation=(1.0, 0.0, 0.0, 0.0), velocity=m_per_s((0.0, 0.0, 0.0)),
angular_velocity=rad_per_s((0.0, 0.0, 0.0))), parts={"steel": Part(Sphere(radius=um(10.0)))}))
exp.declare("ball.parts.steel.density", kg_per_m3(7850.0))
exp.attach(Drag.MRS(), body=ball, medium=water)
exp.attach(Gravity(), body=ball, medium=water)
settling = exp.observe(SwimSpeed(ball, along=-Z, after=ms(2.0)))
built = exp.build()
result = built.run(ms(3.0), history=True)
print(result[settling].mean_speed.to(mm_per_s)) # the speed over the last millisecond, in mm/s
print(result.text()) # every output, its flags, the post-run watches, the profile
built.save("settling_ball")
The build took standard gravity by convention, the drag's wall kind from the medium (it fills no region, so free
space), and the MRS drag's spacing, blob and quadrature_refinement from their numerical defaults, each a stated
rule and never a converged value. Stokes's law gives 1.493 mm/s for this ball at standard gravity (9.80665 m/s^2, the convention
the build took); the run gives a speed within two per cent of it, and its result says at what Reynolds number it
settled and that it is inside the range the model is declared for (the watch is in
reading a run's results). That the default spacing is a first look is the subject of
docs/choosing_spacing.md, with the measured cost and accuracy of finer ones.
To see what sealing it takes: the exploratory build left three reasons and three numerical defaults pending, and
says so on every output. Read them from the shell (the mime command is on the path where pip installed it; with
uv, it is uv run mime):
mime pending settling_ball
prints each item in plain words with the Python line to paste, and exits with one while anything is pending (the profiles).
The examples and the tutorials are scripts in the repository, not in the package: run them from a source checkout of
this release, git clone --branch v0.3.0.dev1 https://github.com/Microrobotics-Simulation-Framework/MIME.git.
examples/sphere_settling.py is this ball with its reasons and a comparison
with Stokes's law; --radius-um 50 makes the ball one whose Reynolds number is past the model's range, to see the
flag raised.examples/screw_in_tube.py is a magnetic screw swimming along a tube of
glycerol, every value declared (it needs the tube's table, above);
docs/choosing_spacing.md says what its number is worth.examples/script_a.py is script A, a screw in a tube of water, with records.In the repository, every folder has a README saying what it is for.
src/mime/: the package. Its README is the manifest: what MIME 0.3
is, how a declared experiment becomes a MADDENING graph, the dependency direction, each subpackage's role, and the
status of the rewrite.tests/: MIME's own tests, and the planned test layout.examples/: scripts as a user writes them, each held by a test; script A's reproduction arm first.lab_fixture/: a lab's package in miniature, which registers an entry from outside MIME.docs/: the sources of the documentation, the bibliography and the known-anomalies registry.scripts/: the compliance checks CI runs.MIME is research software. It is not a medical device and is not intended for clinical use.
Apache-2.0. See LICENSE and NOTICE. Releases of the 0.2 line (the tag pre-0.3
and earlier) keep the licence they were distributed under, which NOTICE names.