Pedig의 ngen에서 만들어진 결과 파일을 이용하여 혈통완성도지수(Pedigree Completeness Index)를 계산한다.

Pedigree completeness index란

 

지정한 세대까지 혈통이 얼마나 완전한지를 나타내는 지수

○ 혈통완성도지수 : 

와   

의 조화평균

여기서

는 아비와 어미의 혈통완성도지수에 대한 기여도로

여기서 

는 지정한 세대, 예를 들어 1대, 3대, 5대, 7대 등,

는 개체의 주어진 세대의 알려진 조상의 비율, 예를 들어 어떤 개체의 2대 조상 4마리 중 2마리만 알려져 있다면

,

는 각 세대의 알려진 조상의 비율의 산술평균

○ 계산 순서

- 예를 들어

라 하면

- 각 개체의 세대별

계산

- 각 개체의

 계산 :

에서

a까지의 산술평균

- 개체 아비의

와  어미의

 의 조화평균 계산

 

다음은 ngen의 결과 파일  308981 1.0000000 0.5000000 0.5000000 0.4375000 0.1875000 0.0312500 0.0156250 0.0156250  308982 1.0000000 1.0000000 0.7500000 0.7500000 0.6250000 0.3437500 0.1562500 0.0390625  308983 1.0000000 1.0000000 1.0000000 1.0000000 0.8437500 0.5000000 0.1406250 0.0468750  308984 1.0000000 1.0000000 1.0000000 1.0000000 0.5937500 0.2500000 0.1328125 0.0468750  308985 1.0000000 1.0000000 1.0000000 0.8750000 0.4375000 0.2500000 0.1093750 0.0000000  308986 1.0000000 1.0000000 0.7500000 0.7500000 0.5000000 0.1562500 0.0781250 0.0117188  308987 1.0000000 1.0000000 1.0000000 1.0000000 0.7500000 0.4218750 0.0859375 0.0117188

 

다음은 SAS code

/* 혈통 파일 읽어 오기 */data pa1;    infile 'pci\hw_cow_pedi_ped_util.out';    input arn srn drn aid sid did n1 n2;    flag = 1;run;
/* 8세대까지의 각 세대의 알려진 조상의 비율 파일 읽어 오기 */data pb1;    infile 'pci\hw_cow_pedi_ped_util_ngen.out';    input arn a1-a8;run;
/* 각 개체의 1세대, 3세대, 5세대까지의 알려진 조상의 비율의 산술평균 구하기 */data pb2;    set pb1;
    c1 = a1;    c3 = mean(of a1-a3);    c5 = mean(of a1-a5);run;
/* 혈통에 개체별 알려진 조상의 비율 머지 */proc sort data = pa1;    by arn;run;
proc sort data = pb1;    by arn;run;
data pci0;    merge pa1 pb1;    by arn;    if flag = 1 then output;run;
/* 혈통에 아비 C 를 머지 */data pc1;    set pb2;    keep arn c1 c3 c5;    rename arn = srn;    rename c1 = cs1;    rename c3 = cs3;    rename c5 = cs5;run;
proc sort data = pci0;    by srn;run;
proc sort data = pc1;    by srn;
data pci1;    merge pci0 pc1;    by srn;    if flag = 1 then output;run;

/* 어미 C 를 머지 */data pc2;    set pb2;    keep arn c1 c3 c5;    rename arn = drn;    rename c1 = cd1;    rename c3 = cd3;    rename c5 = cd5;run;
proc sort data = pci1;    by drn;run;
proc sort data = pc2;    by drn;run;
data pci2;    merge pci1 pc2;    by drn;    if flag = 1 then output;run;
/* 최종 PCI 계산 */
data pci3;    set pci2;    pci1 = harmean(cs1, cd1);    pci3 = harmean(cs3, cd3);    pci5 = harmean(cs5, cd5);

 

run;

 

 

+ Recent posts