Този урок преминава през стъпките в Работен процес на SCENIC:

стартиране

Изграждане на генна регулаторна мрежа (GRN):

  1. Идентифицирайте потенциалните цели за всеки TF въз основа на съвместното изразяване.
  2. Филтриране на матрицата на израза и стартиране на GENIE3/GRNBoost.

Форматиране на целите от GENIE3/GRNBoost в модули за съвместно изразяване.

Изберете потенциални директно свързващи цели (регулони) въз основа на анализ на ДНК-мотиви (RcisTarget: TF мотив анализ)

Идентифицирайте клетъчни състояния:

  1. Анализ на мрежовата активност във всяка отделна клетка (AUCell)
  2. Точкуване на регулони в клетките (изчисляване на AUC)

По избор: Преобразуване на мрежовата активност в ВКЛ./ИЗКЛ.

Идентифицирайте стабилни клетъчни състояния въз основа на тяхната активност на генната регулаторна мрежа (клъстеризиране на клетки) и изследване на резултатите.

За да започнете този урок, трябва да сте прочели винетката „Въведение и настройка“ и да изпълните стъпките за настройка (винетка („SCENIC_Setup“)).

По време на този работен процес ще запазим множество файлове. За да ги поддържате подредени, препоръчваме да зададете работната директория на нова папка.

По подразбиране междинните файлове и графики ще бъдат запазени в папката int, с номериран префикс, за да ги поддържат в ред. Можете да използвате тези файлове, за да проверите подробности за всяка стъпка или да пуснете отново части от анализа с различни настройки. Основният изход (т.е. графики, HTML отчети.) Ще бъде записан в изходната папка.

Матрица на израза

Едноклетъчна матрица за експресия на RNA-seq (с генен символ като имена на редове, вижте винетката ("SCENIC_Setup") за подробности).

Информация за клетката

В стъпка 3-4 (оценяване на GRN и групиране) можете да нанесете малко информация за клетките на топлинните карти или t-SNE. Можете да изберете кои променливи от фенодатите да начертаете и да им присвоите определен цвят (в противен случай една ще бъде присвоена автоматично):

За да се поддържат последователни настройки в многократните стъпки на SCENIC, повечето функции в пакета SCENIC използват общ обект, където се съхраняват опциите за текущото изпълнение. Този обект замества "аргументите" за повечето функции и трябва да бъде създаден в началото на SCENIC изпълнение с функцията initializeScenic () .

Настройките по подразбиране трябва да са валидни за повечето анализи. Параметрите, които трябва да бъдат посочени във всички изпълнения, е организмът (mgi за мишка, hgnc за човек или dmel за муха) и директорията, в която се съхраняват базите данни RcisTarget (можете да създадете връзка в текущата директория, ако това е по-удобно, например в linux:

За подробности относно опциите, които могат да бъдат променени, проверете помощта на? InitializeScenic или на конкретната функция, която го приема като вход.

Първата стъпка от работния процес на SCENIC е да се изведат потенциални цели за транскрипционен фактор въз основа на данните за израза. За целта използваме GENIE3 или GRNBoost. Входните данни за някой от тези инструменти са матрицата на израза (филтрирана) и списък на транскрипционните фактори (потенциални регулатори). Изходът на GENIE3/GRBBoost и матрица за корелация ще бъдат използвани за създаване на модули за съвместно изразяване (runSCENIC_1_coexNetwork2modules ()).

Избор между GENIE3/GRNBoost: По принцип за тази стъпка могат да се използват много от съществуващите методи за извеждане на мрежи за съвместно изразяване, стига изходът му да е списък с потенциални цели за всеки TF (и може да се приложи към scRNA- сл.). Ние избрахме ДЖЕНИ3 (@ huynh2010), защото позволява да се идентифицират нелинейни връзки, дори ако те присъстват само в подмножество проби, и беше най-добрият изпълнител в предизвикателството Network Inference DREAM5 (@ marbach2012). GENIE3 може лесно да се стартира в R.

Въпреки това, GENIE3 отнема много време и изчисления (ще отнеме няколко часа или дни за набори от данни от 3-5k клетки). За да позволим мащабируемост на по-големи набори от данни, ние създадохме GRNboost (вижте @ aibar2017) и рамката на arboreto. GRNBoost предоставя подобни резултати на GENIE3 само за малка част от времето (публикация в пресата), така че горещо го препоръчваме за по-големи набори от данни.

Подсемплиране на клетки: Когато има висок дял на нискокачествени клетки или ако времето за изчисление е проблем, също е възможно да се направи извод за регулаторната мрежа, като се използва подмножество от клетки (напр. Избор на произволни или висококачествени клетки като вход към анализът на ко-експресията). След това активността на регулаторната мрежа, обучена за това подмножество клетки, може да бъде оценена във всички клетки в набора от данни с AUCell (Стъпка 3). Имайте предвид, че за да се избегне загуба на разделителна способност, подмножеството от клетки трябва да бъде представително за целия набор от данни (напр. Да съдържа достатъчно представяне на всички типове клетки). Примери за този подход са представени в @ aibar2017 (т.е. подсемплиране на този набор от данни на мозъка на мишката и анализ на 49k клетки от ретина на мишка).

Ген филтър/селекция

За да стартирате GENIE3/GRNBoost, препоръчваме да приложите мек генен филтър, за да премахнете гени, които се експресират или на много ниски нива, или в твърде малко клетки. Тук прилагаме филтриране въз основа на общия брой на броя на гена и броя на клетките, в които той е открит.

Филтрирайте по общ брой четения на ген. Този филтър е предназначен за премахване на гени, които са най-вероятно шум. По подразбиране той съхранява само гените с най-малко r 3 * .01 * ncol (exprMat) UMI отчита във всички проби (напр. Общия брой, който би имал генът, ако е бил изразен със стойност 3 на 1% от клетките ). Регулирайте тази стойност (minCountsPerGene) според набора от данни (това ще зависи от единиците на набора от данни, напр. UMI, TPM).

Филтрирайте по брой клетки, в които е открит гена * (напр.> 0 UMI или> 1 log2 (TPM)). По подразбиране (minSamples) се запазват гени, които се откриват в поне 1% * от клетките. Това филтриране има за цел да премахне гени, чиито отчитания идват от една няколко „шумни“ клетки (гените, които се експресират само в една или много малко клетки, наддават много на тегло, ако случайно съвпадат в дадена клетка). За да избегнете премахването на малки (но потенциално интересни) популации от клетки, препоръчваме да зададете процент по-нисък от най-малката популация от клетки, които да бъдат открити.

И накрая, само гените, които са налични в бази данни RcisTarget ще се запази. Този филтър е предимно за да спести известно време за работа за GENIE3/GRNBoost, тъй като гените, които не са налични в базите данни, няма да бъдат използвани в следващите стъпки.

Преди да пристъпите към заключението за мрежата, проверете дали известни съответни гени са филтрирани (ако липсва съответния ген, проверете дали филтрите са подходящи):

Сега можем филтрирайте матрицата на израза да съдържат само тези гени с дължина r (genesKept). Тази матрица вече е готова за анализ на съвместната експресия.

За да избегнете объркване в следните стъпки:

Корелация

GENIE3/GRNBoost може да открие както положителни, така и отрицателни асоциации. За да разграничим потенциалното активиране от репресията, ще разделим целите на положителни и отрицателни корелирани цели (т.е. корелация на Спирман между TF и ​​потенциалната цел).

(Тази стъпка може да се изпълни преди/след или едновременно към GENIE3/GRNBoost)

Изчислете корелацията:

Вариант А: GENIE3 (R)

Входните данни за GENIE3 обикновено са матрица на изрази и списък с кандидат-регулатори. Функцията runGenie3 ще стартира GENIE3 с настройки по подразбиране, които обикновено са подходящи за повечето набори от данни, използвайки факторите за транскрипция, налични в базите данни RcisTarget, като кандидати за регулатори.

Тъй като GENIE3 се основава на подхода Random Forest, всеки път, когато се изпълнява, резултатите ще бъдат малко по-различни. Колкото по-голям е броят на използваните дървета (ntrees), толкова по-ниска е променливостта. Препоръчваме да използвате set.seed, за да възпроизведете точни резултати в множество изпълнения. За повече подробности проверете? GENIE3 (помощ за GENIE3) или? RunGenie3 (обвивка SCENIC за GENIE3).

Обикновено GENIE3 ще отнеме няколко часа (или дни). Ако изпълнявате този работен процес на сесия RStudio, препоръчваме ви да спрете тук и да стартирате следващия код в независима R конзола (т.е. с screen/tmux) или в сървър/HPC (ако е наличен). Предстоящите парчета код ще възобновят работния процес чрез зареждане на изхода GENIE3.

Вариант Б: GRNboost (Python)

Входът за GRNBoost е филтрираната матрица на израза (транспонирана) и списък с кандидат-регулатори. exportForGRNBoost експортира тези обекти като текст за импортиране от GRNBoost:

Вече сме готови да стартираме GRNBoost. Можете да намерите урок с някои примери в https://arboreto.readthedocs.io/en/latest/examples.html. След като приключи, можете да импортирате изхода от GRNBoost обратно в R с:

След като резултатите от GENIE3/GRNBoost (и корелацията) са готови, останалите стъпки от SCENIC могат да бъдат изпълнени.

Най-лесният/бърз начин е да използвате следните функции на обвивка, всяка от които съответства на една от основните стъпки в работния процес на SCENIC:

Изграждане на генна регулаторна мрежа:

    Вземете модули за съвместно изразяване

Вземете регулони (с r Biocpkg ("RcisTarget")): TF анализ на мотива)

Идентифицирайте състоянията на клетките:

  • Резултат GRN (регулони) в клетките (с r Biocpkg ("AUCell"))
  • Клъстерни клетки според активността на GRN
  • Преглед на работния процес на стъпките е обяснен в @ aibar2017. Предлагат се и подробни уроци/тетрадки, обясняващи вътрешния код на всяка от тези функции (вижте винетка (пакет = "SCENIC")). Те могат да бъдат полезни за потребители, които искат да знаят подробностите за изпълнението или да модифицират или изпълнят само някои от стъпките на работния процес.

    Презаредете матрицата на израза, ако е необходимо:

    Изпълнете останалите стъпки, като използвате функциите на обвивката:

    По избор: Създаване/сравняване на t-SNE

    Клетките вече могат да бъдат групирани въз основа на AUC (за подробности вижте раздела по-долу „Изследване> Състояния на клетките“). Тъй като използваме t-SNE като визуализация, препоръчително е да опитате различни настройки на клъстериране/t-SNE, за да оцените стабилността на състоянията.

    С тази функция могат да се стартират множество t-SNE с различни настройки. Той ще създаде всички комбинации между избрания "брой компютри" и "объркване" (очаквано време за работа: няколко минути до часове, в зависимост от броя на клетките):

    и да ги видите/сравните.

    След това избраният t-SNE може да бъде запазен по подразбиране за използване за графики (може да бъде и "двоичен", вижте по-долу):

    По желание: Бинаризиране на мрежовата активност (регулиране включване/изключване)

    Изграждането на GRN и оценяването на неговата активност в AUCell често е достатъчно за набори от данни с много ясни типове клетки. Въпреки това, в много случаи е полезно също така бинаризиране на оценката на активността в „включване/изключване“; или за по-лесно тълкуване, или за максимизиране на разликите между типовете клетки. Това е особено полезно за намаляване на техническите пристрастия (напр. Брой открити гени, партидни ефекти) или групирането по проба за произход в наборите от данни за рак (вж. @ Aibar2017).

    За да определим в кои клетки е активен всеки регулон, ще използваме праг на AUC. AUCell автоматично изчислява възможните прагове за бинаризация, но те често са твърде консервативни. Препоръчваме да проверите тези прагове ръчно, преди да продължите към бинаризацията. Това може да бъде итеративен процес, при който праговете могат да бъдат коригирани отново след първоначално проучване. След като бъдат избрани крайните прагове, активността на клетъчната регулон ще бъде обобщена в матрица на двоична активност, в която колоните представляват клетките, а редовете регулоните. Координатите на матрицата, които съответстват на активните регулони в дадена клетка, ще съдържат стойност "1", а "0" всички останали.

    Можете да видите избраните прагове в изхода от предишната стъпка [файл: output/Step3_3.2_AUCtSNEs.html (Ако използвате Rstudio, може да се наложи да изтеглите файла и придружаващата папка)] и те могат да бъдат коригирани с AUCell's Лъскаво приложение:

    След като оптимизирате праговете, изпълнете runSCENIC_4_aucell_binarize, за да бинаризирате AUC и генерирайте някои допълнителни фигури и клъстери:

    T-SNEs също могат да бъдат създадени с помощта на матрицата на двоичната активност (по същия начин, както е посочено в раздел "Създаване/сравняване на t-SNEs"), просто задайте tsneAUC (. AucType = "binary") вместо това.

    Изходната папка съдържа няколко файла, които предоставят преглед на резултатите от всяка стъпка. Тези резултати могат да бъдат изследвани по-подробно чрез междинните файлове (записани в папката int, която може да бъде изброена с loadInt (scenicOptions)).

    Няколко примера за това как да изследвате резултатите:

    Клетъчни състояния

    AUCell осигурява активността на регулоните в клетките. Чрез групиране на клетките въз основа на тази регулон активност (или непрекъсната или бинарна AUC матрица), можем да видим дали има групи клетки, които са склонни да имат едни и същи регулони активни, и да разкрием мрежовите състояния, които се повтарят в множество клетки. Тези състояния биха били еквивалентни на атракторните състояния на мрежата. Комбинирайки тези клъстери с различни методи за визуализация, можем да изследваме асоцииране на клетъчните състояния със специфични регулони.

    SCENIC предоставя някои функции на обвивката, за да получите бърз преглед. Например, проектиране на експресията на AUC и TF върху t-SNE и визуализиране на AUC като топлинни карти, но не се колебайте да проучите алтернативни инструменти за групиране и визуализация.

    Проектирайте AUC и TFexpression върху t-SNE

    Накратко, t-SNE е 2D проекция на клетките, където клетките (точките) са разположени близо една до друга, ако имат подобни входни профили (в нашия случай регулон активност). T-SNE обикновено позволява да се получи бърз и лесен преглед на състоянията на клетките в набора от данни. Имайте предвид обаче, че t-SNE работи добре за идентифициране на отделни класове, но не е подходящ за динамични/непрекъснати процеси (напр. Визуализации, подобни на траектория).

    Интерактивното приложение на AUCell (за SCope, вижте раздел "Експортиране в стан/SCope"):

    AUCell_plotTSNE () за запазване на статични графики:

    График на плътността за откриване на най-вероятно стабилни състояния (области с по-висока плътност в t-SNE):

    Показване на няколко регулона едновременно:

    GRN: Регулон мишени и мотиви

    Гени, включени в регулоните:

    Забележете, че само регулони с 10 или повече гена се оценяват с AUCell:

    Подробности за връзките TF-target: За всяка двойка TF-target статистическите данни от междинните стъпки са обобщени в loadInt (scenicOptions, "regulonTargetsInfo") (записани като текст в: getOutName (scenicOptions, "s2_regulonTargetsInfo"): r getOutName ( scenicOptions, "s2_regulonTargetsInfo")). Тази таблица може да се използва за изследване на поддръжката на конкретни връзки. Тъй като обикновено ще съдържа няколко хиляди реда (в това изпълнение: r nrow (loadInt (scenicOptions, "regulonTargetsInfo"))), в повечето случаи е препоръчително да го зададете преди да го експортирате като HTML.

    Пълният списък на TF мотиви в подкрепа на регулоните може да се види в рестулите от Резултати от обогатяване на мотиви от RcisTarget (за модулите за съвместно изразяване). Те се записват в motifEnrichment_selfMotifs_wGenes. Предварителен преглед на тези резултати се изнася като html в r getOutName (scenicOptions, "s2_motifEnrichmentHtml") (и като текст в: r getOutName (scenicOptions, "s2_motifEnrichment")).

    Могат да бъдат генерирани алтернативни таблици, показващи повече или по-малко редове/колони, модифициращи този код:

    Резултатите от SCENIC могат да бъдат изследвани и на http://scope.aertslab.org (@ davie2018).

    Файлът .loom може да бъде създаден с функцията export2scope (). Тази функция записва данните SCENIC във файл .loom.