Skip to content
Snippets Groups Projects
ngspice_get_fig.py 1.36 KiB
Newer Older
Xin Shi's avatar
Xin Shi committed
#!/usr/bin/env python3

import sys
Chenxi Fu's avatar
Chenxi Fu committed
import os

Xin Shi's avatar
Xin Shi committed
import numpy
Chenxi Fu's avatar
Chenxi Fu committed
import ROOT

from util.output import output

Chenxi Fu's avatar
Chenxi Fu committed
# TODO: Need to be TOTALLY rewritten
Xin Shi's avatar
Xin Shi committed
def read_file(file_path,file_name):
    with open(file_path + '/' + file_name) as f:
        lines = f.readlines()
        time,volt = [],[]

        for line in lines:
            time.append(float(line.split()[0])*1e9)
            volt.append(float(line.split()[1])*1e3)

    time = numpy.array(time,dtype='float64')
    volt = numpy.array(volt,dtype='float64')

    return time,volt

Chenxi Fu's avatar
Chenxi Fu committed
def main(elec_name):
    file_path = output(__file__)
    fig_name = os.path.join(file_path, elec_name+'.pdf')
Xin Shi's avatar
Xin Shi committed
    time,volt = [],[]

Chenxi Fu's avatar
Chenxi Fu committed
    time,volt = read_file(file_path, elec_name+'.raw')
Xin Shi's avatar
Xin Shi committed
    length = len(time)
Chenxi Fu's avatar
Chenxi Fu committed
    t_min, t_max = time[0], time[-1]
Xin Shi's avatar
Xin Shi committed

    ROOT.gROOT.SetBatch()    
    c = ROOT.TCanvas('c','c',700,600)
    f1 = ROOT.TGraph(length,time,volt)
    f1.SetTitle(' ')

    f1.SetLineColor(2)
    f1.SetLineWidth(2)

    f1.GetXaxis().SetTitle('Time [ns]')
Chenxi Fu's avatar
Chenxi Fu committed
    f1.GetXaxis().SetLimits(t_min, t_max)
Xin Shi's avatar
Xin Shi committed
    f1.GetXaxis().CenterTitle()
    f1.GetXaxis().SetTitleSize(0.05)
    f1.GetXaxis().SetTitleOffset(0.8)

    f1.GetYaxis().SetTitle('Voltage [mV]')
    f1.GetYaxis().CenterTitle()
    f1.GetYaxis().SetTitleSize(0.05)
    f1.GetYaxis().SetTitleOffset(0.7)

    c.cd()
    f1.Draw('AL')
    c.SaveAs(fig_name)

if __name__ == '__main__':
    main()