gprmax在colab中正演

一.代码

1.初始化

!pip install -q condacolab
import condacolab
condacolab.install()
# After restarting, ignore the warning it is normal
import condacolab
condacolab.check()

2.下载gprmax

!git clone https://github.com/gprMax/gprMax.git
!ls

3.下载pycuda

!pip install pycuda

4.? 

!ls

5.下载gprmax

%cd gprMax   #%cd 不是% cd(没空格)
!mamba env update -n base -f conda_env.yml
# build
!conda activate gprMax
!python setup.py build
!python setup.py install

 6.加载Google drive

from google.colab import drive
drive.mount('/content/drive')

7.加载opencv包

!pip3 install opencv-python

8.先cd到工作目录,如何运行python(.in文件要与simulation文件在一起)

%cd /content/drive/MyDrive/
!python simulation.py

simulation文件如下 

import sys
import cv2
import matplotlib.animation as animation
sys.path.append('D:/my_gprmax/gprMax')  # 将gprMax安装路径添加到系统路径中,以便能够导入gprMax模块

import os
from gprMax.gprMax import api  # 导入gprMax库的api模块
import numpy as np
from tools.plot_Bscan import get_output_data, mpl_plot  # 导入模块tools.plot_Bscan中的get_output_data和mpl_plot函数
from tools.outputfiles_merge import merge_files  # 导入模块tools.outputfiles_merge中的merge_files函数
import matplotlib.pyplot as plt  # 导入matplotlib.pyplot库

root = 'D:/gprmax_code/model'  # 1. 设定输入文件夹路径
files = os.listdir(root)  # 获取文件夹中的文件列表
for file in files:
    if file.endswith('.in'):  # 如果文件以.in结尾

        num_scan = 50  # 设定道数
        # print(file)
        filename = root + '/' + file  # 构建完整的文件路径
        fi = filename[0:-3]  # 去除文件名后的.txt后缀,保留路径

        api(filename, n=num_scan,gpu={0})  # 调用gprMax库的api函数进行模拟计算,给定mpi参数

        merge_files(fi, removefiles=True)  # 合并输出文件

        '''B扫描绘图'''

        # 获取回波数据
        filename_b = fi + '_merged.out'  # 合并后的输出文件名
        rxnumber = 1  # 接收器编号
        rxcomponent = 'Ez'  # 接收器分量
        outputdata, dt = get_output_data(filename_b, rxnumber, rxcomponent)  # 获取输出数据和采样间隔

        fi2 = fi.split('/')[-1]  # 获取文件名,去除路径部分

        # 将数据分割成每100列一组
        split_outputdata = np.hsplit(outputdata, outputdata.shape[1] // 10)

        # 创建一个视频编写器
        fourcc = cv2.VideoWriter_fourcc(*'mp4v')
        video = cv2.VideoWriter('D:/gprmax_code/model/' + fi2 + '.mp4', fourcc, 20.0, (10, outputdata.shape[0]))

        for i, data in enumerate(split_outputdata):
            # 绘图
            fig = plt.figure()
            im = plt.imshow(data, extent=[0, data.shape[1], data.shape[0], 0], interpolation='quadric',
                    aspect='auto', cmap='gray',
                    vmin=-np.amax(np.abs(data)), vmax=np.amax(np.abs(data))) 

         # 将matplotlib图像转换为OpenCV图像
            fig.canvas.draw()
            img = np.fromstring(fig.canvas.tostring_rgb(), dtype=np.uint8, sep='')
            img = img.reshape(fig.canvas.get_width_height()[::-1] + (3,))
            img = cv2.cvtColor(img,cv2.COLOR_RGB2BGR)

            # 将图像写入视频
            video.write(img)

    # 关闭视频编写器
        video.release()

        # plt.show()

防掉线

(1)进入Colab的notebook界面,按快捷键F12,打开开发者模式,选择console
中文版选择控制台

(2)复制并运行代码
复制下面的代码,粘贴在上图下方的红框处,然后回车(enter)

function ClickConnect(){
  console.log("Working"); 
  document
    .querySelector("#top-toolbar > colab-connect-button")
    .shadowRoot
    .querySelector("#connect")
    .click()
}
 
setInterval(ClickConnect,60000)


!!!!本文转载自https://groups.google.com/g/gprmax/c/J363MrfALq4 

侵权 contact me 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值