【发布时间】:2014-09-04 02:15:50
【问题描述】:
如果我们有三个示例输入文件:
Test_95_target_1334_assay_Detail3.csv
A,accession,result_id,cpd_number,lot_no,assay_id,alt_assay_id,version_no,result_type,type_desc,operator,result_value,unit_id,unit_value,unit_desc,batch_no,experiment_date,discipine,assay_name,activity_flag
95,PKC,123456,cpd-0123456,1,1334,5678,1,1,IC50,>,26.21,1,uM,micromolar,67682,1/24/2007 12:00:00AM,Enzymatic,PBA,
95,PKC,123456,cpd-0123456,1,1334,4600,1,1,IC50,,17.1,1,uM,micromolar,67682,1/24/2007 12:00:00AM,Enzymatic,PBA,
95,PKC,123456,cpd-1234567,1,1334,2995,1,1,Ki,,30,1,uM,micromolar,67682,1/24/2007 12:00:00AM,Enzymatic,PBA,
95,PKC,123456,cpd-1234567,1,1334,2900,1,1,IC50,,30,1,uM,micromolar,67682,1/24/2007 12:00:00AM,Enzymatic,PBA,
Test_95_target_1338_assay_Detail3.csv
A,accession,result_id,cpd_number,lot_no,assay_id,alt_assay_id,version_no,result_type,type_desc,operator,result_value,unit_id,unit_value,unit_desc,batch_no,experiment_date,discipine,assay_name,activity_flag
95,PKC,123456,cpd-0123456,1,1338,3999,1,1,IC50,,55,1,uM,micromolar,67682,1/24/2007 12:00:00AM,Biochemical,PBA,
95,PKC,123456,cpd-0123456,1,1338,1985,1,1,IC50,,66,1,uM,micromolar,67682,1/24/2007 12:00:00AM,Biochemical,PBA,
95,PKC,123456,cpd-1234007,1,1338,2995,1,1,Ki,,18,1,uM,micromolar,67682,1/24/2007 12:00:00AM,Biochemical,PBA,
95,PKC,123456,cpd-1239867,1,1338,2900,1,1,IC50,,20,1,uM,micromolar,67682,1/24/2007 12:00:00AM,Biochemical,PBA,
95,PKC,123456,cpd-1234567,1,1338,2900,1,1,IC50,,20,1,uM,micromolar,67682,1/24/2007 12:00:00AM,Biochemical,PBA,
Test_95_target_2888_assay_Detail3
Test,accession,result_id,cpd_number,lot_no,assay_id,alt_assay_id,version_no,result_type,type_desc,operator,result_value,unit_id,unit_value,unit_desc,batch_no,experiment_date,discipine,assay_name,activity_flag
95,PKC,123456,cpd-0123456,1,2888,3830,1,1,IC50,>,24.49,1,uM,micromolar,67682,1/24/2007 12:00:00AM,Cell,PBA,
95,PKC,123456,cpd-0123456,1,2888,4600,1,1,IC50,,19.6799,1,uM,micromolar,67682,1/24/2007 12:00:00AM,Cell,PBA,
95,PKC,123456,cpd-1234567,1,2888,3830,1,1,IC50,,30,1,uM,micromolar,67682,1/24/2007 12:00:00AM,Cell,PBA,
95,PKC,123456,cpd-5566778,1,2888,3830,1,1,IC50,,30,1,uM,micromolar,67682,1/24/2007 12:00:00AM,Cell,PBA,
有什么方法可以使用 bash/awk(也欢迎使用 python!)对第 18 列(18 美元)为“酶”、“生化”和“细胞”的文件进行分类?我们的目标是在 18 美元中从生化或酶中选择具有最多独特化合物(4 美元)的文件,并在 18 美元中选择具有来自细胞的独特化合物数量最多的文件。
在这种情况下,我们将从第 18 列为“酶”或“生化”的文件中选择“Test_95_target_1338_assay_Detail3.csv”。 (因为“Test_95_target_1338_assay_Detail3.csv”在 4 美元中有 3 个独特的化合物,而“Test_95_target_1334_assay_Detail3.csv”只有 2 个独特的化合物。3 > 2)在这种情况下,我们将为单元类别选择“Test_95_target_2888_assay_Detail3.csv”,因为它是唯一的一。
尝试在这里:此脚本将找到行数最多的 csv 文件,并将该文件名变成一个变量以用于以下过程。我有另一个脚本来查找具有最多独特化合物(4 美元)的 csv 文件。我将该脚本留在了另一台笔记本电脑中,明天早上才能访问它。因此,只需发布以下内容。
#!/bin/bash
for A in 95
do
wc -l Test_${A}_target_*_assay_Detail_average.csv > Test_${A}_target.csv
### This will make
#4 Test_95_target_1334_assay_Detail3.csv
#4 Test_95_target_1338_assay_Detail3.csv
#4 Test_95_target_2388_assay_Detail3.csv
#13 Total
head -n -1 Test_${A}_target.csv > Test_${A}_target2.csv # remove the last line "total"
sort -k1 -r -n Test_${A}_target2.csv > Test_${A}_target3.csv # sort the count column
# Only pick the second column in the "wc -l" output
awk -F " " '{print $2}' Test_${A}_target3.csv > Test_${A}_target4.csv # Grasp the $2 file name info
max=$(head -n 1 Test_${A}_target4.csv) # Make the top file name as the variable "max" for the following process
echo $max
rm Test_${A}_target3.csv Test_${A}_target2.csv Test_${A}_target.csv
done
输出:
echo $max
Test_95_target_1338_assay_Detail3.csv
但是,我不太清楚如何根据 18 美元的信息对 csv 文件进行分类。任何大师都可以提供一些cmets或解决方案吗?谢谢。
【问题讨论】:
-
提示:
awk -F, '{print $18}' file根据逗号分隔字段获取第 18 个字段。 -
.csv 文件有多大(以行为单位)?如果没有太大,您可以将内容放入列表并使用它们。
-
你能举一个预期输出的例子吗?