FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
NewPythonPrograms/CatchNeg.py at master · marcsze/NewPythonPrograms · GitHub
marcsze
/
NewPythonPrograms
Public
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Issues
0
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
NewPythonPrograms
/
CatchNeg.py
Copy path
More file actions
More file actions
Latest commit
History
History
History
105 lines (86 loc) · 2.57 KB
Breadcrumbs
NewPythonPrograms
/
CatchNeg.py
Copy path
File metadata and controls
105 lines (86 loc) · 2.57 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#! python
# First attempt at using a Kmer based approach to identify contamination.
# Load the needed modules for the program
import
sys
,
re
# Read in a Command arguments for files to match
# Input other instructions from here
def
commandLine
():
commands
=
sys
.
argv
fastafile
=
commands
[
1
]
length
=
int
(
commands
[
2
])
return
fastafile
,
length
# Read in data and create dictionary
def
makeDataArray
(
inputfile
,
type
):
inputfile
=
open
(
inputfile
,
'r'
)
if
type
==
"fasta"
:
# Create specific environment variables
x
=
1
names
=
[]
sequence
=
[]
DataDict
=
{}
# Read data in and create a dictionary
for
line
in
inputfile
:
if
x
%
2
!=
0
:
newLine
=
re
.
sub
(
'>'
,
''
,
line
)
names
.
append
(
newLine
.
strip
(
'
\t
\n
'
))
else
:
sequence
.
append
(
line
.
strip
(
'
\n
'
))
x
=
x
+
1
inputfile
.
close
()
for
i
,
seqName
in
enumerate
(
names
):
DataDict
[
seqName
]
=
sequence
[
i
]
# deal with data that is a group file
elif
type
==
"group"
:
DataDict
=
{}
for
line
in
inputfile
:
seqName
,
group
=
line
.
split
(
'
\t
'
)
DataDict
[
seqName
]
=
group
.
strip
(
'
\n
'
)
# deal with data that is a map file
else
:
DataDict
=
{}
for
line
in
inputfile
:
number
,
seqname
=
line
.
split
(
'
\t
'
)
DataDict
[
number
]
=
seqname
.
strip
(
'
\n
'
)
return
DataDict
# Function to generate total Kmers
def
generateKmersList
(
sequence
,
length
):
tempKmerList
=
[]
total
=
len
(
sequence
)
for
j
,
nucleotide
in
enumerate
(
sequence
):
if
j
+
length
>
total
-
1
:
break
else
:
kmerCheck
=
sequence
[
j
:
j
+
length
]
tempKmerList
.
append
(
kmerCheck
)
return
tempKmerList
# Function to remove duplicates from website
# http://www.dotnetperls.com/duplicates-python
def
removeDups
(
tempKmerList
):
output
=
[]
seen
=
set
()
for
value
in
tempKmerList
:
# If value has not been encountered yet,
# ... add it to both list and set.
if
value
not
in
seen
:
output
.
append
(
value
)
seen
.
add
(
value
)
return
output
#Function to get total unique kmers in a given dictionary
def
getTotalKmers
(
fastaDict
,
length
):
kmerNumDict
=
{}
for
i
in
fastaDict
:
sequence
=
fastaDict
[
i
]
tempKmerList
=
generateKmersList
(
sequence
,
length
)
output
=
removeDups
(
tempKmerList
)
kmerNumDict
[
i
]
=
len
(
output
)
return
kmerNumDict
# Look at what Kmers are highly represented across sequences
# Store the Kmers
# Store the number of times each kmer comes up
# Probably looking for something that shows up in all sequences
# Run the main program
def
main
():
fastafile
,
length
=
commandLine
()
fastaDict
=
makeDataArray
(
fastafile
,
"fasta"
)
kmerNumDict
=
getTotalKmers
(
fastaDict
,
length
)
print
(
kmerNumDict
)
if
__name__
==
'__main__'
:
main
()
Back
|
FazBrowse Home
|
New Git URL