여기 여러가지 언어로 포팅되어 있는 particle tracking 프로그램의 링크이다. 맨처음 John Crocker and David Grier 에 의해 IDL로 씌여졌지만 점차 Matlab등의 다른 언어로 포팅되어졌다. 나의 계획은 particle tracking 프로그램을 Core는 C/C++로 작성하고 GUI는 LabVIEW로 작성할 생각이다.

- IDL
     Particle tracking using IDL by John C. Crocker and Eric R. Weeks
        http://www.physics.emory.edu/~weeks/idl/

    Particle Tracking Routines by Crocker and Grier
        http://physics.nyu.edu/grierlab/software.html
    
- Matlab
     The Matlab Particle Tracking Code Repository by Daniel Blair and Eric Dufresne
        http://physics.georgetown.edu/matlab/index.html

    Particle pretracking and tracking, and 2D feature finding by Maria Kilfoil
        http://www.physics.mcgill.ca/~kilfoil/downloads.html   

    MATLAB toolbox for particle tracking by ETH Zurich
        http://www.mosaic.ethz.ch/Downloads/matlabtracker


- Python
     IMP: a python toolbox for Image Processing by Tamás Haraszti
        http://www.rzuser.uni-heidelberg.de/~ge6/Programing/IMP.html


- LabVIEW
     LabVIEW-based particle tracking software by Graham Milne
        http://faculty.washington.edu/gmilne/tracker.htm


- c/c++
     PLuTARC is a an automated target-locking system for confocal microscopy.
        http://plutarc.sourceforge.net/   

    Particle Identification and Tracking by Thomas A Caswell
        http://jfi.uchicago.edu/~tcaswell/track_doc/index.html





Posted by yonggun

댓글을 달아 주세요

몇년 전부터 c110 tabletpc를 사용해오고 있다. 가끔씩 리눅스를 사용할 필요가 있을 때 wubi를 이용해서 ubuntu를 설치하곤 했지만 그때마다 삭제해버렸다. 내 하드디스크 용량이 작은 이유도 있지만 무엇보다도 wireless 문제가 컸다. suspend 이 후에 무선랜이 작동을 중지해 버린다. 이 문제를 구글링해보았지만 한가지 방법밖에 없었다. acerhk라는 모듈을 사용하는 것. 이번에도 리눅스에서 프로그래밍을 할 일이 있어 ubuntu를 새로 깔았다. 아마도 한 동안 사용해야 할 것같아서 acerhk를 컴파일하기로 했다.

먼저 소스를 다운받는다.
http://www.cakey.de/acerhk/archives/acerhk-0.5.35.tar.bz2

사용하는 kernel의 header 파일을 설치한다. ubuntu 8.04 의 경우 2.6.24-19-generic를 설치하였다.
sudo apt-get install linux-headers-2.6.24-19-generic

이제 다운받은 소스를 압축을 풀고 컴파일을 한다.
tar xvfj acerhk-0.5.35.tar.bz2
cd acerhk-0.5.35
make
sudo make install
이 과정에서 컴파일 에러가 났다. 그래서 간단하게 아래와 같이 하니까 문제없이 컴파일되었다.
/usr/src/linux-headers-2.6.24-19-generic/scripts/Makefile.build 의 47-49번째 라인을 다음과 같이 comment out 하였다.
        #ifneq ("$(save-cflags)","$(CFLAGS)")
        #        $(error CFLAGS was changed in "$(kbuild-file)". Fix it to use EXTRA_CFLAGS)
        #endif

이제 아래와 같이 하면 자동으로 suspend에서 돌아올 때 무선랜이 작동된다고 하지만 내 경우에는 안되었다.
sudo echo "echo 1 > /proc/driver/acerhk/wirelessled" > /etc/acpi/resume.d/60-acer-wireless-led.sh

그냥 터미널에서 매번 위 명령을 내린다.
sudo echo 1 > /proc/driver/acerhk/wirelessled

이제 모든게 잘 작동된다.

----------------------------------------------------------------------
Feb. 2 2009
Ubuntu 8.04에서는 위와 같이 컴파일해도 문제가 없었는데 8.10에서 컴파일이 제대로 되지 않았다. 아래와 같은 에러를 계속 뿜었다. 구글링을 해보아도 여기에 대한 질문만 있지 답을 하는 사람은 아무도 없었다.

  CC [M]  /home/yonggun/acerhk-0.5.35/acerhk.o
/home/yonggun/acerhk-0.5.35/acerhk.c: In function ‘call_bios_6xx’:
/home/yonggun/acerhk-0.5.35/acerhk.c:581: error: bp cannot be used in asm here

결국 자포자기하는 심정으로 call_bios_6xx와 call_bios_52x 함수에서 asm부분을 모두 코멘트 처리를 해버렸다. 혹시나가 역시나인 듯 했으나... 일단 내 경우에는 작동을 한다. 아마 이 두 함수는 오래된 장치를 지원하는 코드인 듯하다.
아무튼 미션 완료... ^^
Posted by yonggun

댓글을 달아 주세요

  1. michaelyzy 2008.12.02 00:59  댓글주소  수정/삭제  댓글쓰기

    http://www.oesf.org/forum/index.php?showtopic=26368

    would you have time to solved this problem?

보통 초보자가 리눅스를 깔아 그냥 가볍게 맛만보려고 설치하기에는 부담이 많이 있다. 그중 가장 어려운 문제는 어떻게 파티션을 나눌 것인가 하는 문제이다. 자칫 잘못하다가는 윈도 파티션까지 날려버려 데이터를 모두 잃게 될지도 모른다.

보통 그래서 사람들은 knoppix 등의 live cd를 이용해서 리눅스를 맛보곤 했다. 장점으로는 리눅스를 설치할 필요가 없다는 것이다. 하지만 내 랩탑은 CD drive도 없어 live cd를 사용하기는 불편했다.  또 다른 방법은 coLinux를 사용하는 것이다. 이것은 윈도내에 linux를 설치하고 윈도 환경에서 리눅스를 사용하는 것이다. 이것도 설치를 하고 또 지우고 그랬다. 왜냐하면 내 랩탑의 cpu은 1.2GHz 밖에 안된다. 윈도만 띄워도 충분히 무겁다.

그러다 웹검색중 wubi를 발견했다. 이것이 무엇에 쓰는 물건인고? 한국 웹을 검색해보니까 많은 사람들이 이미 사용하고 있었다. wubi는 일반 프로그램처럼 윈도에 설치하는 리눅스이다. 쉽게 설명하자면 live cd를 하드디스크에서 부팅시키는 것이라고 보면 된다. 삭제도 물론 프로그램 추가 삭제에서 삭제하면 깔끔하게 제거할 수 있다. 단점으로는 파일 읽고 쓸 때 조금 딜레이가 있다는 점인데... 크게 느끼지는 못하겠다.


사용자 삽입 이미지

자 이제 wubi를 설치해 보자.

1. 먼저 아래 웹사이트에서 wubi를 다운받자...
http://wubi-installer.org/

2.다운 받은 wubi-8.04.exe 를 실행하자. 아래는 설치화면이다. 아래 이미지는 https://wiki.ubuntu.com/WubiGuide 에서 가져온 것들이다.

사용자 삽입 이미지

위의 그림에서 나오듯이 여러가지 설정을 한 다음 Intall을 클릭하면 된다. 알아서 ubuntu를 다운받아서 자동으로 설치한다. 참고로 나는 xubuntu를 설치하였다. 근데 예전에는 안그랬는데 요즘은 부팅하거나 로그인할 때마다 쥐새끼가 나와서 몹시 거슬린다.

2. 자 이제 리부팅을 해보자. 아래와 같이 윈도 부트 매니저가 뜬다. 우분투를 선택하면 된다. 아래 이미지는 https://wiki.ubuntu.com/WubiGuide 에서 가져온 것들이다.

 

사용자 삽입 이미지

3. 아래는 wubi로 설치한 내 데스크탑 스크린샷이다. 한글 입출력도 자유롭고 tablet pc의 touch screen 도 조금의 삽질로 설정할 수 있다.

사용자 삽입 이미지
 



자... 이제 리눅스에 관심있는 사람은 쉽게 응용프로그램을 설치하듯이 마우스 클릭 몇번으로 설치가 가능하니까 함 시도해보자.


Reference:
[1] knoppix
[2] coLinux
[3] wubi
Posted by yonggun

댓글을 달아 주세요

  1. Bimil 2008.06.06 13:43 신고  댓글주소  수정/삭제  댓글쓰기

    푸하하하하.. 빨간색 쥐새끼에서 완전 폭발했습니다.

    쵝오이십니다. ^^

    • yonggun 2008.06.08 02:00  댓글주소  수정/삭제

      요즘 한국 생각하면 한숨만 나오죠...

      근데... 사실 그넘은 파란색 쥐새끼였네요... 빨간색만 보면 경기를 일으키는 ㅡㅡ;;

  2. 김도형 2008.06.27 09:34  댓글주소  수정/삭제  댓글쓰기

    제 노트북이 펜티엄3 1기가에 램이 256인데 버벅대지 안을까요?

리눅스 콘솔에서 사용할 때 시간이나 배터리 정보 등을 알고 싶을 때 각각의 명령어를 써줘야 한다. 하지만 간단하게 screen 명령어를 사용해서 설정해준다면 쉽게 이 정보들을 화면 아래쪽에 출력할 수 있다.

먼저 아래 스크린샷을 보자.
사용자 삽입 이미지

맨 아래줄에 두가지 정보를 가지고 있다. 하나는 왼쪽편에 나와 있듯이 각각의 스크린 이름들이 출력된다. 이것은 아래 링크를 참조하였다.
"This bash shell is now fully operational!"

두번째는 스크린의 오른쪽에 나와있듯이 배터리 잔량과 시간, 날짜가 나와 있다. 이것은 아래 링크를 참조하였고 배터리 잔량을 표시하기 위해서 간단한 스크립트짰다.
http://diveintomark.org/archives/2007/03/15/good-easy-2007

아래 첨부 파일을 홈디렉토리에 풀고 screen 명령을 하면 된다.

Posted by yonggun

댓글을 달아 주세요

최근에 C 언어가 좀 불편함을 느끼고 새로운 계산툴을 찾아보았다.물론 빠른 속도를 요구하는 계산에는 c 특히 icc를 계속 사용할 것이다. 하지만 간단한 계산을 위해서는 스크립트언어의 필요성이 절실하다.

먼저 Matlab. 이것은 많은 사람들이 사용하고 있고 물론 실험실에서도 사용하고 있다. 그리고 이미 많은 함수들이 나와있어... 간단하게 조합을 하면 어려운 계산을 쉽게 할 수도 있다. 하지만 내 성격상... 덩치가 큰 프로그램은 별로 좋아하지 않는다. 그리고 상용프로그램도 역시...

그래서 다음 선택은 SciLab. 이것은 Matlab과 아주 유사하게 만들어졌다. 여러가지 함수들도 많이 있다... 하지만 왠지 꺼려지는 것은 아마도 많은 사람들이 사용하고 있지 않아서일까... 하지만 상당히 잘 만들어져있는 프로그램이다.

또다른 것으로 발견한 것은 SciPy. 이것은 Python기반으로 만들어진 과학기술계산 툴이다. 이것은 크게 두가지 부분으로 구성되어 있는데, 하나는 Numpy라고 배열계산을 위해 만들어졌고 다른 하나는 scipy. 이것은 모든 수치계산을 담당하고 있다. 그리고 이 툴에서 그래픽 툴인 matplotlib를 사용하면 Matlab이 부럽지 않은 환경으로 탈바꿈한다. 아래 그림은 scipy로 계산을 하고 matplotlib를 이용해 그래프를 그린 것이다.
사용자 삽입 이미지


현재까지는 scipy+matplotlib+ipython 조합이 만족스럽다. 하지만 사용하다가 또 무슨 일들이 생길지는 모르겠다.
Posted by yonggun

댓글을 달아 주세요

내가 사용하는 프로그램에서 fft 루틴이 속도의 많은 부분을 차지한다. 그래서 gcc로 컴파일되어 있는 것을 icc로 대체를 해보았다. 그 결과 프로그램 실행 및 계산 속도가 빨라졌다.

먼저 http://www.fftw.org에 가서 fftw 루틴을 다운받는다.

적당한 디렉토리에 푼 후 다음과 같이 한다.

tar zxvf fftw-*
cd fftw-*

export CC=icc
export CPP=icc
export CFLAGS='-O3 -tpp7 -axN -xN'
export CPPFLAGS='-O3 -tpp7 -axN -xN'
./configure : double-precision
for single-precision: ./configure --enable-float --enable-type-prefix --enable-shared
for double-precision: ./configure --enable-long-double --enable-type-prefix --enable-shared
make install


위의 컨피그 옵션중 나는 두번째 single-precision을 사용하였다.

다른 라이버러리들도 이런식으로 컴파일해서 사용한다면 속도가 많이 향상될 것이다.
Posted by yonggun

댓글을 달아 주세요

Intel C Compiler

Computer/Linux 2007.02.14 01:21
보통 사람들은 수치해석을 하거나 데이터를 분석할 때 matlab이나 origin들의 도구를 많이 사용한다. 물론 나도 팔요할 때 사용하곤 하지만 대체로 c를 사용하여 데이터를 분석한다. 그 이유로는 먼저 앞에 언급한 툴들은 너무 무겁다. 나는 작은 툴들을 여러개 이용하는 것을 좋아한다. 두번째로 더 근본적인 이유는 속도가 느리다는 것이다. 내가하는 분석은 PIV(Particle Image Velocimetry)나 PTV (Particle Tracking Velocimetry)로 하기 때문에 하나를 분석하는데 걸리는 시간은 대체 수십분이다. 많일 matlab을 사용한다면 한시간이 더 걸리지 않을까? 게다가 그런 분석이 보통 천개나 이천개 혹은 만개가 넘어가기 때문에 나는 불편하더라도 가능하면 빠르게 계산할 수 있는 툴을 애용한다. 그래서 Linux를 사용하면서 gcc로 프로그래밍을 해왔다. 하지만 icc(Intel C Compiler)를 사용한 후에 계산할 때 걸리는 시간이 대폭 줄어들었다. 약 30-50% 이상의 효율을 가져다 주었다. 게다가 icc는 Non-commercial user에게는 free이다. 그래서 이 글에서는 어떻게 icc를 구하고 debian에 설치하는 방법에 대하여 말해보겠다.


구하기

아래 링크에 가서 Free Non-Commercial Download를 누르고 시키는 대로 하면 이메일을 통해 다운로드 링크와 license를 얻을 수 있다. 현재 최신 버전은 9.1.046이며 이를 기준으로 설명하겠다.

http://www.intel.com/cd/software/products/asmo-na/eng/index.htm


설치


Fedora나 Redhat계열을 사용하는 사람들은 편하게 문서에 나와있는대로 설치하면 된다.
하지만 데비안을 사용하는 경우 바로 설치할 수가 없기때문에 약간의 트릭을 사용한다.

  • 일단 다운받은 icc 패키지를 적당한 곳에 압축을 푼다.
  • 먼저 intel-icc91046-9.1.046-1.i386.rpm 을 alien을 사용해 deb 파일로 변환하고 설치한다.
  • 그리고 /opt/intel/cc/9.1.046/bin/에 있는 icc와 iccvar.sh파일을 수정한다. 두 파일에 있는 <<>INSTALLDIR>를 모두 /opt/intel/cc/9.1.046/ 로 바꾼다.
  • 다운받은 라이센스 파일은 /opt/intel/licenses 로 카피한다.
  • icc에 맢는 환경을 위해 다음 명령을 실행한다. source /opt/intel/cc/9.1.046/bin/iccvar.sh
  • 이제 icc를 실행해보라. 작동이 잘 될것이다.



벤치마크 와 옵션
기본
real 11m6.145s
user 11m3.409s
sys 0m0.572s
-O3 -tpp7 -axW
real 7m45.334s
user 7m43.673s
sys 0m0.548s
-O3 -tpp7 -axW -xW
real 7m43.839s
user 7m42.221s
sys 0m0.508s
-O3 -tpp7 -axN -xN
real 7m30.265s
user 7m28.168s
sys 0m0.544s


위의 결과를 보면 컴파일시 -O3 -tpp7 -axN -xN 옵션으로 사용한다면 가장 빠르게 결과를 얻을 것이다.
Posted by yonggun

댓글을 달아 주세요