РЕДАКТИРОВАТЬ: Проблема решена, оставив это открытым для потомков.
numpy.genfrontext имеет проблемы с разделением строк, которые запятые .Чтобы решить эту проблему, просто используйте pandas.read_csv и используйте quotechar = '"'
, чтобы позволить импортеру правильно обрабатывать строки, содержащие ваши запятые.
Странная проблема здесь.
Я импортирую списки данных о белках из файлов .csv, которые для 99,9% идентификаторов работают безупречно.Однако 1 идентификатор из ~ 5000 тысяч идентификаторов последовательно импортирует неверные данные.
Вот код, который я использую для извлечения моих данных.Он использует glob для извлечения CSV-файлов с похожими именами.Заголовки сохраняются в виде списка, а затем используются в качестве столбцов на случай, если заголовки файлов csv перемешаны (черт возьми, Proteome Discoverer):
indexes = ["Accession", "# Peptides", "MW [kDa]", "Score"]
headers = pd.read_csv(str(WorkingDirectory) + "/" + str(name) + "-R1.csv", nrows=1).columns.tolist()
total = [np.genfromtxt(x, delimiter = ',', skip_header = 1, usecols = [int(headers.index(indexes[0])),int(headers.index(indexes[1])),int(headers.index(indexes[2])),int(headers.index(indexes[3]))], filling_values = 0.01, dtype = ('|U16','float64','float64','float64')).tolist() for x in glob.glob(str(WorkingDirectory) + "/" + str(name) + "*.csv")]
идентификаторы затем сохраняются в списке, где каждый списокзапись соответствует исходному файлу.[Файл 1, Файл 2, Файл 3]
Вот где это становится странным.Из записей 5.5K в каждом файле .csv есть один идентификатор, который последовательно (при перезапуске кода) сообщает о неправильных числах.
Приложите выходные данные моей программы вместе с таблицами Excel, из которых получены данные.Столбцы A, C, E и H - мой импорт (Accession, Score, # Peptides и MW [kDa] соответственно, оранжевым цветом) 
Это выглядит как имя идентификатора исчет импортирует правильное значение, но следующие два столбца, соответственно, отключены на 1 (это импортирует F, а не E), а затем пытаются выбрать значение из неопределенного столбца, который не существует (следовательно, 0,01 из-заfilling values
)
Вещи, которые я проверил:
1) Да, заголовки Excel одинаковы для всех трех файлов.
2) Да, у меня есть код вместо, чтобы обрабатывать нонсенс NaN, генерируемый любыми нулями.Поэтому, если он импортирует 0 для оценки, я вручную изменю это позже.
3) Да, если пропущенные значения отсутствуют, genfromtext filling_values = 0.01
заполнит этот пробел, однако для этого В этом случае не нужно заполнять какие-либо пробелы, поскольку в ячейках есть соответствующие значения.
4) Каждый другой проверенный мной идентификатор правильно импортирует данные.
5) Q60749 не необычная строка.Другие включают: Q9CQM5, D3Z5X0 и т. Д. Без хэштегов, без кавычек, без запятых.
6) {Из комментариев} Все файлы содержат только один экземпляр этого идентификатора белка
Почемуэтот идентификатор вызывает проблемы из тысяч других успешных хитов?Первоначально я обнаружил этот хит, потому что в последующем анализе говорилось, что у меня есть значение NaN;Q60749 оказался этим значением, и он просто не импортирует правильные данные.