SlideShare a Scribd company logo
1 of 40
データ解析の基礎
ArrayList と ファイルの入力




2008年8月,データ解析の基礎,加藤,瀬々,金子.   1
転写因子reb1に結合する配列

配列




頻度




                                  丸山&阿久津,2007

     2008年8月,データ解析の基礎,加藤,瀬々,金子.                 2
頻度行列計算プログラム再考
Test09i.java

public class Test09i {
  public static void main( String[] args ){
    String[]    seqs;
    double[][] freqmat;
    seqs     = new String[]{quot;GTATAAAAAGCGGquot;,quot;CTATAAAAGGCCCquot;,quot;GTATAAAGGGGCGquot;,
                            quot;GTATATAAGCGCGquot;,quot;CTATAAAGGGGCCquot;,quot;GTATAAAGGCGGGquot;};
    freqmat = comp_freqmat( seqs );
     pri_freqmat( freqmat );
  }
}




          これまではすべてデータはプログラムに書き込んできた

          データが大量になったときプログラムを書き換えるのは大変

          ファイルから入力するように修正しよう
           そうすれば,プログラムを大きく書き換えなくても済む!
   2008年8月,データ解析の基礎,加藤,瀬々,金子.                                                   3
ファイルからの文字列の読み込みを考える
入力ファイル          配列が何本入っているか分からない
GTATAAAAAGCGG   たとえば,
CTATAAAAGGCCC
                   int k;
GTATAAAGGGGCG
                   String[] seqs; k=0; とりあえず
GTATATAAGCGCG
                   seqs = new String[10];
CTATAAAGGGGCC
                   while (ファイルの終わりに到達していない){
GTATAAAGGCGGG
                     seqs[k]に1行読み込む;
  :
                     k++
  :
                   }

                とすると,11行目に達したら破綻する

 これまで扱ってきた配列は,固定長

 可変長の配列が必要なとき           → コンテナ ArrayList<T> が便利

  2008年8月,データ解析の基礎,加藤,瀬々,金子.                   4
ArrayList<T> のメソッド
Test10a.java   プロジェクト名: test10
                                           new ArrayList<T>()
import java.util.*;                        オブジェクトを生成する
public class Test10a {
  public static void main( String[] args ){
     int i;                                       .add(T x)
     ArrayList<String> v;                           要素xを追加する
     v = new ArrayList<String>();
     v.add( quot;zeroquot; );                             .size()
     v.add( quot;onequot; );
     v.add( quot;twoquot; );
                                                    要素数を返す
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));   .get( int i )
     }                                              第i要素を返す
  }
}

    画面
[0]=zero
[1]=one
[2]=two
   2008年8月,データ解析の基礎,加藤,瀬々,金子.                               5
計算過程
Test10a.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10a {
  public static void main( String[] args ){
     int i;
     ArrayList<String> v;
     v = new ArrayList<String>();
     v.add( quot;zeroquot; );
     v.add( quot;onequot; );
     v.add( quot;twoquot; );                              ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}


    画面




       2008年8月,データ解析の基礎,加藤,瀬々,金子.                        6
計算過程
Test10a.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10a {
  public static void main( String[] args ){         i    v
     int i;
     ArrayList<String> v;
     v = new ArrayList<String>();
     v.add( quot;zeroquot; );
     v.add( quot;onequot; );
     v.add( quot;twoquot; );                              ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}


    画面




       2008年8月,データ解析の基礎,加藤,瀬々,金子.                            7
計算過程
Test10a.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10a {
  public static void main( String[] args ){         i    v
     int i;
     ArrayList<String> v;
     v = new ArrayList<String>();
     v.add( quot;zeroquot; );
     v.add( quot;onequot; );
     v.add( quot;twoquot; );                              ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}


    画面




       2008年8月,データ解析の基礎,加藤,瀬々,金子.                            8
計算過程
Test10a.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10a {
  public static void main( String[] args ){         i             v
     int i;
     ArrayList<String> v;
     v = new ArrayList<String>();
     v.add( quot;zeroquot; );
     v.add( quot;onequot; );
     v.add( quot;twoquot; );                              ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}


    画面
                                                         quot;zeroquot;




       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                     9
計算過程
Test10a.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10a {
  public static void main( String[] args ){         i             v
     int i;
     ArrayList<String> v;
     v = new ArrayList<String>();
     v.add( quot;zeroquot; );
     v.add( quot;onequot; );
     v.add( quot;twoquot; );                              ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}


    画面
                                                         quot;zeroquot;

                                                         “onequot;



       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                     10
計算過程
Test10a.java   プロジェクト名: test10
                                                     スタック
import java.util.*;
public class Test10a {
  public static void main( String[] args ){                 i                 v
     int i;
     ArrayList<String> v;
     v = new ArrayList<String>();
     v.add( quot;zeroquot; );
     v.add( quot;onequot; );
     v.add( quot;twoquot; );                                   ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}


    画面
                                                                quot;zeroquot;

                                                                “onequot;

                                                                “twoquot;
                                                  実際にはArrayList<T>は内部には配列を持っており,初期状態で長さ10の
                                                  配列を持っている.よって,このように要素を入れるごとに配列を伸ばすよ
       2008年8月,データ解析の基礎,加藤,瀬々,金子.                 うなことはしない.                           11
計算過程
Test10a.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10a {
  public static void main( String[] args ){         i=0            v
     int i;
     ArrayList<String> v;
     v = new ArrayList<String>();
     v.add( quot;zeroquot; );
     v.add( quot;onequot; );
     v.add( quot;twoquot; );                              ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}


    画面
                                                          quot;zeroquot;

                                                          “onequot;

                                                          “twoquot;

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                      12
計算過程
Test10a.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10a {
  public static void main( String[] args ){         i=0            v
     int i;
     ArrayList<String> v;
     v = new ArrayList<String>();
     v.add( quot;zeroquot; );
     v.add( quot;onequot; );
     v.add( quot;twoquot; );                              ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}


    画面
                                                          quot;zeroquot;

                                                          “onequot;

                                                          “twoquot;

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                      13
計算過程
Test10a.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10a {
  public static void main( String[] args ){         i=0            v
     int i;
     ArrayList<String> v;
     v = new ArrayList<String>();
     v.add( quot;zeroquot; );
     v.add( quot;onequot; );
     v.add( quot;twoquot; );                              ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}


    画面
                                                          quot;zeroquot;
[0]=zero
                                                          “onequot;

                                                          “twoquot;

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                      14
計算過程
Test10a.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10a {
  public static void main( String[] args ){         i=0            v
     int i;
     ArrayList<String> v;
     v = new ArrayList<String>();
     v.add( quot;zeroquot; );
     v.add( quot;onequot; );
     v.add( quot;twoquot; );                              ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}


    画面
                                                          quot;zeroquot;
[0]=zero
                                                          “onequot;

                                                          “twoquot;

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                      15
計算過程
Test10a.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10a {
  public static void main( String[] args ){         i=1            v
     int i;
     ArrayList<String> v;
     v = new ArrayList<String>();
     v.add( quot;zeroquot; );
     v.add( quot;onequot; );
     v.add( quot;twoquot; );                              ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}


    画面
                                                          quot;zeroquot;
[0]=zero
                                                          “onequot;

                                                          “twoquot;

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                      16
計算過程
Test10a.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10a {
  public static void main( String[] args ){         i=1            v
     int i;
     ArrayList<String> v;
     v = new ArrayList<String>();
     v.add( quot;zeroquot; );
     v.add( quot;onequot; );
     v.add( quot;twoquot; );                              ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}


    画面
                                                          quot;zeroquot;
[0]=zero
                                                          “onequot;

                                                          “twoquot;

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                      17
計算過程
Test10a.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10a {
  public static void main( String[] args ){         i=1            v
     int i;
     ArrayList<String> v;
     v = new ArrayList<String>();
     v.add( quot;zeroquot; );
     v.add( quot;onequot; );
     v.add( quot;twoquot; );                              ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}


    画面
                                                          quot;zeroquot;
[0]=zero
[1]=one                                                   “onequot;

                                                          “twoquot;

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                      18
計算過程
Test10a.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10a {
  public static void main( String[] args ){         i=2            v
     int i;
     ArrayList<String> v;
     v = new ArrayList<String>();
     v.add( quot;zeroquot; );
     v.add( quot;onequot; );
     v.add( quot;twoquot; );                              ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}


    画面
                                                          quot;zeroquot;
[0]=zero
[1]=one                                                   “onequot;

                                                          “twoquot;

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                      19
ArrayList<T>の制限

ArrayList<T> のTは参照型のみ
                基本データ型(intやdouble)はダメ

    ArrayList<String> はOK
    ArrayList<int> はダメ
    ArrayList<double> はダメ




Tに基本データ型を使う手段は?
                    →    ラッパークラスを使おう



 2008年8月,データ解析の基礎,加藤,瀬々,金子.             20
基本データ型のラッパークラス
 基本データ型                参照型
 int                   Integer
 double                Double                 基本データ型の
 char                  Character              ラッパークラス
 boolean               Boolean
                                               スタック
 なし                    String
Test10b.java
public class Test10b {
  public static void main( String[] args ){
    Integer a;
    int b;                                      ヒープ
    a = 5;
    b = a;
  }
}
基本データ型はプリミティブ型とも呼ばれる

   2008年8月,データ解析の基礎,加藤,瀬々,金子.                           21
基本データ型のラッパークラス
 基本データ型                参照型
 int                   Integer
 double                Double                 基本データ型の
 char                  Character              ラッパークラス
 boolean               Boolean
                                               スタック
 なし                    String
Test10b.java                                      a     b
public class Test10b {
  public static void main( String[] args ){
    Integer a;
    int b;                                      ヒープ
    a = 5;
    b = a;
  }
}
基本データ型はプリミティブ型とも呼ばれる

   2008年8月,データ解析の基礎,加藤,瀬々,金子.                               22
基本データ型のラッパークラス
 基本データ型                参照型
 int                   Integer
 double                Double                 基本データ型の
 char                  Character              ラッパークラス
 boolean               Boolean
                                               スタック
 なし                    String
Test10b.java                                      a       b
public class Test10b {
  public static void main( String[] args ){
    Integer a;
    int b;                                      ヒープ
    a = 5;
    b = a;
                                                      5
  }
}
基本データ型はプリミティブ型とも呼ばれる

   2008年8月,データ解析の基礎,加藤,瀬々,金子.                                 23
基本データ型のラッパークラス
 基本データ型                参照型
 int                   Integer
 double                Double                 基本データ型の
 char                  Character              ラッパークラス
 boolean               Boolean
                                               スタック
 なし                    String
Test10b.java                                      a       b=5
public class Test10b {
  public static void main( String[] args ){
    Integer a;
    int b;                                      ヒープ
    a = 5;
    b = a;
                                                      5
  }
}
基本データ型はプリミティブ型とも呼ばれる

   2008年8月,データ解析の基礎,加藤,瀬々,金子.                               24
ArrayList<T> のメソッド
Test10c.java   プロジェクト名: test10
                                           new ArrayList<T>()
import java.util.*;                         オブジェクトを生成する
public class Test10c {
  public static void main( String[] args ){
     int i;                                       .add(T x)
     ArrayList<Double> v;                           要素xを追加する
     v = new ArrayList<Double>();
     v.add( 10.0 );                               .size()
     v.add( 10.1 );
     v.add( 10.2 );
                                                    要素数を返す
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));   .get( int i )
     }                                              第i要素を返す
  }
}

    画面
[0]=10.0
[1]=10.1
[2]=10.2
   2008年8月,データ解析の基礎,加藤,瀬々,金子.                               25
計算過程
Test10c.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10c {
  public static void main( String[] args ){         i    v
     int i;
     ArrayList<Double> v;
     v = new ArrayList<Double>();
     v.add( 10.0 );
     v.add( 10.1 );
     v.add( 10.2 );                               ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}

    画面




       2008年8月,データ解析の基礎,加藤,瀬々,金子.                            26
計算過程
Test10c.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10c {
  public static void main( String[] args ){         i    v
     int i;
     ArrayList<Double> v;
     v = new ArrayList<Double>();
     v.add( 10.0 );
     v.add( 10.1 );
     v.add( 10.2 );                               ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}

    画面




       2008年8月,データ解析の基礎,加藤,瀬々,金子.                            27
計算過程
Test10c.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10c {
  public static void main( String[] args ){         i           v
     int i;
     ArrayList<Double> v;
     v = new ArrayList<Double>();
     v.add( 10.0 );
     v.add( 10.1 );
     v.add( 10.2 );                               ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}

    画面                                                   10.0




       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                   28
計算過程
Test10c.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10c {
  public static void main( String[] args ){         i           v
     int i;
     ArrayList<Double> v;
     v = new ArrayList<Double>();
     v.add( 10.0 );
     v.add( 10.1 );
     v.add( 10.2 );                               ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}

    画面                                                   10.0

                                                         10.1



       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                   29
計算過程
Test10c.java   プロジェクト名: test10
                                                  スタック
import java.util.*;
public class Test10c {
  public static void main( String[] args ){         i           v
     int i;
     ArrayList<Double> v;
     v = new ArrayList<Double>();
     v.add( 10.0 );
     v.add( 10.1 );
     v.add( 10.2 );                               ヒープ
     for ( i = 0; i < v.size(); i++ ){
       System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i));
     }
  }
}

    画面                                                   10.0

                                                         10.1

                                                         10.2

       2008年8月,データ解析の基礎,加藤,瀬々,金子.                                   30
準備完了
基本データ型          参照型
 int            Integer
 double         Double
 char           Character
 boolean        Boolean
 なし             String

ArrayList<T> のメソッド,Tは参照型のみ許される
メソッド名                     説明
 new ArrayList<T>()       ArrayList<T>の実体を生成する
 add(T x)                 要素 x を追加する
 size()                   要素数を返す
 get( int i )             第 i 要素を返す
 2008年8月,データ解析の基礎,加藤,瀬々,金子.                      31
やりたいこと
Test09i.java

public class Test09i {
  public static void main( String[] args ){
    String[]    seqs;
    double[][] freqmat;
    seqs     = new String[]{quot;GTATAAAAAGCGGquot;,quot;CTATAAAAGGCCCquot;,quot;GTATAAAGGGGCGquot;,
                            quot;GTATATAAGCGCGquot;,quot;CTATAAAGGGGCCquot;,quot;GTATAAAGGCGGGquot;};
    freqmat = comp_freqmat( seqs );
     pri_freqmat( freqmat );
  }
}




          これまではすべてデータはプログラムに書き込んできた

          データが大量になったときプログラムを書き換えるのは大変

          ファイルから入力するように修正しよう
           そうすれば,プログラムを大きく書き換えなくても済む!
   2008年8月,データ解析の基礎,加藤,瀬々,金子.                                                   32
ファイルからの入力
multiple-alignment.txt


GTATAAAAAGCGG
CTATAAAAGGCCC
GTATAAAGGGGCG
GTATATAAGCGCG
CTATAAAGGGGCC
GTATAAAGGCGGG
  :
  :


   このファイルを読み込んでみよう




   2008年8月,データ解析の基礎,加藤,瀬々,金子.   33
ファイルからの入力
Test10c.java   プロジェクト名: test10
import java.io.*;
import java.util.*;
public class Test10d {
  public static void main( String[] args ){
    int      i;
    String   filename_in;
    String[] seqs;
    filename_in = quot;multiple-alignment.txtquot;;
    seqs        = read_seqs( filename_in );
    for ( i = 0; i < seqs.length; i++ ){
      System.out.println(quot;[quot;+i+quot;]=quot;+seqs[i]);
    }
  }
  public static String[] read_seqs( String filename ){略}
}




    2008年8月,データ解析の基礎,加藤,瀬々,金子.                             34
ファイルからの入力
Test10d.java   プロジェクト名: test10
import java.io.*;
import java.util.*;                                          ここでは詳細には解説しない
public class Test10d {                                       定型の書き方だと考えてほしい
  public static void main( String[] args ){略}
  public static String[] read_seqs( String filename ){
    BufferedReader br;
    String   ln;
    ArrayList<String> seqs;               ArrayList<String>の
    String[] ret;
    seqs = new ArrayList<String>();
                                          実体を生成する
    try {
      br = new BufferedReader( new FileReader(new File(filename)) );
      while ( (ln = br.readLine()) != null ){
        seqs.add( ln );                   ファイルの終わりまで1行ずつ
      }
    } catch (IOException e){              読み込み,seqsに追加していく
      System.out.println(e+quot;quot;); System.exit(1);
    }
    ret = seqs.toArray(new String[0]);
    return ret;                           ArrayList<String>を
}
  }
                                          配列 String[] 型に変換する


    2008年8月,データ解析の基礎,加藤,瀬々,金子.                                          35
ファイルからの入力
Test10d.java   プロジェクト名: test10
import java.io.*;
import java.util.*;
public class Test10d {
  public static void main( String[] args ){
    int      i;
    String   filename_in;
    String[] seqs;
    filename_in = quot;multiple-alignment.txtquot;;
    seqs        = read_seqs( filename_in );
    for ( i = 0; i < seqs.length; i++ ){
      System.out.println(quot;[quot;+i+quot;]=quot;+seqs[i]);
    }
  }
  public static String[] read_seqs( String filename ){略}
}


  標準出力
[0]=GTATAAAAAGCGG
[1]=CTATAAAAGGCCC
[2]=GTATAAAGGGGCG
[3]=GTATATAAGCGCG
[4]=CTATAAAGGGGCC
[5]=GTATAAAGGCGGG
    2008年8月,データ解析の基礎,加藤,瀬々,金子.                             36
練習10-d.
Test10c.java   プロジェクト名: test10
ファイル「multiple-alignment.txt」から配列集合を読み込み,
頻度行列を計算せよ


   1. 演習のウェブページからファイルmultiple-alignment.txt
      をダウンロードする

   2. プロジェクトのフォルダに入れる

   3. Test10d.java を打ち込んで,実行する
(1) まずは,プログラムを作って動作させよ
(2) 数行複製してみて,入力される配列の本数が入力ファイルに応じて
    変わることをデバッガで確認せよ


    2008年8月,データ解析の基礎,加藤,瀬々,金子.                37
練習10-e.
Test10e.java   プロジェクト名: test10
ファイル「multiple-alignment.txt」から配列集合を読み込み,
頻度行列を計算せよ


   1. 演習のウェブページからファイルmultiple-alignment.txt
      をダウンロードする

   2. プロジェクトのフォルダに入れる

   3. Test09i.javaからソースコードをコピーして,Test10d.javaから
      メソッドread_seqs(String)をコピーして完成させる

(1) 演習のウェブページからファイル「reb1-binding.txt」も
   ダウンロードして頻度行列を計算してみよう

    2008年8月,データ解析の基礎,加藤,瀬々,金子.                38
練習10-f.
Test10f.java   プロジェクト名: test10

ファイル「rhodopsin-mltaln.txt」から配列集合を読み込み,
 p-distance による距離行列を計算せよ


   1. 演習のウェブページからファイルrhodopsin-mltaln.txt
      をダウンロードする

   2. プロジェクトのフォルダに入れる

   3. これまで作ってきたソースコードから利用できる部分は
      貼り付けて,Test10f.javaを完成させ,動作させよ




    2008年8月,データ解析の基礎,加藤,瀬々,金子.              39
練習10-d.(2/2)
reb1-binding.txt
AATCTGTTTATTACCCGACATTCTTAA
TATTTCTCTGTCACCCGGCCTCTATTT
ACTTTCATCATTACCCGGATGATTCTC
GACGCTGCTATAACCCGGCCTCCGAGG
ACATTGGGCATTACCCGCAAACTAACC
CGGGCGACAGCCCTCCGACGGAAGACT
CCAATGGCCGCTACCCGCCTCTTCTTC
GACGCGCCGCTCACCCGCACGGCAGAG
TTATACCTTATTACCCGAAAGGCTTTT




 2008年8月,データ解析の基礎,加藤,瀬々,金子.   40

More Related Content

What's hot (16)

Quran
QuranQuran
Quran
 
Jess
JessJess
Jess
 
Holy quran full
Holy quran fullHoly quran full
Holy quran full
 
Diseño de una subestacion
Diseño de una subestacionDiseño de una subestacion
Diseño de una subestacion
 
Holy quran
Holy quranHoly quran
Holy quran
 
passive_infrastructure draft regulationar-AR
  passive_infrastructure draft regulationar-AR  passive_infrastructure draft regulationar-AR
passive_infrastructure draft regulationar-AR
 
Lataif e ashrafi malfoozat e syed makhdoom ashraf 25
Lataif e ashrafi malfoozat e syed makhdoom ashraf 25Lataif e ashrafi malfoozat e syed makhdoom ashraf 25
Lataif e ashrafi malfoozat e syed makhdoom ashraf 25
 
Matemáticas simplificadas pearson luis
Matemáticas simplificadas   pearson luisMatemáticas simplificadas   pearson luis
Matemáticas simplificadas pearson luis
 
2006 קיץ ב 002
2006 קיץ ב 0022006 קיץ ב 002
2006 קיץ ב 002
 
تنزيل من رب العامين
تنزيل من رب العامينتنزيل من رب العامين
تنزيل من رب العامين
 
Noble Quran in Arabic language
Noble Quran in Arabic languageNoble Quran in Arabic language
Noble Quran in Arabic language
 
القرآن الكريم
القرآن الكريمالقرآن الكريم
القرآن الكريم
 
Holyquran
HolyquranHolyquran
Holyquran
 
Al quran alkareem
Al quran alkareemAl quran alkareem
Al quran alkareem
 
Holy Quran
Holy QuranHoly Quran
Holy Quran
 
Holy Qur'an full Text
Holy Qur'an full TextHoly Qur'an full Text
Holy Qur'an full Text
 

Viewers also liked

Datamining 9th Association Rule
Datamining 9th Association RuleDatamining 9th Association Rule
Datamining 9th Association Rulesesejun
 
Datamining 6th svm
Datamining 6th svmDatamining 6th svm
Datamining 6th svmsesejun
 
121023_item_whitepaper
121023_item_whitepaper121023_item_whitepaper
121023_item_whitepaperRick Sabo
 
What is biology
What is biologyWhat is biology
What is biologystewart_j
 
Sociedad de la_informacion
Sociedad de la_informacionSociedad de la_informacion
Sociedad de la_informacionTere Vera
 
Formato A3
Formato A3Formato A3
Formato A3lilibg29
 
SWAN 2015 Conference D McCombie 29 April 2015 pm session FINAL
SWAN 2015 Conference D McCombie 29 April 2015 pm session FINALSWAN 2015 Conference D McCombie 29 April 2015 pm session FINAL
SWAN 2015 Conference D McCombie 29 April 2015 pm session FINALDuncan McCombie
 
Tang 04 nuclear reactions and enthalpy
Tang 04   nuclear reactions and enthalpyTang 04   nuclear reactions and enthalpy
Tang 04 nuclear reactions and enthalpymrtangextrahelp
 
Experimental design
Experimental designExperimental design
Experimental designstewart_j
 
Lenguaje visual power
Lenguaje visual powerLenguaje visual power
Lenguaje visual powerTere Vera
 
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 HairetsuOhp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsusesejun
 
PRE: Datamining 2nd R
PRE: Datamining 2nd RPRE: Datamining 2nd R
PRE: Datamining 2nd Rsesejun
 
Datamining R 2nd
Datamining R 2ndDatamining R 2nd
Datamining R 2ndsesejun
 
Hp distributed R User Guide
Hp distributed R User GuideHp distributed R User Guide
Hp distributed R User GuideAndrey Karpov
 

Viewers also liked (20)

Datamining 9th Association Rule
Datamining 9th Association RuleDatamining 9th Association Rule
Datamining 9th Association Rule
 
Datamining 6th svm
Datamining 6th svmDatamining 6th svm
Datamining 6th svm
 
121023_item_whitepaper
121023_item_whitepaper121023_item_whitepaper
121023_item_whitepaper
 
What is biology
What is biologyWhat is biology
What is biology
 
Pixton
PixtonPixton
Pixton
 
Sociedad de la_informacion
Sociedad de la_informacionSociedad de la_informacion
Sociedad de la_informacion
 
Formato A3
Formato A3Formato A3
Formato A3
 
SWAN 2015 Conference D McCombie 29 April 2015 pm session FINAL
SWAN 2015 Conference D McCombie 29 April 2015 pm session FINALSWAN 2015 Conference D McCombie 29 April 2015 pm session FINAL
SWAN 2015 Conference D McCombie 29 April 2015 pm session FINAL
 
Lectores rss
Lectores rssLectores rss
Lectores rss
 
Resume
ResumeResume
Resume
 
Tang 04 nuclear reactions and enthalpy
Tang 04   nuclear reactions and enthalpyTang 04   nuclear reactions and enthalpy
Tang 04 nuclear reactions and enthalpy
 
Evolución
EvoluciónEvolución
Evolución
 
Anecdotic
AnecdoticAnecdotic
Anecdotic
 
Experimental design
Experimental designExperimental design
Experimental design
 
Lenguaje visual power
Lenguaje visual powerLenguaje visual power
Lenguaje visual power
 
Ohp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 HairetsuOhp Seijoen H20 05 Hairetsu
Ohp Seijoen H20 05 Hairetsu
 
PRE: Datamining 2nd R
PRE: Datamining 2nd RPRE: Datamining 2nd R
PRE: Datamining 2nd R
 
080812
080812080812
080812
 
Datamining R 2nd
Datamining R 2ndDatamining R 2nd
Datamining R 2nd
 
Hp distributed R User Guide
Hp distributed R User GuideHp distributed R User Guide
Hp distributed R User Guide
 

More from sesejun

RNAseqによる変動遺伝子抽出の統計: A Review
RNAseqによる変動遺伝子抽出の統計: A ReviewRNAseqによる変動遺伝子抽出の統計: A Review
RNAseqによる変動遺伝子抽出の統計: A Reviewsesejun
 
バイオインフォマティクスによる遺伝子発現解析
バイオインフォマティクスによる遺伝子発現解析バイオインフォマティクスによる遺伝子発現解析
バイオインフォマティクスによる遺伝子発現解析sesejun
 
次世代シーケンサが求める機械学習
次世代シーケンサが求める機械学習次世代シーケンサが求める機械学習
次世代シーケンサが求める機械学習sesejun
 
20110602labseminar pub
20110602labseminar pub20110602labseminar pub
20110602labseminar pubsesejun
 
20110524zurichngs 2nd pub
20110524zurichngs 2nd pub20110524zurichngs 2nd pub
20110524zurichngs 2nd pubsesejun
 
20110524zurichngs 1st pub
20110524zurichngs 1st pub20110524zurichngs 1st pub
20110524zurichngs 1st pubsesejun
 
20110214nips2010 read
20110214nips2010 read20110214nips2010 read
20110214nips2010 readsesejun
 
Datamining 9th association_rule.key
Datamining 9th association_rule.keyDatamining 9th association_rule.key
Datamining 9th association_rule.keysesejun
 
Datamining 8th hclustering
Datamining 8th hclusteringDatamining 8th hclustering
Datamining 8th hclusteringsesejun
 
Datamining r 4th
Datamining r 4thDatamining r 4th
Datamining r 4thsesejun
 
Datamining r 3rd
Datamining r 3rdDatamining r 3rd
Datamining r 3rdsesejun
 
Datamining r 2nd
Datamining r 2ndDatamining r 2nd
Datamining r 2ndsesejun
 
Datamining r 1st
Datamining r 1stDatamining r 1st
Datamining r 1stsesejun
 
Datamining 5th knn
Datamining 5th knnDatamining 5th knn
Datamining 5th knnsesejun
 
Datamining 4th adaboost
Datamining 4th adaboostDatamining 4th adaboost
Datamining 4th adaboostsesejun
 
Datamining 3rd naivebayes
Datamining 3rd naivebayesDatamining 3rd naivebayes
Datamining 3rd naivebayessesejun
 
Datamining 2nd decisiontree
Datamining 2nd decisiontreeDatamining 2nd decisiontree
Datamining 2nd decisiontreesesejun
 
Datamining 7th kmeans
Datamining 7th kmeansDatamining 7th kmeans
Datamining 7th kmeanssesejun
 
100401 Bioinfoinfra
100401 Bioinfoinfra100401 Bioinfoinfra
100401 Bioinfoinfrasesejun
 
Datamining 8th Hclustering
Datamining 8th HclusteringDatamining 8th Hclustering
Datamining 8th Hclusteringsesejun
 

More from sesejun (20)

RNAseqによる変動遺伝子抽出の統計: A Review
RNAseqによる変動遺伝子抽出の統計: A ReviewRNAseqによる変動遺伝子抽出の統計: A Review
RNAseqによる変動遺伝子抽出の統計: A Review
 
バイオインフォマティクスによる遺伝子発現解析
バイオインフォマティクスによる遺伝子発現解析バイオインフォマティクスによる遺伝子発現解析
バイオインフォマティクスによる遺伝子発現解析
 
次世代シーケンサが求める機械学習
次世代シーケンサが求める機械学習次世代シーケンサが求める機械学習
次世代シーケンサが求める機械学習
 
20110602labseminar pub
20110602labseminar pub20110602labseminar pub
20110602labseminar pub
 
20110524zurichngs 2nd pub
20110524zurichngs 2nd pub20110524zurichngs 2nd pub
20110524zurichngs 2nd pub
 
20110524zurichngs 1st pub
20110524zurichngs 1st pub20110524zurichngs 1st pub
20110524zurichngs 1st pub
 
20110214nips2010 read
20110214nips2010 read20110214nips2010 read
20110214nips2010 read
 
Datamining 9th association_rule.key
Datamining 9th association_rule.keyDatamining 9th association_rule.key
Datamining 9th association_rule.key
 
Datamining 8th hclustering
Datamining 8th hclusteringDatamining 8th hclustering
Datamining 8th hclustering
 
Datamining r 4th
Datamining r 4thDatamining r 4th
Datamining r 4th
 
Datamining r 3rd
Datamining r 3rdDatamining r 3rd
Datamining r 3rd
 
Datamining r 2nd
Datamining r 2ndDatamining r 2nd
Datamining r 2nd
 
Datamining r 1st
Datamining r 1stDatamining r 1st
Datamining r 1st
 
Datamining 5th knn
Datamining 5th knnDatamining 5th knn
Datamining 5th knn
 
Datamining 4th adaboost
Datamining 4th adaboostDatamining 4th adaboost
Datamining 4th adaboost
 
Datamining 3rd naivebayes
Datamining 3rd naivebayesDatamining 3rd naivebayes
Datamining 3rd naivebayes
 
Datamining 2nd decisiontree
Datamining 2nd decisiontreeDatamining 2nd decisiontree
Datamining 2nd decisiontree
 
Datamining 7th kmeans
Datamining 7th kmeansDatamining 7th kmeans
Datamining 7th kmeans
 
100401 Bioinfoinfra
100401 Bioinfoinfra100401 Bioinfoinfra
100401 Bioinfoinfra
 
Datamining 8th Hclustering
Datamining 8th HclusteringDatamining 8th Hclustering
Datamining 8th Hclustering
 

Ohp Seijoen H20 07 Arraylist

  • 2. 転写因子reb1に結合する配列 配列 頻度 丸山&阿久津,2007 2008年8月,データ解析の基礎,加藤,瀬々,金子. 2
  • 3. 頻度行列計算プログラム再考 Test09i.java public class Test09i { public static void main( String[] args ){ String[] seqs; double[][] freqmat; seqs = new String[]{quot;GTATAAAAAGCGGquot;,quot;CTATAAAAGGCCCquot;,quot;GTATAAAGGGGCGquot;, quot;GTATATAAGCGCGquot;,quot;CTATAAAGGGGCCquot;,quot;GTATAAAGGCGGGquot;}; freqmat = comp_freqmat( seqs ); pri_freqmat( freqmat ); } } これまではすべてデータはプログラムに書き込んできた データが大量になったときプログラムを書き換えるのは大変 ファイルから入力するように修正しよう そうすれば,プログラムを大きく書き換えなくても済む! 2008年8月,データ解析の基礎,加藤,瀬々,金子. 3
  • 4. ファイルからの文字列の読み込みを考える 入力ファイル 配列が何本入っているか分からない GTATAAAAAGCGG たとえば, CTATAAAAGGCCC int k; GTATAAAGGGGCG String[] seqs; k=0; とりあえず GTATATAAGCGCG seqs = new String[10]; CTATAAAGGGGCC while (ファイルの終わりに到達していない){ GTATAAAGGCGGG seqs[k]に1行読み込む; : k++ : } とすると,11行目に達したら破綻する これまで扱ってきた配列は,固定長 可変長の配列が必要なとき → コンテナ ArrayList<T> が便利 2008年8月,データ解析の基礎,加藤,瀬々,金子. 4
  • 5. ArrayList<T> のメソッド Test10a.java プロジェクト名: test10 new ArrayList<T>() import java.util.*; オブジェクトを生成する public class Test10a { public static void main( String[] args ){ int i; .add(T x) ArrayList<String> v; 要素xを追加する v = new ArrayList<String>(); v.add( quot;zeroquot; ); .size() v.add( quot;onequot; ); v.add( quot;twoquot; ); 要素数を返す for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); .get( int i ) } 第i要素を返す } } 画面 [0]=zero [1]=one [2]=two 2008年8月,データ解析の基礎,加藤,瀬々,金子. 5
  • 6. 計算過程 Test10a.java プロジェクト名: test10 スタック import java.util.*; public class Test10a { public static void main( String[] args ){ int i; ArrayList<String> v; v = new ArrayList<String>(); v.add( quot;zeroquot; ); v.add( quot;onequot; ); v.add( quot;twoquot; ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 2008年8月,データ解析の基礎,加藤,瀬々,金子. 6
  • 7. 計算過程 Test10a.java プロジェクト名: test10 スタック import java.util.*; public class Test10a { public static void main( String[] args ){ i v int i; ArrayList<String> v; v = new ArrayList<String>(); v.add( quot;zeroquot; ); v.add( quot;onequot; ); v.add( quot;twoquot; ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 2008年8月,データ解析の基礎,加藤,瀬々,金子. 7
  • 8. 計算過程 Test10a.java プロジェクト名: test10 スタック import java.util.*; public class Test10a { public static void main( String[] args ){ i v int i; ArrayList<String> v; v = new ArrayList<String>(); v.add( quot;zeroquot; ); v.add( quot;onequot; ); v.add( quot;twoquot; ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 2008年8月,データ解析の基礎,加藤,瀬々,金子. 8
  • 9. 計算過程 Test10a.java プロジェクト名: test10 スタック import java.util.*; public class Test10a { public static void main( String[] args ){ i v int i; ArrayList<String> v; v = new ArrayList<String>(); v.add( quot;zeroquot; ); v.add( quot;onequot; ); v.add( quot;twoquot; ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 quot;zeroquot; 2008年8月,データ解析の基礎,加藤,瀬々,金子. 9
  • 10. 計算過程 Test10a.java プロジェクト名: test10 スタック import java.util.*; public class Test10a { public static void main( String[] args ){ i v int i; ArrayList<String> v; v = new ArrayList<String>(); v.add( quot;zeroquot; ); v.add( quot;onequot; ); v.add( quot;twoquot; ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 quot;zeroquot; “onequot; 2008年8月,データ解析の基礎,加藤,瀬々,金子. 10
  • 11. 計算過程 Test10a.java プロジェクト名: test10 スタック import java.util.*; public class Test10a { public static void main( String[] args ){ i v int i; ArrayList<String> v; v = new ArrayList<String>(); v.add( quot;zeroquot; ); v.add( quot;onequot; ); v.add( quot;twoquot; ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 quot;zeroquot; “onequot; “twoquot; 実際にはArrayList<T>は内部には配列を持っており,初期状態で長さ10の 配列を持っている.よって,このように要素を入れるごとに配列を伸ばすよ 2008年8月,データ解析の基礎,加藤,瀬々,金子. うなことはしない. 11
  • 12. 計算過程 Test10a.java プロジェクト名: test10 スタック import java.util.*; public class Test10a { public static void main( String[] args ){ i=0 v int i; ArrayList<String> v; v = new ArrayList<String>(); v.add( quot;zeroquot; ); v.add( quot;onequot; ); v.add( quot;twoquot; ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 quot;zeroquot; “onequot; “twoquot; 2008年8月,データ解析の基礎,加藤,瀬々,金子. 12
  • 13. 計算過程 Test10a.java プロジェクト名: test10 スタック import java.util.*; public class Test10a { public static void main( String[] args ){ i=0 v int i; ArrayList<String> v; v = new ArrayList<String>(); v.add( quot;zeroquot; ); v.add( quot;onequot; ); v.add( quot;twoquot; ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 quot;zeroquot; “onequot; “twoquot; 2008年8月,データ解析の基礎,加藤,瀬々,金子. 13
  • 14. 計算過程 Test10a.java プロジェクト名: test10 スタック import java.util.*; public class Test10a { public static void main( String[] args ){ i=0 v int i; ArrayList<String> v; v = new ArrayList<String>(); v.add( quot;zeroquot; ); v.add( quot;onequot; ); v.add( quot;twoquot; ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 quot;zeroquot; [0]=zero “onequot; “twoquot; 2008年8月,データ解析の基礎,加藤,瀬々,金子. 14
  • 15. 計算過程 Test10a.java プロジェクト名: test10 スタック import java.util.*; public class Test10a { public static void main( String[] args ){ i=0 v int i; ArrayList<String> v; v = new ArrayList<String>(); v.add( quot;zeroquot; ); v.add( quot;onequot; ); v.add( quot;twoquot; ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 quot;zeroquot; [0]=zero “onequot; “twoquot; 2008年8月,データ解析の基礎,加藤,瀬々,金子. 15
  • 16. 計算過程 Test10a.java プロジェクト名: test10 スタック import java.util.*; public class Test10a { public static void main( String[] args ){ i=1 v int i; ArrayList<String> v; v = new ArrayList<String>(); v.add( quot;zeroquot; ); v.add( quot;onequot; ); v.add( quot;twoquot; ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 quot;zeroquot; [0]=zero “onequot; “twoquot; 2008年8月,データ解析の基礎,加藤,瀬々,金子. 16
  • 17. 計算過程 Test10a.java プロジェクト名: test10 スタック import java.util.*; public class Test10a { public static void main( String[] args ){ i=1 v int i; ArrayList<String> v; v = new ArrayList<String>(); v.add( quot;zeroquot; ); v.add( quot;onequot; ); v.add( quot;twoquot; ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 quot;zeroquot; [0]=zero “onequot; “twoquot; 2008年8月,データ解析の基礎,加藤,瀬々,金子. 17
  • 18. 計算過程 Test10a.java プロジェクト名: test10 スタック import java.util.*; public class Test10a { public static void main( String[] args ){ i=1 v int i; ArrayList<String> v; v = new ArrayList<String>(); v.add( quot;zeroquot; ); v.add( quot;onequot; ); v.add( quot;twoquot; ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 quot;zeroquot; [0]=zero [1]=one “onequot; “twoquot; 2008年8月,データ解析の基礎,加藤,瀬々,金子. 18
  • 19. 計算過程 Test10a.java プロジェクト名: test10 スタック import java.util.*; public class Test10a { public static void main( String[] args ){ i=2 v int i; ArrayList<String> v; v = new ArrayList<String>(); v.add( quot;zeroquot; ); v.add( quot;onequot; ); v.add( quot;twoquot; ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 quot;zeroquot; [0]=zero [1]=one “onequot; “twoquot; 2008年8月,データ解析の基礎,加藤,瀬々,金子. 19
  • 20. ArrayList<T>の制限 ArrayList<T> のTは参照型のみ 基本データ型(intやdouble)はダメ ArrayList<String> はOK ArrayList<int> はダメ ArrayList<double> はダメ Tに基本データ型を使う手段は? → ラッパークラスを使おう 2008年8月,データ解析の基礎,加藤,瀬々,金子. 20
  • 21. 基本データ型のラッパークラス 基本データ型 参照型 int Integer double Double 基本データ型の char Character ラッパークラス boolean Boolean スタック なし String Test10b.java public class Test10b { public static void main( String[] args ){ Integer a; int b; ヒープ a = 5; b = a; } } 基本データ型はプリミティブ型とも呼ばれる 2008年8月,データ解析の基礎,加藤,瀬々,金子. 21
  • 22. 基本データ型のラッパークラス 基本データ型 参照型 int Integer double Double 基本データ型の char Character ラッパークラス boolean Boolean スタック なし String Test10b.java a b public class Test10b { public static void main( String[] args ){ Integer a; int b; ヒープ a = 5; b = a; } } 基本データ型はプリミティブ型とも呼ばれる 2008年8月,データ解析の基礎,加藤,瀬々,金子. 22
  • 23. 基本データ型のラッパークラス 基本データ型 参照型 int Integer double Double 基本データ型の char Character ラッパークラス boolean Boolean スタック なし String Test10b.java a b public class Test10b { public static void main( String[] args ){ Integer a; int b; ヒープ a = 5; b = a; 5 } } 基本データ型はプリミティブ型とも呼ばれる 2008年8月,データ解析の基礎,加藤,瀬々,金子. 23
  • 24. 基本データ型のラッパークラス 基本データ型 参照型 int Integer double Double 基本データ型の char Character ラッパークラス boolean Boolean スタック なし String Test10b.java a b=5 public class Test10b { public static void main( String[] args ){ Integer a; int b; ヒープ a = 5; b = a; 5 } } 基本データ型はプリミティブ型とも呼ばれる 2008年8月,データ解析の基礎,加藤,瀬々,金子. 24
  • 25. ArrayList<T> のメソッド Test10c.java プロジェクト名: test10 new ArrayList<T>() import java.util.*; オブジェクトを生成する public class Test10c { public static void main( String[] args ){ int i; .add(T x) ArrayList<Double> v; 要素xを追加する v = new ArrayList<Double>(); v.add( 10.0 ); .size() v.add( 10.1 ); v.add( 10.2 ); 要素数を返す for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); .get( int i ) } 第i要素を返す } } 画面 [0]=10.0 [1]=10.1 [2]=10.2 2008年8月,データ解析の基礎,加藤,瀬々,金子. 25
  • 26. 計算過程 Test10c.java プロジェクト名: test10 スタック import java.util.*; public class Test10c { public static void main( String[] args ){ i v int i; ArrayList<Double> v; v = new ArrayList<Double>(); v.add( 10.0 ); v.add( 10.1 ); v.add( 10.2 ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 2008年8月,データ解析の基礎,加藤,瀬々,金子. 26
  • 27. 計算過程 Test10c.java プロジェクト名: test10 スタック import java.util.*; public class Test10c { public static void main( String[] args ){ i v int i; ArrayList<Double> v; v = new ArrayList<Double>(); v.add( 10.0 ); v.add( 10.1 ); v.add( 10.2 ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 2008年8月,データ解析の基礎,加藤,瀬々,金子. 27
  • 28. 計算過程 Test10c.java プロジェクト名: test10 スタック import java.util.*; public class Test10c { public static void main( String[] args ){ i v int i; ArrayList<Double> v; v = new ArrayList<Double>(); v.add( 10.0 ); v.add( 10.1 ); v.add( 10.2 ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 10.0 2008年8月,データ解析の基礎,加藤,瀬々,金子. 28
  • 29. 計算過程 Test10c.java プロジェクト名: test10 スタック import java.util.*; public class Test10c { public static void main( String[] args ){ i v int i; ArrayList<Double> v; v = new ArrayList<Double>(); v.add( 10.0 ); v.add( 10.1 ); v.add( 10.2 ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 10.0 10.1 2008年8月,データ解析の基礎,加藤,瀬々,金子. 29
  • 30. 計算過程 Test10c.java プロジェクト名: test10 スタック import java.util.*; public class Test10c { public static void main( String[] args ){ i v int i; ArrayList<Double> v; v = new ArrayList<Double>(); v.add( 10.0 ); v.add( 10.1 ); v.add( 10.2 ); ヒープ for ( i = 0; i < v.size(); i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+v.get(i)); } } } 画面 10.0 10.1 10.2 2008年8月,データ解析の基礎,加藤,瀬々,金子. 30
  • 31. 準備完了 基本データ型 参照型 int Integer double Double char Character boolean Boolean なし String ArrayList<T> のメソッド,Tは参照型のみ許される メソッド名 説明 new ArrayList<T>() ArrayList<T>の実体を生成する add(T x) 要素 x を追加する size() 要素数を返す get( int i ) 第 i 要素を返す 2008年8月,データ解析の基礎,加藤,瀬々,金子. 31
  • 32. やりたいこと Test09i.java public class Test09i { public static void main( String[] args ){ String[] seqs; double[][] freqmat; seqs = new String[]{quot;GTATAAAAAGCGGquot;,quot;CTATAAAAGGCCCquot;,quot;GTATAAAGGGGCGquot;, quot;GTATATAAGCGCGquot;,quot;CTATAAAGGGGCCquot;,quot;GTATAAAGGCGGGquot;}; freqmat = comp_freqmat( seqs ); pri_freqmat( freqmat ); } } これまではすべてデータはプログラムに書き込んできた データが大量になったときプログラムを書き換えるのは大変 ファイルから入力するように修正しよう そうすれば,プログラムを大きく書き換えなくても済む! 2008年8月,データ解析の基礎,加藤,瀬々,金子. 32
  • 33. ファイルからの入力 multiple-alignment.txt GTATAAAAAGCGG CTATAAAAGGCCC GTATAAAGGGGCG GTATATAAGCGCG CTATAAAGGGGCC GTATAAAGGCGGG : : このファイルを読み込んでみよう 2008年8月,データ解析の基礎,加藤,瀬々,金子. 33
  • 34. ファイルからの入力 Test10c.java プロジェクト名: test10 import java.io.*; import java.util.*; public class Test10d { public static void main( String[] args ){ int i; String filename_in; String[] seqs; filename_in = quot;multiple-alignment.txtquot;; seqs = read_seqs( filename_in ); for ( i = 0; i < seqs.length; i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+seqs[i]); } } public static String[] read_seqs( String filename ){略} } 2008年8月,データ解析の基礎,加藤,瀬々,金子. 34
  • 35. ファイルからの入力 Test10d.java プロジェクト名: test10 import java.io.*; import java.util.*; ここでは詳細には解説しない public class Test10d { 定型の書き方だと考えてほしい public static void main( String[] args ){略} public static String[] read_seqs( String filename ){ BufferedReader br; String ln; ArrayList<String> seqs; ArrayList<String>の String[] ret; seqs = new ArrayList<String>(); 実体を生成する try { br = new BufferedReader( new FileReader(new File(filename)) ); while ( (ln = br.readLine()) != null ){ seqs.add( ln ); ファイルの終わりまで1行ずつ } } catch (IOException e){ 読み込み,seqsに追加していく System.out.println(e+quot;quot;); System.exit(1); } ret = seqs.toArray(new String[0]); return ret; ArrayList<String>を } } 配列 String[] 型に変換する 2008年8月,データ解析の基礎,加藤,瀬々,金子. 35
  • 36. ファイルからの入力 Test10d.java プロジェクト名: test10 import java.io.*; import java.util.*; public class Test10d { public static void main( String[] args ){ int i; String filename_in; String[] seqs; filename_in = quot;multiple-alignment.txtquot;; seqs = read_seqs( filename_in ); for ( i = 0; i < seqs.length; i++ ){ System.out.println(quot;[quot;+i+quot;]=quot;+seqs[i]); } } public static String[] read_seqs( String filename ){略} } 標準出力 [0]=GTATAAAAAGCGG [1]=CTATAAAAGGCCC [2]=GTATAAAGGGGCG [3]=GTATATAAGCGCG [4]=CTATAAAGGGGCC [5]=GTATAAAGGCGGG 2008年8月,データ解析の基礎,加藤,瀬々,金子. 36
  • 37. 練習10-d. Test10c.java プロジェクト名: test10 ファイル「multiple-alignment.txt」から配列集合を読み込み, 頻度行列を計算せよ 1. 演習のウェブページからファイルmultiple-alignment.txt をダウンロードする 2. プロジェクトのフォルダに入れる 3. Test10d.java を打ち込んで,実行する (1) まずは,プログラムを作って動作させよ (2) 数行複製してみて,入力される配列の本数が入力ファイルに応じて 変わることをデバッガで確認せよ 2008年8月,データ解析の基礎,加藤,瀬々,金子. 37
  • 38. 練習10-e. Test10e.java プロジェクト名: test10 ファイル「multiple-alignment.txt」から配列集合を読み込み, 頻度行列を計算せよ 1. 演習のウェブページからファイルmultiple-alignment.txt をダウンロードする 2. プロジェクトのフォルダに入れる 3. Test09i.javaからソースコードをコピーして,Test10d.javaから メソッドread_seqs(String)をコピーして完成させる (1) 演習のウェブページからファイル「reb1-binding.txt」も ダウンロードして頻度行列を計算してみよう 2008年8月,データ解析の基礎,加藤,瀬々,金子. 38
  • 39. 練習10-f. Test10f.java プロジェクト名: test10 ファイル「rhodopsin-mltaln.txt」から配列集合を読み込み, p-distance による距離行列を計算せよ 1. 演習のウェブページからファイルrhodopsin-mltaln.txt をダウンロードする 2. プロジェクトのフォルダに入れる 3. これまで作ってきたソースコードから利用できる部分は 貼り付けて,Test10f.javaを完成させ,動作させよ 2008年8月,データ解析の基礎,加藤,瀬々,金子. 39