MIF-Induced CD74+ Microglia and Macrophages Promote Progression of Brain Metastasis and Are Clinically Relevant across Central Nervous System Disorders.
The 1 match
- [1] § Materials and Methods › Bulk RNA-seq ↔ RNAseq/RNAseq.pl, lines 485–542 · score 0.65 · fastQC, DESeq2, HTSeq, Bowtie, genome, TopHat
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
Perl · 720 lines · 32 KB · CC-BY-NC-ND-4.0 · 1 match
- #!/usr/bin/perl -w
- # nextpresso
- # RNAseq.pl
- # Author: Osvaldo Grana
- # Description : RNA-seq analysis pipeline
- # v1.9.1 oct2017 - creates the temporal directory (tmp) inside the workspace, and not inside the /tmp of the machine
- #
- # v1.9.2 ene2018 - removes genes with expression levels below background + removes genes with flat pattern expression.
- # After this removal, a new GTF is created that contains only those genes that passed the filtering: cuffquant+cuffdiff+cuffnorm
- # or htseqcount+deseq is run again using this reduced gene annotation (new GTF)
- # (see addings in level 5 and level 6 here, plus the addings in ExecutionLevels.pm
- # mar2018 - run.log now appends new contents (instead of writing from scratch again)
- my $version="v1.9.2, ene2018";
- use strict;
- use warnings;
- use autodie;
- #determines current working directory
- #use Cwd qw(cwd);
- #my $bin=cwd;
- use File::Temp qw(tempdir); #assigns a temp. subdir inside the main temp. dir
- use FindBin qw($Bin); #finds out script path
- use File::Basename qw(dirname); #calls dirname function to find out the parent dir below
- use File::Spec::Functions qw(catdir); #calls catdir function
- #loads own packages
- use lib catdir(dirname($Bin), 'Utils'); #finds out Utils dir from parent dir
- use xmlParRNAseq 'processXML'; #loads modules from Utils
- use ExecutionLevels;
- use Miscellaneous;
- use Getopt::Long; #to get options
- #use File::Basename;
- use File::Spec;
- use File::Path qw(make_path);
- use FileHandle;
- #use File::Copy;
- #use Sys::Hostname;
- use Carp qw( confess ); # to verbose stack traces
- use Config; # to check if perl was compiled with thread support
- #subroutine prototypes
- sub main();
- sub help();
- sub checkProgramPaths($);
- sub checkSampleFiles($$);
- main(); #calls main function
- sub main(){
- system("clear");
- print "*****************************************************************************\n";
- print "* *\n";
- print "* nextpresso: next generation sequencing expression analysis pipeline *\n";
- print "* ".$version." *\n";
- print "* Author: Osvaldo Grana *\n";
- print "* *\n";
- print "*****************************************************************************\n\n";
- #creates a temporal subdirectory in the temporal directory of the machine (like '/tmp')
- #with an unrecognized name like ('/tmp/mY0qHO36dP')
- # CLEANUP => 1 implies that this subdirectory is removed when the execution finishes
- # CLEANUP => 0 implies that this subdirectory is NOT removed when the execution finishes
- #my $executionCreatedTempDir = tempdir( CLEANUP => 0 );
- #Checks if perl was compiled with thread support
- $Config{useithreads} or die("\n\n**** Please recompile Perl with thread support before running nextpresso.\n\n");
- # Verbose stack traces
- $SIG{__DIE__} = \&confess;
- $SIG{__WARN__} = \&confess;
- my $level = "1345"; # default value;
- my $configXMLSchema = $Bin."config/config.xsd";
- my $experimentXMLSchema = $Bin."config/experiment.xsd";
- my $configXMLDocument = undef;
- my $experimentXMLDocument = undef;
- my $Cuffdiff_ONLY_background_and_flatPattern_filtering=0;
- my $DESeq2_ONLY_background_and_flatPattern_filtering=0;
- GetOptions(
- "configDoc=s"=>\$configXMLDocument, #string
- "expDoc=s"=>\$experimentXMLDocument, #string
- "step=i"=>\$level, #numeric
- "Cuffdiff_ONLY_background_and_flatPattern_filtering" =>\$Cuffdiff_ONLY_background_and_flatPattern_filtering,
- "DESeq2_ONLY_background_and_flatPattern_filtering" =>\$DESeq2_ONLY_background_and_flatPattern_filtering
- );
- #it always checks level 0
- $level="0".$level;
- if(defined($configXMLDocument) && defined($configXMLDocument)){
- if((!-e $configXMLSchema) || (!-e $configXMLDocument) || (!-e $experimentXMLSchema) || (!-e $experimentXMLDocument)){
- print "**** One or several of the following files do not exist:\n\n";
- print "File 1: ".$configXMLSchema."\nFile 2: ".$configXMLDocument."\nFile 3: ".$experimentXMLSchema."\nFile 4: ".$experimentXMLDocument."\n";
- print "\n[Execution finished]\n\n";
- help();
- }
- }else{
- help();
- }
- #<------------- GETS THE DATA FROM THE XML DOCUMENTS ------------->
- #validates XML documents and returns them as hash tables
- my $configHashRef=xmlParRNAseq::processXML($configXMLSchema, $configXMLDocument);
- my $experimentHashRef=xmlParRNAseq::processXML($experimentXMLSchema, $experimentXMLDocument);
- #returns a new hash ref, with "/" added at the end of path lines in the case it was not present
- $configHashRef=checkProgramPaths($configHashRef);
- #getting config info
- my $fastQCpath=${$configHashRef}{fastQCpath}[0];
- my $fastQScreenPath=${$configHashRef}{fastQScreen}[0]{path}[0];
- my $fastQScreenConf=${$configHashRef}{fastQScreen}[0]{configurationFile}[0];
- my $fastQScreenSubset=${$configHashRef}{fastQScreen}[0]{subset}[0];
- my $bedtoolsPath=${$configHashRef}{bedtoolsPath}[0];
- my $samtoolsPath=${$configHashRef}{samtoolsPath}[0];
- my $bowtiePath=${$configHashRef}{bowtiePath}[0];
- my $tophatPath=${$configHashRef}{tophatPath}[0];
- my $peakAnnotatorPath=${$configHashRef}{peakAnnotatorPath}[0];
- my $htseqCountPath=${$configHashRef}{htseqCount}[0]{path}[0];
- my $htseqCountPythonpath=${$configHashRef}{htseqCount}[0]{pythonpath}[0];
- my $tophatFusion=${$configHashRef}{tophatFusion}[0]{path}[0];
- my $cufflinksPath=${$configHashRef}{cufflinks}[0]{path}[0];
- my $bedGraphToBigWigPath=${$configHashRef}{bedGraphToBigWig}[0]{path}[0];
- my $maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep=${$configHashRef}{maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep};
- my $seqtkPath=${$configHashRef}{seqtk}[0]{path}[0];
- my $seqtk_maximunNumberOfInstancesForDownSampling=${$configHashRef}{seqtk}[0]{maximunNumberOfInstancesForDownSampling}[0];
- my $queueSystem=${$configHashRef}{queueSystem}[0];
- my $queueName=${$configHashRef}{queueName}[0];
- my $multicore=${$configHashRef}{multicore}[0];
- my $perl5lib=${$configHashRef}{PERL5LIB}[0];
- my $gseaPath=${$configHashRef}{gsea}[0]{path}[0];
- my $gseaChip=${$configHashRef}{gsea}[0]{chip}[0];
- my $gseamaxMemory=${$configHashRef}{gsea}[0]{maxMemory}[0];
- my $extraPathsRequired=${$configHashRef}{extraPathsRequired}[0];
- if($extraPathsRequired=~ /HASH\(/){$extraPathsRequired="NO_EXTRA_PATHS"}
- #getting experiment info
- my $experimentName=${$experimentHashRef}{projectName};
- my $queueProject=$experimentName;
- my $workspace=${$experimentHashRef}{workspace};
- #creates a temporal directory
- my $executionCreatedTempDir=$workspace."/tmp/".$experimentName;
- my $initialTimeANDdate=Miscellaneous::getCurrentDateAndTime();
- $initialTimeANDdate=~ s/ //g;
- my $temporaryFilesPrefix=$initialTimeANDdate;
- $temporaryFilesPrefix=~ s/\[//;
- $temporaryFilesPrefix=~ s/\]//;
- $temporaryFilesPrefix=~ s/-//g;
- $temporaryFilesPrefix=~ s/,/_/;
- $temporaryFilesPrefix=~ s/\:/-/g;
- $executionCreatedTempDir.="_".$temporaryFilesPrefix;
- #removes it and create it again
- File::Path::make_path($executionCreatedTempDir,$executionCreatedTempDir);
- my $referenceSequence=${$experimentHashRef}{referenceSequence};
- my $indexPrefixForReferenceSequence=${$experimentHashRef}{referenceSequence};
- $indexPrefixForReferenceSequence=~ s/\.fa$//;
- $indexPrefixForReferenceSequence=~ s/\.fasta$//;
- my $GTF=${$experimentHashRef}{GTF};
- # one copy of the original GTF is preserved below in mind (initialGTF). This is valid when having spikes in the created annotation.
- # It is more appropriated, in this case, to run htseqcount and cuffdiff withou including spikes in the GTF annotation,
- # as their quantification values could affect and modify FPKM normalization for the rest of the genes.
- my $initialGTF=$GTF;
- my $samples=${$experimentHashRef}{library}; # hashRef
- my $comparisons=${$experimentHashRef}{comparison}; # hashRef
- my $tophatParams=${$experimentHashRef}{tophat}; # hashRef
- my $pairedEnd=${$experimentHashRef}{pairedEnd};
- my $fileWithChecksumCodesToValidate=${$experimentHashRef}{fileWithChecksumCodesToValidate};
- my $cufflinksParams=${$experimentHashRef}{cufflinks}; # hashRef
- my $cuffmergeParams=${$experimentHashRef}{cuffmerge}; # hashRef
- my $cuffquantParams=${$experimentHashRef}{cuffquant}; # hashRef
- my $cuffnormParams=${$experimentHashRef}{cuffnorm}; # hashRef
- my $cuffdiffParams=${$experimentHashRef}{cuffdiff}; # hashRef
- my $htseqcountParams=${$experimentHashRef}{htseqcount}; # hashRef
- my $deseqParams=${$experimentHashRef}{deseq2};
- my $bedGraphToBigWigParams=${$experimentHashRef}{bedGraphToBigWig};
- my $gseaParams=${$experimentHashRef}{gsea};
- my $tophatfusionParams=${$experimentHashRef}{tophatfusion};
- my $spikeInControlMixesParams=${$experimentHashRef}{spikeInControlMixes};
- my $doSpikesAndGenomeRefIndexing=lc($spikeInControlMixesParams->[0]->{do});
- #checks that the sample files exist
- checkSampleFiles($pairedEnd,$samples);
- # <----------------- only for testing ----------------------->
- #use Data::Dumper;
- #print STDERR "FILE:\n".Dumper($experimentHashRef)."\n";
- #<------------- ANALYSIS OF THE DATA STARTS ------------->
- if (! File::Spec->file_name_is_absolute($workspace)){
- print STDERR "\n[ERROR]: Incorrect absolute path for output directory: $workspace\n\n";
- exit(-1);
- }
- # the workspace directory is created
- if($workspace!~ /\/$/){
- $workspace.="/";
- }
- File::Path::make_path($workspace);
- if(!-d $workspace){
- print STDERR "\n[ERROR]: Cannot create workspace $workspace\n\n";
- exit(-1);
- }
- my $logFile=$workspace."run.log";
- my $logfh=FileHandle->new(">>".$logFile);
- if(!-e $logfh){
- print STDERR "\n[ERROR]: Cannot create ".$logfh."\n\n";
- exit(-1);
- }else{
- print $logfh $initialTimeANDdate." RNAseq pipeline: Starting analysis for $experimentName experiment\n";
- if(-d $executionCreatedTempDir){
- print $logfh (Miscellaneous::getCurrentDateAndTime())."[DONE]: created temporal subdirectory for this execution ".$executionCreatedTempDir."\n";}
- else{
- print $logfh (Miscellaneous::getCurrentDateAndTime())."[ERROR]: could not create temporal subdirectory for this execution ".$executionCreatedTempDir."\n";
- print STDERR "\n[ERROR]: could not create temporal subdirectory for this execution ".$executionCreatedTempDir."\n";
- exit(-1);
- }
- }
- ########## level 0: converts raw read bam files to fastq files if needed or/and prepares reference and GTF index files in case of having spike-in control mixes
- if($level=~ /0/){
- #**** IMPORTANT: since this level is always done, steps within this level are done ONLY if they were not done before.
- #**** for example: suppose that the user wants to do differential expression again (adding a new comparison), in this case it wouldn't make sense
- #**** to perform again bam files conversion to fastq files or indexing again the reference for spike-in controls, as these steps were already done
- #**** with the first execution of the analysis
- #**** IMPORTANT: in the case of using spike-in control mixes, the reference file and the GTF file are different and new files,
- #**** that's why they are recovered here
- ($referenceSequence,$GTF,$indexPrefixForReferenceSequence)=ExecutionLevels::level_0($fileWithChecksumCodesToValidate,$workspace,$experimentName,$logfh,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,$spikeInControlMixesParams,$referenceSequence,$GTF,$samples,$bedtoolsPath,$pairedEnd,$bowtiePath,$indexPrefixForReferenceSequence,
- $executionCreatedTempDir,$queueSystem,$queueName,$multicore,$queueProject);
- }
- ########## level 1: sequencing quality and contamination check ##########
- if($level=~ /1/){
- ExecutionLevels::level_1($perl5lib,$fastQCpath,$fastQScreenPath,$fastQScreenConf,$bowtiePath,$experimentName,$workspace,$referenceSequence,
- $GTF,$samples,$logfh,$executionCreatedTempDir,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,$fastQScreenSubset,$pairedEnd,$queueSystem,$queueName,$multicore,$queueProject);
- }
- ########## level 2: trimming && downsampling ##########
- if($level=~ /2/){
- ExecutionLevels::level_2($fastQCpath,$fastQScreenPath,$fastQScreenConf,$bowtiePath,$experimentName,$workspace,$referenceSequence,
- $GTF,$samples,$logfh,$executionCreatedTempDir,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,$fastQScreenSubset,$pairedEnd,$seqtkPath,
- $seqtk_maximunNumberOfInstancesForDownSampling,$queueSystem,$queueName,$multicore,$queueProject);
- #for those samples that were trimmed, or trimmed & downsampled (but not only downsampled)
- #it must perform level1 again
- my %auxHash=%$samples; # hash unref
- my $auxiliarSamples=\%auxHash; # hash ref again
- foreach my $key (keys %$auxiliarSamples){
- my $trimming=$auxiliarSamples->{$key}{trimming}[0]{do};
- if($trimming eq "false"){
- delete $auxiliarSamples->{$key};
- }
- }
- #if the size of the hash %auxiliarSamples==0, i.e., none of the samples required trimming => no additional FASTQC is required
- if(keys(%$auxiliarSamples)>0){
- ExecutionLevels::level_1($perl5lib,$fastQCpath,$fastQScreenPath,$fastQScreenConf,$bowtiePath,$experimentName,$workspace,$referenceSequence,
- $GTF,$auxiliarSamples,$logfh,$executionCreatedTempDir,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,$fastQScreenSubset,$pairedEnd,$queueSystem,$queueName,$multicore,$queueProject);
- }
- }else{
- #in case that a previous analysis was done for this experiment, requiring trimming/downsampling for maybe some of the samples,
- #and if a new re-analysis is started just after this step (level 3 for example), it implies that the program has to be aware of
- #what are the proper trimmed/downsampled samples
- ExecutionLevels::changeSampleNamesInCaseTheyWereTrimmedAndOrDownsampledBefore($samples,$workspace,$pairedEnd);
- }
- ########## level 3: aligning of reads ##########
- if($level=~ /3/){
- ExecutionLevels::level_3($tophatPath,$bowtiePath,$samtoolsPath,$bedtoolsPath,$peakAnnotatorPath,$referenceSequence,
- $indexPrefixForReferenceSequence,$samples,$GTF,$tophatParams,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,$workspace,$experimentName,$logfh,
- $executionCreatedTempDir,$pairedEnd,$queueSystem,$queueName,$multicore,$queueProject);
- }
- ########## level 4: transcripts assembly and quantification (cufflinks and cuffmerge) ##########
- if($level=~ /4/){
- ExecutionLevels::level_4($extraPathsRequired,$spikeInControlMixesParams,$cufflinksPath,$samtoolsPath,
- $bedtoolsPath,$referenceSequence,$indexPrefixForReferenceSequence,$samples,$GTF,$cufflinksParams,
- $cuffmergeParams,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,
- $workspace,$experimentName,$logfh,$executionCreatedTempDir,$queueSystem,$queueName,$multicore,$queueProject);
- }
- ########## level 5: differential expression (cuffquant, cuffdiff and cuffnorm) ##########
- if($level=~ /5/){
- my $doItALL=0;
- if(!$Cuffdiff_ONLY_background_and_flatPattern_filtering){$doItALL=1}
- else{#only background and flat pattern correction
- my $cuffdiffOutDir=$workspace."cuffdiff/"; #checks if initial cuffdiff execution was performed
- if(!-e $cuffdiffOutDir){
- $doItALL=1; #if general/initial cuffdiff execution was NOT performed, it is then mandatory first
- }
- }
- if($doItALL){#it does it all
- # Mandatory during the first execution, or if asked for it again
- ExecutionLevels::level_5($doSpikesAndGenomeRefIndexing,$initialGTF,$extraPathsRequired,$comparisons,$cufflinksPath,$samtoolsPath,$bedtoolsPath,$referenceSequence,$indexPrefixForReferenceSequence,
- $samples,$GTF,$cuffquantParams,$cuffnormParams,$cuffdiffParams,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,$workspace,$experimentName,$logfh,
- $executionCreatedTempDir,$queueSystem,$queueName,$multicore,$queueProject);
- #removes back ground level genes + flat pattern genes
- ExecutionLevels::removeBackgroundLevelGenesANDFlatPatternGenes_for_cuffdiff_branch($cuffnormParams,$initialGTF,$workspace,$logfh);
- #executes all again using the reduced GTF (without back ground level genes + without flat pattern genes)
- my $originalAlignmentsDir=$workspace."alignments/";
- my $new_workspace=$workspace."cuffdiff_backgroundFiltered_AND_flatPatternFiltered/";
- # creates a symbolic link to the alignments dir, to emulate its presence in the new workspace directory
- my $reducedGTF=$new_workspace."GTF_without_background_AND_flatpatternGenes.gtf";
- my $command="ln -s ".$originalAlignmentsDir." ".$new_workspace;
- system($command);
- ExecutionLevels::level_5($doSpikesAndGenomeRefIndexing,$reducedGTF,$extraPathsRequired,$comparisons,$cufflinksPath,$samtoolsPath,$bedtoolsPath,$referenceSequence,$indexPrefixForReferenceSequence,
- $samples,$reducedGTF,$cuffquantParams,$cuffnormParams,$cuffdiffParams,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,$new_workspace,$experimentName,$logfh,
- $executionCreatedTempDir,$queueSystem,$queueName,$multicore,$queueProject);
- }else{
- #removes back ground level genes + flat pattern genes
- ExecutionLevels::removeBackgroundLevelGenesANDFlatPatternGenes_for_cuffdiff_branch($cuffnormParams,$initialGTF,$workspace,$logfh);
- #executes all again using the reduced GTF (without back ground level genes + without flat pattern genes)
- my $originalAlignmentsDir=$workspace."alignments/";
- my $new_workspace=$workspace."cuffdiff_backgroundFiltered_AND_flatPatternFiltered/";
- # creates a symbolic link to the alignments dir, to emulate its presence in the new workspace directory
- my $reducedGTF=$new_workspace."GTF_without_background_AND_flatpatternGenes.gtf";
- my $command="ln -s ".$originalAlignmentsDir." ".$new_workspace;
- system($command);
- ExecutionLevels::level_5($doSpikesAndGenomeRefIndexing,$reducedGTF,$extraPathsRequired,$comparisons,$cufflinksPath,$samtoolsPath,$bedtoolsPath,$referenceSequence,$indexPrefixForReferenceSequence,
- $samples,$reducedGTF,$cuffquantParams,$cuffnormParams,$cuffdiffParams,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,$new_workspace,$experimentName,$logfh,
- $executionCreatedTempDir,$queueSystem,$queueName,$multicore,$queueProject);
- }
- }
- ########## level 6: runs htseq-count (gets read counts for genes) + DESeq2 differential expression
- if($level=~ /6/){
- my $doItALL=0;
- if(!$DESeq2_ONLY_background_and_flatPattern_filtering){$doItALL=1}
- else{#only background and flat pattern correction
- my $deseqOutDir=$workspace."deseq/"; #checks if initial DESeq2 execution was performed
- if(!-e $deseqOutDir){
- $doItALL=1; #if general/initial DESeq2 execution was NOT performed, it is then mandatory first
- }
- }
- if($doItALL){#it does it all
- if($doSpikesAndGenomeRefIndexing eq "false"){
- ExecutionLevels::level_6($perl5lib,$comparisons,$deseqParams,$extraPathsRequired,$htseqCountPath,$htseqCountPythonpath,$htseqcountParams,$samtoolsPath,$samples,$GTF,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,$workspace,$experimentName,$logfh,
- $executionCreatedTempDir,$queueSystem,$queueName,$multicore,$queueProject);
- #removes back ground level genes + flat pattern genes
- ExecutionLevels::removeBackgroundLevelGenesANDFlatPatternGenes_for_deseq_branch($deseqParams,$GTF,$workspace,$logfh);
- #executes all again using the reduced GTF (without back ground level genes + without flat pattern genes)
- my $originalAlignmentsDir=$workspace."alignments/";
- my $new_workspace=$workspace."deseq_backgroundFiltered_AND_flatPatternFiltered/";
- # creates a symbolic link to the alignments dir, to emulate its presence in the new workspace directory
- my $reducedGTF=$new_workspace."GTF_without_background_AND_flatpatternGenes.gtf";
- my $command="ln -s ".$originalAlignmentsDir." ".$new_workspace;
- system($command);
- ExecutionLevels::level_6($perl5lib,$comparisons,$deseqParams,$extraPathsRequired,$htseqCountPath,$htseqCountPythonpath,$htseqcountParams,$samtoolsPath,$samples,$reducedGTF,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,$new_workspace,$experimentName,$logfh,
- $executionCreatedTempDir,$queueSystem,$queueName,$multicore,$queueProject);
- }else{ # when having spikes, it is more appropriate to not consider them for htseqcount as they could affect
- # normalization values for regular genes. So in this case, the original GTF is given instead of the
- #one with the combined annotation (genes+spikes)
- ExecutionLevels::level_6($perl5lib,$comparisons,$deseqParams,$extraPathsRequired,$htseqCountPath,$htseqcountParams,$samtoolsPath,$samples,$initialGTF,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,$workspace,$experimentName,$logfh,
- $executionCreatedTempDir,$queueSystem,$queueName,$multicore,$queueProject);
- #removes back ground level genes + flat pattern genes
- ExecutionLevels::removeBackgroundLevelGenesANDFlatPatternGenes_for_deseq_branch($deseqParams,$initialGTF,$workspace,$logfh);
- #executes all again using the reduced GTF (without back ground level genes + without flat pattern genes)
- my $originalAlignmentsDir=$workspace."alignments/";
- my $new_workspace=$workspace."deseq_backgroundFiltered_AND_flatPatternFiltered/";
- # creates a symbolic link to the alignments dir, to emulate its presence in the new workspace directory
- my $reducedGTF=$new_workspace."GTF_without_background_AND_flatpatternGenes.gtf";
- my $command="ln -s ".$originalAlignmentsDir." ".$new_workspace;
- system($command);
- ExecutionLevels::level_6($perl5lib,$comparisons,$deseqParams,$extraPathsRequired,$htseqCountPath,$htseqCountPythonpath,$htseqcountParams,$samtoolsPath,$samples,$reducedGTF,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,$new_workspace,$experimentName,$logfh,
- $executionCreatedTempDir,$queueSystem,$queueName,$multicore,$queueProject);
- }
- }#if($doItALL)
- else{
- if($doSpikesAndGenomeRefIndexing eq "false"){
- #removes back ground level genes + flat pattern genes
- ExecutionLevels::removeBackgroundLevelGenesANDFlatPatternGenes_for_deseq_branch($deseqParams,$GTF,$workspace,$logfh);
- #executes all again using the reduced GTF (without back ground level genes + without flat pattern genes)
- my $originalAlignmentsDir=$workspace."alignments/";
- my $new_workspace=$workspace."deseq_backgroundFiltered_AND_flatPatternFiltered/";
- # creates a symbolic link to the alignments dir, to emulate its presence in the new workspace directory
- my $reducedGTF=$new_workspace."GTF_without_background_AND_flatpatternGenes.gtf";
- my $command="ln -s ".$originalAlignmentsDir." ".$new_workspace;
- system($command);
- ExecutionLevels::level_6($perl5lib,$comparisons,$deseqParams,$extraPathsRequired,$htseqCountPath,$htseqCountPythonpath,$htseqcountParams,$samtoolsPath,$samples,$reducedGTF,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,$new_workspace,$experimentName,$logfh,
- $executionCreatedTempDir,$queueSystem,$queueName,$multicore,$queueProject);
- }else{ # when having spikes, it is more appropriate to not consider them for htseqcount as they could affect
- # normalization values for regular genes. So in this case, the original GTF is given instead of the
- #one with the combined annotation (genes+spikes)
- #removes back ground level genes + flat pattern genes
- ExecutionLevels::removeBackgroundLevelGenesANDFlatPatternGenes_for_deseq_branch($deseqParams,$initialGTF,$workspace,$logfh);
- #executes all again using the reduced GTF (without back ground level genes + without flat pattern genes)
- my $originalAlignmentsDir=$workspace."alignments/";
- my $new_workspace=$workspace."deseq_backgroundFiltered_AND_flatPatternFiltered/";
- # creates a symbolic link to the alignments dir, to emulate its presence in the new workspace directory
- my $reducedGTF=$new_workspace."GTF_without_background_AND_flatpatternGenes.gtf";
- my $command="ln -s ".$originalAlignmentsDir." ".$new_workspace;
- system($command);
- ExecutionLevels::level_6($perl5lib,$comparisons,$deseqParams,$extraPathsRequired,$htseqCountPath,$htseqCountPythonpath,$htseqcountParams,$samtoolsPath,$samples,$reducedGTF,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,$new_workspace,$experimentName,$logfh,
- $executionCreatedTempDir,$queueSystem,$queueName,$multicore,$queueProject);
- }
- }#else #if($doItALL)
- }
- ########## level 7: creates wiggle files from bam alignments
- if($level=~ /7/){
- ExecutionLevels::level_7($bedGraphToBigWigPath,$bedGraphToBigWigParams,$bedtoolsPath,$samtoolsPath,$samples,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,$workspace,$experimentName,$logfh,
- $executionCreatedTempDir,$queueSystem,$queueName,$multicore,$queueProject);
- }
- ########## level 8: preRanked GSEA
- if($level=~ /8/){
- #****rnk files are directly taken from cuffdiff output files
- ExecutionLevels::level_8($gseaChip,$gseamaxMemory,$gseaPath,$gseaParams,$workspace,$experimentName,$logfh,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,$comparisons,
- $executionCreatedTempDir,$queueSystem,$queueName,$multicore,$queueProject);
- }
- ########## level 9: gene fusion prediction with Tophat-fusion
- if($level=~ /9/){
- ExecutionLevels::level_9($tophatfusionParams,$tophatPath,$bowtiePath,$samtoolsPath,$workspace,$experimentName,$logfh,$maximunNumberOfInstancesAllowedToRunSimultaneouslyInOneParticularStep,$samples,$referenceSequence,
- $executionCreatedTempDir,$queueSystem,$queueName,$multicore,$queueProject);
- }
- #close the log file
- $logfh->close;
- }
- sub help(){
- my $usage = qq{
- perl RNAseq.pl --configDoc configDocFile --expDoc expDocFile --step step_number
- Example:
- a) complete execution of all steps in each workflow level
- perl RNAseq.pl --configDoc config/configurationParameters.xml --expDoc config/experimentParameters.xml --step 123456789
- b) execution of some detailed steps
- perl RNAseq.pl --configDoc config/configurationParameters.xml --expDoc config/experimentParameters.xml --step 1345
- Steps Description:
- Step 1: sequencing quality && contamination check (fastQC & fastQScreen)
- Step 2: trimming && downsampling (seqtk)
- Step 3: Aligning (tophat)
- Step 4: transcripts assembly && quantification (cufflinks and cuffmerge)
- Step 5: differential expression (cuffquant, cuffdiff and cuffnorm)
- Step 6: htseq-count (gets read counts for genes) + DESeq2 differential expression
- Step 7: BedGraph and BigWig files for genome browsers
- Step 8: GSEA for specific gene sets over the different comparisons done with cuffdiff
- Step 9: gene fusion prediction
- [Optional parameters]
- --Cuffdiff_ONLY_background_and_flatPattern_filtering [allows repeating only the last part of setp 5]
- --DESeq2_ONLY_background_and_flatPattern_filtering [allows repeating only the last part of setp 6]
- };
- print STDERR $usage;
- exit(1);
- }
- sub checkProgramPaths($){
- my ($configHashRef) = @_;
- if(${$configHashRef}{fastQCpath}[0]!~ /\/$/){
- ${$configHashRef}{fastQCpath}[0]=${$configHashRef}{fastQCpath}[0].="/";
- }
- my $program=${$configHashRef}{fastQCpath}[0]."fastqc";
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }
- if(${$configHashRef}{fastQScreen}[0]{path}[0]!~ /\/$/){
- ${$configHashRef}{fastQScreen}[0]{path}[0]=${$configHashRef}{fastQScreen}[0]{path}[0].="/";
- }
- $program=${$configHashRef}{fastQScreen}[0]{path}[0]."fastq_screen";
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }
- $program=${$configHashRef}{fastQScreen}[0]{configurationFile}[0];
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }
- if(${$configHashRef}{seqtk}[0]{path}[0]!~ /\/$/){
- ${$configHashRef}{seqtk}[0]{path}[0]=${$configHashRef}{seqtk}[0]{path}[0].="/";
- }
- $program=${$configHashRef}{seqtk}[0]{path}[0]."seqtk";
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }
- if(${$configHashRef}{bedtoolsPath}[0]!~ /\/$/){
- ${$configHashRef}{bedtoolsPath}[0]=${$configHashRef}{bedtoolsPath}[0].="/";
- }
- $program=${$configHashRef}{bedtoolsPath}[0]."bedtools";
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }
- if(${$configHashRef}{samtoolsPath}[0]!~ /\/$/){
- ${$configHashRef}{samtoolsPath}[0]=${$configHashRef}{samtoolsPath}[0].="/";
- }
- $program=${$configHashRef}{samtoolsPath}[0]."samtools";
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }
- if(${$configHashRef}{bowtiePath}[0]!~ /\/$/){
- ${$configHashRef}{bowtiePath}[0]=${$configHashRef}{bowtiePath}[0].="/";
- }
- $program=${$configHashRef}{bowtiePath}[0]."bowtie";
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }
- if(${$configHashRef}{tophatPath}[0]!~ /\/$/){
- ${$configHashRef}{tophatPath}[0]=${$configHashRef}{tophatPath}[0].="/";
- }
- $program=${$configHashRef}{tophatPath}[0]."tophat";
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }
- if(${$configHashRef}{htseqCount}[0]{path}[0]!~ /\/$/){
- ${$configHashRef}{htseqCount}[0]{path}[0]=${$configHashRef}{htseqCount}[0]{path}[0].="/";
- }
- $program=${$configHashRef}{htseqCount}[0]{path}[0]."htseq-count";
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }
- if(${$configHashRef}{tophatFusion}[0]{path}[0]!~ /\/$/){
- ${$configHashRef}{tophatFusion}[0]{path}[0]=${$configHashRef}{tophatFusion}[0]{path}[0].="/";
- }
- $program=${$configHashRef}{tophatFusion}[0]{path}[0]."tophat-fusion-post";
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }
- if(${$configHashRef}{cufflinks}[0]{path}[0]!~ /\/$/){
- ${$configHashRef}{cufflinks}[0]{path}[0]=${$configHashRef}{cufflinks}[0]{path}[0].="/";
- }
- $program=${$configHashRef}{cufflinks}[0]{path}[0]."cufflinks";
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }
- $program=${$configHashRef}{cufflinks}[0]{path}[0]."cuffmerge";
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }
- $program=${$configHashRef}{cufflinks}[0]{path}[0]."cuffquant";
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }$program=${$configHashRef}{cufflinks}[0]{path}[0]."cuffnorm";
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }$program=${$configHashRef}{cufflinks}[0]{path}[0]."cuffdiff";
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }
- if(${$configHashRef}{bedGraphToBigWig}[0]{path}[0]!~ /\/$/){
- ${$configHashRef}{bedGraphToBigWig}[0]{path}[0]=${$configHashRef}{bedGraphToBigWig}[0]{path}[0].="/";
- }
- $program=${$configHashRef}{bedGraphToBigWig}[0]{path}[0]."bedGraphToBigWig";
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }
- if(${$configHashRef}{peakAnnotatorPath}[0]!~ /\/$/){
- ${$configHashRef}{peakAnnotatorPath}[0]=${$configHashRef}{peakAnnotatorPath}[0].="/";
- }
- $program=${$configHashRef}{peakAnnotatorPath}[0]."PeakAnnotator.jar";
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }
- $program=${$configHashRef}{gsea}[0]{path}[0];
- if (!-e $program){
- print STDERR "\n[ERROR]: The program ".$program." doesn't exist\n\n";
- exit(-1);
- }
- return($configHashRef);
- }
- sub checkSampleFiles($$){
- my($pairedEnd,$samples)=@_;
- foreach my $key (keys %$samples){
- my $type=$samples->{$key}{type}[0];
- my $leftFastqFile=$samples->{$key}{leftFile};
- if(!-e $leftFastqFile){
- print STDERR "\n[ERROR]: The left sample file ".$leftFastqFile." doesn't exist\n\n";
- exit(-1);
- }
- #if paired end experiment
- if($pairedEnd eq "true"){
- my $rightFastqFile=$samples->{$key}{rightFile}[0];
- if(!-e $leftFastqFile){
- print STDERR "\n[ERROR]: The right sample file ".$rightFastqFile." doesn't exist\n\n";
- exit(-1);
- }
- }
- }
- }
RNAseq.pl at commit 1b4c1dd, under CC-BY-NC-ND-4.0 · at the source
Overview
and 16 other authors
Yolanda Martí-Mateos9, Jose A Enríquez9,10, Elena Hernández-Encinas11, Carmen Blanco-Aparicio11, Maria S Soengas12, Juergen Bernhagen13,14,15, Alejandro Antón-Fernández16, Jesús Ávila16, Miguel A Marchena17, Maximiliano Torres17, Fernando de Castro17, Mar Márquez-Ropero18, Amanda Sierra18,19,20, Jose P Lopez-Atalaya2, RENACER Group, Manuel Valiente120 affiliations
- Brain Metastasis Group, Spanish National Cancer Research Centre (CNIO), Madrid, Spain
- Instituto de Neurociencias (CSIC-UMH), San Juan de Alicante, Spain
- Bioinformatics Unit, Spanish National Cancer Research Centre (CNIO), Madrid, Spain
- Confocal Microscopy Unit, Spanish National Cancer Research Centre (CNIO), Madrid, Spain
- Endocrine Oncology Research Group, Department of Surgery, Royal College of Surgeons in Ireland, University of Medicine and Health Sciences, Dublin, Ireland
- The School of Pharmacy and Biomolecular Sciences, RCSI University of Medicine and Health Sciences, Dublin, Ireland
- Department of Surgery, RCSI University of Medicine and Health Sciences, Dublin, Ireland
- Beaumont RCSI Cancer Centre, Beaumont Hospital, Dublin, Ireland
- Functional Genetics of the Oxidative Phosphorylation System (GENOXPHOS), Centro Nacional de Investigaciones Cardiovasculares Carlos III (CNIC), Madrid, Spain
- Centro de Investigaciones Biomédicas en Red en Fragilidad y Envejencimiento Saludable (CIBERFES), Madrid, Spain
- Experimental Therapeutics Programme, Spanish National Cancer Research Centre (CNIO), Madrid, Spain
- Melanoma Group, Spanish National Cancer Research Centre (CNIO), Madrid, Spain
- Division of Vascular Biology, Institute for Stroke and Dementia Research (ISD), LMU University Hospital, Ludwig-Maximilians-Universität (LMU) Munich, Munich, Germany
- Munich Heart Alliance, Munich, Germany
- Munich Cluster for Systems Neurology (SyNergy), Munich, Germany
- Centro de Biología Molecular Severo Ochoa (UAM-CSIC), Madrid, Spain
- Instituto Cajal-CSIC, Madrid, Spain
- Achucarro Basque Center for Neuroscience, University of the Basque Country UPV/EHU, Leioa, Spain
- Department of Biochemistry and Molecular Biology, University of the Basque Country UPV/EHU, Leioa, Spain
- Ikerbasque Foundation, Bilbao, Spain
Abstract
The abstract is not reproduced here: the paper's license (CC BY-NC-ND) does not allow it. Read it in the paper, at the publisher or on Europe PMC.
Repository
Its files are read in the Code ↔ Paper reader above, with 1 match between paragraphs and lines of code.
osvaldogc/nextpresso1.9.2
1b4c1dd66013acbfe16266dfe4230340f880da35, 8 March 2018Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
15 files
- RNAseq/
GSEA.pl , Perl, 224 lines - RNAseq/
RNAseq.pl , Perl, 720 lines, 1 match - RNAseq/
align.pl , Perl, 370 lines - RNAseq/
checksum.pl , Perl, 211 lines - RNAseq/
createbigwigFiles.pl , Perl, 380 lines - RNAseq/
cufflinks.pl , Perl, 333 lines - RNAseq/
cuffquant_cuffdiff_cuffn , Perl, 322 linesorm.pl - RNAseq/
deseq.pl , Perl, 585 lines - RNAseq/
fusions.pl , Perl, 182 lines - RNAseq/
htseqCount.pl , Perl, 292 lines - RNAseq/
preprocess.pl , Perl, 431 lines - RNAseq/
quality.pl , Perl, 393 lines - Utils/
XML/ , Perl, 847 linesSAX/ BuildSAXBase.pl - LICENSE.txt, License, 66 lines
- README.md, Text, 5 lines
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 13 scripts, each with its path and the digest of its content;
- 1 match between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
Datasets cited
- geo:GSE293921, at NCBI GEO; found in “Data Availability”
Data availability statement
The paper has a data availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:
- it points to a dataset: NCBI GEO GSE293921
- it says that the data are available on request
Read it in the paper: doi.org/10.1158/0008-5472.can-25-4018.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 2, 28 September 2026
- Publisher: n/a → American Association for Cancer Research
Version 1, 27 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 36 authors, 14 MeSH terms, 21 funders, 74 references, 1 integrity notice.
Cite
This paper
Alvaro-Espinosa, L., Marquez-Galera, A., Priego, N., García-Calvo, V., Perea-García, M., Hernandez-Oliver, C., Retana, D., Sanchez, O., de Pablos-Aragoneses, A., García-Gómez, P., Graña-Castro, O., Lapuente-Santana, Ó., Serrano-Ron, L., Al-Shahrour, F., Cayuela López, A., Peset, I., Megías, D., Ola, M., Varešlija, D., . . . Valiente, M. (2026). MIF-Induced CD74+ Microglia and Macrophages Promote Progression of Brain Metastasis and Are Clinically Relevant across Central Nervous System Disorders. Cancer research, 86(13), 3249-3269. https://
BibTeX
@article{alvaroespinosa2
author = {Alvaro-Espinosa, Laura and Marquez-Galera, Angel and Priego, Neibla and García-Calvo, Virginia and Perea-García, Maria and Hernandez-Oliver, Carolina and Retana, Diana and Sanchez, Oliva and de Pablos-Aragoneses, Ana and García-Gómez, Pedro and Graña-Castro, Osvaldo and Lapuente-Santana, Óscar and Serrano-Ron, Laura and Al-Shahrour, Fatima and Cayuela López, Ana and Peset, Isabel and Megías, Diego and Ola, Mihaela and Varešlija, Damir and Young, Leonie S and Martí-Mateos, Yolanda and Enríquez, Jose A and Hernández-Encinas, Elena and Blanco-Aparicio, Carmen and Soengas, Maria S and Bernhagen, Juergen and Antón-Fernández, Alejandro and Ávila, Jesús and Marchena, Miguel A and Torres, Maximiliano and de Castro, Fernando and Márquez-Ropero, Mar and Sierra, Amanda and Lopez-Atalaya, Jose P and {RENACER Group} and Valiente, Manuel},
title = {{MIF-Induced CD74+ Microglia and Macrophages Promote Progression of Brain Metastasis and Are Clinically Relevant across Central Nervous System Disorders}},
journal = {Cancer research},
year = {2026},
month = jul,
volume = {86},
number = {13},
pages = {3249--3269},
publisher = {American Association for Cancer Research},
issn = {0008-5472},
doi = {10.1158/
url = {https://
pmid = {41874311},
pmcid = {PMC7618953}
}
RIS
TY - JOUR
AU - Alvaro-Espinosa, Laura
AU - Marquez-Galera, Angel
AU - Priego, Neibla
AU - García-Calvo, Virginia
AU - Perea-García, Maria
AU - Hernandez-Oliver, Carolina
AU - Retana, Diana
AU - Sanchez, Oliva
AU - de Pablos-Aragoneses, Ana
AU - García-Gómez, Pedro
AU - Graña-Castro, Osvaldo
AU - Lapuente-Santana, Óscar
AU - Serrano-Ron, Laura
AU - Al-Shahrour, Fatima
AU - Cayuela López, Ana
AU - Peset, Isabel
AU - Megías, Diego
AU - Ola, Mihaela
AU - Varešlija, Damir
AU - Young, Leonie S
AU - Martí-Mateos, Yolanda
AU - Enríquez, Jose A
AU - Hernández-Encinas, Elena
AU - Blanco-Aparicio, Carmen
AU - Soengas, Maria S
AU - Bernhagen, Juergen
AU - Antón-Fernández, Alejandro
AU - Ávila, Jesús
AU - Marchena, Miguel A
AU - Torres, Maximiliano
AU - de Castro, Fernando
AU - Márquez-Ropero, Mar
AU - Sierra, Amanda
AU - Lopez-Atalaya, Jose P
AU - RENACER Group
AU - Valiente, Manuel
TI - MIF-Induced CD74+ Microglia and Macrophages Promote Progression of Brain Metastasis and Are Clinically Relevant across Central Nervous System Disorders
T2 - Cancer research
J2 - Cancer Res
PY - 2026
DA - 2026/
VL - 86
IS - 13
SP - 3249
EP - 3269
SN - 0008-5472
PB - American Association for Cancer Research
DO - 10.1158/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1158/
"type": "article-journal",
"title": "MIF-Induced CD74+ Microglia and Macrophages Promote Progression of Brain Metastasis and Are Clinically Relevant across Central Nervous System Disorders",
"container-title": "Cancer research",
"author": [
{
"family": "Alvaro-Espinosa",
"given": "Laura"
},
{
"family": "Marquez-Galera",
"given": "Angel"
},
{
"family": "Priego",
"given": "Neibla"
},
{
"family": "García-Calvo",
"given": "Virginia"
},
{
"family": "Perea-García",
"given": "Maria"
},
{
"family": "Hernandez-Oliver",
"given": "Carolina"
},
{
"family": "Retana",
"given": "Diana"
},
{
"family": "Sanchez",
"given": "Oliva"
},
{
"family": "de Pablos-Aragoneses",
"given": "Ana"
},
{
"family": "García-Gómez",
"given": "Pedro"
},
{
"family": "Graña-Castro",
"given": "Osvaldo"
},
{
"family": "Lapuente-Santana",
"given": "Óscar"
},
{
"family": "Serrano-Ron",
"given": "Laura"
},
{
"family": "Al-Shahrour",
"given": "Fatima"
},
{
"family": "Cayuela López",
"given": "Ana"
},
{
"family": "Peset",
"given": "Isabel"
},
{
"family": "Megías",
"given": "Diego"
},
{
"family": "Ola",
"given": "Mihaela"
},
{
"family": "Varešlija",
"given": "Damir"
},
{
"family": "Young",
"given": "Leonie S"
},
{
"family": "Martí-Mateos",
"given": "Yolanda"
},
{
"family": "Enríquez",
"given": "Jose A"
},
{
"family": "Hernández-Encinas",
"given": "Elena"
},
{
"family": "Blanco-Aparicio",
"given": "Carmen"
},
{
"family": "Soengas",
"given": "Maria S"
},
{
"family": "Bernhagen",
"given": "Juergen"
},
{
"family": "Antón-Fernández",
"given": "Alejandro"
},
{
"family": "Ávila",
"given": "Jesús"
},
{
"family": "Marchena",
"given": "Miguel A"
},
{
"family": "Torres",
"given": "Maximiliano"
},
{
"family": "de Castro",
"given": "Fernando"
},
{
"family": "Márquez-Ropero",
"given": "Mar"
},
{
"family": "Sierra",
"given": "Amanda"
},
{
"family": "Lopez-Atalaya",
"given": "Jose P"
},
{
"literal": "RENACER Group"
},
{
"family": "Valiente",
"given": "Manuel"
}
],
"container-title-short":
"volume": "86",
"issue": "13",
"page": "3249-3269",
"DOI": "10.1158/
"PMID": "41874311",
"PMCID": "PMC7618953",
"ISSN": "0008-5472",
"publisher": "American Association for Cancer Research",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
7,
1
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1093/jnci/djaf295
- Targeting CDK12 disrupts estrogen-receptor chromatin recruitment and ER-MED1 transcription in advanced ER+ breast cancer.Journal: Journal of the National Cancer InstituteIn common: other condition, mouse, cellular / molecular, 1 reference, 3 authors
- [2] doi:10.1172/jci.insight.199498
- Distinct immune landscapes characterize highly versus minimally invasive brain metastases.Journal: JCI insightIn common: other condition, mouse, 5 references
- [3] doi:10.1038/s41467-026-76232-w [code]
- Th17 effector cytokines induce shared and distinct microglial and endothelial cell responses in a mouse model for post-streptococcal encephalitis.Journal: Nature communicationsIn common: other condition, mouse, cellular / molecular, 4 references
- [4] doi:10.26508/lsa.202503551 [code]
- Convergent transcriptomic signature in iPSC-dopaminergic neurons of hereditary Parkinson's disease.Journal: Life science allianceIn common: cellular / molecular, 5 references
- [5] doi:10.1038/s41586-026-10515-6 [code]
- An X-linked long non-coding RNA, PTCHD1-AS, and the core features of autism.Journal: NatureIn common: mouse, cellular / molecular, 5 references
- [6] doi:10.1371/journal.pcbi.1014460 [code]
- Quantitative anatomy and biophysical modeling of ascending neuromodulatory systems in the developing rat neocortex.Journal: PLoS computational biologyIn common: author Alejandro Antón-Fernández
- [7] doi:10.1038/s41593-026-02267-3 [code]
- Spatial proteomic analysis in human Alzheimer's disease brains enables identification of microenvironment-depende
nt microglial cell states. Journal: Nature neuroscienceIn common: cellular / molecular, 3 references - [8] doi:10.3389/fbinf.2026.1832826 [code]
- Spatial transcriptomics reveal heterogeneous cell‒cell interactions among brain regions in cuprizone model consistent with multiple sclerosis lesions.Journal: Frontiers in bioinformaticsIn common: cellular / molecular, 4 references
- [9] doi:10.1038/s41586-026-10512-9 [code]
- Astrocyte glucocorticoid receptor signalling restricts neuronal plasticity.Journal: NatureIn common: mouse, cellular / molecular, 4 references
- [10] doi:10.1016/j.isci.2026.115970 [code]
- Thyroid hormones maintain parvalbumin neuron functions in the mouse neocortex.Journal: iScienceIn common: mouse, 4 references
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 1 repository of the authors' code, each at its verified commit and with its license, 13 scripts, and 1 match between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:7127a144b1c10fa2…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
