

CHRの中は`1 1 1 1 1 1 2 2 2 2 2 ・・・・22 22 X X ・・Y Y ・・MT MT
MT`という感じになっています。この中から、番号ごとにその数をカウントしたいです。数字だけでなく、文字もあるので、どうすれば良いかわかりません。

[code]

    import sys
    import os
    
    with open('test.vcf','r') as file:
        lines = file.read().split('\n')
    
        for line in lines:
            a = line.split('\t')
            CHR = a[0]
    
[/code]


CC BY-SA 4.0
2019-05-15T05:03:30.130
54967
2019-05-15T10:17:57.267
2019-05-15T10:17:57.267
34322
question
python python3 bioinformatics
同じ番号を含むものの中から番号ごとに数を数える


collections.Counterをお使いください。

[collections --- コンテナデータ型 — Python 3.7.3
ドキュメント](https://docs.python.org/ja/3/library/collections.html#collections.Counter)

これは、要素のキー毎に出現回数をカウントする `dict` のサブクラスで、まさにそのような用途のために存在するクラスです。

以下のようなコードで動作を確認できるかと存じます。

[code]

    import sys
    import os
    from collections import Counter
    
    chars = []
    with open('test.vcf','r') as file:
        lines = file.read().split('\n')
    
        for line in lines:
            a = line.split('\t')
            CHR = a[0]
            chars.append(CHR)
    
    c = Counter(chars)
    print(c)
    
[/code]


CC BY-SA 4.0
2019-05-15T06:16:12.570
54971
2019-05-15T06:16:12.570
29826
54967
answer