distance of vaa3d

本文介绍了一种使用Vaa3D软件计算神经元间距离的方法,并通过Python脚本批量处理文件夹内的数据,自动汇总计算结果为CSV文件。此外,还实现了从MySQL数据库读取数据的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import os
os.chdir("C:/Program Files/Vaa3D-3.20/bin")
import re
import time
from sqlalchemy import create_engine
import MySQLdb
import pandas as pd



def calculate_dist(path):
    pathDir =  os.listdir(path)
    for allDir in pathDir:
        filepath = path + '/'+allDir
        file = os.listdir(filepath)
        #print file  

        for i in range(len(file)):
            if 'swc' in file[i]:
                for item in  os.listdir(filepath+'/'+file[1-i]):
                    os.system("vaa3d.exe /x neuron_distance /f neuron_distance /i {0} {1} /o {2}.txt".
                        format(filepath+'/'+file[i],filepath+'/'+file[1-i]+'/'+item,filepath+'/'+item))

def get_result():
    FMST = []
    MST = []
    Most = []
    Simple = []
    meanshift = []
    APP2 = []
    pathDir =  os.listdir(path)
    for allDir in pathDir:
        filepath = path + '/'+allDir
        file = os.listdir(filepath)
        for item in file:
            if 'fastmarching' in item:
                nn = get_word(file,filepath,item)
                FMST.append(nn)
            if 'MST' in item:
                nn = get_word(file,filepath,item)
                MST.append(nn)
            if 'MOST' in item:
                nn = get_word(file,filepath,item)
                Most.append(nn)
            if 'simple' in item:
                nn = get_word(file,filepath,item)
                Simple.append(nn)
            if 'meanshift' in item:
                nn = get_word(file,filepath,item)
                meanshift.append(nn)   
            if 'app2' in item:
                nn = get_word(file,filepath,item)
                APP2.append(nn)

    columns = ['gold','method','esa','dsa','pds','md']
    result1 = pd.DataFrame(FMST)
    result1.columns = columns
    result1 = result1.set_index('gold')
    result2 = pd.DataFrame(MST)
    result2.columns = columns
    result2 = result2.set_index('gold')
    result3 = pd.DataFrame(Most)
    result3.columns = columns
    result3 = result3.set_index('gold')
    result4 = pd.DataFrame(Simple)
    result4.columns = columns
    result4 = result4.set_index('gold')
    result5 = pd.DataFrame(meanshift)
    result5.columns = columns
    result5 = result5.set_index('gold')
    result6 = pd.DataFrame(APP2)
    result6.columns = columns
    result6 = result6.set_index('gold')

    result = pd.concat([pd.concat([pd.concat([pd.concat([pd.concat([result1,result2],axis = 1),result3],axis = 1),result4],axis = 1),result5],axis = 1),result6],axis = 1)


    result.to_csv('F:/result.csv')
    #result.to_sql('v3d_dis',engine,if_exists='replace',index=True)
    print result

def get_word(file,filepath,item):
    nn = []
    nn.append(file[0])
    nn.append(item)
    with open(filepath+'/'+item) as f:
        for line in f:
            res = re.findall(r"= ([0-9\.]+)",line)
            if len(res)>0:
                nn.append(res[0])        
    return nn


if __name__ == "__main__":
    start = time.clock()
    conn = MySQLdb.connect(host='localhost',port = 3306,user='haoming',passwd='111111',db ='project',charset='utf8')
    cur = conn.cursor()
    engine =create_engine('mysql+mysqldb://haoming:111111@localhost:3306/project?charset=utf8')

    path = "F:/fruitfly_with_gold"
    #calculate_dist(path)
    get_result()


    print "Over"    
    end = time.clock()
    print end-start







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值