Realisation of bioinformatic's algoritm
Documenting:
- methods and workflows
- the origin of all data in project directory
- when downloaded data
- data version information
- how downloaded the data
- the versions of the software that ran
Скрипт - data/HOCOMOCO/pwm_long_file_parse.py
. Из одного большого файла на выходе имеем по одному
файлу для каждого мотива в папке data/HOCOMOCO/PWM.
Предподготовка pwm для sarus (замена пробелов на табы, удаление пустых строк, замена LF на CRLF).
Скрипт - data/HOCOMOCO/motif preparation.sh
.
Для каждого файла мотива из папке PWM создается подготовленный файл в папке PWM1.
Также записывает в analysis/motifs.txt
список всех мотивов. Этот файл будет использоваться на следущем шаге.
В имеющихся мотивах есть кейсы, когда для одного мотива есть две разные версии.
На этом шаге происходит фильтрация мотивов на основе скора {"si" : 1, "f1" : 2, "f2" : 3, "do" : 4}
.
Скрипт - scripts/filter_motifs.R
. На выходе - файл analysis/filter_motifs.txt
со таблицей отфильтрованных мотивов.
Файл - data/sarus/motif_treshold_finding.py
. Будет использоваться другим скриптом на шаге 6.
На входе получает имя мотива, на выходе - его порог.
Скрипты - в папке data/Fantom_CAGE-hg19/
.
На выходе матрицы A и E (analysis/csv/A.csv
и anaysis/csv/E.csv
соответственно), сиквенс промотеров
для данных TSS в файле data/seqs/hg19_promoters.mfa
, а также мотивы из файла analysis/filter_motifs.txt
, для ТФ которых есть данные по экспрессии в Фантоме - записанные в analysis/overall_motifs
.
Файлы A.csv
и E.csv
c заголовками и индексами.
Скрипт 1. read_file_and_matrix_a.R
. На выходе df.rd
и dfA.rd
(промежуточный вариант матрицы А).
Скрипт 2. gene_symbols_mapping.R
. На выходе genes.rd
.
Скрипт 3. existing_motif_filtering.R
. На выходе dfA.rd
, analysis/overall_motifs.txt
и analysis/csv/A.csv
.
Скрипт 4. matrix_e.R
. На выходе analysis/csv/E.csv
, dfE.rd
и analysis/promoters.txt
.
Скрипт 5. promoters_seqs.R
. На выходе range.rd
, prom.rd
и data/seqs/hg19_promoters.mfa
.
Для каждого промотера из data/seqs/hg19_promoters.mfa
(полученного на предыдущем пункте) считается
количество вхождний в него каждого мотива (полученных на шаге 2).
Скрипт - data/sarus/motif_occurences.sh
. На выходе - analysis/csv/result.csv
.
В файле заголовок (нобез индекса) записи вида:
promoters,thresholds,seq_name1,seq_name2,...
motif1,threshold1,..
....
motifN,thresholdN,...
Для файла с матрицей, полученного на предыдущем шаге, производятся следущие шаги
- фильтрация значений ниже порога до 0
- транспонирование
- удаление ненужных столбцов
- -фильтрация ненужных версий мотивов на основе скора
{"si" : 1, "f1" : 2, "f2" : 3, "do" : 4}
- - фильтрация мотивов, которых нет в в Фантоме или не ассоциированных с entrezgene_id (по файлу
analysis/overall_motifs
) Скрипт -data/sarus/threshold_cut.py
. На выходе -data/sarus/promoters_list.txt
со списком отфильтрованных промотеров, а также файлanalysis/csv/M.csv
с готовой матрицей М.
Скрипт scripts/normalise_matrix_a.R
. На выходе data/temp_rdata/dfA_norm.rd
и analysis/csv/A_norm.csv
.
Скрипт scripts/normalise_matrix_e.R
. На выходе analysis/csv/E_norm.csv
и data/temp_rdata/dfE_norm.rd
.
Скрипт scripts/normalise_matrix_m.R
. На выходе analysis/csv/M_norm.csv
и data/temp_rdata/dfM_norm.rd
.
Используются полученные ранее матрицы E,M,A. Скрипт - scripts/MARA.py
.
E = M * EA
M = U*D*Vt
Mt = V*Dt*Ut
OLS: EA = (Mt*M)-1 * Mt * E
SVD: M = U*D*Vt => EA = (V*Dt*Ut*U*D*Vt)-1*V*Dt*Ut *E = (V*Dt*D*Vt)-1*V*Dt*Ut *E = #т.к. матррица U - унитарна
= ( (DVt)t*(DVt) )-1*V*Dt*Ut *E = (V*(Dt*D)*Vt)-1*V*Dt*Ut *E = Vt-1*(Dt*D)-1*V-1*V*Dt*Ut *E =
= V * (Dt*D)-1 * Dt *Ut *E = V * D-1 * Ut * E
На выходе - матрица активности ТФ в файлу analysis/csv/ACT.csv
.
Все семплы делятся на 2 части - train subset и test subset. Делаем ноые матрицы E_norm_train и A_norm_train (удаляя тестовые колонки). Высчитываем матрицу EA_train.
cwl-runner expirements.cwl job-inputs.yml