@zhouhuibin
2021-03-17T15:15:34.000000Z
字数 5357
阅读 1367
Python
import matplotlib.pyplot as plt
import numpy as np
import os
from scipy.interpolate import griddata
from find_data import load_elecdata,load_fulldata
#Sample Size
thickness = 0.1e-3 # unit m
length = 0.8e-3 # unit m
width_sample = 1.35e-3 # unit m
width_silver = 1.35e-3 # unit m
Mag_grid = np.linspace(-8.9,8.9,1001)
HR0 = []
MR0 = []
Hsigma0 = []
Msigma0 = []
Slope = []
Hsigma_Slope = []
nc = []
Mobility = []
NORMMR = ([Mag_grid])
NORMHR = ([Mag_grid])
datafile = r'D:\zhouhuibin\20210220_Lab\data\Fe3Sn2\S1\20181019_PPMS_20191210_update\test\20181018_Fe3Sn2_CH2_MR_CH3_Hall.dat'
T_list = ([2,10])
comment = (['RT','2K','10K'])
axis = 'Magnetic Field,MResistivity,MResistivity,HResistivity,HResistivity'
normaxis = 'Mag_grid,MR_norm,MR_norm,HR_norm,HR_norm'
unit = 'Oe,Ohm.m,uOhm.cm,Ohm.m,uOhm.cm'
axis_RT = 'Temperature,Resistance,Resistivity,Resistivity'
unit_RT = 'K,Ohm,Ohm.m,uOhm.cm'
# resulting data output
folder = 'Norm DATA output'
maindir = r'D:\zhouhuibin\20210220_Lab\data\Fe3Sn2\S1\20181019_PPMS_20191210_update\test\%s'%folder
savepath = r'D:\zhouhuibin\20210220_Lab\data\Fe3Sn2\S1\20181019_PPMS_20191210_update\test\figs'
os.chdir(maindir)
# data separate
row_min = [1]
row_max = []
data = np.array(load_fulldata(datafile,'[Data]'))
T = data[:,2]
Magnetic_Field = data[:,3]/1e4
num = 0
for i in range(len(T)):
if num == 0 and (abs(Magnetic_Field[i])-abs(Magnetic_Field[i-1])) >= 2:
print Magnetic_Field[0],Magnetic_Field[-1],
num = num+1
print i
row_max.append(i)
row_min.append(i+1)
if abs(T[i]-T[i-1]) >= 1 and abs(Magnetic_Field[i-1]) >= 0.1 and abs(Magnetic_Field[i]) >= 0.1 and num > 0:
num = num+1
row_min.append(i+1)
row_max.append(i)
row_max.append(len(T))
print row_min,row_max,len(row_min),len(row_max)
for i in range(len(row_min)):
print str(i)
No = i+1
if No == 1:
# read file
data = np.array(load_elecdata(datafile,'[Data]',row_min[i],row_max[i]))
Temperature = data[:,2]
Resistance = data[:,5]
Resistivity = Resistance*(width_sample*thickness)/length
# file name and write
filename = os.path.join(maindir,'001_RT.txt')
openfile=open(filename,'w')
openfile.write(axis_RT+'\n'+unit_RT+'\n'+('RT,')*4+'\n')
openfile=open(filename,'a')
for j in range(len(Temperature)):
openfile.write(str(Temperature[j])+','+str(Resistance[j])+','+str(Resistivity[j])+','+str(1e8*Resistivity[j])+'\n')
openfile.close()
if No >= 2:
# readfile
data = np.array(load_elecdata(datafile,'[Data]',row_min[i],row_max[i]))
Magnetic_Field = data[:,3]/1e4
MResistance = data[:,5]
HResistance = data[:,7]
# Normalization
MResistivity = MResistance*(width_sample*thickness)/length
MR_interpolate = griddata(Magnetic_Field, MResistivity,Mag_grid, method='linear') #MR interpolate#
MR_norm = []
HResistivity = HResistance*thickness*(width_sample/width_silver)
HR_interpolate = griddata(Magnetic_Field, HResistivity,Mag_grid, method='linear') #MR interpolate#
HR_norm = []
for j in range(len(Mag_grid)):
# MResistivity symmetry
mr_norm = (MR_interpolate[j]+MR_interpolate[-(j+1)])/2
MR_norm.append(mr_norm)
# HResistivity antisymmetry
hr_norm = (HR_interpolate[j]-HR_interpolate[-(j+1)])/2
HR_norm.append(hr_norm)
#print Mag_select
# plot HR fitting result
plt.clf()
plt.cla()
plt.plot(Mag_grid,HR_norm,'b-')
plt.savefig(os.path.join(savepath,comment[i]+'_Hall.png'))
#plt.show()
NORMMR = np.r_[NORMMR,[MR_norm]]
NORMHR = np.r_[NORMHR,[HR_norm]]
NORMMR = np.transpose(NORMMR)
NORMHR = np.transpose(NORMHR)
# data processing and output
# NormMR Title
NormMR = os.path.join(maindir,'004_NormMR.txt')
np.savetxt(NormMR, NORMMR)
openfile=open(NormMR,'r+')
content = openfile.read()
openfile.seek(0, 0)
openfile.write('Magnetic_Field\t'+('NormMR\t')*(len(comment)-1)+'\n')
openfile.write('T\t'+('Ohm.m\t')*(len(comment)-1)+'\n')
openfile.write(comment[1]+'\t')
for i in range(len(comment)):
if i >= 1:
openfile.write((comment[i]+'\t'))
openfile.write('\n'+content)
openfile.close()
# NormHR Title
NormHR = os.path.join(maindir,'005_NormHR.txt')
np.savetxt(NormHR, NORMHR)
openfile=open(NormHR,'r+')
content = openfile.read()
openfile.seek(0, 0)
openfile.write('Magnetic_Field\t'+('NormHR\t')*(len(comment)-1)+'\n')
openfile.write('T\t'+('Ohm.m\t')*(len(comment)-1)+'\n')
openfile.write(comment[1]+'\t')
for i in range(len(comment)):
if i >= 1:
openfile.write((comment[i]+'\t'))
openfile.write('\n'+content)
openfile.close()
def load_elecdata(infilename, key_word, row_min, row_max):
# infilename should be a string enclosed by ''
ifile = open (infilename,'r')
lines= ifile.readlines()
line_no = 0
found_string = False
for line in lines:
if key_word in line:
#if 'Tableau' in line:
print ('found in line '+ str(line_no))
found_string = True
break
line_no += 1
if not found_string:
print ('string not found');#sys.exit(1)
if found_string:
numbers = []
for line in lines[line_no+2:]:
row_num = lines.index(line)-(line_no+2)
#print row_num
if row_num >= (row_min-1) and row_num <= (row_max-1):
line = line.replace(',',' ')
words = line.split()
numbers_row = []
for i1 in range(len(words)):
number = float(words[i1])
numbers_row.append(number)
numbers.append(numbers_row)
return numbers
ifile.close()
def load_fulldata(infilename, key_word):
# infilename should be a string enclosed by ''
ifile = open (infilename,'r') # open datafile
lines= ifile.readlines() #read data
line_no = 0 # define line number
found_string = False
for line in lines: # search for starting mark of data
if key_word in line:
#if 'Tableau' in line:
print ('found in line '+ str(line_no))
found_string = True
break
line_no += 1
if not found_string:
print ('string not found');
if found_string:
numbers = [] # define empty data matrix
for line in lines[line_no+2:]: # iterate and check line from second row after starting mark
line = line.replace(',',' ') # replace ',' with 'tab' key
words = line.split()
numbers_row = []
for i1 in range(len(words)):
number = float(words[i1])
numbers_row.append(number)
numbers.append(numbers_row)
return numbers
ifile.close()