package org.biojava.nbio.protmod.phosphosite; import org.biojava.nbio.phosphosite.Dataset; import org.biojava.nbio.phosphosite.Site; import org.junit.Before; import org.junit.Test; import java.io.File; import java.io.IOException; import java.net.URL; import java.util.List; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; /** Makes sure there is a local installation of the Acetylation site file from Phosphosite and * tests if it can get parsed by the parser. * * Created by andreas on 11/29/16. */ public class TestAcetylation { /** Make sure an Acetylation file is available locally. * Downloads from Phosphosite if needed. * */ @Before public void setUp() throws IOException{ Dataset ds = new Dataset(); String f = Dataset.ACETYLATION; File localFile = getLocalFileName(f); if (!localFile.exists()) { ds.downloadFile(new URL(f), localFile); } } /** returns the local file name where the Acetylation file will get cached locally. * * @param phosphoSiteFileLocation location of file at PhosphoSitePlus. * @return a File pointing to the location of the locally cached file. */ private File getLocalFileName(String phosphoSiteFileLocation){ Dataset ds = new Dataset(); File localDir = ds.getLocalDir(); if ( ! localDir.exists()) { boolean success = localDir.mkdir(); if ( ! success) fail("Could not create directory " + localDir.getAbsolutePath()); } int slashIndex = phosphoSiteFileLocation.lastIndexOf("/"); String fileName = phosphoSiteFileLocation.substring(slashIndex); return new File(localDir + "/" + fileName); } /** Tests that the acetylation file can get parsed without problems. * */ @Test public void testAcetylation() throws IOException { File localFile = getLocalFileName(Dataset.ACETYLATION); List<Site> sites = Site.parseSites(localFile); assertTrue(sites.size() > 0); for (Site s : sites) { assertTrue(s.getResidue() != null); } } }