Changeset 5199
- Timestamp:
- Dec 15, 2009, 1:58:52 PM (13 years ago)
- Location:
- trunk/src
- Files:
-
- 4 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/core/net/sf/basedb/util/export/spotdata/AbstractBioAssaySetExporter.java
r5130 r5199 272 272 { 273 273 RuntimeException e = null; 274 validate(); 274 275 try 275 276 { … … 296 297 297 298 /* 298 Export methods to be implemented by subclasses 299 ---------------------------------------------- 300 */ 299 Export methods that may be implemented by subclasses 300 ---------------------------------------------------- 301 */ 302 /** 303 Validate that all required options has been set and that other 304 options have sensible values. Subclasses that override this method 305 should call super.validate(). The default implementation will at least 306 validate that a DbControl and a source bioassay set has been set. 307 @since 2.15 308 */ 309 protected void validate() 310 { 311 if (getDbControl() == null) throw new NullPointerException("getDbControl()"); 312 if (getSource() == null) throw new NullPointerException("getSource()"); 313 } 314 301 315 /** 302 316 Make preparations for the export. Subclasses that need to initialise -
trunk/src/core/net/sf/basedb/util/export/spotdata/ExportableFieldFactory.java
r4928 r5199 26 26 import net.sf.basedb.core.ExtraValueType; 27 27 import net.sf.basedb.core.Formula; 28 import net.sf.basedb.core.Metadata; 28 29 import net.sf.basedb.core.RawDataProperty; 29 30 import net.sf.basedb.core.VirtualColumn; … … 52 53 AnnotationAssayField field = new AnnotationAssayField(); 53 54 field.setAnnotationType(at); 55 field.setFormatter(formatter); 56 return field; 57 } 58 59 /** 60 Create a property assay field. This field is used to export, for 61 example, name and description, from the bioassay. 62 @param property The property to export, see 63 {@link Metadata#getPropertyValue(net.sf.basedb.core.DbControl, Object, String)} 64 for more information about the syntax of this parameter. 65 @param title The column title 66 @param formatter A formatter or null 67 @return An {@link AssayPropertyField} object 68 @since 2.15 69 */ 70 public static AssayPropertyField assayProperty(String property, String title, 71 Formatter<?> formatter) 72 { 73 AssayPropertyField field = new AssayPropertyField(); 74 field.setProperty(property); 75 field.setTitle(title); 54 76 field.setFormatter(formatter); 55 77 return field; -
trunk/src/test/TestBioAsssaySetExporter.java
r5060 r5199 28 28 import net.sf.basedb.core.DataFileType; 29 29 import net.sf.basedb.core.DbControl; 30 import net.sf.basedb.core.Directory; 30 31 import net.sf.basedb.core.Experiment; 31 32 import net.sf.basedb.core.File; … … 51 52 import net.sf.basedb.util.ConsoleProgressReporter; 52 53 import net.sf.basedb.util.basefile.BaseFileWriter; 54 import net.sf.basedb.util.bfs.AnnotationWriter; 55 import net.sf.basedb.util.bfs.GenericBaseDataWriterFactory; 56 import net.sf.basedb.util.bfs.MetadataWriter; 57 import net.sf.basedb.util.export.spotdata.AssayField; 53 58 import net.sf.basedb.util.export.spotdata.BaseFileExporter; 59 import net.sf.basedb.util.export.spotdata.BfsExporter; 54 60 import net.sf.basedb.util.export.spotdata.DynamicField; 55 61 import net.sf.basedb.util.export.spotdata.ExportableFieldFactory; 56 62 import net.sf.basedb.util.export.spotdata.MatrixBaseFileExporter; 63 import net.sf.basedb.util.export.spotdata.MatrixBfsExporter; 57 64 import net.sf.basedb.util.export.spotdata.SerialBaseFileExporter; 65 import net.sf.basedb.util.export.spotdata.SerialBfsExporter; 58 66 import net.sf.basedb.util.parser.FlatFileParser; 59 67 import net.sf.basedb.util.parser.FlatFileParser.Line; … … 106 114 int fileMatrixNoMerge = TestFile.test_create("matrix.nomerge.txt", false, false); 107 115 int fileMatrixMerge = TestFile.test_create("matrix.merge.txt", false, false); 116 int bfsSerialDir = TestDirectory.test_create(true, "bfs-serial"); 117 int bfsMatrixDir = TestDirectory.test_create(true, "bfs-matrix"); 108 118 int bas = 0; 109 119 if (ok) … … 119 129 test_exportBaseFile(bas, fileMatrixNoMerge, true, false, true); 120 130 test_exportBaseFile(bas, fileMatrixMerge, true, true, true); 131 132 test_bfs_export(bas, bfsSerialDir, annotationType, false); 133 test_bfs_export(bas, bfsMatrixDir, annotationType, true); 121 134 } 122 135 … … 126 139 TestRawBioAssay.test_delete(rba1); 127 140 TestRawBioAssay.test_delete(rba2); 141 TestDirectory.test_delete(bfsSerialDir, true); 142 TestDirectory.test_delete(bfsMatrixDir, true); 128 143 TestFile.test_delete(fileSerialNoMerge); 129 144 TestFile.test_delete(fileSerialMerge); … … 548 563 } 549 564 } 550 write("--Exporting basefile [matrix:"+matrix+", mergeReporters:"+mergeReporters+"] SUCCEEDED");565 write("--Exporting basefile [matrix:"+matrix+", mergeReporters:"+mergeReporters+"] OK"); 551 566 } 552 567 catch (Throwable ex) … … 562 577 } 563 578 579 static void test_bfs_export(int bioAssaySetId, int directoryId, 580 int annotationTypeId, boolean matrix) 581 { 582 DbControl dc = null; 583 FlatFileParser ffp = null; 584 try 585 { 586 dc = TestUtil.getDbControl(); 587 BioAssaySet bas = BioAssaySet.getById(dc, bioAssaySetId); 588 Directory dir = Directory.getById(dc, directoryId); 589 590 // Create exporter 591 BfsExporter bfs = matrix ? new MatrixBfsExporter() : new SerialBfsExporter(); 592 bfs.setDbControl(dc); 593 bfs.setSource(bas); 594 if (!TestUtil.getSilent()) bfs.setProgressReporter(new ConsoleProgressReporter()); 595 596 // Create files and file factory 597 File metadata = createFile(dc, dir, "metadata.txt"); 598 File reporter = createFile(dc, dir, "rdata.txt"); 599 File assay = createFile(dc, dir, "pdata.txt"); 600 bfs.setMetadataWriter(MetadataWriter.create( 601 metadata.getUploadStream(false), metadata.getName())); 602 bfs.setReporterAnnotationsWriter(AnnotationWriter.create( 603 reporter.getUploadStream(false), reporter.getName())); 604 bfs.setAssayAnnotationsWriter(AnnotationWriter.create( 605 assay.getUploadStream(false), assay.getName())); 606 bfs.setDataWriterFactory(new GenericBaseDataWriterFactory(dc, dir)); 607 608 // Parameters that go in the 'settings' section 609 bfs.setParameter("b", "some parameter"); 610 bfs.setParameter("a", "some other parameter"); 611 612 // Configure the spot fields to export 613 ItemQuery<Formula> ratio = Formula.getQuery(Formula.Type.COLUMN_EXPRESSION, 614 bas.getRawDataType(), bas.getIntensityTransform()); 615 ratio.restrict(Restrictions.eq(Hql.property("name"), Expressions.string("Ratio, ch1 / ch2"))); 616 if (ratio.count(dc) < 1) 617 { 618 throw new Exception("Cant find formula 'Ratio, ch1 / ch2'"); 619 } 620 List<DynamicField> spotFields = new ArrayList<DynamicField>(); 621 spotFields.add(ExportableFieldFactory.channel(1, "intensity1", null)); 622 spotFields.add(ExportableFieldFactory.rawData("row", null, Formula.AverageMethod.NONE, null)); 623 spotFields.add(ExportableFieldFactory.rawData("flags", null, Formula.AverageMethod.NONE, null)); 624 spotFields.add(ExportableFieldFactory.formula(ratio.list(dc).get(0), null, null)); 625 for (DynamicField field : spotFields) 626 { 627 bfs.addSpotField(field, Type.FLOAT); 628 } 629 630 // Configure the reporter fields to export 631 List<DynamicField> reporterFields = new ArrayList<DynamicField>(); 632 reporterFields.add(ExportableFieldFactory.reporter("externalId", null, Formula.AverageMethod.NONE, null)); 633 reporterFields.add(ExportableFieldFactory.reporter("name", null, Formula.AverageMethod.NONE, null)); 634 reporterFields.add(ExportableFieldFactory.simple(Dynamic.column(VirtualColumn.POSITION), "position", Formula.AverageMethod.NONE, null)); 635 bfs.addReporterFields(reporterFields); 636 637 // Configure assay fields to export 638 List<AssayField> assayFields = new ArrayList<AssayField>(); 639 assayFields.add(ExportableFieldFactory.assayProperty("name", "Name", null)); 640 if (annotationTypeId != 0) 641 { 642 AnnotationType at = AnnotationType.getById(dc, annotationTypeId); 643 assayFields.add(ExportableFieldFactory.annotation(at, null)); 644 } 645 bfs.addAssayFields(assayFields); 646 647 bfs.doExport(); 648 if (!TestUtil.getSilent()) write(""); 649 dc.commit(); 650 write("--Exporting bfs [" + (matrix ? "matrix" : "serial") + "] OK"); 651 } 652 catch (Throwable ex) 653 { 654 write("--Exporting bfs [" + (matrix ? "matrix" : "serial") + "] FAILED"); 655 ex.printStackTrace(); 656 ok = false; 657 } 658 finally 659 { 660 if (dc != null) dc.close(); 661 } 662 663 } 664 564 665 static void write(String message) 565 666 { … … 567 668 } 568 669 670 static File createFile(DbControl dc, Directory dir, String name) 671 { 672 File f = File.getNew(dc, dir); 673 f.setName(name); 674 f.setCharacterSet("UTF-8"); 675 f.setMimeType("text/plain"); 676 dc.saveItem(f); 677 return f; 678 } 679 569 680 }
Note: See TracChangeset
for help on using the changeset viewer.