Привет. Я пытаюсь закодировать Genome, хранящийся в виде строки внутри кадра данных, считанного из CSV.
Сейчас я пытаюсь разбить каждую строку в кадре данных под столбцом «Геном» на список его базовых пар, т.е. от ('acgt ...') до ('a', 'c ',' g ',' t '...) затем конвертируйте каждую базовую пару в число с плавающей запятой (0,25,0.50,0,75,1,00) соответственно.
Мне показалось, что я искал функцию разделения для разделения каждой строки на символы, но ни одна из них не работает с данными в кадре данных даже при преобразовании в строку с использованием .tostring
Вот мой самый недавний код:
import re
import numpy as np
import pandas as pd
from sklearn.preprocessing import LabelEncoder
def string_to_array(my_string):
my_string = my_string.lower()
my_string = re.sub('[^acgt]', 'z', my_string)
my_array = np.array(list(my_string))
return my_array
label_encoder = LabelEncoder()
label_encoder.fit(np.array(['a','g','c','t','z']))
def ordinal_encoder(my_array):
integer_encoded = label_encoder.transform(my_array)
float_encoded = integer_encoded.astype(float)
float_encoded[float_encoded == 0] = 0.25 # A
float_encoded[float_encoded == 1] = 0.50 # C
float_encoded[float_encoded == 2] = 0.75 # G
float_encoded[float_encoded == 3] = 1.00 # T
float_encoded[float_encoded == 4] = 0.00 # anything else, z
return float_encoded
dfpath = 'C:\\Users\\CAAVR\\Desktop\\Ison.csv'
dataframe = pd.read_csv(dfpath)
df = ordinal_encoder(string_to_array(dataframe[['Genome']].values.tostring()))
print(df)
Я пытался создать свою собственную функцию, но понятия не имею, как они работают. Все, что я пробую, указывает на невозможность обработки данных, когда они находятся в массиве numpy, и ничто не работает для преобразования данных в другой тип.
Спасибо за советы!
Редактировать: Вот распечатка фрейма данных-
Antibiotic ... Genome
0 isoniazid ... ccctgacacatcacggcgcctgaccgacgagcagaagatccagctc...
1 isoniazid ... gggggtgctggcggggccggcgccgataaccccaccggcatcggcg...
2 isoniazid ... aatcacaccccgcgcgattgctagcatcctcggacacactgcacgc...
3 isoniazid ... gttgttgttgccgagattcgcaatgcccaggttgttgttgccgaga...
4 isoniazid ... ttgaccgatgaccccggttcaggcttcaccacagtgtggaacgcgg...
В 5-м списке 5 столбцов «Геном» я не знаю, почему 1. .head()
не будет работать и 2. почему print()
не дает мне все столбцы ...