여러 파일의 데이터를 사용하여 tsv 파일 만들기

여러 파일의 데이터를 사용하여 tsv 파일 만들기

여러 파일에서 tsv 파일을 만드는 방법은 무엇입니까?

여러 다른 파일에서 tsv 파일을 만들 수 있기를 원합니다. 샘플은 데이터가 포함된 5개의 "영역" 파일과 연결되어 있습니다. 예를 들어, 샘플1의 파일은 1_region1.cov, 1_region2.cov, 1_region3.cov, 1_region4.cov 1_region5.cov입니다. 여기서 1_region은엑스.cov는 TSV입니다.머리글. 저는 "평균 깊이"라는 제목 아래의 데이터에 관심이 있습니다. 1_region1 값을 가져와서 Region1 헤더 아래의 내 tsv 파일에 추가하고 싶습니다. 13개의 샘플이 있고 각각 5개의 영역 파일이 있으므로 총 65개의 .cov 파일이 있습니다.

내 출력의 예는 다음과 같습니다

견본 지역 1 지역 2 지역 3 지역 4 지역 5
1 45 32 33 28 15
2 30 25 스물 둘 60 105
44 50 스물 둘 55 77
... ... ... ... ...
13 2 50 45 66

이 경우 숫자는 방금 구성되었습니다.

이것은 나의 현재 시도입니다:

## Sample array
samples=()
for i in {1..13};do samples+=($i); done
## Regions array
regions=(region1 region2 region3 region4 region5)

## I make some variables to store data
arr=()
CountData=()
CountIndex=0
SampleIndex=0
x=''
delim=':'

## I loop through my samples array to collect CountData from the .cov files. I know the naming convention of these files and follow it.
for ((i=0; i<${#samples[@]}; i++)); do
  for j in ${regions[@]};do CountData+=($(awk '{ for(k=1;k<=NF;k++){if($k == "meandepth"){getline; print $k} } }' ${samples[$i]}_${j}.cov)); done
done

## I loop through my CountData array to collect the tuples and store them into an array
for n in $(seq 0 $((${#CountData[@]} - 1))); do 
  count=$((CountIndex + 1))
  samplename=${samples[$SampleIndex]}
  if [ $((count % 6)) -eq 0 ];then
    arr+=($samplename$x) && CountIndex=$((CountIndex + 1)) && x='' && \ 
    SampleIndex=$((SampleIndex + 1))
  else
    x=$x$delim${CountData[$CountIndex]}
    CountIndex=$((CountIndex + 1))
  fi 
done

# I loop through my array and output the tuples as a tsv
for i in ${arr[@]}; do echo $i | sed 's/:/\t/g' >> output.tsv; done

# I add the header in after
sed -i "1iSample\tRegion1\tRegion2\tRegion3\tRegion4\tRegion5

내 시도는 두 개의 인덱스를 사용하여 배열을 반복합니다. 이는 샘플 1과 관련된 모든 파일을 동일한 줄에 가져오려는 시도이지만 첫 번째 샘플 이후에는 숫자가 더 이상 파일에 있는 것과 일치하지 않습니다. 즉, Sample2 Region1은 30 대신 15를 보고합니다. 실제로 이 스크립트는 처음 11개 샘플만 반복할 수 있습니다. 이는 아마도 조건에서 모듈로 6을 사용하고 있기 때문일 것입니다.

Sample1과 연결된 5개 파일 각각이 Sample1과 같은 줄에 있도록 여러 파일에서 tsv 파일을 만들려면 어떻게 해야 합니까?

감사해요.

관련 정보