stackoverflowにも同じ質問をしましたが、満足のいく答えが得られませんでした。
次のディレクトリツリーがあります。
bacteria > species(num subdirs = 1300) > kmer(num subsudirs = 9)
ディレクトリとサブディレクトリは次のように結合されます。
bacteria/specie1/kmer2/csv
kmer3/csv
.
.
kmer9/csv
specie2/kmer2/csv
kmer3/csv
.
.
kmer9/csv
specie1300/kmer2/csv
kmer3/csv
.
.
kmer9/csv
kmerサブディレクトリにはcsvファイルがあり、種に応じて1つ以上のファイルがあります。
csvファイルはkmerと一緒に2つの列でシンプルで重要です。すべてのより大きなkmer(例えば6つ以上)が計算しているので、同じkmerキーを持つことになるかどうかはわかりません。。
たとえば、
bacteria/species1/kmer2/example_csv_k2_count.csv
csv example_csv_k2_count.csvの構造は次のとおりです。
kmer,count
AA, 10
AC, 20
.
.
.
各種とkmerの数について、各kmerの数(2-9)のcsvファイルを1つのマスターcsvにリンクする必要があります。たとえば、kmer2 の数を持つすべての種のサブディレクトリには、次のものが必要です。
specie1.csv1
kmer, count
aa, 22
at, 21...
specie1.csv2
kmer, count
aa, 31
at, 18...
細菌/種2/kmer2の場合:
specie2.csv1
kmer, count
aa, 22
at, 21...
specie2.csv2
kmer, count
aa, 31
at, 18...
各種とそのkmer数のマスターkmer2_count.csvを作成する必要があります。
kmer, count
aa, 22, 31,...
at, 21, 18,...
スタック、Googleが検索した多くのコードとコマンドを試しましたが、常にスタックに表示されます。
kmer, count
aa, 31
at, 18...
kmer, count
aa, 22
at, 21...
私が試したシェルコマンドの例:
$ cat */kmer2/*.csv | datamash -t , transpose
datamash: transpose input error: line 275 has 1 fields (previous lines had 2);
例2:
awk '
FNR==1 && NR!=1 { while (/^<header>/) getline; }
1 {print}
' */kmer9/*.csv > ex.csv
今私はpython / pandasを使用しており、作業は完了しますが、kmerの数が6より大きい場合(たとえば7)、私のラップトップは3日間動作し続けます。多くの種のゲノム配列が複数回指定されているか亜種または系統であるため、数平均を算出するためにこれらを結合しようとしました。次に、配列決定されたすべてのゲノムの平均を含むマスターファイルを作成します。
このため、私はシェルソリューションを好む。
ありがとう、ポール
PS=申し訳ありません。私の要件を説明するテキストはありません。今は明確になることを願っています。すみません。
ベストアンサー1
私はあなたの目標を理解しているかどうかわかりません。
必要に応じて
cat input1.csv
kmer,count
aa,22
at,21
cat input2.csv
kmer,count
aa,31
at,18
到着
それはまるで
kmer,count
aa,22;31
at,21;18
あなたはそれを使用することができますミラーそして走る
mlr --csv nest --implode --values --across-records -f count input1.csv input2.csv