2007년 3월 25일 일요일

Excel로 전환

한글 테스트 해봐야 함









#!/usr/bin/perl -w # # Parse ace file and extract read names of destined contig # # Written by Suk Namgoong # use strict; use Spreadsheet::WriteExcel; my $usage = "aceprimer.pl <ace file name>"; my $acefilename = shift or die $usage; my $workbook = Spreadsheet::WriteExcel->new($acefilename.".xls"); my ($contigfound, $fofname, $readname, $ctstart); my $worksheet1 = $workbook->add_worksheet("forward"); my $worksheet2 = $workbook->add_worksheet("reverse"); my $format = $workbook->add_format(); $format->set_bold(); $format->set_bg_color(18); $format->set_pattern(1); my $align = $workbook->add_format(); $align->set_align('center'); my $align2 = $workbook->add_format(); $align2->set_align('vjustify'); $contigfound = 0; my %primerhash = (); # # Parse Ace File and put start postion and length of each reads into hash (%read_start and %read length)) # $worksheet1->write(0,0,"Experiment ID", $format); $worksheet1->write(0,1,"Contig Name", $format); $worksheet1->write(0,2,"Primer Name", $format); $worksheet1->write(0,3 ,"Sequence", $format); $worksheet1->write(0,4,"Tm", $format); $worksheet1->write(0,5,"Comment", $align2); $worksheet2->write(0,0,"Experiment ID", $format); $worksheet2->write(0,1,"Contig Name", $format); $worksheet2->write(0,2,"Primer Name", $format); $worksheet2->write(0,3,"Sequence", $format); $worksheet2->write(0,4,"Tm", $format); $worksheet2->write(0,5,"Comment", $align2); my $frow = 1; my $rrow = 1; my $col = 0; my $exp_no = 1; $ctstart = 0; open (FILEHANDLE, "<$acefilename"); my ($contigname, $primername, $sequence, $comment, $oligostart, $oligoend, $meltingTemp); while (my $readline = <FILEHANDLE>) { chomp($readline); if ($readline =~ m/^CT{/) { $ctstart = 1; $comment = ""; next; } if ($ctstart eq 1 ) { if ($readline =~ m/^(\S+) oligo consed (\S+) (\S+)/) { $contigname = $1; $oligostart = $2; $oligoend = $3; $ctstart = 2; next; } else { $ctstart = 0; next; } } if ($ctstart eq 2) { if ($readline =~ m/^(\S+) (\S+) (\S+)/) { $primername = $1; $sequence = $2; $meltingTemp = $3; $ctstart = 3; next; } } if ($ctstart eq 3) { if ($readline =~ m/^COMMENT{/) { $ctstart = 4; next; } } if ($ctstart eq 4) { if ($readline =~ m/}$/) { $ctstart = 0; if (exists($primerhash{$comment})) { $worksheet2->write($frow,0,$primerhash{$comment}); $worksheet2->write($frow,1,$contigname); $worksheet2->write($frow,2,$primername); $worksheet2->write($frow,3,$sequence); $worksheet2->write($frow,4,$meltingTemp,$align); $worksheet2->write($frow,5,$comment, $align2); $frow++; } else { $primerhash{$comment} = $exp_no; $worksheet1->write($rrow,0,$exp_no); $worksheet1->write($rrow,1,$contigname); $worksheet1->write($rrow,2,$primername); $worksheet1->write($rrow,3,$sequence); $worksheet1->write($rrow,4,$meltingTemp,$align); $worksheet1->write($rrow,5,$comment, $align2); $exp_no++; $rrow++; } next; } else { $comment = $comment.$readline; next; } } } close FILEHANDLE;

하체 5분 다이어트 ㅋㅋㅋ

2007년 3월 23일 금요일

new HTTP::Request POST sample

my $req = new HTTP::Request POST => $url;
       # $req->content_type('application/x-www-form-urlencoded');
       $req->content($cstr);

       my $res = $ua->request($req);
       print "\n--after login action----------------------------------\n";

       print $res->content;

2007년 3월 20일 화요일

[매칭관련] php에서 [] 사이의 내용 가져오기

<?php

$html = "123123123[12345][00001][11111]12312312";

preg_match_all("|[\[](\d{5})[\]]|U", $html, $matches);

for ($i=0; $i< count($matches[0]); $i++) {
  echo "matched: " . $matches[0][$i] . "\n";
  echo "part 1: " . $matches[1][$i] . "\n\n";
  $packs .= $matches[1][$i].",";
}

echo $packs;

?>

결과--------------------------------
matched: [12345]
part 1: 12345

matched: [00001]
part 1: 00001

matched: [11111]
part 1: 11111


샘플 2

<?
    $string = "타입과색상;CMT0025댄디PK/블랙M(3000원)./(3000원)";
    preg_match_all("|[\(](.*)[원\)]|U", $string, $matches);

    for( $i=0; $i < count($matches[1]); $i++ )
    {
        $total = $total + $matches[1][0];
    }

    echo "total: $total\n";
?>
~        

total: 6000

2007년 3월 16일 금요일

php에서 excel, csv, txt파일 읽어 들여 작업하기

php에서 file reading할때

global $admin_file;
if ($admin_file)
       {
           $file_params = pathinfo($_FILES['admin_file']['name']);
           $file_ext = strtoupper($file_params["extension"]);
           if ($file_ext != "XLS" && $file_ext != "CSV" && $file_ext != "TXT")
             fatal("잘못된 파일포맷입니다. 지원가능한 파일포맷은 (.xls | .csv | .txt)입니다.");
       }


#============================================
       #
       # data insert
       #
       switch ($file_ext)
       {
           case "XLS" :
               $data = new Spreadsheet_Excel_Reader();
               $data->setOutputEncoding('CP949');
               $data->read($admin_file);
               $num_rows = $data->sheets[0]['numRows'];
               break;
           case "CSV" :
               $data = file($admin_file);
               $num_rows = count($data) + 1;
               $fp = fopen($admin_file, "r");
               break;
           case "TXT" :
               $data = file($admin_file);
               $num_rows = count($data);
               $fp = fopen($admin_file, "r");
               break;
       }


for ($i = 1; $i <= $num_rows; $i++)
       {
                switch( $file_ext )
               {
                       case "XLS" :
                               $x = 0;
                               $data_array = $data->sheets[0]['cells'][$i];
                               break;
                       case "CSV" :
                               $x = 1;
                               $data_array = fgetcsv($fp, 1000, ",");
                               break;
                       case "TXT" :
                               $x = 1;
                               $buffer = fgets($fp, 4096);
                               $data_array = explode("\t", $buffer);
                               break;
               }

               // 작업
               $this->save2( $data_array, $x );                
              flush();
     }

2007년 3월 10일 토요일

인간의 시간은 원형으로 돌지 않고 직선으로 나간다. - 참을 수 없는 존재의 가벼움

흠 토마스와 테레사가 키우는 개가 있다 그의 이름은 카네닌.
개는 아침마다 테레사를 따라 장에 가고, 입에 크로아상을 하나 물고는 너무나 행복해 한다.

매일 테레사를 따라 송아지를 돌보며 또 행복해 한다...

그의 시간은 원형이다, 매일 같은 일을 하지만 매일 행복하다. 하지만 사람의 시간은 원형으로 돌지 않는다. 사람은 매일 같은 일에 지겨워 하고 흥미를 읽고 불행해 한다. 인간의 시간은 직선이기 때문이다.

과연 인간은 만물의 영장 이어서 다른 작은 것에 만족할 줄 아는 모든 동물의 최 상위에서 가장 큰 행복을 누리며 살아가는 것일까?...

자신의 개를 아끼고 사랑하는 테레사는 이렇게 생각한다, 자신과 토마스의 관계보다 자신과 자신의 개인 카네닌의 관계가 더 나은 관계가 아닌가? 하고...

2007년 3월 7일 수요일

php에서 A to Z까지 표시하기

<?
               $j = 1;
               for ( $i=ord('A'); $i <= ord('Z'); $i++ )
               {
               ?>
               <tr>
                 <td width=10 align=center><?= $j ?></td>
                 <td width=10><?= chr($i) ?></td>
                 <td width=30><input type=text name=macro<?= chr($i)?> class=input></td>
                 <td width=30>A</td>
               </tr>
               <?
                   $j++;
               } ?>

2007년 3월 6일 화요일

perl HTTP::Request 샘플 ebay.api 예제

# $Revision: 1.1.1.3 $
#
# $Date: 2003/06/25 17:40:00 $
use strict;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Headers;

my $objUserAgent = LWP::UserAgent->new;

my $request = "<?xml version='1.0' encoding='utf-8' ?>
   <request>
   <RequestToken>ABC...123</RequestToken>
   <ErrorLevel>1</ErrorLevel>
   <DetailLevel>0</DetailLevel>
   <Verb>GeteBayOfficialTime</Verb>
   </request>";

my $objHeader = HTTP::Headers->new;

$objHeader->push_header('X-EBAY-API-COMPATIBILITY-LEVEL' => '311');
$objHeader->push_header(
  'X-EBAY-API-SESSION-CERTIFICATE' => 'rbrown;rbrownapp01;12321AB121A2A1B');
$objHeader->push_header('X-EBAY-API-DEV-NAME' => 'rbrown');
$objHeader->push_header('X-EBAY-API-APP-NAME' => 'rbrownapp01');
$objHeader->push_header('X-EBAY-API-CERT-NAME' => '12321AB121A2A1B');
$objHeader->push_header('X-EBAY-API-CALL-NAME' => 'GeteBayOfficialTime');
$objHeader->push_header('X-EBAY-API-SITEID' => '0');
$objHeader->push_header('X-EBAY-API-DETAIL-LEVEL' => '0');
$objHeader->push_header('Content-Type' => 'text/xml');
$objHeader->push_header('Content-Length' => length($request));


my $objRequest = HTTP::Request->new("POST", 'https://api.sandbox.ebay.com/ws/api.dll',
    $objHeader, $request);
  # for https you will need an ssl enabling package
  # the following line from the PPM directory will install
  # one such PPM package  based on OpenSSL for the ActiveState 5.6 Perl build
  # PPM> install http://www.activestate.com/PPMPackages/5.6plus/Crypt-SSLeay.ppd

my $objResponse = $objUserAgent->request($objRequest);

if (!$objResponse->is_error)
   {
     # your error handling code here
   }
   else
   {
     # success, your processing code here
   }

실리콘 밸리는 제2의 르네상스...

1년새 일자리 3만개가 늘었고 클린테크, 바이오 분야의 창업이 최고 인기..

난 무엇을 해야 할까?
화학회사가 바이오 회사로 거듭날까?