3035b73d4fe070dbab1cc39491baa03e0e8c31a2 markd Sat Apr 25 16:22:20 2020 -0700 use mkdir -p to fix some case where mkdir failed with -continue diff --git src/hg/utils/automation/doBlastzChainNet.pl src/hg/utils/automation/doBlastzChainNet.pl index 19bb24d..d360e02 100755 --- src/hg/utils/automation/doBlastzChainNet.pl +++ src/hg/utils/automation/doBlastzChainNet.pl @@ -684,31 +684,31 @@ ; close($fh); my $whatItDoes = "It sets up and performs a small cluster run to concatenate all files in each subdirectory of $outRoot into a per-target-chunk file."; my $bossScript = new HgRemoteScript("$runDir/doCatRun.csh", $paraHub, $runDir, $whatItDoes, $DEF); my $paraRun = &HgAutomate::paraRun(); my $gensub2 = &HgAutomate::gensub2(); $bossScript->add(<<_EOF_ (cd $outRoot; find . -maxdepth 1 -type d | grep '^./') \\ | sed -e 's#/\$##; s#^./##' > tParts.lst chmod a+x cat.csh $gensub2 tParts.lst single gsub jobList -mkdir ../pslParts +mkdir -p ../pslParts $paraRun _EOF_ ); $bossScript->execute(); } # sub doCatRun {} sub makePslPartsLst { # Create a pslParts.lst file the subdirectories of pslParts; if some # are for subsequences of the same sequence, make a single .lst line # for the sequence (single chaining job with subseqs' alignments # catted together). Otherwise (i.e. subdirs that contain small # target seqs glommed together by partitionSequences) make one .lst # line per partition. return if ($opt_debug); @@ -811,31 +811,31 @@ } close($fh); &makePslPartsLst(); my $whatItDoes = "It sets up and performs a small cluster run to chain all alignments to each target sequence."; my $bossScript = new HgRemoteScript("$runDir/doChainRun.csh", $paraHub, $runDir, $whatItDoes, $DEF); my $paraRun = &HgAutomate::paraRun(); my $gensub2 = &HgAutomate::gensub2(); $bossScript->add(<<_EOF_ chmod a+x chain.csh $gensub2 pslParts.lst single gsub jobList -mkdir chain liftedChain +mkdir -p chain liftedChain $paraRun rmdir liftedChain _EOF_ ); $bossScript->execute(); } # sub doChainRun {} sub postProcessChains { # chainMergeSort etc. my $runDir = "$buildDir/axtChain"; my $chain = "$tDb.$qDb.all.chain.gz"; # First, make sure we're starting clean. if (-e "$runDir/$chain") { die "postProcessChains: looks like this was run successfully already " . @@ -978,69 +978,69 @@ | netSyntenic stdin noClass.net # Make liftOver chains: netChainSubset -verbose=0 noClass.net $chain stdout \\ | chainStitchId stdin stdout | gzip -c > $tDb.$qDb.over.chain.gz _EOF_ ); my $seq1Dir = $defVars{'SEQ1_DIR'}; my $seq2Dir = $defVars{'SEQ2_DIR'}; if ($splitRef) { $bossScript->add(<<_EOF_ # Make axtNet for download: one .axt per $tDb seq. netSplit noClass.net net cd .. -mkdir axtNet +mkdir -p axtNet foreach f (axtChain/net/*.net) netToAxt \$f axtChain/chain/\$f:t:r.chain \\ $seq1Dir $seq2Dir stdout \\ | axtSort stdin stdout \\ | gzip -c > axtNet/\$f:t:r.$tDb.$qDb.net.axt.gz end # Make mafNet for multiz: one .maf per $tDb seq. -mkdir mafNet +mkdir -p mafNet foreach f (axtNet/*.$tDb.$qDb.net.axt.gz) axtToMaf -tPrefix=$tDb. -qPrefix=$qDb. \$f \\ $defVars{SEQ1_LEN} $defVars{SEQ2_LEN} \\ stdout \\ | gzip -c > mafNet/\$f:t:r:r:r:r:r.maf.gz end _EOF_ ); if ($opt_trackHub) { $bossScript->add(<<_EOF_ mkdir -p bigMaf echo "##maf version=1 scoring=blastz" > bigMaf/$tDb.$qDb.net.maf zegrep -h -v "^#" mafNet/*.maf.gz >> bigMaf/$tDb.$qDb.net.maf echo "##eof maf" >> bigMaf/$tDb.$qDb.net.maf gzip bigMaf/$tDb.$qDb.net.maf _EOF_ ); } } else { $bossScript->add(<<_EOF_ # Make axtNet for download: one .axt for all of $tDb. -mkdir ../axtNet +mkdir -p ../axtNet netToAxt -verbose=0 noClass.net $chain \\ $seq1Dir $seq2Dir stdout \\ | axtSort stdin stdout \\ | gzip -c > ../axtNet/$tDb.$qDb.net.axt.gz # Make mafNet for multiz: one .maf for all of $tDb. -mkdir ../mafNet +mkdir -p ../mafNet axtToMaf -tPrefix=$tDb. -qPrefix=$qDb. ../axtNet/$tDb.$qDb.net.axt.gz \\ $defVars{SEQ1_LEN} $defVars{SEQ2_LEN} \\ stdout \\ | gzip -c > ../mafNet/$tDb.$qDb.net.maf.gz _EOF_ ); if ($opt_trackHub) { $bossScript->add(<<_EOF_ mkdir -p ../bigMaf ln -s ../mafNet/$tDb.$qDb.net.maf.gz ../bigMaf _EOF_ ); } } if ($opt_trackHub) { @@ -1540,41 +1540,41 @@ } &dumpDownloadReadme("$runDir/README.txt"); my $over = $tDb . "To$QDb.over.chain.gz"; my $liftOverDir = "$HgAutomate::clusterData/$tDb/$HgAutomate::trackBuild/liftOver"; my $gpLiftOverDir = "$HgAutomate::goldenPath/$tDb/liftOver"; my $gbdbLiftOverDir = "$HgAutomate::gbdb/$tDb/liftOver"; my $andNets = $isSelf ? "." : ", nets and axtNet,\n" . "# and copies the liftOver chains to the liftOver download dir."; my $whatItDoes = "It creates the download directory for chains$andNets"; my $bossScript = new HgRemoteScript("$runDir/installDownloads.csh", $dbHost, $runDir, $whatItDoes, $DEF); $bossScript->add(<<_EOF_ mkdir -p $HgAutomate::goldenPath/$tDb rm -rf $HgAutomate::goldenPath/$tDb/vs$QDb -mkdir $HgAutomate::goldenPath/$tDb/vs$QDb +mkdir -p $HgAutomate::goldenPath/$tDb/vs$QDb cd $HgAutomate::goldenPath/$tDb/vs$QDb ln -s $runDir/$tDb.$qDb.all.chain.gz . ln -s $runDir/README.txt . ln -s $runDir/md5sum.txt . _EOF_ ); if (! $isSelf) { my $axt = ($splitRef ? - "mkdir axtNet\n" . "ln -s $buildDir/axtNet/*.axt.gz axtNet/" : + "mkdir -p axtNet\n" . "ln -s $buildDir/axtNet/*.axt.gz axtNet/" : "ln -s $buildDir/axtNet/$tDb.$qDb.net.axt.gz ."); if ( -s "$runDir/$tDb.$qDb.net.gz") { $bossScript->add(<<_EOF_ ln -s $runDir/$tDb.$qDb.net.gz . _EOF_ ); } $bossScript->add(<<_EOF_ $axt mkdir -p $gpLiftOverDir rm -f $gpLiftOverDir/$over ln -s $liftOverDir/$over $gpLiftOverDir/$over mkdir -p $gbdbLiftOverDir @@ -1681,31 +1681,31 @@ # Make sure previous stage was successful. my $successFile = "$runDir/$tDb.$qDb.net.gz"; if (! -e "$successFile" && ! $opt_debug) { die "doSyntenicNet: looks like previous stage was not successful " . "(can't find $successFile).\n"; } my $bossScript = new HgRemoteScript("$runDir/netSynteny.csh", $workhorse, $runDir, $whatItDoes, $DEF); if ($opt_loadChainSplit && $splitRef) { $bossScript->add(<<_EOF_ # filter net for synteny and create syntenic net mafs netFilter -syn $tDb.$qDb.net.gz \\ | netSplit stdin synNet chainSplit chain $tDb.$qDb.all.chain.gz cd .. -mkdir $successDir +mkdir -p $successDir foreach f (axtChain/synNet/*.net) netToAxt \$f axtChain/chain/\$f:t:r.chain \\ $defVars{'SEQ1_DIR'} $defVars{'SEQ2_DIR'} stdout \\ | axtSort stdin stdout \\ | axtToMaf -tPrefix=$tDb. -qPrefix=$qDb. stdin \\ $defVars{SEQ1_LEN} $defVars{SEQ2_LEN} \\ stdout \\ | gzip -c > mafSynNet/\$f:t:r:r:r:r:r.maf.gz end rm -fr $runDir/synNet rm -fr $runDir/chain cd mafSynNet md5sum *.maf.gz > md5sum.txt _EOF_ );