annotate get_chrom_sizes/calculating_chrom.sizes.py @ 15:c7e2879bf357 draft

Uploaded
author jackcurragh
date Tue, 17 May 2022 13:49:26 +0000
parents 84664985411c
children ab7b5928faea
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
1 # input a genome file and return a file genome.chrom.sizes to be associated with the custom build (or just have it as an output to be used later in the history.
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
2 # adapted from https://bioexpressblog.wordpress.com/2014/04/15/calculate-length-of-all-sequences-in-an-multi-fasta-file/
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
3 from sys import argv
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
4 # python calculating_chrom.sizes.py genome_input.fa output.chrom.sizes
6
c96b29e00427 Uploaded
jackcurragh
parents: 4
diff changeset
5 fasta_source = str(argv[1])
15
c7e2879bf357 Uploaded
jackcurragh
parents: 8
diff changeset
6 prefix = str(argv[2])
c7e2879bf357 Uploaded
jackcurragh
parents: 8
diff changeset
7 output = str(argv[3])
c7e2879bf357 Uploaded
jackcurragh
parents: 8
diff changeset
8 genome = str(argv[4])
c7e2879bf357 Uploaded
jackcurragh
parents: 8
diff changeset
9 builtin = str(argv[5])
c7e2879bf357 Uploaded
jackcurragh
parents: 8
diff changeset
10
1
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
11 # genome = 'test-data/test.fasta'
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
12 # output = "test-data/test_chrom.sizes"
8
84664985411c Uploaded
jackcurragh
parents: 6
diff changeset
13 print(fasta_source, genome, builtin, prefix, output)
84664985411c Uploaded
jackcurragh
parents: 6
diff changeset
14 if fasta_source == 'builtin':
84664985411c Uploaded
jackcurragh
parents: 6
diff changeset
15 genome = builtin
1
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
16
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
17 chromSizesoutput = open(output,"w")
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
18
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
19 records = []
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
20 record = False
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
21 for line in open(genome, 'r').readlines():
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
22 if line[0] == '>':
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
23 if record:
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
24 records.append(record)
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
25 record = [line.strip("\n").split(' ')[0][1:], 0]
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
26
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
27 else:
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
28 sequence = line.strip('\n')
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
29 record[1] += len(sequence)
3
cfdf764b9226 Uploaded
jackcurragh
parents: 1
diff changeset
30
cfdf764b9226 Uploaded
jackcurragh
parents: 1
diff changeset
31 if record not in records:
cfdf764b9226 Uploaded
jackcurragh
parents: 1
diff changeset
32 records.append(record)
cfdf764b9226 Uploaded
jackcurragh
parents: 1
diff changeset
33
1
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
34 for seq_record in records:
4
c6a297d05c8e Uploaded
jackcurragh
parents: 3
diff changeset
35 if prefix != 'none':
c6a297d05c8e Uploaded
jackcurragh
parents: 3
diff changeset
36 output_line = f"{prefix}{seq_record[0]}\t{seq_record[1]}\n"
c6a297d05c8e Uploaded
jackcurragh
parents: 3
diff changeset
37 else:
c6a297d05c8e Uploaded
jackcurragh
parents: 3
diff changeset
38 output_line = f"{seq_record[0]}\t{seq_record[1]}\n"
c6a297d05c8e Uploaded
jackcurragh
parents: 3
diff changeset
39
1
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
40 chromSizesoutput.write(output_line)
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
41
27f3669eda60 Uploaded
jackcurragh
parents:
diff changeset
42 chromSizesoutput.close()