Я новичок ie и борюсь с pandas фреймами данных.
Вот код:
import csv
import csv
import numpy as np
import pandas as pd
# read the CSV into a pandas data frame (df)
df = pd.read_csv(sys.argv[1], delimiter=',')
print (df)
# to open a .txt file and use sequences as a string
with open(sys.argv[2], 'r') as f:
contents = f.read()
s = contents
s_len = len(s)
found_s_len = 0
keep_going = True
while s_len>0 and keep_going:
AGATC = "AGATC" * s_len
AGATC2 = "AGATC"
if AGATC in s:
found_a_len = s_len
keep_going = False
s_len=s_len -1
result0 = (AGATC2, found_a_len)
s_len = len(s)
found_s_len1 = 0
keep_going = True
while s_len>0 and keep_going:
AATG = "AATG" * s_len
AATG2 = "AATG"
if AATG in s:
found_a_len1 = s_len
keep_going = False
s_len=s_len -1
result1 = (AATG2, found_a_len1)
s_len = len(s)
found_s_len2 = 0
keep_going = True
while s_len>0 and keep_going:
TATC = "TATC" * s_len
TATC2 = "TATC"
if TATC in s:
found_a_len2 = s_len
keep_going = False
s_len=s_len -1
result2 = (TATC2, found_a_len2)
total_result = (result0, result1, result2)
d = {'AGATC': [found_a_len], AATG2: [found_a_len1], TATC2: [found_a_len2]}
df1 = pd.DataFrame(data=d)
print (df1)
в качестве 1-го аргумента он принимает .csv, который выглядит следующим образом:
name,AGATC,AATG,TATC
Alice,2,8,3
Bob,4,1,5
Charlie,3,2,5
, а в качестве второго аргумента он принимает .txt файл с последовательностью ДНК, которая выглядит как (это просто строка последовательности ДНК «AAGGT ...»:
AAGGTAAGTTTAGAATATAAAAGGTGAGTTAAATAGAATAGGTTAAAATTAAAGGAGATCAGATCAGATCAGATCTATCTATCTATCTATCTATCAGAAAAGAGTAAATAGTTAAAGAGTAAGATATTGAATTAATGGAAAATATTGTTGGGGAAAGGAGGGATAGAAGG
Аргумент командной строки для кода это python dna.py database / small.csv sequence / 1.txt, где small.csv является первым аргументом, а 1.txt - вторым.
я занимаюсь вычислением самых длинных последовательно повторяющихся подстрок ('AGAT C' 'AATG' 'TAT C') вне второго аргумента, а затем посмотрите, соответствует ли количество повторений любому человеку в файле .csv, указанном в первом аргументе.
До сих пор я получил приведенный выше код (извините, он действительно грязный и, возможно, неэффективный), и если я запустил код, результат будет:
name AGATC AATG TATC
0 Alice 2 8 3
1 Bob 4 1 5
2 Charlie 3 2 5
AGATC AATG TATC
0 4 1 5
, поэтому теперь мне нужно сравнить эти два фрейма данных (df и df1) и посмотреть, если это совпадение. Если оно совпадает, код должен напечатать имя ма человек В этом конкретном примере совпадение должно быть с «Bob», и, следовательно, код должен печатать «Bob». Нужно использовать какие-то операторы IF в pandas. Каждый раз, когда я пытаюсь выполнить сравнение, он возвращает ошибки. Я подозреваю, что это потому, что тип данных различен в обоих случаях, и я очень расстроен, потому что застрял на этом ... Спасибо за помощь!