В настоящее время большая часть работы по биоинформатике выполняется с использованием языков программирования Python и R. Эти языки используются для анализа данных, начиная от отдельных последовательностей ДНК и заканчивая массивными электронными таблицами сложной информации. В качестве введения мы собираемся изучить некоторые важные функции и методы для строк, поскольку они обычно используются для хранения геномных последовательностей.

Назначение строки

Чтобы присвоить строку переменной, начните с ввода имени переменной слева, затем знака равенства, а затем вашей строки. Если ваша строка представляет собой одну строку, вы можете использовать одинарные или двойные кавычки. Если ваша строка многострочная, вы можете использовать тройные одинарные или тройные двойные кавычки. Примечание. Какой бы тип цитаты вы ни начали, ДОЛЖЕН быть тем же, что и в конце, иначе вы обнаружите, что получаете ошибки.

some_string_name = 'This is a string.'
some_other_string = "This is another string."

a_third_string = '''This is one way of 
                    typing a multi-line string!'''
another_string = """This is another
                    multi-line string."""

Вы также можете назначить несколько переменных одновременно, разделив каждую переменную и назначенные строки запятыми. Примечание: seq — это сокращение от последовательности. Мы будем использовать это при рассмотрении функций/методов.

seq1, seq2, seq3 = 'ATCG', 'TATA', 'GATTACA'

Конкатенация строк

Другой распространенной задачей с использованием строк геномной последовательности является «конкатенация» или объединение их вместе. Конкатенация в Python так же проста, как использование знака плюс.

seq1 = 'ATCG'
seq2 = 'TATA'
seq3 = seq1 + seq2

Если бы мы сделали «print(seq3)», нам была бы показана новая строка «ATCGTATA». Следует помнить одну вещь: если вы не используете конкатенацию немедленно, обязательно назначьте ее новой переменной или перезапишите существующую!

Некоторые строковые функции и методы

Функция count()

Первый метод, который мы собираемся рассмотреть, — это функция «count()». Count делает именно то, на что это похоже; он подсчитывает любой символ или строку, которые вы укажете. Одной из общих задач геномного анализа является подсчет количества нуклеотидов каждого типа, присутствующих в генетической последовательности. Используя count, мы получим что-то вроде следующего.

cytosine_count = seq.count('C')

Если бы у нас была такая последовательность, как «ATCGATCGATCG», то значение Cytosine_count было бы равно 3.

Синтаксис метода count: list.count(‘value’).

функция разделения()

Функция разделения превращает заданную строку в массив, где каждый элемент массива является частью строки до указанного вами разделителя. Примечание: разделитель — это то, что отделяет части предложения, такие как запятые, пробелы, двоеточия и т. д.Если у нас есть какая-то строка, разделенная символом «|», таких как «вещь 1, вещь 2, вещь 3», мы можем использовать метод разделения, чтобы разбить строку на массив.

some_string = "thing 1 | thing 2 | thing 3"
split_string = some_string.split("|")

Печать «split_string» даст нам массив [‘thing 1’, ‘thing 2’, ‘thing 3’]. Обратите внимание, что перед вещью 2 и вещью 3 все еще есть пробелы, потому что мы разделили ее по | персонаж.

функция слайс()

Функция slice(), как следует из названия, возвращает объект slice. slice() имеет три параметра: начало, конец и шаг. Начало и шаг необязательны, а конец обязателен. Start позволяет вам указать целое число для индекса, с которого вы хотите начать нарезку, по умолчанию это 0. End — это целое число, указывающее, в какой позиции вы хотите закончить нарезку. Шаг — это целое число, указывающее «шаг» нарезки. Например, шаг 1 захватывает каждый элемент между началом и концом. Если для шага установлено значение 2, он будет захватывать все остальные элементы между началом и концом.

# Given the string below
some_string = "Hi this is a string"
# Set x to a slice object with a start of index 3, and end of index 5
x = slice(3, 5)
# Prints "this is" by grabbing the portion of the string that the slice object corresponds to.
print(a[x])

метод присоединения()

Метод соединения работает с итерируемым объектом, объединяя их в одну строку, разделенную указанным символом.

some_tuple = ("thing1", "thing2", "thing3")
x = "#".join(some_tuple)
print(x) 
# Prints "thing1#thing2#thing3"

Небольшой совет: сочетание join() с split() может быть очень эффективным. Например, предположим, что у вас есть большая последовательность ДНК. Довольно часто возникает проблема с символами новой строки. Большая последовательность, которая у вас есть, разделена символом «\n», который вы не видите, но ваш компьютер может. Если вы попытаетесь проанализировать последовательность, символы новой строки могут сделать последовательность меньше, чем она есть на самом деле. Мы можем использовать методы join и split следующим образом:

seq_joined = ''.join(sequence.split('\n'))

Давайте разберем это. Мы создаем новую переменную с именем seq_joined. Часть ‘’.join() указывает, что мы хотим соединить все, что у нас есть в скобках, без ничего. sequence.split('\n') берет последовательность ДНК, которую мы назвали «последовательностью», и разделяет строку на символы новой строки. В совокупности это означает, что мы сначала разделяем строку по символам новой строки, а затем присоединяем только что разделенную строку (временно хранящуюся в массиве) ни с чем. Таким образом соединяя цепочку вместе в одну длинную последовательность нуклеотидов ДНК.

— — — —

Это лишь некоторые из многих вещей, которые вы можете делать со строками. Посетите https://www.w3schools.com/python/python_ref_string.asp для получения списка строковых методов Python!