리빙 포인트

자기가 쓰고 있는 프로그래밍 언어에서 로그 함수의 밑이 어떤 것인지 모를 때에는 원하는 밑수에 로그값을 취해서 사용하려는 로그 함수를 나눠주면 좋다.

광섬유 가공 후 데이터를 자동으로 분석하는 프로그램

#!/usr/bin/env python

# -*- coding: CP949 -*-

#

# generated by wxGlade 0.7.2 on Tue Apr 05 01:49:01 2016

#

# This is a converting program from thorlabs powermeter datafile taken from thorlab official data acquisition program to radius vs power after fiber taper process.

# IF you want to use this program for your own purpose except learning python and programming, you have to ask me licence policy and copyright.

# snowall@kaist.ac.kr / snowall@gmail.com / Keehwan Nam, Physics department, KAIST. 2016.

#

import wx

# begin wxGlade: dependencies

import gettext

# end wxGlade

# begin wxGlade: extracode

# end wxGlade

import numpy as np

import os

import re

import sys

import struct

f= open(‘sample.png’, ‘rb’)

w, h = struct.unpack(‘>LL’, f.read()[16:24])

displaysizeX = int(w)

displaysizeY = int(h)

f.close()

reload(sys)

sys.setdefaultencoding(‘cp949’)

#~ displaysizeX=1280

#~ displaysizeY=1024

x,y=0,0

a=0

b=0

c=0

sec=0

minute=0

hours=0

msec=0

class MyDialog(wx.Dialog):

x00=0

y00=0

def __init__(self, parent, id, title):

wx.Dialog.__init__(self, parent, id, title, size=(displaysizeX,displaysizeY))

self.canvas = wx.StaticBitmap(self, -1, wx.Bitmap(“sample.png”, wx.BITMAP_TYPE_ANY))

self.canvas.Bind(wx.EVT_LEFT_DOWN, self.positionnow)

def positionnow(self, event):

self.x00=wx.MouseEvent.GetX(event)

self.y00=wx.MouseEvent.GetY(event)

print((wx.MouseEvent.GetX(event),wx.MouseEvent.GetY(event)))

def drawTick(self, pl):

self.mydc = wx.MemoryDC()

self.canvas2 = wx.Bitmap(“sample.png”, wx.BITMAP_TYPE_ANY)

self.mydc.SelectObject(self.canvas2)

self.mypen=wx.Pen(wx.Colour(255,0,0),5)

self.mypen.SetWidth(1)

self.mydc.SetPen(self.mypen)

self.mydc.DrawLines(pl)

self.mydc.SelectObject(wx.NullBitmap)

self.canvas.SetBitmap(self.canvas2)

self.mydc = None

self.canvas = wx.StaticBitmap(self, -1, self.canvas2)

return

def graphroutine(self, myf):

self.convertedData=[]

self.pointlist=[]

src=open(myf, “r”)

src.readline()

d=src.readline()

a=d.split(” “)

self.mini=np.inf

self.maxi=0.

while True:

d=src.readline()

if d==””:

break

a=d.split(” “)

msec=float(((a[1]).split(“.”))[1])*0.001

sec=float(a[2].split(“:”)[2].split(“\t”)[0])

minute=float((a[2]).split(“:”)[1])*60.

hours=float((a[2]).split(“:”)[0])*3600.

self.time=msec+sec+minute+hours

self.convertedData+=[[self.time,float(a[2].split(“:”)[2].split(“\t”)[1])]]

if self.convertedData[-1][1] self.mini=self.convertedData[-1][1]

if self.convertedData[-1][1]>self.maxi:

self.maxi=self.convertedData[-1][1]

self.time0=self.convertedData[0][0]

self.time1=self.convertedData[-1][0]

self.timescale=displaysizeX/(self.time1-self.time0)

self.vertscale=displaysizeY/(self.maxi-self.mini)

for cd in self.convertedData:

self.pointlist+=[[np.ceil((cd[0]-self.time0)*self.timescale),displaysizeY-np.ceil((cd[1]-self.mini)*self.vertscale)]]

self.drawTick(self.pointlist)

src.flush()

src.close()

return

def findV(self,no):

logfile=open(“log.csv”,”r”)

try:

while True:

d=logfile.readline()

if d==””:

break

a=d.split(“,”)

if a[0]==str(no):

logfile.close()

return a

except:

logfile.close()

return “0”

def inverse_ratio(self,logdata):

return np.sqrt(((2.*float(logdata[15]))-float(logdata[14]))/((2.*float(logdata[15]))+float(logdata[14])))

def converting(self,f):

self.time0=(self.x00/self.timescale)+self.time0

tar=open(f[:-4]+”_processed.txt”, “w”)

errorlist=open(“errorlist.txt”,”a”)

plot=open(f[:-4]+”.gpl”, “w”)

shotnumber=re.search(“\d+”,f.split(“\\”)[-1]).group()

expcondition=self.findV(shotnumber)

shotlog=self.inverse_ratio(expcondition)

try:

for cd in self.convertedData:

tar.writelines(str(cd[0])+”\t”+str(cd[1])+”\t”+str(float(expcondition[9])*np.power(shotlog,(cd[0]-self.time0)/(float(expcondition[11])/float(expcondition[15]))))+”\t”+str(cd[1])+”\n”)

plot.writelines(“set logscale x\nplot \””+(f.split(“\\”)[-1])[:-4]+”_processed.txt\” using 3:4 w l “)

except:

errorlist.writelines(f+”\n”)

print “error”

finally:

tar.flush()

tar.close()

plot.flush()

plot.close()

class MainPlotFrame(wx.Frame):

def __init__(self, *args, **kwds):

# begin wxGlade: MainPlotFrame.__init__

kwds[“style”] = wx.DEFAULT_FRAME_STYLE

wx.Frame.__init__(self, *args, **kwds)

self.dig = wx.FileDialog(None, message=”Choose data files”, style = wx.FD_MULTIPLE)

self.dia = MyDialog(self, -1, ‘Close after click!’)

self.__set_properties()

self.__do_layout()

if self.dig.ShowModal() == wx.ID_OK:

for fn in self.dig.GetPaths():

self.dia.graphroutine(fn)

self.dia.ShowModal()

self.dia.converting(fn)

self.Close()

# end wxGlade

def __set_properties(self):

# begin wxGlade: MainPlotFrame.__set_properties

self.SetTitle((“frame_1”))

self.SetSize((displaysizeX, displaysizeY))

# end wxGlade

def __do_layout(self):

# begin wxGlade: MainPlotFrame.__do_layout

sizer_1 = wx.BoxSizer(wx.VERTICAL)

self.SetSizer(sizer_1)

self.Layout()

# end wxGlade

# end of class MainPlotFrame

if __name__ == “__main__”:

app = wx.App(0)

#~ wx.InitAllImageHandlers()

frame_main = MainPlotFrame(None, -1, “”)

frame_main.Show()

app.MainLoop()

윈도우에 선 긋는 파이썬 예제

#!/usr/bin/env python

# -*- coding: CP949 -*-

#

# generated by wxGlade 0.7.2 on Tue Apr 05 01:49:01 2016

#

import wx

# begin wxGlade: dependencies

import gettext

# end wxGlade

# begin wxGlade: extracode

# end wxGlade

class MainPlotFrame(wx.Frame):

canvas = 1

x00=0

y00=0

def __init__(self, *args, **kwds):

# begin wxGlade: MainPlotFrame.__init__

kwds[“style”] = wx.DEFAULT_FRAME_STYLE

wx.Frame.__init__(self, *args, **kwds)

self.canvas = wx.StaticBitmap(self, -1, wx.Bitmap(“sample.png”, wx.BITMAP_TYPE_ANY))

self.canvas.Bind(wx.EVT_LEFT_DOWN, self.positionnow)

self.__set_properties()

self.__do_layout()

# end wxGlade

def __set_properties(self):

# begin wxGlade: MainPlotFrame.__set_properties

self.SetTitle((“frame_1”))

self.SetSize((1024, 768))

# end wxGlade

def __do_layout(self):

# begin wxGlade: MainPlotFrame.__do_layout

sizer_1 = wx.BoxSizer(wx.VERTICAL)

self.SetSizer(sizer_1)

self.Layout()

# end wxGlade

def positionnow(self, event):

self.x00=wx.MouseEvent.GetX(event)

self.y00=wx.MouseEvent.GetY(event)

print((wx.MouseEvent.GetX(event),wx.MouseEvent.GetY(event)))

self.drawTick(self.x00,self.y00,self.x00+100,self.y00-30)

def drawTick(self, x0, y0, x1, y1):

self.mydc = wx.MemoryDC()

frame_main.canvas2 = wx.Bitmap(“sample.png”, wx.BITMAP_TYPE_ANY)

self.mydc.SelectObject(self.canvas2)

self.mydc.SetPen(wx.Pen(self.colorDecision(),1))

self.mydc.DrawLine(x0, y0, x1, y1)

self.mydc.SelectObject(wx.NullBitmap)

self.canvas.SetBitmap(self.canvas2)

self.mydc = None

self.canvas = wx.StaticBitmap(self, -1, self.canvas2)

return 0

def colorDecision(self):

return wx.Colour(255, 0,0)

# end of class MainPlotFrame

# end of class MainPlotFrame

if __name__ == “__main__”:

app = wx.App(0)

#~ wx.InitAllImageHandlers()

frame_main = MainPlotFrame(None, -1, “”)

frame_main.Show()

app.MainLoop()

언젠가는 써먹겠지…

선거 공보 리뷰

몇년만인지 잘 모르겠지만 아무튼 선거철이다.

우리동네 국회의원 후보들의 정책과 공약을 살펴보자.

1. 이재선

새누리당이다. 대표 공약은 여고 신설, 박물관 건립, 도서관 건립 등등이 있다.

공약과 정책을 보니 딱히 깔만한 내용은 없다. 박범계 후보랑 비교해 보자.

2. 박범계

더불어민주당이다.

흥미로운건 1번에 이재선 후보가 “명품도서관 건립”을 내걸었는데, 현 국회의원이기도 한 박범계 후보의 대표 업적에 월평도서관 신축예산 확보가 있다. 월평도서관이 명품이 아니라는 건가.

아무튼. 이재선 후보에는 정부대전청사의 빈 땅을 대전시로 이관시킨다는 내용이 있는데, 박범계 후보에는 정부대전청사를 확장한다는 내용이 있다. 이게 “에코, 스마트 푸른 서구”라는 항목 밑에 있는데 환경친화적이거나 똘똘한 서구와 어떤 관계가 있는지는 모르겠지만 아무튼 정책이 충돌한다.

이재선 후보의 공약에는 도서관 신설이 하나 있는데, 박범계 후보의 공약에는 “월평도서관 완공”에 붙여서 탄방 어린이 도서관과 만년 어린이 도서관 신설이 추가로 있다.

거대 정당 국회의원 후보들이 앞다투어 도서관 신설을 공약으로 내거는 걸 보니 아무래도 이 동네는 책읽기를 정말 좋아하는 것 같다.

그리고 여고 신설 추진은 박범계 후보 공약에도 있다. 대전에 여아가 그렇게 많이 태어난 걸까…

3. 이동규

국민의당 후보다.

8대 공약으로 간결하게 정리했다.

1- 지방대학생을 국비유학생 선발하여 외국 유학을 보낸다. 지방대 졸업생의 10%를 국비 유학생으로 보낸다고 한다. 전국 대학생이 약 300만명이다.

http://biz.heraldcorp.com/view.php?ud=20150827000557

그럼 대학은 대략 4년제이므로 대략 1년에 80만명 정도가 졸업하고, 그중 10%를 선발하면 8만명이다. 지방대학이라고 했으니 서울 빼고 그 절반이라고 치자. 연간 4만명이다. 해외 유학을 국비 장학생으로 보내는 사업이면 전액 장학금이어야 한다.

http://blogkorea.collegetuitioncompare.com/2013/07/us-graduate-school-master-course-tuition-cost.html

대충 미국 대학의 석사과정 학비가 연간 2천만원 정도 들어간다. 뭐 생활비 포함해서 그렇게 든다고 치자. 4만명한테 2천만원씩 주면 8천억원 정도 예산이 들어간다. 대충 퉁 쳐서 1조원이라고 추산하자.

http://www.moe.go.kr/web/100026/ko/board/view.do?bbsId=294&encodeYn=N&pageSize=10&currentPage=0&boardSeq=56778&mode=view

교육부 1년 예산이 대충 55조원이고, 그중 10조원이 고등교육 예산이다. 근데 그중 1조원을 4만명한테 쓴다고 한다. 그럼 나머지 296만명이 9조원으로 혜택을 받아야 한다는 소리다. 과연 이런 정책을 대학생들이 좋아할 것인가.

2 – 초등학생들을 단기 해외 어학연수를 보내는데, 이걸 의무적으로 시행한다.

외국인 앞에서 영어로 말 한마디 못하는 현실에서 세계화 시대에 뒤처질 수 밖에 없다며 이런 정책을 제안했다. 예산은 뭐 그렇다 치고 (이것도 대충 1조원 정도 들겠지.) 문제의 핵심을 잘못 짚었다. 외국인 앞에서 영어를 못하는 건 어학연수를 안 다녀와서 그런게 아니라 영어 교육이 잘못되어서 그렇다. 어학연수를 간다면 외국에서 한국어를 쓸 일이 없는 환경에서 살아야 하는데, 초등학생들을 보호자 없이 보내는 것도 문제고, 보호자가 있으면 한국어를 쓸 일이 있으니 영어가 기대한만큼 늘지 않는다. 초등학생들을 단체로 외국으로 보내는데 다 떼어서 보낼 수도 없고, 무리지어 보낸다면 얘들이 영어로 처음 보는 외국인이랑 놀까? 지들끼리 놀겠지.

그리고 영어를 못하는게 세계화에 방해가 되는 것이 아니다. 한국의 세계화에 방해가 되는건 세계에 중요한 언어가 영어밖에 없다고 생각하는 사람들이다.

3 – 어린이 재활병원의 전국 광역시도별 구축.

국립으로 하고 진료비와 입원비 등을 저렴하게 한다면 좋은 정책이다.

4 – 국가유공자와 직계후손에 대한 복지후생 강화

이것도 물론 제대로 시행된다면 반대할 이유가 없는 정책이다.

5 – 서구 분구 추진

이건 잘 모르겠다. 서구에서 둔산구가 따로 떨어져 나온다면 행정 서비스가 좋아지긴 하겠지.

6 – 국세 10% 선납제도 시행

국세를 미리 받아서 연금공단을 설립한다는데, 연금공단을 설립하는 건 국세의 사용처를 정하는 것이므로 선납과는 무관하다. 선납한 국세를 연금공단 설립에 다 퍼붓겠다는 건가. 뭔가 이상한 정책이다.

7 – 출입국 간소화 및 국적취득 간소화

다양한 해외인재 흡수를 목표로 한다는데, 과연 해외의 ‘인재’들이 헬조선에 이민을 올 것인가. 올 수도 있겠지. 국내의 인재들도 탈조선을 꿈꾸는 이 현실에서.

8 – 남북통일

일개 국회의원이 할 수 없는 일이다. 대통령 공약이면 모를까.

4. 김윤기

정의당이다.

국회의원 연봉을 절반으로 줄이고 특권을 없앤다고 한다. 특권을 없애는건 좋은데, 연봉을 절반으로 줄이면 뇌물 수수가 더 늘지 않을까. 물론 그렇다고 지금 뇌물을 안 받는건 아니겠지만.

대충 공약 내용을 보니 뭔가 꿈같은 소리가 많다. 좋긴 한데 좋기만 한 것 같진 않다.

서민의 삶 속에서 성장했다는 부분은 믿음직스럽긴 하다.

비례대표들…

몇가지 흥미로운 사례가 있다.

더불어민주당에는 물리학 전공자가 비례대표 7번 문미옥 후보가 있다. 국민의당에는 물리학 전공자가 비례대표 1번, 2번으로 두명이나 있다. 신용현 후보와 오세정 후보다.

국민의당 대표가 인맥이 인맥이다보니 비례대표들이 거의 다 박사급이다.

새누리당은 물리학과는 없고, 화학과 박사가 한명 있다. (보니까 공학 박사는 많다.)

개혁국민신당이라는 정당이 있는데, 대표가 선거공보를 활용해서 자기 회사 광고를 하고 있다. 마케팅 천재인 것 같다.

정의당, 노동당, 녹색당은 대충 맘에는 든다. 민중연합당은 민주노동당의 후신이라고 한다.

친반연합당은 과연 반기문 UN사무총장이 당원일까 궁금하다. 만약 당원이라면 그건 그거다로 더 무섭지만.

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑